@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.
- package/bin/tmct.mjs +4 -5
- package/corpus/wordnet/generate.mjs +6 -7
- package/package.json +30 -2
- package/src/adapters/corpus/conceptnet.mjs +1 -1
- package/src/adapters/graph-build.mjs +3 -3
- package/src/adapters/memory/blocks.mjs +2 -2
- package/src/adapters/memory/core.mjs +5 -5
- package/src/adapters/providers/bootstrap.mjs +1 -1
- package/src/adapters/providers/fixture.mjs +1 -1
- package/src/adapters/wink-model.mjs +1 -1
- package/src/adapters/wordnet-source.mjs +70 -0
- package/src/domain/answer-variants.json +1 -1
- package/src/domain/ask-vocab.mjs +2 -2
- package/src/domain/ask.mjs +4 -4
- package/src/domain/codegraph.mjs +3 -3
- package/src/domain/corpus-matrix.mjs +87 -0
- package/src/domain/grammar/ace.mjs +11 -11
- package/src/domain/grammar/lexicon.mjs +3 -3
- package/src/domain/inflect.mjs +67 -0
- package/src/domain/interpret/fuzzy.mjs +1 -1
- package/src/domain/interpret/merge.mjs +1 -1
- package/src/domain/interpret/normalize.mjs +1 -1
- package/src/domain/licences.mjs +68 -0
- package/src/domain/memory/capability.mjs +1 -1
- package/src/domain/memory/trust.mjs +2 -2
- package/src/domain/persona/codegen.mjs +123 -0
- package/src/domain/persona/examples.mjs +26 -0
- package/src/domain/persona/tiers.mjs +270 -0
- package/src/domain/publish-gate.mjs +41 -0
- package/src/domain/router/call-validator.mjs +1 -1
- package/src/domain/router/drive.mjs +3 -4
- package/src/domain/router/registry.mjs +12 -13
- package/src/domain/router/resolver.mjs +18 -5
- package/src/domain/router/results.mjs +3 -3
- package/src/domain/router/taught.mjs +4 -3
- package/src/domain/schemaorg/turtle.mjs +25 -0
- package/src/domain/semcor/parse.mjs +87 -0
- package/src/domain/syllogise.mjs +6 -6
- package/src/domain/version-stamp.mjs +36 -0
- package/src/domain/wordnet/yaml.mjs +133 -0
- package/src/services/chat-session.mjs +2 -2
- package/src/services/chat.mjs +2 -2
- package/src/services/cli-args.mjs +4 -4
- package/src/services/finish.mjs +1 -1
- package/src/services/ledger-viz.mjs +2 -3
- package/src/services/sessions.mjs +4 -4
- package/src/services/viz-theme.mjs +3 -4
- package/src/surfaces/web/memory-ask-browser.bundle.js +1 -18
- 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,
|
|
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
|
-
}
|