@inerrata-corporation/errata 2.0.22-dev.4135 → 2.0.22-dev.4164
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/consolidate-worker.mjs +557 -0
- package/errata.mjs +1017 -264
- package/generalize-worker.mjs +550 -0
- package/package.json +1 -1
- package/pass-worker.mjs +589 -2
- package/resources/context-plugin/.codex-plugin/plugin.json +1 -1
- package/resources/context-plugin/SHA256SUMS +1 -1
package/pass-worker.mjs
CHANGED
|
@@ -16476,6 +16476,548 @@ var init_sqlite_adapter = __esm({
|
|
|
16476
16476
|
}
|
|
16477
16477
|
});
|
|
16478
16478
|
|
|
16479
|
+
// ../../packages/local-shared/src/tag-grammar.ts
|
|
16480
|
+
function tagGrammarCopy() {
|
|
16481
|
+
const copy = [];
|
|
16482
|
+
for (const ref of ["its-handle", "its-id", "h", "id"]) {
|
|
16483
|
+
for (const build of Object.values(TAG_EXAMPLES)) copy.push(build(ref));
|
|
16484
|
+
}
|
|
16485
|
+
for (const v of TAG_VERBS) {
|
|
16486
|
+
copy.push(v.hint);
|
|
16487
|
+
if (v.taughtBy) copy.push(v.taughtBy);
|
|
16488
|
+
for (const q of v.qualifiers ?? []) copy.push(q.note);
|
|
16489
|
+
for (const l of v.lowering) {
|
|
16490
|
+
if (l.note) copy.push(l.note);
|
|
16491
|
+
if (l.knownViolation) copy.push(l.knownViolation.finding);
|
|
16492
|
+
}
|
|
16493
|
+
}
|
|
16494
|
+
for (const f of TAG_FENCES) copy.push(f.hint);
|
|
16495
|
+
return copy;
|
|
16496
|
+
}
|
|
16497
|
+
function normalizeTemplateBody(body2) {
|
|
16498
|
+
return body2.replace(/…|\.{3}/g, " ").replace(/\s+/g, " ").trim().replace(/^[\s,;:—–-]+|[\s,;:.—–-]+$/g, "").toLowerCase();
|
|
16499
|
+
}
|
|
16500
|
+
function deriveTagTemplates(copy) {
|
|
16501
|
+
const bodies = /* @__PURE__ */ new Set();
|
|
16502
|
+
const handles = new Set([...TAG_PLACEHOLDER_HANDLES].map((h) => h.toLowerCase()));
|
|
16503
|
+
for (const text of copy) {
|
|
16504
|
+
for (const m of text.matchAll(BRACKET_TOKEN)) {
|
|
16505
|
+
const token = m[1].trim().toLowerCase();
|
|
16506
|
+
if (!/^[!?]/.test(token) && !REAL_HANDLE_SHAPE.test(token)) handles.add(token);
|
|
16507
|
+
}
|
|
16508
|
+
}
|
|
16509
|
+
for (const text of copy) {
|
|
16510
|
+
for (const m of text.matchAll(TEMPLATE_VERB_GROUP)) {
|
|
16511
|
+
const body2 = normalizeTemplateBody(m[2]);
|
|
16512
|
+
bodies.add(body2);
|
|
16513
|
+
const unthreaded = normalizeTemplateBody(body2.replace(/^#[a-z][\w-]*/i, ""));
|
|
16514
|
+
bodies.add(unthreaded);
|
|
16515
|
+
const rest = normalizeTemplateBody(unthreaded.replace(BRACKET_TOKEN, (t, h) => handles.has(h.trim().toLowerCase()) ? " " : t).replace(/,/g, " "));
|
|
16516
|
+
bodies.add(rest);
|
|
16517
|
+
}
|
|
16518
|
+
}
|
|
16519
|
+
bodies.delete("");
|
|
16520
|
+
return { bodies, handles };
|
|
16521
|
+
}
|
|
16522
|
+
var TAG_CANONICAL_ID_PREFIXES, TAG_HANDLE_SOURCE, TAG_THREAD_SOURCE, TAG_PLACEHOLDER_HANDLES, TAG_EXAMPLES, P, S, RC, CITE_LOWERING, INSTANCE_LOWERING, TRIAGE_TO_RC, TAG_VERBS, TAG_FENCES, TAG_VERB_BY_NAME, TAG_PAREN_VERBS, TAG_GRAMMAR_OPENERS, TAG_QUOTED_PAREN_SOURCE, TAG_QUOTED_RE, TAG_QUOTED_PAREN_RE, TEMPLATE_VERB_GROUP, BRACKET_TOKEN, REAL_HANDLE_SHAPE, TAG_TEMPLATES, VERB_WORDS_SOURCE, JOINED_VERB, LEADING_VERB, ANY_VERB_WORD, QUOTED_TAG_OPENER;
|
|
16523
|
+
var init_tag_grammar = __esm({
|
|
16524
|
+
"../../packages/local-shared/src/tag-grammar.ts"() {
|
|
16525
|
+
"use strict";
|
|
16526
|
+
TAG_CANONICAL_ID_PREFIXES = ["pat", "sol", "drc", "dcause", "dfix", "dprob", "dvuln", "prob", "claim", "err"];
|
|
16527
|
+
TAG_HANDLE_SOURCE = String.raw`\[([a-z0-9][\w-]{0,80})\]|((?:${TAG_CANONICAL_ID_PREFIXES.join("|")})_[0-9a-f]{6,})`;
|
|
16528
|
+
TAG_THREAD_SOURCE = String.raw`#([a-z][\w-]{0,63})`;
|
|
16529
|
+
TAG_PLACEHOLDER_HANDLES = /* @__PURE__ */ new Set([
|
|
16530
|
+
"handle",
|
|
16531
|
+
"its-handle",
|
|
16532
|
+
"another",
|
|
16533
|
+
"a-third",
|
|
16534
|
+
"h",
|
|
16535
|
+
"h1",
|
|
16536
|
+
"h2",
|
|
16537
|
+
"id",
|
|
16538
|
+
"its-id",
|
|
16539
|
+
"a",
|
|
16540
|
+
"b",
|
|
16541
|
+
"\u2026",
|
|
16542
|
+
"..."
|
|
16543
|
+
]);
|
|
16544
|
+
TAG_EXAMPLES = {
|
|
16545
|
+
prior: (ref) => `([${ref}])`,
|
|
16546
|
+
problem: () => `[!one line on what's wrong]`,
|
|
16547
|
+
vulnerability: () => `[!vuln: who can do what; observed basis @ path:line]`,
|
|
16548
|
+
suspectedVulnerability: () => `[?vuln: consequence; missing check]`,
|
|
16549
|
+
vulnerabilityThread: () => `[!#v vuln: finding here]`,
|
|
16550
|
+
fix: (ref) => `(fix:[${ref}])`,
|
|
16551
|
+
// CONSTRAINT — the native capture path for a DIFFUSE problem (a constraint/tension/
|
|
16552
|
+
// conflict that shaped a decision). Free text, attaches to the decision sentence the
|
|
16553
|
+
// agent is already writing. Full rationale in the constraint note below + prior-tags.ts.
|
|
16554
|
+
constraint: () => `(constraint: the limitation that forced it)`,
|
|
16555
|
+
// TRIAGE — routes the problem/symptom in scope to its cause. `(cause:[handle])`
|
|
16556
|
+
// links to a cited RootCause/Solution node; `(cause: free text)` mints a RootCause
|
|
16557
|
+
// from the text. Harvested in prior-tags.ts → engine.ts (see the triage note below).
|
|
16558
|
+
triage: (ref) => `(cause:[${ref}])`,
|
|
16559
|
+
// Unlike a bare cause citation, this handle names the Problem being explained.
|
|
16560
|
+
triageExplain: (ref) => `(cause:[${ref}] the mechanism)`,
|
|
16561
|
+
// The MINT form — free-text cause that mints a RootCause. Prime-time surfacing
|
|
16562
|
+
// (recallForFile) pastes this next to an open Problem that has no cause yet, so the
|
|
16563
|
+
// diagnostic moment is cued when the agent is looking at the problem. Kept here so
|
|
16564
|
+
// the grammar can't drift from parseInlineTags' `(cause: …)` acceptance.
|
|
16565
|
+
triageMint: () => `(cause: why it happens)`,
|
|
16566
|
+
// THREAD forms — the witness-declared symptom↔cause/fix binding. A `#id` on the
|
|
16567
|
+
// flag names the diagnosis thread; the same `#id` on a later verb binds to it
|
|
16568
|
+
// explicitly (across sentences AND turns), replacing proximity guessing. Adjacent
|
|
16569
|
+
// tags never need one — the id is for diagnoses that unfold over distance.
|
|
16570
|
+
problemThread: () => `[!#slug one line on what's wrong]`,
|
|
16571
|
+
causeThread: () => `(cause:#slug the mechanism)`,
|
|
16572
|
+
fixThread: (thread = "slug") => `(fix:#${thread} what you changed)`,
|
|
16573
|
+
// ATTEMPT arc — what's being tried and what didn't work. A failed attempt is a
|
|
16574
|
+
// witnessed NEGATIVE result: it saves the next agent the same dead end.
|
|
16575
|
+
tried: () => `(tried: the approach you're attempting)`,
|
|
16576
|
+
failed: () => `(failed: what didn't work and the dead end it rules out)`,
|
|
16577
|
+
// `(failed:[h] …)` on a shown SOLUTION — the refute-by-failure form the context render teaches.
|
|
16578
|
+
failedCite: (ref) => `(failed:[${ref}] what came back)`,
|
|
16579
|
+
// LINK verbs (AC epic) — bind the problem in scope to CANONICAL priors and
|
|
16580
|
+
// abstractions. Multi-target by design: single links are weak; ~3 links to 3
|
|
16581
|
+
// DIFFERENT relevant priors is the target shape (see linkBullet).
|
|
16582
|
+
instance: (ref) => `(instance:[${ref}],[another],[a-third])`,
|
|
16583
|
+
pattern: () => `(pattern: name the general shape)`,
|
|
16584
|
+
// DOMAIN — the abstract area a problem is about; the concept layer an
|
|
16585
|
+
// anchor-less problem clusters on. Mints/resolves a Domain by name.
|
|
16586
|
+
domain: () => `(domain: The Area)`,
|
|
16587
|
+
// PACKAGE/COMPONENT — agent-named public anchors (OM-agent-anchors): the
|
|
16588
|
+
// package a problem is ABOUT (even when not a dependency) and the
|
|
16589
|
+
// framework/product-level unit it concerns. Public spine anchors → the
|
|
16590
|
+
// knowledge can cross to the collective.
|
|
16591
|
+
package: () => `(package: the-package-name)`,
|
|
16592
|
+
component: () => `(component: The Component)`,
|
|
16593
|
+
aids: (ref) => `(aids:[${ref}])`,
|
|
16594
|
+
// SOLUTION-STRUCTURE (SS-structure) — taught in the link bullet; Solution→Solution.
|
|
16595
|
+
buildsOn: (ref) => `(builds-on:[${ref}])`,
|
|
16596
|
+
supersedes: (ref) => `(supersedes:[${ref}])`,
|
|
16597
|
+
alternative: (ref) => `(alternative:[${ref}])`,
|
|
16598
|
+
// VERDICT (VS-verdict-tags) — a judgment on a SHOWN prior, distinct from leaning on it.
|
|
16599
|
+
// `confirm` rides the corroborate channel (it held); `refute` the contradict channel
|
|
16600
|
+
// (it's wrong / didn't hold) and REQUIRES a reason. This is the inline producer the
|
|
16601
|
+
// evidence channels lacked — refute sat dead (contradictionPressure 0) until now, while
|
|
16602
|
+
// lean-on corroboration lived, because only corroboration had an inline path. Grammar
|
|
16603
|
+
// single-sourced with parseInlineTags' CONFIRM_PREFIX/REFUTE_PREFIX.
|
|
16604
|
+
confirm: (ref) => `(confirm:[${ref}])`,
|
|
16605
|
+
refute: (ref) => `(refute:[${ref}] one line why)`,
|
|
16606
|
+
// RETRACT — "not a real problem": the errata-resolved block with a disposition
|
|
16607
|
+
// (parseDesignResolutions, turn.ts). No inline form exists; the block is the grammar.
|
|
16608
|
+
retract: (id) => ["```errata-resolved", `id: ${id}`, "disposition: false_positive", "reason: why it was never a real problem", "```"].join("\n")
|
|
16609
|
+
};
|
|
16610
|
+
P = "Problem";
|
|
16611
|
+
S = "Solution";
|
|
16612
|
+
RC = "RootCause";
|
|
16613
|
+
CITE_LOWERING = [
|
|
16614
|
+
{ target: RC, writes: [{ from: P, edge: "CAUSED_BY", to: RC }] },
|
|
16615
|
+
{ target: S, writes: [{ from: P, edge: "SOLVED_BY", to: S }] },
|
|
16616
|
+
{ target: "Pattern", writes: [{ from: P, edge: "INSTANCE_OF", to: "Pattern" }, { from: "Pattern", edge: "ANCHORED_AT", to: "File" }], note: "cite-anchor promotion after 2 sessions", decision: "d", knownViolation: { edge: "ANCHORED_AT", finding: "motif cite-anchor promotion writes a refused ANCHORED_AT" } },
|
|
16617
|
+
{ target: "Package", writes: [{ from: P, edge: "DEPENDS_ON", to: "Package" }] },
|
|
16618
|
+
{ target: "Language", writes: [{ from: P, edge: "OCCURS_IN", to: "Language" }] },
|
|
16619
|
+
{ target: "Tool", writes: [{ from: P, edge: "CONCERNS", to: "Tool" }] },
|
|
16620
|
+
{ target: "Component", writes: [{ from: P, edge: "CONCERNS", to: "Component" }] },
|
|
16621
|
+
{ target: P, writes: [{ from: P, edge: "RELATES_TO", to: P }, { from: P, edge: "ANCHORED_AT", to: "File" }], note: "corroboration witness + cite-anchor promotion" },
|
|
16622
|
+
{ target: "AntiPattern", writes: [{ from: P, edge: "RELATES_TO", to: "AntiPattern" }, { from: "AntiPattern", edge: "ANCHORED_AT", to: "File" }], decision: "e", knownViolation: { edge: "ANCHORED_AT", finding: "motif cite-anchor promotion writes a refused ANCHORED_AT" } },
|
|
16623
|
+
{ target: "Technique", writes: [{ from: P, edge: "RELATES_TO", to: "Technique" }, { from: "Technique", edge: "ANCHORED_AT", to: "File" }], decision: "e", knownViolation: { edge: "ANCHORED_AT", finding: "motif cite-anchor promotion writes a refused ANCHORED_AT" } },
|
|
16624
|
+
{ target: "Weakness", writes: [{ from: P, edge: "RELATES_TO", to: "Weakness" }], decision: "e" },
|
|
16625
|
+
{ target: "Domain", writes: [{ from: P, edge: "RELATES_TO", to: "Domain" }], decision: "e" },
|
|
16626
|
+
{ target: "Claim", writes: [{ from: P, edge: "RELATES_TO", to: "Claim" }, { from: "Claim", edge: "ANCHORED_AT", to: "File" }] }
|
|
16627
|
+
];
|
|
16628
|
+
INSTANCE_LOWERING = [
|
|
16629
|
+
{ target: "Pattern", writes: [{ from: P, edge: "INSTANCE_OF", to: "Pattern" }] },
|
|
16630
|
+
{ target: P, writes: [{ from: P, edge: "RELATES_TO", to: P }] },
|
|
16631
|
+
{ target: S, writes: [{ from: P, edge: "SOLVED_BY", to: S }], note: "an instance cite on a Solution claims the problem is solved by it", decision: "a" },
|
|
16632
|
+
{ target: RC, writes: [{ from: P, edge: "CAUSED_BY", to: RC }] },
|
|
16633
|
+
{ target: "AntiPattern", writes: [{ from: P, edge: "RELATES_TO", to: "AntiPattern" }], decision: "e" },
|
|
16634
|
+
{ target: "Technique", writes: [{ from: P, edge: "RELATES_TO", to: "Technique" }], decision: "e" },
|
|
16635
|
+
{ target: "Weakness", writes: [{ from: P, edge: "RELATES_TO", to: "Weakness" }], decision: "e" },
|
|
16636
|
+
{ target: "Domain", writes: [{ from: P, edge: "RELATES_TO", to: "Domain" }], decision: "e" },
|
|
16637
|
+
{ target: "Package", writes: [{ from: P, edge: "DEPENDS_ON", to: "Package" }] },
|
|
16638
|
+
{ target: "Component", writes: [{ from: P, edge: "CONCERNS", to: "Component" }] }
|
|
16639
|
+
];
|
|
16640
|
+
TRIAGE_TO_RC = [
|
|
16641
|
+
{ from: P, edge: "TRIAGED_BY", to: "Triage" },
|
|
16642
|
+
{ from: "Triage", edge: "INDICATES", to: RC },
|
|
16643
|
+
{ from: P, edge: "CAUSED_BY", to: RC }
|
|
16644
|
+
];
|
|
16645
|
+
TAG_VERBS = [
|
|
16646
|
+
{
|
|
16647
|
+
verb: "cite",
|
|
16648
|
+
form: "citation",
|
|
16649
|
+
opener: "(",
|
|
16650
|
+
kinds: ["prior"],
|
|
16651
|
+
args: "handles",
|
|
16652
|
+
thread: false,
|
|
16653
|
+
handleRequired: true,
|
|
16654
|
+
lowering: CITE_LOWERING,
|
|
16655
|
+
examples: ["prior"],
|
|
16656
|
+
hint: "cite a shown prior you leaned on: ([its-handle]) \u2014 handles only, no prose inside the parens",
|
|
16657
|
+
taught: "taught"
|
|
16658
|
+
},
|
|
16659
|
+
{
|
|
16660
|
+
verb: "!",
|
|
16661
|
+
form: "flag",
|
|
16662
|
+
opener: "[!",
|
|
16663
|
+
kinds: ["problem", "triage", "vulnerability", "fix", "prior"],
|
|
16664
|
+
args: "flag-body",
|
|
16665
|
+
thread: true,
|
|
16666
|
+
minText: 8,
|
|
16667
|
+
qualifiers: [
|
|
16668
|
+
{ name: "vuln", taught: true, note: "[!vuln: \u2026] \u2192 Vulnerability (asserted)" },
|
|
16669
|
+
{ name: "fixed", taught: false, note: "[!fixed: X] \u2192 read as a self-found fix" },
|
|
16670
|
+
{ name: "resolved", taught: false, note: "[!resolved: X] \u2192 read as a self-found fix" }
|
|
16671
|
+
],
|
|
16672
|
+
lowering: [
|
|
16673
|
+
{ target: P, writes: [], note: "mints a Problem; `@ path[:line]` anchors it (ANCHORED_AT to code)" },
|
|
16674
|
+
{ target: RC, writes: [...TRIAGE_TO_RC, { from: RC, edge: "CAUSED_BY", to: RC }], note: "`<-` segments: first \u2192 triage route, later \u2192 RootCause chain" },
|
|
16675
|
+
{ target: "Vulnerability", writes: [], note: "[!vuln: \u2026]; `<-` causes stay on the finding (vulnerabilityCauses)" }
|
|
16676
|
+
],
|
|
16677
|
+
examples: ["problem", "problemThread", "vulnerability", "vulnerabilityThread"],
|
|
16678
|
+
hint: "flag a problem on one line: [!what's wrong @ path:42]; fold causes with <- ; a fix goes in (fix: \u2026), not [!fixed: \u2026]",
|
|
16679
|
+
taught: "taught"
|
|
16680
|
+
},
|
|
16681
|
+
{
|
|
16682
|
+
verb: "?",
|
|
16683
|
+
form: "flag",
|
|
16684
|
+
opener: "[?",
|
|
16685
|
+
kinds: ["todo", "vulnerability"],
|
|
16686
|
+
args: "flag-body",
|
|
16687
|
+
thread: true,
|
|
16688
|
+
minText: 8,
|
|
16689
|
+
qualifiers: [{ name: "vuln", taught: true, note: "[?vuln: \u2026] \u2192 Vulnerability (suspected)" }],
|
|
16690
|
+
lowering: [{ target: P, writes: [], note: "mints a todo Problem; a fix can close it today", decision: "g" }],
|
|
16691
|
+
examples: ["suspectedVulnerability"],
|
|
16692
|
+
hint: "[?\u2026] marks an open question / todo; [?vuln: consequence; missing check] a suspected vulnerability",
|
|
16693
|
+
taught: "untaught",
|
|
16694
|
+
taughtBy: "only the [?vuln:] form is taught; the bare [?todo] form is not",
|
|
16695
|
+
decisions: ["g"]
|
|
16696
|
+
},
|
|
16697
|
+
{
|
|
16698
|
+
verb: "fix",
|
|
16699
|
+
form: "verb",
|
|
16700
|
+
opener: "(fix:",
|
|
16701
|
+
kinds: ["fix"],
|
|
16702
|
+
args: "handles-text",
|
|
16703
|
+
thread: true,
|
|
16704
|
+
minText: 12,
|
|
16705
|
+
lowering: [
|
|
16706
|
+
{ target: P, writes: [{ from: P, edge: "SOLVED_BY", to: S }], note: "closes the Problem; a note \u226512 chars mints the Solution" },
|
|
16707
|
+
{ target: "Vulnerability", writes: [{ from: "Vulnerability", edge: "SOLVED_BY", to: S }] },
|
|
16708
|
+
{ target: RC, writes: [], note: "dropped: 'fix tag went nowhere' (not a Problem); no tag writes FIXED_BY", decision: "f" }
|
|
16709
|
+
],
|
|
16710
|
+
examples: ["fix", "fixThread"],
|
|
16711
|
+
hint: "one fix per tag: (fix:[its-handle]) or (fix:#thread what you changed) \u2014 put the cause in its own (cause: \u2026)",
|
|
16712
|
+
taught: "taught",
|
|
16713
|
+
decisions: ["f"]
|
|
16714
|
+
},
|
|
16715
|
+
{
|
|
16716
|
+
verb: "cause",
|
|
16717
|
+
form: "verb",
|
|
16718
|
+
opener: "(cause:",
|
|
16719
|
+
kinds: ["triage"],
|
|
16720
|
+
args: "handles-text",
|
|
16721
|
+
thread: true,
|
|
16722
|
+
minText: 8,
|
|
16723
|
+
lowering: [
|
|
16724
|
+
{ target: RC, writes: TRIAGE_TO_RC },
|
|
16725
|
+
{ target: P, writes: [{ from: P, edge: "TRIAGED_BY", to: "Triage" }, { from: "Triage", edge: "INDICATES", to: RC }, { from: P, edge: "CAUSED_BY", to: RC }], note: "(cause:[problem] mechanism) \u2014 the cited Problem is the symptom; the mechanism mints the RootCause" },
|
|
16726
|
+
{ target: S, writes: [{ from: P, edge: "TRIAGED_BY", to: "Triage" }, { from: "Triage", edge: "INDICATES", to: S }], decision: "b", knownViolation: { edge: "INDICATES", finding: "(cause:[solution]) writes a refused INDICATES \u2192 Solution" } }
|
|
16727
|
+
],
|
|
16728
|
+
examples: ["triage", "triageExplain", "triageMint", "causeThread"],
|
|
16729
|
+
hint: "(cause: the mechanism you'd change) or (cause:[root-cause-handle]); bind a distant symptom with (cause:#thread \u2026)",
|
|
16730
|
+
taught: "taught",
|
|
16731
|
+
decisions: ["b"]
|
|
16732
|
+
},
|
|
16733
|
+
{
|
|
16734
|
+
verb: "constraint",
|
|
16735
|
+
form: "verb",
|
|
16736
|
+
opener: "(constraint:",
|
|
16737
|
+
kinds: ["constraint"],
|
|
16738
|
+
args: "text",
|
|
16739
|
+
thread: false,
|
|
16740
|
+
minText: 8,
|
|
16741
|
+
textRequired: true,
|
|
16742
|
+
lowering: [{ target: P, writes: [], note: "mints a constraint-kind Problem" }],
|
|
16743
|
+
examples: ["constraint"],
|
|
16744
|
+
hint: "(constraint: the limitation that forced the decision)",
|
|
16745
|
+
taught: "taught"
|
|
16746
|
+
},
|
|
16747
|
+
{
|
|
16748
|
+
verb: "tried",
|
|
16749
|
+
form: "verb",
|
|
16750
|
+
opener: "(tried:",
|
|
16751
|
+
kinds: ["attempt"],
|
|
16752
|
+
args: "text",
|
|
16753
|
+
thread: true,
|
|
16754
|
+
minText: 8,
|
|
16755
|
+
textRequired: true,
|
|
16756
|
+
lowering: [{ target: P, writes: [], note: "journals an attempt on the bound problem" }],
|
|
16757
|
+
examples: ["tried"],
|
|
16758
|
+
hint: "(tried: the approach) \u2014 bind with (tried:#thread \u2026)",
|
|
16759
|
+
taught: "taught"
|
|
16760
|
+
},
|
|
16761
|
+
{
|
|
16762
|
+
verb: "failed",
|
|
16763
|
+
form: "verb",
|
|
16764
|
+
opener: "(failed:",
|
|
16765
|
+
kinds: ["failure"],
|
|
16766
|
+
args: "handles-text",
|
|
16767
|
+
thread: true,
|
|
16768
|
+
minText: 8,
|
|
16769
|
+
textRequired: true,
|
|
16770
|
+
lowering: [
|
|
16771
|
+
{ target: P, writes: [], note: "journals a failed attempt on the bound problem" },
|
|
16772
|
+
{ target: S, writes: [], note: "(failed:[h]) refutes the cited prior (contradictionPressure); skips the label gate today", decision: "j" }
|
|
16773
|
+
],
|
|
16774
|
+
examples: ["failed", "failedCite"],
|
|
16775
|
+
hint: "(failed: what didn't work); (failed:[solution] what came back) refutes a shown fix",
|
|
16776
|
+
taught: "taught",
|
|
16777
|
+
decisions: ["j"]
|
|
16778
|
+
},
|
|
16779
|
+
{
|
|
16780
|
+
verb: "instance",
|
|
16781
|
+
form: "verb",
|
|
16782
|
+
opener: "(instance:",
|
|
16783
|
+
kinds: ["instance"],
|
|
16784
|
+
args: "handles",
|
|
16785
|
+
thread: false,
|
|
16786
|
+
handleRequired: true,
|
|
16787
|
+
lowering: INSTANCE_LOWERING,
|
|
16788
|
+
examples: ["instance"],
|
|
16789
|
+
hint: "(instance:[h1],[h2],[h3]) \u2014 ~3 DIFFERENT shown priors this problem instantiates; handles only",
|
|
16790
|
+
taught: "taught",
|
|
16791
|
+
decisions: ["a", "e"]
|
|
16792
|
+
},
|
|
16793
|
+
{
|
|
16794
|
+
verb: "pattern",
|
|
16795
|
+
form: "verb",
|
|
16796
|
+
opener: "(pattern:",
|
|
16797
|
+
kinds: ["pattern"],
|
|
16798
|
+
args: "handle-or-text",
|
|
16799
|
+
thread: false,
|
|
16800
|
+
minText: 3,
|
|
16801
|
+
lowering: [{ target: "Pattern", writes: [{ from: P, edge: "INSTANCE_OF", to: "Pattern" }], note: "a handle must be a Pattern; free text resolves-or-mints one" }],
|
|
16802
|
+
examples: ["pattern"],
|
|
16803
|
+
hint: "(pattern: name the general shape) or (pattern:[shown-pattern])",
|
|
16804
|
+
taught: "taught"
|
|
16805
|
+
},
|
|
16806
|
+
{
|
|
16807
|
+
verb: "domain",
|
|
16808
|
+
form: "verb",
|
|
16809
|
+
opener: "(domain:",
|
|
16810
|
+
kinds: ["domain"],
|
|
16811
|
+
args: "text",
|
|
16812
|
+
thread: false,
|
|
16813
|
+
minText: 2,
|
|
16814
|
+
textRequired: true,
|
|
16815
|
+
lowering: [{ target: "Domain", writes: [{ from: P, edge: "PERTAIN_TO", to: "Domain" }], note: '(domain:#t X) mints a Domain named "#t X" today', decision: "k" }],
|
|
16816
|
+
examples: ["domain"],
|
|
16817
|
+
hint: "(domain: The Area) \u2014 Title Case, no thread",
|
|
16818
|
+
taught: "taught",
|
|
16819
|
+
decisions: ["k"]
|
|
16820
|
+
},
|
|
16821
|
+
{
|
|
16822
|
+
verb: "package",
|
|
16823
|
+
form: "verb",
|
|
16824
|
+
opener: "(package:",
|
|
16825
|
+
kinds: ["package"],
|
|
16826
|
+
args: "text",
|
|
16827
|
+
thread: false,
|
|
16828
|
+
minText: 2,
|
|
16829
|
+
textRequired: true,
|
|
16830
|
+
lowering: [{ target: "Package", writes: [{ from: P, edge: "DEPENDS_ON", to: "Package" }], note: "means 'concerns', written as DEPENDS_ON", decision: "c" }],
|
|
16831
|
+
examples: ["package"],
|
|
16832
|
+
hint: "(package: the-package-name) \u2014 the public package it's about",
|
|
16833
|
+
taught: "taught",
|
|
16834
|
+
decisions: ["c"]
|
|
16835
|
+
},
|
|
16836
|
+
{
|
|
16837
|
+
verb: "component",
|
|
16838
|
+
form: "verb",
|
|
16839
|
+
opener: "(component:",
|
|
16840
|
+
kinds: ["component"],
|
|
16841
|
+
args: "text",
|
|
16842
|
+
thread: false,
|
|
16843
|
+
minText: 2,
|
|
16844
|
+
textRequired: true,
|
|
16845
|
+
lowering: [{ target: "Component", writes: [{ from: P, edge: "CONCERNS", to: "Component" }] }],
|
|
16846
|
+
examples: ["component"],
|
|
16847
|
+
hint: "(component: The Component) \u2014 the framework/product unit",
|
|
16848
|
+
taught: "taught"
|
|
16849
|
+
},
|
|
16850
|
+
{
|
|
16851
|
+
verb: "aids",
|
|
16852
|
+
form: "verb",
|
|
16853
|
+
opener: "(aids:",
|
|
16854
|
+
kinds: ["transfer"],
|
|
16855
|
+
args: "handles",
|
|
16856
|
+
thread: true,
|
|
16857
|
+
handleRequired: true,
|
|
16858
|
+
lowering: [{ target: P, writes: [{ from: S, edge: "MAY_RESOLVE", to: P }], note: "source = the Solution in scope; non-Problem targets are skipped" }],
|
|
16859
|
+
examples: ["aids"],
|
|
16860
|
+
hint: "(aids:[problem-handle],\u2026) \u2014 other shown problems your fix might also resolve",
|
|
16861
|
+
taught: "taught"
|
|
16862
|
+
},
|
|
16863
|
+
{
|
|
16864
|
+
verb: "builds-on",
|
|
16865
|
+
form: "verb",
|
|
16866
|
+
opener: "(builds-on:",
|
|
16867
|
+
kinds: ["builds-on"],
|
|
16868
|
+
args: "handles",
|
|
16869
|
+
thread: true,
|
|
16870
|
+
handleRequired: true,
|
|
16871
|
+
lowering: [{ target: S, writes: [{ from: S, edge: "BUILDS_ON", to: S }] }],
|
|
16872
|
+
examples: ["buildsOn"],
|
|
16873
|
+
hint: "(builds-on:[shown-solution]) \u2014 your fix layers on it",
|
|
16874
|
+
taught: "taught",
|
|
16875
|
+
taughtBy: "linkBullet instruction text"
|
|
16876
|
+
},
|
|
16877
|
+
{
|
|
16878
|
+
verb: "supersedes",
|
|
16879
|
+
form: "verb",
|
|
16880
|
+
opener: "(supersedes:",
|
|
16881
|
+
kinds: ["supersedes"],
|
|
16882
|
+
args: "handles",
|
|
16883
|
+
thread: true,
|
|
16884
|
+
handleRequired: true,
|
|
16885
|
+
lowering: [{ target: S, writes: [{ from: S, edge: "SUPERSEDES", to: S }] }],
|
|
16886
|
+
examples: ["supersedes"],
|
|
16887
|
+
hint: "(supersedes:[shown-solution]) \u2014 your fix replaces it",
|
|
16888
|
+
taught: "taught",
|
|
16889
|
+
taughtBy: "linkBullet instruction text"
|
|
16890
|
+
},
|
|
16891
|
+
{
|
|
16892
|
+
verb: "alternative",
|
|
16893
|
+
form: "verb",
|
|
16894
|
+
opener: "(alternative:",
|
|
16895
|
+
kinds: ["alternative"],
|
|
16896
|
+
args: "handles",
|
|
16897
|
+
thread: true,
|
|
16898
|
+
handleRequired: true,
|
|
16899
|
+
lowering: [{ target: S, writes: [{ from: S, edge: "ALTERNATIVE_TO", to: S }] }],
|
|
16900
|
+
examples: ["alternative"],
|
|
16901
|
+
hint: "(alternative:[shown-solution]) \u2014 a different valid approach",
|
|
16902
|
+
taught: "taught",
|
|
16903
|
+
taughtBy: "linkBullet instruction text"
|
|
16904
|
+
},
|
|
16905
|
+
{
|
|
16906
|
+
verb: "confirm",
|
|
16907
|
+
form: "verb",
|
|
16908
|
+
opener: "(confirm:",
|
|
16909
|
+
kinds: ["confirm"],
|
|
16910
|
+
args: "handles",
|
|
16911
|
+
thread: false,
|
|
16912
|
+
handleRequired: true,
|
|
16913
|
+
lowering: [{ target: S, writes: [], note: "corroboration witness (corroborationCount), no edge" }],
|
|
16914
|
+
examples: ["confirm"],
|
|
16915
|
+
hint: "(confirm:[shown-prior]) \u2014 it held",
|
|
16916
|
+
taught: "taught",
|
|
16917
|
+
taughtBy: "verdictBullet + context render",
|
|
16918
|
+
decisions: ["j"]
|
|
16919
|
+
},
|
|
16920
|
+
{
|
|
16921
|
+
verb: "refute",
|
|
16922
|
+
form: "verb",
|
|
16923
|
+
opener: "(refute:",
|
|
16924
|
+
kinds: ["refute"],
|
|
16925
|
+
args: "handles-text",
|
|
16926
|
+
thread: false,
|
|
16927
|
+
minText: 4,
|
|
16928
|
+
handleRequired: true,
|
|
16929
|
+
textRequired: true,
|
|
16930
|
+
lowering: [{ target: S, writes: [], note: "contradiction witness (contradictionPressure), no edge; reason stays local" }],
|
|
16931
|
+
examples: ["refute"],
|
|
16932
|
+
hint: "(refute:[shown-prior] one line why) \u2014 the reason is required",
|
|
16933
|
+
taught: "taught",
|
|
16934
|
+
taughtBy: "verdictBullet + context render",
|
|
16935
|
+
decisions: ["j"]
|
|
16936
|
+
}
|
|
16937
|
+
];
|
|
16938
|
+
TAG_FENCES = [
|
|
16939
|
+
{
|
|
16940
|
+
fence: "errata-problem",
|
|
16941
|
+
fields: ["problem", "cause", "fix", "anchor", "kind"],
|
|
16942
|
+
required: [["problem"]],
|
|
16943
|
+
taught: "untaught",
|
|
16944
|
+
parser: "apps/daemon/src/turn.ts parseDesignFlags",
|
|
16945
|
+
decisions: ["h"],
|
|
16946
|
+
hint: "use an inline [!\u2026] flag instead (errata-problem cause ids never meet inline ids)"
|
|
16947
|
+
},
|
|
16948
|
+
{
|
|
16949
|
+
fence: "errata-resolved",
|
|
16950
|
+
fields: ["id", "problem", "fix", "disposition", "reason"],
|
|
16951
|
+
required: [["id", "problem"]],
|
|
16952
|
+
taught: "taught",
|
|
16953
|
+
taughtBy: "retract form only (TAG_EXAMPLE.retract); the fix form is untaught",
|
|
16954
|
+
parser: "apps/daemon/src/turn.ts parseDesignResolutions",
|
|
16955
|
+
hint: "```errata-resolved with id: and disposition: false_positive | invalid, reason: \u2026"
|
|
16956
|
+
},
|
|
16957
|
+
{
|
|
16958
|
+
fence: "errata-triage",
|
|
16959
|
+
fields: ["presenting", "cause", "test", "fix", "drift", "route"],
|
|
16960
|
+
required: [["presenting", "route"], ["cause", "test"]],
|
|
16961
|
+
taught: "taught",
|
|
16962
|
+
taughtBy: "MCP errata_triage tool copy",
|
|
16963
|
+
parser: "packages/local-graph/src/triage.ts parseTriageFences",
|
|
16964
|
+
hint: "```errata-triage with presenting: and cause: (or route: + test: to answer one)"
|
|
16965
|
+
},
|
|
16966
|
+
{
|
|
16967
|
+
fence: "errata-abstraction",
|
|
16968
|
+
fields: ["candidate", "principle", "covers"],
|
|
16969
|
+
required: [["candidate"], ["principle"], ["covers"]],
|
|
16970
|
+
taught: "taught",
|
|
16971
|
+
taughtBy: "MCP errata_pending_abstractions tool copy",
|
|
16972
|
+
parser: "packages/local-graph/src/abstraction.ts parseAbstractionFences",
|
|
16973
|
+
hint: "```errata-abstraction with candidate:, principle:, covers: (all required)"
|
|
16974
|
+
},
|
|
16975
|
+
{
|
|
16976
|
+
fence: "errata-intent",
|
|
16977
|
+
fields: ["intent"],
|
|
16978
|
+
required: [["intent"]],
|
|
16979
|
+
taught: "taught",
|
|
16980
|
+
parser: "packages/local-graph/src/intent.ts parseIntentFences",
|
|
16981
|
+
hint: "```errata-intent with intent: what you're about to do"
|
|
16982
|
+
},
|
|
16983
|
+
{
|
|
16984
|
+
fence: "errata-share",
|
|
16985
|
+
fields: ["priors"],
|
|
16986
|
+
required: [["priors"]],
|
|
16987
|
+
taught: "taught",
|
|
16988
|
+
taughtBy: "subagent hand-off copy",
|
|
16989
|
+
parser: "packages/local-graph/src/intent.ts parseShareFence",
|
|
16990
|
+
hint: "```errata-share with priors: all | [h1], [h2]"
|
|
16991
|
+
}
|
|
16992
|
+
];
|
|
16993
|
+
TAG_VERB_BY_NAME = new Map(
|
|
16994
|
+
TAG_VERBS.filter((v) => v.form === "verb").map((v) => [v.verb, v])
|
|
16995
|
+
);
|
|
16996
|
+
TAG_PAREN_VERBS = [...TAG_VERB_BY_NAME.keys()].sort((a, b) => b.length - a.length);
|
|
16997
|
+
TAG_GRAMMAR_OPENERS = [
|
|
16998
|
+
...new Set(TAG_VERBS.filter((v) => v.form !== "citation").map((v) => v.opener))
|
|
16999
|
+
];
|
|
17000
|
+
TAG_QUOTED_PAREN_SOURCE = String.raw`\(\s*(?:${TAG_PAREN_VERBS.map((v) => v.replace(/-/g, "\\-")).join("|")})\s*:|\(\[`;
|
|
17001
|
+
TAG_QUOTED_RE = new RegExp(String.raw`\[[!?]|` + TAG_QUOTED_PAREN_SOURCE, "i");
|
|
17002
|
+
TAG_QUOTED_PAREN_RE = new RegExp(TAG_QUOTED_PAREN_SOURCE, "i");
|
|
17003
|
+
TEMPLATE_VERB_GROUP = new RegExp(
|
|
17004
|
+
String.raw`\(\s*(${TAG_PAREN_VERBS.map((v) => v.replace(/-/g, "\\-")).join("|")})\s*:((?:[^()\n]|\([^()\n]*\))*)\)`,
|
|
17005
|
+
"gi"
|
|
17006
|
+
);
|
|
17007
|
+
BRACKET_TOKEN = /\[([^\]\n]{1,80})\]/g;
|
|
17008
|
+
REAL_HANDLE_SHAPE = new RegExp(
|
|
17009
|
+
String.raw`^(?:[a-z0-9]+(?:-[a-z0-9]+)*-(?=[0-9a-f]{0,3}\d)[0-9a-f]{4}|(?:${TAG_CANONICAL_ID_PREFIXES.join("|")})_[0-9a-f]{6,})$`,
|
|
17010
|
+
"i"
|
|
17011
|
+
);
|
|
17012
|
+
TAG_TEMPLATES = deriveTagTemplates(tagGrammarCopy());
|
|
17013
|
+
VERB_WORDS_SOURCE = TAG_PAREN_VERBS.map((v) => v.replace(/-/g, "\\-")).join("|");
|
|
17014
|
+
JOINED_VERB = new RegExp(String.raw`[,;]\s*(?=(?:${VERB_WORDS_SOURCE})\s*:)`, "i");
|
|
17015
|
+
LEADING_VERB = new RegExp(String.raw`^\s*(${VERB_WORDS_SOURCE})\s*:`, "i");
|
|
17016
|
+
ANY_VERB_WORD = new RegExp(String.raw`\b(?:${VERB_WORDS_SOURCE})\s*:`, "gi");
|
|
17017
|
+
QUOTED_TAG_OPENER = new RegExp(String.raw`\(\s*(?:(${VERB_WORDS_SOURCE})\s*:|(?=\[))`, "gi");
|
|
17018
|
+
}
|
|
17019
|
+
});
|
|
17020
|
+
|
|
16479
17021
|
// ../../packages/local-shared/src/index.ts
|
|
16480
17022
|
var init_src2 = __esm({
|
|
16481
17023
|
"../../packages/local-shared/src/index.ts"() {
|
|
@@ -16489,6 +17031,7 @@ var init_src2 = __esm({
|
|
|
16489
17031
|
init_review();
|
|
16490
17032
|
init_anchorable();
|
|
16491
17033
|
init_sqlite_adapter();
|
|
17034
|
+
init_tag_grammar();
|
|
16492
17035
|
}
|
|
16493
17036
|
});
|
|
16494
17037
|
|
|
@@ -27365,6 +27908,20 @@ var SqliteGraphStore = class {
|
|
|
27365
27908
|
if (revived > 0) this.mutations++;
|
|
27366
27909
|
return revived;
|
|
27367
27910
|
}
|
|
27911
|
+
incomingEdgeCoverage(label, edgeTypes, cloudOnly) {
|
|
27912
|
+
if (edgeTypes.length === 0) return { count: 0, total: 0 };
|
|
27913
|
+
const r = this.db.prepare(
|
|
27914
|
+
`SELECT COUNT(*) AS total,
|
|
27915
|
+
COALESCE(SUM(CASE WHEN EXISTS (
|
|
27916
|
+
SELECT 1 FROM edges e WHERE e.to_id = n.id AND e.valid_to IS NULL
|
|
27917
|
+
AND e.type IN (${edgeTypes.map(() => "?").join(",")})
|
|
27918
|
+
) THEN 1 ELSE 0 END), 0) AS count
|
|
27919
|
+
FROM nodes n
|
|
27920
|
+
WHERE n.label = ? AND n.valid_to IS NULL
|
|
27921
|
+
AND (? = 0 OR json_extract(n.attrs_json, '$.source') = 'cloud')`
|
|
27922
|
+
).get(...edgeTypes, label, cloudOnly ? 1 : 0);
|
|
27923
|
+
return { count: Number(r.count), total: Number(r.total) };
|
|
27924
|
+
}
|
|
27368
27925
|
recentEdgeAttrCoverage(marker, attr, limit) {
|
|
27369
27926
|
const r = this.db.prepare(
|
|
27370
27927
|
`SELECT COUNT(*) AS total,
|
|
@@ -29153,12 +29710,39 @@ var MECHANISMS = [
|
|
|
29153
29710
|
// reading is IDLE — correct, and it declares no backlog on purpose.
|
|
29154
29711
|
effectCounter: "alarms",
|
|
29155
29712
|
note: "steady-state IDLE is healthy; the row exists for its invocation age"
|
|
29713
|
+
},
|
|
29714
|
+
{
|
|
29715
|
+
id: "project-causal-sync",
|
|
29716
|
+
what: "lands the cloud project stratum's SOLVED_BY/FIXED_BY edges onto the knowledge the anchor feed mirrors",
|
|
29717
|
+
// PRODUCER: the anchor feed's causal leg — `fetchProjectAnchors` returns the
|
|
29718
|
+
// edges, `syncProjectAnchors` (apps/daemon/src/project-reanchor.ts) lands or
|
|
29719
|
+
// parks them, on the `anchor-pull` beat. CONSUMERS: every local walk that
|
|
29720
|
+
// crosses Problem→Solution — errata_trace/why/burst over the store, and the
|
|
29721
|
+
// passive priming block that renders a problem with its fix. Before
|
|
29722
|
+
// PJ-sync-causal the feed mirrored 5,054 cloud Solutions on the dev checkout
|
|
29723
|
+
// with not one incoming SOLVED_BY: this row would have read 0.0% for months.
|
|
29724
|
+
pass: "anchor-pull",
|
|
29725
|
+
fedIncoming: { label: "Solution", edgeTypes: ["SOLVED_BY", "FIXED_BY"], cloudOnly: true, minFraction: 0.5 },
|
|
29726
|
+
effectCounter: "edgesLanded",
|
|
29727
|
+
// Parked edges waiting on an endpoint — a flat, non-zero backlog is a stratum
|
|
29728
|
+
// whose other ends never arrive here (a cap, or a gate that refuses them).
|
|
29729
|
+
backlogCounter: "edgesPending",
|
|
29730
|
+
requiresNodes: ["Problem"],
|
|
29731
|
+
note: "an orphaned cloud Solution reads as a fix with no problem; the one-time causal re-walk lifts this after the server ships the leg"
|
|
29156
29732
|
}
|
|
29157
29733
|
];
|
|
29158
29734
|
var COLUMN_INPUTS = {
|
|
29159
29735
|
__createdAtSeq: (n) => n.createdAtSeq !== void 0 && n.createdAtSeq !== null
|
|
29160
29736
|
};
|
|
29161
29737
|
function evaluateFed(store2, d) {
|
|
29738
|
+
if (d.fedIncoming) {
|
|
29739
|
+
const { count: count2, total } = store2.incomingEdgeCoverage?.(
|
|
29740
|
+
d.fedIncoming.label,
|
|
29741
|
+
d.fedIncoming.edgeTypes,
|
|
29742
|
+
d.fedIncoming.cloudOnly
|
|
29743
|
+
) ?? { count: 0, total: 0 };
|
|
29744
|
+
return { count: count2, total, fraction: total === 0 ? 0 : count2 / total };
|
|
29745
|
+
}
|
|
29162
29746
|
if (d.fedEdges) {
|
|
29163
29747
|
const { count: count2, total } = store2.recentEdgeAttrCoverage(
|
|
29164
29748
|
d.fedEdges.marker,
|
|
@@ -29210,7 +29794,7 @@ function evaluateMechanisms(store2, invocations = /* @__PURE__ */ new Map(), mec
|
|
|
29210
29794
|
if (d.configCounter && inv?.lastTotals?.[d.configCounter] === 0) verdict = "unconfigured";
|
|
29211
29795
|
else if ((backlog ?? 0) === 0 && (!hasInput && !d.inputOptional || missingRequiredNodes)) verdict = "no-input";
|
|
29212
29796
|
else if (!inv || inv.runs === 0) verdict = "never-invoked";
|
|
29213
|
-
else if (fed.fraction < (d
|
|
29797
|
+
else if (fed.fraction < minFractionOf(d)) verdict = "starved";
|
|
29214
29798
|
else if (stalled) verdict = "stalled";
|
|
29215
29799
|
else if (effectCount === 0) verdict = "no-effect";
|
|
29216
29800
|
else verdict = "ok";
|
|
@@ -29221,7 +29805,7 @@ function evaluateMechanisms(store2, invocations = /* @__PURE__ */ new Map(), mec
|
|
|
29221
29805
|
fedCount: fed.count,
|
|
29222
29806
|
fedTotal: fed.total,
|
|
29223
29807
|
fedFraction: fed.fraction,
|
|
29224
|
-
minFraction: d
|
|
29808
|
+
minFraction: minFractionOf(d),
|
|
29225
29809
|
...inv ? { lastInvokedMs: inv.lastTs } : {},
|
|
29226
29810
|
runs: inv?.runs ?? 0,
|
|
29227
29811
|
effectCount,
|
|
@@ -29233,6 +29817,9 @@ function evaluateMechanisms(store2, invocations = /* @__PURE__ */ new Map(), mec
|
|
|
29233
29817
|
};
|
|
29234
29818
|
});
|
|
29235
29819
|
}
|
|
29820
|
+
function minFractionOf(d) {
|
|
29821
|
+
return d.fedIncoming?.minFraction ?? d.fedEdges?.minFraction ?? d.fed?.minFraction ?? 0;
|
|
29822
|
+
}
|
|
29236
29823
|
|
|
29237
29824
|
// ../../packages/local-graph/src/wm-calibration.ts
|
|
29238
29825
|
var WM_CALIBRATION_LABELS = [
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
0519a3dd34e55c34ebac732f4b86afc926669093bfa0b1376e57d809addfbe27 .codex-plugin/plugin.json
|
|
2
2
|
a7bebae9fb01c838d6c75fc784129e28be571233fa66ff5ee8039b574f35ccf7 assets/icon.png
|
|
3
3
|
fc38b64e4df1e0b72c35764bef6c4c05430d97c9009ad0ecc8a9e75b4deab232 configure-local.mjs
|
|
4
4
|
73dc6028b3b070257c7c31f252d11e55a9e096f4aed0f187f10cb21716e1e6d7 dist/client.js
|