@appchy/jarvis 0.1.87 → 0.1.89

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 CHANGED
@@ -8478,12 +8478,32 @@ function planScope(ctx, req) {
8478
8478
  anticipated,
8479
8479
  editCodeNodes,
8480
8480
  governance,
8481
+ obligations: toObligations(governance, anticipated),
8481
8482
  references,
8482
8483
  testsCovering,
8483
8484
  blastRadius,
8484
8485
  lowConfidence
8485
8486
  };
8486
8487
  }
8488
+ function toObligations(governance, existing = []) {
8489
+ const rules = governance.map((g) => {
8490
+ const full = g.body !== void 0;
8491
+ return {
8492
+ type: "governance",
8493
+ id: g.id,
8494
+ full,
8495
+ 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.`
8496
+ };
8497
+ });
8498
+ return [
8499
+ ...rules,
8500
+ ...existing.map((e) => ({
8501
+ type: "existing",
8502
+ id: e.line === void 0 ? e.file : `${e.file}:${e.line}`,
8503
+ statement: `Already in the tree and close to what was described. Reuse it, or say why the plan builds alongside it.`
8504
+ }))
8505
+ ];
8506
+ }
8487
8507
  function isCodeHit(hit) {
8488
8508
  return hit.file !== void 0 && hit.id === void 0;
8489
8509
  }
@@ -9000,6 +9020,7 @@ async function scope(ctx, req) {
9000
9020
  editSet: [],
9001
9021
  anticipatedIntegrationPoints: [],
9002
9022
  governance: [],
9023
+ obligations: [],
9003
9024
  references: [],
9004
9025
  testsCovering: [],
9005
9026
  blastRadius: { total: 0, byType: {} },
@@ -9108,13 +9129,16 @@ async function scope(ctx, req) {
9108
9129
  const rules = await readRules(ctx, plan.governance, req.rules);
9109
9130
  const topFiles = plan.editSet.slice(0, 3).map((e) => e.file).join(", ");
9110
9131
  const topGov = plan.governance.filter((g) => g.body === void 0).slice(0, 3).map((g) => g.id).join(", ");
9111
- 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.`;
9132
+ const unread = plan.obligations.filter((o) => o.type === "governance" && !o.full).length;
9133
+ const reuse = plan.obligations.filter((o) => o.type === "existing").length;
9134
+ 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` : ""} \u2014 see \`obligations\`.` : ""}`;
9112
9135
  return {
9113
9136
  summary,
9114
9137
  task: req.task,
9115
9138
  editSet: plan.editSet,
9116
9139
  anticipatedIntegrationPoints: plan.anticipated,
9117
9140
  governance: plan.governance,
9141
+ obligations: plan.obligations,
9118
9142
  rules,
9119
9143
  references: plan.references,
9120
9144
  testsCovering: plan.testsCovering,
@@ -10114,7 +10138,7 @@ import { createRequire as createRequire2 } from "module";
10114
10138
  var _require = createRequire2(import.meta.url);
10115
10139
  var VERSION2 = _require("../package.json").version ?? "0.0.0";
10116
10140
  var IS_DEV = String(_require("../package.json").name ?? "").endsWith("-dev");
10117
- var SHA = "bf7fe32";
10141
+ var SHA = "ec7e216";
10118
10142
  var BUILT = "2026-09-11";
10119
10143
  var BUILD = SHA ?? "source";
10120
10144
  var BUILD_LABEL = `${SHA ? `${VERSION2} (${SHA}${BUILT ? ` ${BUILT}` : ""})` : `${VERSION2} (source)`}${IS_DEV ? " \u2014 development build" : ""}`;