@appchy/jarvis 0.1.89 → 0.1.90
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/bin.js +12 -5
- package/dist/bin.js.map +1 -1
- package/dist/data/mcp.mjs +11 -4
- package/package.json +4 -4
package/dist/data/mcp.mjs
CHANGED
|
@@ -1651,14 +1651,14 @@ function planScope(ctx, req) {
|
|
|
1651
1651
|
anticipated,
|
|
1652
1652
|
editCodeNodes,
|
|
1653
1653
|
governance,
|
|
1654
|
-
obligations: toObligations(governance, anticipated),
|
|
1654
|
+
obligations: toObligations(governance, anticipated, testsCovering),
|
|
1655
1655
|
references,
|
|
1656
1656
|
testsCovering,
|
|
1657
1657
|
blastRadius,
|
|
1658
1658
|
lowConfidence
|
|
1659
1659
|
};
|
|
1660
1660
|
}
|
|
1661
|
-
function toObligations(governance, existing = []) {
|
|
1661
|
+
function toObligations(governance, existing = [], keep = []) {
|
|
1662
1662
|
const rules = governance.map((g) => {
|
|
1663
1663
|
const full = g.body !== void 0;
|
|
1664
1664
|
return {
|
|
@@ -1668,13 +1668,19 @@ function toObligations(governance, existing = []) {
|
|
|
1668
1668
|
statement: full ? `Its full text is here. Say how the plan satisfies it, or why it does not apply.` : `Not read yet \u2014 only its title arrived. Read it, then say how the plan satisfies it.`
|
|
1669
1669
|
};
|
|
1670
1670
|
});
|
|
1671
|
+
const preserved = keep.map((c) => ({
|
|
1672
|
+
type: "keep",
|
|
1673
|
+
id: c.line === void 0 ? c.file : `${c.file}:${c.line}`,
|
|
1674
|
+
statement: `Passes over this code today. It must still pass \u2014 and it must not be the thing the plan changes to make it.`
|
|
1675
|
+
}));
|
|
1671
1676
|
return [
|
|
1672
1677
|
...rules,
|
|
1673
1678
|
...existing.map((e) => ({
|
|
1674
1679
|
type: "existing",
|
|
1675
1680
|
id: e.line === void 0 ? e.file : `${e.file}:${e.line}`,
|
|
1676
1681
|
statement: `Already in the tree and close to what was described. Reuse it, or say why the plan builds alongside it.`
|
|
1677
|
-
}))
|
|
1682
|
+
})),
|
|
1683
|
+
...preserved
|
|
1678
1684
|
];
|
|
1679
1685
|
}
|
|
1680
1686
|
function isCodeHit(hit) {
|
|
@@ -2304,7 +2310,8 @@ async function scope(ctx, req) {
|
|
|
2304
2310
|
const topGov = plan.governance.filter((g) => g.body === void 0).slice(0, 3).map((g) => g.id).join(", ");
|
|
2305
2311
|
const unread = plan.obligations.filter((o) => o.type === "governance" && !o.full).length;
|
|
2306
2312
|
const reuse = plan.obligations.filter((o) => o.type === "existing").length;
|
|
2307
|
-
const
|
|
2313
|
+
const keep = plan.obligations.filter((o) => o.type === "keep").length;
|
|
2314
|
+
const summary = plan.lowConfidence ? `Low-confidence (build-new) scope for "${req.task}": no code strongly matched \u2014 ${plan.anticipated.length} integration point(s) to READ, not edit; ${plan.governance.length} concept-matched governance. Lead with search + read.` : `Scoped "${req.task}": ${plan.editSet.length} edit target(s), ${plan.governance.length} governance, ${plan.testsCovering.length} covering test(s), blast radius ${plan.blastRadius.total} (${confidence})${topFiles ? ` \u2014 ${topFiles}` : ""}.${rules.ids > 0 && topGov ? ` ${rules.full} rule(s) came back in full; NEXT: read ${topGov} for the ${rules.ids} that did not,` : rules.full > 0 ? ` All ${rules.full} governing rule(s) came back in FULL \u2014 read them here, not with map_read;` : " NEXT:"} then check the edit-set with map_scope {edits} before you commit.${plan.obligations.length > 0 ? ` ${plan.obligations.length} obligation(s) outstanding${unread > 0 ? `, ${unread} rule(s) not yet read` : ""}${reuse > 0 ? `, ${reuse} thing(s) that already exist` : ""}${keep > 0 ? `, ${keep} that must keep passing` : ""} \u2014 see \`obligations\`.` : ""}`;
|
|
2308
2315
|
return {
|
|
2309
2316
|
summary,
|
|
2310
2317
|
task: req.task,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appchy/jarvis",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.90",
|
|
4
4
|
"description": "Jarvis — local AI coding assistant CLI",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -56,17 +56,17 @@
|
|
|
56
56
|
"tsup": "^8.5.1",
|
|
57
57
|
"typescript": "^5.7.0",
|
|
58
58
|
"vitest": "^2.1.0",
|
|
59
|
-
"@jarvis/anthropic": "1.0.0",
|
|
60
59
|
"@jarvis/agents": "1.0.0",
|
|
60
|
+
"@jarvis/anthropic": "1.0.0",
|
|
61
61
|
"@jarvis/board": "0.1.0",
|
|
62
62
|
"@jarvis/data": "0.1.0",
|
|
63
63
|
"@jarvis/errors": "1.0.0",
|
|
64
64
|
"@jarvis/logger": "1.0.0",
|
|
65
|
-
"@jarvis/types": "1.0.0",
|
|
66
65
|
"@jarvis/rpc": "1.0.0",
|
|
67
66
|
"@jarvis/typescript-config": "1.0.0",
|
|
68
67
|
"@jarvis/vitest-config": "1.0.0",
|
|
69
|
-
"@jarvis/ui": "0.1.0"
|
|
68
|
+
"@jarvis/ui": "0.1.0",
|
|
69
|
+
"@jarvis/types": "1.0.0"
|
|
70
70
|
},
|
|
71
71
|
"scripts": {
|
|
72
72
|
"dev": "tsx watch src/bin.ts start --foreground",
|