@plumpslabs/kuma 2.4.8 → 2.4.9
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/dist/index.js
CHANGED
|
@@ -5579,7 +5579,7 @@ async function addGotcha(entry) {
|
|
|
5579
5579
|
try {
|
|
5580
5580
|
const { addEdge: addEdge2 } = await Promise.resolve().then(() => (init_kumaGraph(), kumaGraph_exports));
|
|
5581
5581
|
const stmt = db.prepare(`
|
|
5582
|
-
SELECT id FROM nodes WHERE type
|
|
5582
|
+
SELECT id FROM nodes WHERE type IN ('arch_flow', 'feature_domain')
|
|
5583
5583
|
AND (metadata LIKE ? OR file_path = ?)
|
|
5584
5584
|
LIMIT 5
|
|
5585
5585
|
`);
|
|
@@ -6758,7 +6758,7 @@ async function getFlowFreshness(domain) {
|
|
|
6758
6758
|
const { getDb: getDb2 } = await Promise.resolve().then(() => (init_kumaDb(), kumaDb_exports));
|
|
6759
6759
|
const db = await getDb2();
|
|
6760
6760
|
const stmt = db.prepare(
|
|
6761
|
-
`SELECT metadata FROM nodes WHERE type
|
|
6761
|
+
`SELECT metadata FROM nodes WHERE type IN ('feature_domain', 'arch_flow') AND name = ? LIMIT 1`
|
|
6762
6762
|
);
|
|
6763
6763
|
stmt.bind([domain]);
|
|
6764
6764
|
const found = stmt.step();
|
|
@@ -6848,7 +6848,7 @@ async function getHopsForDomain(domain) {
|
|
|
6848
6848
|
try {
|
|
6849
6849
|
const { getDb: getDb2 } = await Promise.resolve().then(() => (init_kumaDb(), kumaDb_exports));
|
|
6850
6850
|
const db = await getDb2();
|
|
6851
|
-
const stmt = db.prepare(`SELECT metadata FROM nodes WHERE type
|
|
6851
|
+
const stmt = db.prepare(`SELECT metadata FROM nodes WHERE type IN ('feature_domain', 'arch_flow') AND name = ? LIMIT 1`);
|
|
6852
6852
|
stmt.bind([domain]);
|
|
6853
6853
|
if (stmt.step()) {
|
|
6854
6854
|
const meta = JSON.parse(stmt.getAsObject().metadata || "{}");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plumpslabs/kuma",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.9",
|
|
4
4
|
"description": "Safety-first context & orchestration engine for AI coding agents. MCP server with mandatory research pipeline, knowledge graph, impact analysis, decision memory, and safety guard — works with any MCP client.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -166,7 +166,7 @@ async function getDashboardData() {
|
|
|
166
166
|
`SELECT json_group_array(json_object('id',id,'file_path',file_path,'description',REPLACE(REPLACE(description,char(10),' '),char(13),''),'severity',severity,'workaround',REPLACE(REPLACE(COALESCE(workaround,''),char(10),' '),char(13),''),'added_by',COALESCE(added_by,'agent'),'status',COALESCE(status,'active'),'scope_package',COALESCE(scope_package,''),'verified_by',COALESCE(verified_by,''),'created_at',created_at,'updated_at',COALESCE(updated_at,created_at))) FROM (SELECT * FROM known_gotchas ORDER BY created_at DESC)`
|
|
167
167
|
);
|
|
168
168
|
const flows = jsonRows(
|
|
169
|
-
`SELECT json_group_array(json_object('id',id,'name',name,'file_path',COALESCE(file_path,''),'metadata',COALESCE(metadata,'{}'),'updated_at',updated_at)) FROM (SELECT * FROM nodes WHERE type
|
|
169
|
+
`SELECT json_group_array(json_object('id',id,'name',name,'file_path',COALESCE(file_path,''),'metadata',COALESCE(metadata,'{}'),'updated_at',updated_at)) FROM (SELECT * FROM nodes WHERE type IN ('arch_flow', 'feature_domain') ORDER BY updated_at DESC)`
|
|
170
170
|
);
|
|
171
171
|
const decisions = jsonRows(
|
|
172
172
|
`SELECT json_group_array(json_object('id',id,'name',name,'metadata',COALESCE(metadata,'{}'),'created_at',created_at)) FROM (SELECT * FROM nodes WHERE type = 'decision' ORDER BY created_at DESC)`
|
|
@@ -790,7 +790,13 @@ function renderFlows(flows) {
|
|
|
790
790
|
</div>
|
|
791
791
|
<div class="flow-hops-chain">
|
|
792
792
|
${hops.map(function(h, idx) {
|
|
793
|
-
|
|
793
|
+
var toLabel = typeof h === "object" ? (h.to || "") : String(h);
|
|
794
|
+
var fromLabel = (typeof h === "object" && h.from) ? h.from : "";
|
|
795
|
+
var rel = (typeof h === "object" && h.relation) ? ` <span style="opacity:0.6;font-size:10px">(${escapeHtml(h.relation)})</span>` : '';
|
|
796
|
+
var firstHopPrefix = (idx === 0 && fromLabel && fromLabel !== toLabel)
|
|
797
|
+
? `<span class="hop-node">${escapeHtml(fromLabel)}</span><span class="hop-arrow">→</span>`
|
|
798
|
+
: '';
|
|
799
|
+
return `${firstHopPrefix}<span class="hop-node">${escapeHtml(toLabel)}${rel}</span>${idx < hops.length - 1 ? '<span class="hop-arrow">→</span>' : ''}`;
|
|
794
800
|
}).join("")}
|
|
795
801
|
</div>
|
|
796
802
|
${meta.gotchas && meta.gotchas.length ? `<div style="font-size:11px;color:var(--amber)">⚠️ Linked Gotchas: ${meta.gotchas.map(escapeHtml).join(", ")}</div>` : ''}
|
|
@@ -896,7 +902,8 @@ function initOrRefreshGraph() {
|
|
|
896
902
|
var color = "#64748b";
|
|
897
903
|
if (n.type === "file") color = "#06b6d4";
|
|
898
904
|
else if (n.type === "gotcha") color = "#f59e0b";
|
|
899
|
-
else if (n.type === "arch_flow") color = "#6366f1";
|
|
905
|
+
else if (n.type === "arch_flow" || n.type === "feature_domain") color = "#6366f1";
|
|
906
|
+
else if (n.type === "cross_service_link" || n.type === "workflow") color = "#818cf8";
|
|
900
907
|
else if (n.type === "decision") color = "#10b981";
|
|
901
908
|
return {
|
|
902
909
|
id: n.id,
|
package/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://antigravity.google/schemas/v1/plugin.json",
|
|
3
3
|
"name": "kuma",
|
|
4
|
-
"version": "2.4.
|
|
4
|
+
"version": "2.4.9",
|
|
5
5
|
"description": "Safety-first context & orchestration engine for AI coding agents. Shadow memory, gotcha lifecycle, blast radius impact analysis, and test verification.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "plumpslabs",
|