@mutmutco/cli 2.52.1 → 2.54.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.
Files changed (3) hide show
  1. package/dist/main.cjs +684 -309
  2. package/dist/saga.cjs +16 -8
  3. package/package.json +1 -1
package/dist/saga.cjs CHANGED
@@ -3522,18 +3522,23 @@ function headPrompt(state) {
3522
3522
  const decisions = shownDecisions(state.decisions);
3523
3523
  const actions = (state.actionLog ?? []).slice(-HEAD_PROMPT_ACTION_LIMIT);
3524
3524
  return [
3525
- "You maintain ONE durable slot of a work-session: PINNED (things worth remembering). Given the CURRENT",
3526
- "HEAD and the recent TRANSCRIPT + DECISIONS, return an updated PINNED only. Keep it tight and concrete;",
3527
- "keep anything the user pinned; never invent; preserve Turkish characters (\xE7 \u011F \u0131 \u0130 \xF6 \u015F \xFC) exactly. Do",
3528
- "NOT manage next or the checklist \u2014 the note path owns those. The ANCHOR is the read-only North-Star \u2014",
3529
- "NEVER change it. Never restate an unverified artifact-claim (a named file, PR, flag, or board state)",
3530
- "as settled fact \u2014 keep it as the belief it was recorded as.",
3525
+ "You maintain two durable slots of a work-session: PINNED (things worth remembering) and a NEXT",
3526
+ "SUGGESTION (a best-effort one-line hint for the next useful step). Given the CURRENT HEAD and the",
3527
+ "recent TRANSCRIPT + DECISIONS, return an updated PINNED and, optionally, a next suggestion. Keep",
3528
+ "PINNED tight and concrete; keep anything the user pinned; never invent; preserve Turkish characters",
3529
+ "(\xE7 \u011F \u0131 \u0130 \xF6 \u015F \xFC) exactly. Do NOT manage the checklist \u2014 the note path owns that. The ANCHOR is the",
3530
+ "read-only North-Star \u2014 NEVER change it. Never restate an unverified artifact-claim (a named file,",
3531
+ "PR, flag, or board state) as settled fact \u2014 keep it as the belief it was recorded as.",
3531
3532
  "You MAY also propose supersessions: each DECISION is shown with its original stable 0-based index. Propose a",
3532
3533
  "supersession ONLY for a NEWER decision that directly contradicts/replaces an OLDER one where neither",
3533
3534
  "already carries a supersededBy. HIGH PRECISION \u2014 propose ONLY when you are confident the older claim",
3534
3535
  "is now false or obsolete; the newer decision's timestamp MUST be later than the older's (newer-supersedes-",
3535
- "older only, never the reverse). When unsure, propose nothing. NEVER touch the anchor, next, or checklist.",
3536
- 'Output ONLY a JSON object: {"pinned":[string],"supersede":[{"older":int,"newer":int,"reason":string}]}.',
3536
+ "older only, never the reverse). When unsure, propose nothing. NEVER touch the anchor or checklist.",
3537
+ 'For "next": propose a single concise actionable line (\u2264140 chars) describing the most useful next step',
3538
+ "for a future session, derived from the transcript. This is a best-effort suggestion shown only when",
3539
+ "the user has not set their own NEXT. Use an empty string if nothing concrete emerges \u2014 never invent.",
3540
+ "Preserve Turkish characters exactly.",
3541
+ 'Output ONLY a JSON object: {"pinned":[string],"next":string,"supersede":[{"older":int,"newer":int,"reason":string}]}.',
3537
3542
  "",
3538
3543
  "CURRENT HEAD:",
3539
3544
  JSON.stringify(state.head ?? {}, null, 2),
@@ -3557,6 +3562,9 @@ function parseHeadUpdate(raw) {
3557
3562
  if (!obj || typeof obj !== "object") return null;
3558
3563
  const u = {};
3559
3564
  if (Array.isArray(obj.pinned)) u.pinned = obj.pinned.filter((x) => typeof x === "string");
3565
+ if (typeof obj.next === "string" && obj.next.trim()) {
3566
+ u.nextAuto = obj.next.trim().slice(0, 280);
3567
+ }
3560
3568
  if (Array.isArray(obj.supersede)) {
3561
3569
  const supersede = obj.supersede.filter((e) => {
3562
3570
  if (!e || typeof e !== "object") return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "2.52.1",
3
+ "version": "2.54.0",
4
4
  "description": "MMI Future CLI — delivers the org rules (whole-file), plus saga and KB access. The cross-IDE engine the plugin's SessionStart hook drives.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",