@polycode-projects/the-mechanical-code-talker 6.0.19 → 6.0.21

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 (72) hide show
  1. package/README.md +20 -23
  2. package/bin/tmct.mjs +16 -33
  3. package/corpus/LICENSES.json +0 -21
  4. package/corpus/README.md +10 -13
  5. package/corpus/reference/manifest.json +19 -19
  6. package/corpus/reference/shards/ref-01.jsonl.gz +0 -0
  7. package/corpus/reference/shards/ref-04.jsonl.gz +0 -0
  8. package/corpus/reference/shards/ref-08.jsonl.gz +0 -0
  9. package/corpus/reference/shards/ref-10.jsonl.gz +0 -0
  10. package/corpus/reference/shards/ref-11.jsonl.gz +0 -0
  11. package/corpus/reference/shards/ref-17.jsonl.gz +0 -0
  12. package/corpus/reference/shards/ref-20.jsonl.gz +0 -0
  13. package/corpus/reference/shards/ref-25.jsonl.gz +0 -0
  14. package/corpus/reference/shards/ref-2c.jsonl.gz +0 -0
  15. package/corpus/tier2/generate.mjs +6 -142
  16. package/corpus/tier2/manifest.json +0 -42
  17. package/package.json +4 -4
  18. package/src/adapters/corpus/child-seed.mjs +74 -0
  19. package/src/adapters/corpus/conceptnet.mjs +45 -26
  20. package/src/adapters/memory/blocks.mjs +7 -1
  21. package/src/adapters/memory/core.mjs +453 -103
  22. package/src/adapters/memory/corpus-bands.mjs +33 -10
  23. package/src/adapters/memory/inspect.mjs +24 -5
  24. package/src/adapters/memory/rows.mjs +106 -9
  25. package/src/adapters/memory/shacl.mjs +10 -3
  26. package/src/domain/ask.mjs +27 -10
  27. package/src/domain/cli-verbs.mjs +3 -4
  28. package/src/domain/completions/group.mjs +8 -3
  29. package/src/domain/completions/infer.mjs +7 -2
  30. package/src/domain/completions/prune.mjs +5 -1
  31. package/src/domain/completions/rank.mjs +7 -2
  32. package/src/domain/digest/compose.mjs +5 -1
  33. package/src/domain/digest/select.mjs +12 -6
  34. package/src/domain/domain.mjs +15 -8
  35. package/src/domain/el-classify.mjs +11 -2
  36. package/src/domain/fact-phrase.mjs +86 -4
  37. package/src/domain/hash.mjs +9 -0
  38. package/src/domain/memory/bias.mjs +8 -4
  39. package/src/domain/memory/capability.mjs +12 -6
  40. package/src/domain/memory/fact-order.mjs +29 -0
  41. package/src/domain/memory/resolution.mjs +3 -0
  42. package/src/domain/news-feed.mjs +422 -56
  43. package/src/domain/reference-pack.mjs +5 -0
  44. package/src/domain/sense-scope.mjs +116 -0
  45. package/src/domain/sense-split.mjs +1 -1
  46. package/src/domain/syllogise.mjs +21 -13
  47. package/src/domain/tableau.mjs +23 -14
  48. package/src/domain/worlds-pack.mjs +5 -1
  49. package/src/services/adventure-autoplay.mjs +6 -1
  50. package/src/services/adventure-editor.mjs +43 -21
  51. package/src/services/adventure-viz.mjs +26 -9
  52. package/src/services/adventure.mjs +40 -10
  53. package/src/services/chat.mjs +253 -113
  54. package/src/services/extensions.mjs +51 -58
  55. package/src/services/extract-facts.mjs +670 -95
  56. package/src/services/init.mjs +4 -4
  57. package/src/services/ledger-viz.mjs +9 -4
  58. package/src/services/memory-panel-viz.mjs +4 -5
  59. package/src/services/mud-editor.mjs +40 -16
  60. package/src/services/mud-viz.mjs +8 -2
  61. package/src/services/mudiii-turn.mjs +5 -3
  62. package/src/services/mudiii-viz.mjs +8 -2
  63. package/src/services/news.mjs +277 -11
  64. package/src/services/research-viz.mjs +1 -1
  65. package/src/services/sprite-catalog-viz.mjs +10 -5
  66. package/src/surfaces/web/adventure-browser-entry.mjs +6 -12
  67. package/src/surfaces/web/memory-ask-browser.bundle.js +152 -151
  68. package/src/surfaces/web/mud-browser-entry.mjs +7 -11
  69. package/src/surfaces/web/research-browser-entry.mjs +5 -2
  70. package/corpus/tier2/aws.jsonl +0 -39
  71. package/corpus/tier2/java.jsonl +0 -31
  72. package/corpus/tier2/python.jsonl +0 -30
@@ -64,6 +64,11 @@ import { splitSceneBackdrop } from "../domain/scene-compose.mjs";
64
64
  const DEFAULT_TITLE = "tmct — the sprite library";
65
65
  const MAX_CHAIN_DISPLAY = 6;
66
66
 
67
+ // Codepoint order, never localeCompare — an ancestor/class term walks the
68
+ // same rdfs:subClassOf fact rows the cards' ancestry pills print, and two
69
+ // readers must render the same ontology-tree order regardless of locale.
70
+ const byCodepoint = (a, b) => (a < b ? -1 : a > b ? 1 : 0);
71
+
67
72
  /** A curated gap-fill for classes wordnet-xl's own prioritized subset
68
73
  * happens to carry NO rdfs:subClassOf row for at all (115 of 198 catalog
69
74
  * classes, checked directly against a build of this page) — every pair
@@ -244,8 +249,8 @@ export function clusterEntriesByAncestor(entries, spritedClasses) {
244
249
  if (key && list.length >= 2) clusters.push({ ancestor: key, entries: list });
245
250
  else rest.push(...list);
246
251
  }
247
- clusters.sort((a, b) => b.entries.length - a.entries.length || a.ancestor.localeCompare(b.ancestor));
248
- if (rest.length) clusters.push({ ancestor: null, entries: [...rest].sort((a, b) => a.className.localeCompare(b.className)) });
252
+ clusters.sort((a, b) => b.entries.length - a.entries.length || byCodepoint(a.ancestor, b.ancestor));
253
+ if (rest.length) clusters.push({ ancestor: null, entries: [...rest].sort((a, b) => byCodepoint(a.className, b.className)) });
249
254
  return clusters;
250
255
  }
251
256
 
@@ -463,12 +468,12 @@ export function buildOntologyTree(section, { index, spritedClasses, entriesByCla
463
468
  levels[level].push(nodeFor(term));
464
469
  }
465
470
  for (let i = 0; i < levels.length; i += 1) {
466
- levels[i] = (levels[i] || []).sort((a, b) => a.term.localeCompare(b.term));
471
+ levels[i] = (levels[i] || []).sort((a, b) => byCodepoint(a.term, b.term));
467
472
  }
468
473
  branches.push({ size: terms.length, key: terms.slice().sort()[0], levels });
469
474
  }
470
- branches.sort((a, b) => b.size - a.size || a.key.localeCompare(b.key));
471
- apart.sort((a, b) => a.term.localeCompare(b.term));
475
+ branches.sort((a, b) => b.size - a.size || byCodepoint(a.key, b.key));
476
+ apart.sort((a, b) => byCodepoint(a.term, b.term));
472
477
  return { branches, apart, termCount: allTerms.size, truncated };
473
478
  }
474
479
 
@@ -44,7 +44,7 @@ import { parseEntities } from "../../domain/codegraph.mjs";
44
44
  import { memoryFactGraphPayload } from "../../domain/memory-facts.mjs";
45
45
  import { loadLexicon } from "../../domain/grammar/lexicon.mjs";
46
46
  import { DEFAULT_GAME_CONFIG } from "../../domain/game-config.mjs";
47
- import { foldWorldState, worldDigestRows, roomAffordances, worldActionRows, snapshotSubject } from "../../services/adventure.mjs";
47
+ import { foldWorldState, worldDigestRows, roomAffordances, worldActionRows } from "../../services/adventure.mjs";
48
48
  import { runAdventureAutoplayTick, exposedFacts } from "../../services/adventure-autoplay.mjs";
49
49
  import { parseWorldEditorText, planWorldEditorSync } from "../../services/adventure-editor.mjs";
50
50
  import { resolveSpriteForClass, SPRITE_REGISTRY, classAncestorChain } from "../../domain/sprite-map.mjs";
@@ -209,24 +209,18 @@ export async function createAdventureSession(worldPayload, { restoredPayload = n
209
209
  * see adventure-editor.mjs's own header for why a typo must never be
210
210
  * read as "this fact is gone". Returns `{ unrecognized, added, removed }`.
211
211
  *
212
- * A placement or openness edit is written as a TURN SNAPSHOT, the way
213
- * every played turn writes one. foldWorldState ranks an unstamped row as
214
- * turn 0, so an edit to something already played the lamp taken on
215
- * turn 4, then moved back to the desk in the editor — would be outranked
216
- * by the very move it was meant to correct, and the edit would land in
217
- * the store and change nothing anyone can see. Type/exit/puzzle rows are
218
- * read raw and keep their bare subject: a stamped one names a subject no
219
- * verb resolves. */
212
+ * A placement or openness edit arrives from the planner already written
213
+ * as a TURN SNAPSHOT, the way every played turn writes one, so all this
214
+ * has to add is the matching provenance tag. */
220
215
  async applyEdit(text) {
221
216
  const allRows = readFactRows(await loadMemory(memoryDir));
222
217
  const worldRows = allRows.filter((r) => typeof r.provenance === "string" && r.provenance.indexOf(tag) === 0);
223
218
  const state = foldWorldState(worldRows);
224
219
  const { triples, unrecognized } = parseWorldEditorText(text, worldRows);
225
- const { toAppend, toRemoveIds } = planWorldEditorSync(worldRows, state, triples);
226
- const editTurn = state.turnCount + 1;
220
+ const { toAppend, toRemoveIds, editTurn } = planWorldEditorSync(worldRows, state, triples);
227
221
  if (toAppend.length) {
228
222
  await appendFacts(memoryDir, toAppend.map((f) => ({
229
- subject: f.kind === "other" ? f.subject : snapshotSubject(f.subject, editTurn, state.epoch),
223
+ subject: f.subject,
230
224
  predicate: f.predicate,
231
225
  object: f.object,
232
226
  provenance: f.kind === "other" ? tag : `${tag}:turn${editTurn}`,