@polycode-projects/the-mechanical-code-talker 2.2.0 → 2.3.0

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 (49) hide show
  1. package/bin/tmct.mjs +4 -5
  2. package/corpus/wordnet/generate.mjs +6 -7
  3. package/package.json +30 -2
  4. package/src/adapters/corpus/conceptnet.mjs +1 -1
  5. package/src/adapters/graph-build.mjs +3 -3
  6. package/src/adapters/memory/blocks.mjs +2 -2
  7. package/src/adapters/memory/core.mjs +5 -5
  8. package/src/adapters/providers/bootstrap.mjs +1 -1
  9. package/src/adapters/providers/fixture.mjs +1 -1
  10. package/src/adapters/wink-model.mjs +1 -1
  11. package/src/adapters/wordnet-source.mjs +70 -0
  12. package/src/domain/answer-variants.json +1 -1
  13. package/src/domain/ask-vocab.mjs +2 -2
  14. package/src/domain/ask.mjs +4 -4
  15. package/src/domain/codegraph.mjs +3 -3
  16. package/src/domain/corpus-matrix.mjs +87 -0
  17. package/src/domain/grammar/ace.mjs +11 -11
  18. package/src/domain/grammar/lexicon.mjs +3 -3
  19. package/src/domain/inflect.mjs +67 -0
  20. package/src/domain/interpret/fuzzy.mjs +1 -1
  21. package/src/domain/interpret/merge.mjs +1 -1
  22. package/src/domain/interpret/normalize.mjs +1 -1
  23. package/src/domain/licences.mjs +68 -0
  24. package/src/domain/memory/capability.mjs +1 -1
  25. package/src/domain/memory/trust.mjs +2 -2
  26. package/src/domain/persona/codegen.mjs +123 -0
  27. package/src/domain/persona/examples.mjs +26 -0
  28. package/src/domain/persona/tiers.mjs +270 -0
  29. package/src/domain/publish-gate.mjs +41 -0
  30. package/src/domain/router/call-validator.mjs +1 -1
  31. package/src/domain/router/drive.mjs +3 -4
  32. package/src/domain/router/registry.mjs +12 -13
  33. package/src/domain/router/resolver.mjs +18 -5
  34. package/src/domain/router/results.mjs +3 -3
  35. package/src/domain/router/taught.mjs +4 -3
  36. package/src/domain/schemaorg/turtle.mjs +25 -0
  37. package/src/domain/semcor/parse.mjs +87 -0
  38. package/src/domain/syllogise.mjs +6 -6
  39. package/src/domain/version-stamp.mjs +36 -0
  40. package/src/domain/wordnet/yaml.mjs +133 -0
  41. package/src/services/chat-session.mjs +2 -2
  42. package/src/services/chat.mjs +2 -2
  43. package/src/services/cli-args.mjs +4 -4
  44. package/src/services/finish.mjs +1 -1
  45. package/src/services/ledger-viz.mjs +2 -3
  46. package/src/services/sessions.mjs +4 -4
  47. package/src/services/viz-theme.mjs +3 -4
  48. package/src/surfaces/web/memory-ask-browser.bundle.js +1 -18
  49. package/src/domain/router/guardrail.mjs +0 -116
@@ -3472,18 +3472,14 @@ ${shown.join("\n")}${tail}`;
3472
3472
  applyNegationFrames: () => applyNegationFrames,
3473
3473
  ask: () => ask,
3474
3474
  classDisplayName: () => classDisplayName,
3475
- compositionalHint: () => compositionalHint,
3476
3475
  degreeMetric: () => degreeMetric,
3477
- evalComposite: () => evalComposite,
3478
3476
  metaFallbackEntityAnswer: () => metaFallbackEntityAnswer,
3479
3477
  normalizeQuery: () => normalizeQuery,
3480
3478
  parseQuery: () => parseQuery,
3481
3479
  parseQueryFull: () => parseQueryFull,
3482
- relaxParse: () => relaxParse,
3483
3480
  render: () => render,
3484
3481
  rephraseHint: () => rephraseHint,
3485
3482
  resolveObject: () => resolveObject,
3486
- touchesRephraseHint: () => touchesRephraseHint,
3487
3483
  traverse: () => traverse
3488
3484
  });
3489
3485
  function edgesOfKind2(graph, kind) {
@@ -7227,9 +7223,7 @@ ${bodyText}` : graphText, tier });
7227
7223
  CARDINALITY_RULE_CONFIDENCE: () => CARDINALITY_RULE_CONFIDENCE,
7228
7224
  CAX_DW_RULE: () => CAX_DW_RULE,
7229
7225
  CAX_DW_RULE_CONFIDENCE: () => CAX_DW_RULE_CONFIDENCE,
7230
- CAX_MAXC0_RULE: () => CAX_MAXC0_RULE,
7231
7226
  CAX_MAXC0_RULE_CONFIDENCE: () => CAX_MAXC0_RULE_CONFIDENCE,
7232
- CAX_SCO_RULE: () => CAX_SCO_RULE,
7233
7227
  CLS_SVF1_RULE: () => CLS_SVF1_RULE,
7234
7228
  CLS_SVF1_RULE_CONFIDENCE: () => CLS_SVF1_RULE_CONFIDENCE,
7235
7229
  DISJOINT_PREDICATE: () => DISJOINT_PREDICATE,
@@ -7238,14 +7232,11 @@ ${bodyText}` : graphText, tier });
7238
7232
  ENTAILED_SCM_SVF_PROVENANCE: () => ENTAILED_SCM_SVF_PROVENANCE,
7239
7233
  ENTAILED_SVF1_PROVENANCE: () => ENTAILED_SVF1_PROVENANCE,
7240
7234
  ENTAILED_TYPE_PROVENANCE: () => ENTAILED_TYPE_PROVENANCE,
7241
- ON_CLASS_PREDICATE: () => ON_CLASS_PREDICATE,
7242
7235
  ON_PROPERTY_PREDICATE: () => ON_PROPERTY_PREDICATE,
7243
- SCM_CARD_RULE: () => SCM_CARD_RULE,
7244
7236
  SCM_SVF_RULE: () => SCM_SVF_RULE,
7245
7237
  SCM_SVF_RULE_CONFIDENCE: () => SCM_SVF_RULE_CONFIDENCE,
7246
7238
  SOME_VALUES_FROM_PREDICATE: () => SOME_VALUES_FROM_PREDICATE,
7247
7239
  SUBCLASS_PREDICATE: () => SUBCLASS_PREDICATE,
7248
- SYLLOGISE_RULE: () => SYLLOGISE_RULE,
7249
7240
  TYPE_PREDICATE: () => TYPE_PREDICATE,
7250
7241
  buildCardinalityRestrictions: () => buildCardinalityRestrictions,
7251
7242
  deriveDisjointViolations: () => deriveDisjointViolations,
@@ -7967,7 +7958,7 @@ ${bodyText}` : graphText, tier });
7967
7958
  }
7968
7959
  return null;
7969
7960
  }
7970
- var SUBCLASS_PREDICATE, SYLLOGISE_RULE, ENTAILED_PROVENANCE, TYPE_PREDICATE, CAX_SCO_RULE, ENTAILED_TYPE_PROVENANCE, DISJOINT_PREDICATE, CAX_DW_RULE, ENTAILED_DISJOINT_PROVENANCE, CAX_DW_RULE_CONFIDENCE, ON_PROPERTY_PREDICATE, SOME_VALUES_FROM_PREDICATE, CLS_SVF1_RULE, ENTAILED_SVF1_PROVENANCE, CLS_SVF1_RULE_CONFIDENCE, SEP, isSubClassOf, isType, isDisjoint, isOnProperty, isSomeValuesFrom, isOnClass, RESERVED_PREDICATES, HAS_PROPERTY_KEY, CARDINALITY_KIND_OF, ON_CLASS_PREDICATE, SCM_SVF_RULE, ENTAILED_SCM_SVF_PROVENANCE, SCM_SVF_RULE_CONFIDENCE, SCM_CARD_RULE, CARDINALITY_RULE_CONFIDENCE, CAX_MAXC0_RULE, CAX_MAXC0_RULE_CONFIDENCE;
7961
+ var SUBCLASS_PREDICATE, SYLLOGISE_RULE, ENTAILED_PROVENANCE, TYPE_PREDICATE, CAX_SCO_RULE, ENTAILED_TYPE_PROVENANCE, DISJOINT_PREDICATE, CAX_DW_RULE, ENTAILED_DISJOINT_PROVENANCE, CAX_DW_RULE_CONFIDENCE, ON_PROPERTY_PREDICATE, SOME_VALUES_FROM_PREDICATE, CLS_SVF1_RULE, ENTAILED_SVF1_PROVENANCE, CLS_SVF1_RULE_CONFIDENCE, SEP, isSubClassOf, isType, isDisjoint, isOnProperty, isSomeValuesFrom, isOnClass, RESERVED_PREDICATES, HAS_PROPERTY_KEY, CARDINALITY_KIND_OF, SCM_SVF_RULE, ENTAILED_SCM_SVF_PROVENANCE, SCM_SVF_RULE_CONFIDENCE, CARDINALITY_RULE_CONFIDENCE, CAX_MAXC0_RULE_CONFIDENCE;
7971
7962
  var init_syllogise = __esm({
7972
7963
  "src/domain/syllogise.mjs"() {
7973
7964
  init_hash();
@@ -8003,13 +7994,10 @@ ${bodyText}` : graphText, tier });
8003
7994
  ]);
8004
7995
  HAS_PROPERTY_KEY = "has";
8005
7996
  CARDINALITY_KIND_OF = { "owl:cardinality": "exactly", "owl:mincardinality": "min", "owl:maxcardinality": "max" };
8006
- ON_CLASS_PREDICATE = "owl:onClass";
8007
7997
  SCM_SVF_RULE = "someValuesFromSubsumption";
8008
7998
  ENTAILED_SCM_SVF_PROVENANCE = `entailed:${SCM_SVF_RULE}`;
8009
7999
  SCM_SVF_RULE_CONFIDENCE = 0.95;
8010
- SCM_CARD_RULE = "cardinalityMonotonicity";
8011
8000
  CARDINALITY_RULE_CONFIDENCE = 0.95;
8012
- CAX_MAXC0_RULE = "maxCardinalityZero";
8013
8001
  CAX_MAXC0_RULE_CONFIDENCE = 0.95;
8014
8002
  }
8015
8003
  });
@@ -8299,10 +8287,8 @@ ${bodyText}` : graphText, tier });
8299
8287
  __export(core_exports, {
8300
8288
  CANONICALISED_FROM_PROP: () => CANONICALISED_FROM_PROP,
8301
8289
  CAPABLE_OF_PREDICATE: () => CAPABLE_OF_PREDICATE2,
8302
- CONTRADICTION_TRUST_FLOOR: () => CONTRADICTION_TRUST_FLOOR,
8303
8290
  CREATED_AT_PROP: () => CREATED_AT_PROP,
8304
8291
  DEFAULT_RETENTION: () => DEFAULT_RETENTION,
8305
- DERIVED_FROM_PROP: () => DERIVED_FROM_PROP,
8306
8292
  FACT_CLASS: () => FACT_CLASS,
8307
8293
  HAS_A_PREDICATE: () => HAS_A_PREDICATE,
8308
8294
  IN_REPLY_TO_PROP: () => IN_REPLY_TO_PROP,
@@ -8313,7 +8299,6 @@ ${bodyText}` : graphText, tier });
8313
8299
  MULTI_VALUED_PREDICATES: () => MULTI_VALUED_PREDICATES,
8314
8300
  OPERATOR_SOURCE_ID: () => OPERATOR_SOURCE_ID,
8315
8301
  RULE_CLASS: () => RULE_CLASS,
8316
- RULE_KINDS: () => RULE_KINDS2,
8317
8302
  RULE_KIND_ACTION_CONSTRAINT: () => RULE_KIND_ACTION_CONSTRAINT,
8318
8303
  RULE_KIND_ACTION_EFFECT: () => RULE_KIND_ACTION_EFFECT,
8319
8304
  RULE_KIND_ACTION_PRECOND: () => RULE_KIND_ACTION_PRECOND,
@@ -8322,12 +8307,10 @@ ${bodyText}` : graphText, tier });
8322
8307
  RULE_KIND_FILTER: () => RULE_KIND_FILTER,
8323
8308
  RULE_KIND_PROP: () => RULE_KIND_PROP,
8324
8309
  RULE_KIND_RECURSIVE: () => RULE_KIND_RECURSIVE,
8325
- RULE_NAME_PROP: () => RULE_NAME_PROP,
8326
8310
  SAID_IN_SESSION_PROP: () => SAID_IN_SESSION_PROP,
8327
8311
  SOURCE_CLASS: () => SOURCE_CLASS,
8328
8312
  SOURCE_RELIABILITY_PROP: () => SOURCE_RELIABILITY_PROP,
8329
8313
  STATED_BY_PROP: () => STATED_BY_PROP,
8330
- TEACH_SOURCE_ID: () => TEACH_SOURCE_ID,
8331
8314
  UPDATED_AT_PROP: () => UPDATED_AT_PROP,
8332
8315
  UTTERANCE_CLASS: () => UTTERANCE_CLASS,
8333
8316
  appendFact: () => appendFact,
@@ -1,116 +0,0 @@
1
- // src/domain/router/guardrail.mjs — the guardrail. Validate an
2
- // EXTERNALLY-proposed `tool_use` against the registry's declared preconditions.
3
- //
4
- // Proves RESOLVABILITY (the tool is registered/declared, args are well-formed, every
5
- // `resolves(param, as)` precondition binds to a real graph entity) — NOT antecedent
6
- // correctness: a cross-turn mis-binding ("it" -> the wrong Commit) still resolves to a
7
- // real entity and passes. "This symbol denotes something real and the call is
8
- // well-formed", never "this is the right something".
9
- //
10
- // Pure over its inputs + ctx.resolve (the binding oracle). No network, no Date.now.
11
-
12
- import { capabilityByName, preconditionsOf, PRECOND } from "./registry.mjs";
13
- import { hallucinationsIn } from "./call-validator.mjs";
14
-
15
- /** The same read-only breadth-first enrichment as resolver.mjs's `dispatchEachCandidate`:
16
- * dispatching the SAME tool once per tied candidate is safe for `readOnly` capabilities
17
- * (dispatch performs no writes). Returns `[{candidate, result}, ...]`, or
18
- * undefined when there is no dispatcher to run it with. */
19
- async function dispatchEachCandidate(pool, capName, arg, ctx) {
20
- if (!ctx.dispatch) return undefined;
21
- // Only readOnly capabilities may be dispatched here: the enrichment runs the
22
- // SAME tool once per tied candidate, which is only safe when dispatch
23
- // performs no writes. A registered world-mutating capability is planned
24
- // over, never dispatched.
25
- if (capabilityByName(capName)?.readOnly !== true) return undefined;
26
- const results = [];
27
- for (const c of pool) {
28
- const res = await ctx.dispatch(capName, { [arg]: c.label });
29
- results.push({ candidate: c.label, result: res });
30
- }
31
- return results;
32
- }
33
-
34
- /** Validate a proposed tool_use. Returns a glass-box verdict:
35
- * { ok, tool, denied:[{reason,detail}], steps:[{pred,ok,...}], provenance, candidateResults? }
36
- * ok=false with a default-deny/undeclared/unknown-arg/missing-arg denial is structural (no
37
- * graph needed); an `unresolved` step is a binding rejection, and an ambiguous `resolves`
38
- * term additionally carries `candidateResults` (the tool dispatched once per tied candidate)
39
- * when `ctx.dispatch` is wired. `declaredNames=null` skips the declared-set check.
40
- * `ctx.resolve(term)` is the resolveObject oracle; omit it for structural-only validation. */
41
- export async function guard(toolUse, declaredNames = null, ctx = {}) {
42
- const name = toolUse?.name;
43
- const input = toolUse && typeof toolUse.input === "object" && toolUse.input ? toolUse.input : {};
44
- const denied = [];
45
- const steps = [];
46
-
47
- // Default-deny: unknown/unregistered tool is an automatic reject.
48
- const declaredList = declaredNames ? [...declaredNames] : null;
49
- const cap = capabilityByName(name);
50
- if (!cap) {
51
- denied.push({ reason: "default-deny", detail: `"${name ?? "(none)"}" is not a registered capability` });
52
- return { ok: false, tool: name ?? null, denied, steps, provenance: "registry default-deny" };
53
- }
54
- const structural = hallucinationsIn({ name, input }, declaredList ?? [name]);
55
- for (const p of structural) {
56
- // no declared set supplied => "undeclared" isn't a real denial (we synthesised [name]).
57
- if (!declaredList && p.reason === "undeclared") continue;
58
- denied.push(p);
59
- }
60
-
61
- // Precondition check — the STRIPS safety gate, step by step.
62
- let candidateResults;
63
- for (const pre of preconditionsOf(name)) {
64
- if (pre.pred === PRECOND.graphLoaded) {
65
- steps.push({ step: "precondition", pred: pre.pred, ok: true });
66
- } else if (pre.pred === PRECOND.anyPresent) {
67
- const ok = pre.params.some((k) => input[k] !== undefined && input[k] !== null && String(input[k]).trim() !== "");
68
- steps.push({ step: "precondition", pred: pre.pred, params: pre.params, ok });
69
- if (!ok) denied.push({ reason: "missing-arg", detail: `${name} needs one of ${pre.params.join("|")}` });
70
- } else if (pre.pred === PRECOND.resolves) {
71
- const term = input[pre.param];
72
- const present = term !== undefined && term !== null && String(term).trim() !== "";
73
- if (!present) {
74
- steps.push({ step: "precondition", pred: pre.pred, param: pre.param, value: null, ok: false });
75
- continue;
76
- }
77
- // No oracle wired: assert the arg is PRESENT only, not that it binds.
78
- if (!ctx.resolve) {
79
- steps.push({ step: "precondition", pred: pre.pred, param: pre.param, value: term, ok: true, note: "structural-only (no resolver wired)" });
80
- continue;
81
- }
82
- const r = ctx.resolve(String(term));
83
- const resolvedOk = Boolean(r && r.match && !r.ambiguous);
84
- steps.push({
85
- step: "precondition", pred: pre.pred, param: pre.param, value: term,
86
- ok: resolvedOk,
87
- ...(r && r.match ? { boundTo: r.match.label, boundClass: r.match.class ?? null, tier: r.tier ?? null } : {}),
88
- ...(r && r.ambiguous ? { ambiguous: true } : {}),
89
- });
90
- if (!resolvedOk) {
91
- denied.push({
92
- reason: "unresolved",
93
- detail: r && r.ambiguous
94
- ? `${name}.${pre.param}="${term}" is ambiguous (narrow it)`
95
- : `${name}.${pre.param}="${term}" resolves to no graph entity`,
96
- });
97
- if (r && r.ambiguous) {
98
- const pool = [r.match, ...(r.candidates || [])].slice(0, 4);
99
- const dispatched = await dispatchEachCandidate(pool, name, pre.param, ctx);
100
- if (dispatched) candidateResults = dispatched;
101
- }
102
- }
103
- }
104
- }
105
-
106
- const ok = denied.length === 0;
107
- return {
108
- ok, tool: name, denied, steps, provenance: ok ? "resolvable (NOT proven antecedent-correct)" : "denied",
109
- ...(candidateResults ? { candidateResults } : {}),
110
- };
111
- }
112
-
113
- /** Convenience boolean: does a proposed tool_use PASS the guardrail? */
114
- export async function admits(toolUse, declaredNames = null, ctx = {}) {
115
- return (await guard(toolUse, declaredNames, ctx)).ok;
116
- }