agent-nuvira 3.2.0 → 3.3.1

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 (150) hide show
  1. package/.agents/skills/code-assessment/SKILL.md +10 -1
  2. package/.agents/skills/index.json +1 -1
  3. package/README.md +42 -1
  4. package/dist/agents/agents/writer.d.ts.map +1 -1
  5. package/dist/agents/agents/writer.js +7 -1
  6. package/dist/agents/agents/writer.js.map +1 -1
  7. package/dist/cli/chat.d.ts +6 -0
  8. package/dist/cli/chat.d.ts.map +1 -1
  9. package/dist/cli/chat.js +45 -1
  10. package/dist/cli/chat.js.map +1 -1
  11. package/dist/cli/cli-program.d.ts.map +1 -1
  12. package/dist/cli/cli-program.js +6 -2
  13. package/dist/cli/cli-program.js.map +1 -1
  14. package/dist/cli/commands.d.ts +2 -1
  15. package/dist/cli/commands.d.ts.map +1 -1
  16. package/dist/cli/commands.js +3 -2
  17. package/dist/cli/commands.js.map +1 -1
  18. package/dist/cli/config.js +2 -2
  19. package/dist/cli/config.js.map +1 -1
  20. package/dist/cli/dashboard.d.ts +26 -0
  21. package/dist/cli/dashboard.d.ts.map +1 -1
  22. package/dist/cli/dashboard.js +123 -3
  23. package/dist/cli/dashboard.js.map +1 -1
  24. package/dist/cli/execute.d.ts.map +1 -1
  25. package/dist/cli/execute.js +48 -3
  26. package/dist/cli/execute.js.map +1 -1
  27. package/dist/cli/intent.d.ts +1 -1
  28. package/dist/cli/intent.js +2 -2
  29. package/dist/cli/intent.js.map +1 -1
  30. package/dist/cli/loop-executor.d.ts +24 -0
  31. package/dist/cli/loop-executor.d.ts.map +1 -1
  32. package/dist/cli/loop-executor.js +161 -1
  33. package/dist/cli/loop-executor.js.map +1 -1
  34. package/dist/cli/process-control.d.ts +15 -0
  35. package/dist/cli/process-control.d.ts.map +1 -1
  36. package/dist/cli/process-control.js +38 -14
  37. package/dist/cli/process-control.js.map +1 -1
  38. package/dist/cli/trace.d.ts +19 -0
  39. package/dist/cli/trace.d.ts.map +1 -1
  40. package/dist/cli/trace.js +82 -2
  41. package/dist/cli/trace.js.map +1 -1
  42. package/dist/forwarded.d.ts +2 -0
  43. package/dist/forwarded.d.ts.map +1 -0
  44. package/dist/forwarded.js +2 -0
  45. package/dist/forwarded.js.map +1 -0
  46. package/dist/gateway/registry.d.ts.map +1 -1
  47. package/dist/gateway/registry.js +22 -3
  48. package/dist/gateway/registry.js.map +1 -1
  49. package/dist/inference/tool-call-utils.d.ts +54 -0
  50. package/dist/inference/tool-call-utils.d.ts.map +1 -1
  51. package/dist/inference/tool-call-utils.js +216 -4
  52. package/dist/inference/tool-call-utils.js.map +1 -1
  53. package/dist/learning/autonomy-policy.d.ts +42 -0
  54. package/dist/learning/autonomy-policy.d.ts.map +1 -1
  55. package/dist/learning/autonomy-policy.js +115 -19
  56. package/dist/learning/autonomy-policy.js.map +1 -1
  57. package/dist/learning/cost-tracker.d.ts +14 -0
  58. package/dist/learning/cost-tracker.d.ts.map +1 -1
  59. package/dist/learning/cost-tracker.js +22 -0
  60. package/dist/learning/cost-tracker.js.map +1 -1
  61. package/dist/learning/deliverable-class.d.ts +48 -0
  62. package/dist/learning/deliverable-class.d.ts.map +1 -1
  63. package/dist/learning/deliverable-class.js +72 -0
  64. package/dist/learning/deliverable-class.js.map +1 -1
  65. package/dist/learning/engine-router.d.ts +12 -1
  66. package/dist/learning/engine-router.d.ts.map +1 -1
  67. package/dist/learning/engine-router.js +28 -0
  68. package/dist/learning/engine-router.js.map +1 -1
  69. package/dist/learning/eval-framework.d.ts +24 -0
  70. package/dist/learning/eval-framework.d.ts.map +1 -1
  71. package/dist/learning/eval-framework.js +291 -0
  72. package/dist/learning/eval-framework.js.map +1 -1
  73. package/dist/learning/intent-envelope.d.ts +162 -0
  74. package/dist/learning/intent-envelope.d.ts.map +1 -0
  75. package/dist/learning/intent-envelope.js +235 -0
  76. package/dist/learning/intent-envelope.js.map +1 -0
  77. package/dist/learning/long-form.d.ts.map +1 -1
  78. package/dist/learning/long-form.js +12 -1
  79. package/dist/learning/long-form.js.map +1 -1
  80. package/dist/learning/reasoning-trace.d.ts +89 -0
  81. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  82. package/dist/learning/reasoning-trace.js +49 -0
  83. package/dist/learning/reasoning-trace.js.map +1 -1
  84. package/dist/learning/run-trace.d.ts +164 -0
  85. package/dist/learning/run-trace.d.ts.map +1 -0
  86. package/dist/learning/run-trace.js +342 -0
  87. package/dist/learning/run-trace.js.map +1 -0
  88. package/dist/learning/skill-store.d.ts.map +1 -1
  89. package/dist/learning/skill-store.js +5 -1
  90. package/dist/learning/skill-store.js.map +1 -1
  91. package/dist/learning/skill-types.d.ts +14 -0
  92. package/dist/learning/skill-types.d.ts.map +1 -1
  93. package/dist/learning/skill-types.js +19 -0
  94. package/dist/learning/skill-types.js.map +1 -1
  95. package/dist/learning/unattended-job.d.ts +57 -0
  96. package/dist/learning/unattended-job.d.ts.map +1 -1
  97. package/dist/learning/unattended-job.js +92 -0
  98. package/dist/learning/unattended-job.js.map +1 -1
  99. package/dist/nlu/conversation-gate.d.ts +9 -0
  100. package/dist/nlu/conversation-gate.d.ts.map +1 -1
  101. package/dist/nlu/conversation-gate.js +38 -17
  102. package/dist/nlu/conversation-gate.js.map +1 -1
  103. package/dist/resources/command-manifest.json +10 -10
  104. package/dist/skills/bundled-skills.d.ts.map +1 -1
  105. package/dist/skills/bundled-skills.js +13 -2
  106. package/dist/skills/bundled-skills.js.map +1 -1
  107. package/dist/tools/coding-tools.d.ts.map +1 -1
  108. package/dist/tools/coding-tools.js +33 -8
  109. package/dist/tools/coding-tools.js.map +1 -1
  110. package/dist/tools/edit-verification.d.ts +95 -0
  111. package/dist/tools/edit-verification.d.ts.map +1 -1
  112. package/dist/tools/edit-verification.js +238 -16
  113. package/dist/tools/edit-verification.js.map +1 -1
  114. package/dist/tools/registry.d.ts +31 -2
  115. package/dist/tools/registry.d.ts.map +1 -1
  116. package/dist/tools/registry.js +44 -5
  117. package/dist/tools/registry.js.map +1 -1
  118. package/dist/tools/run-cli.d.ts.map +1 -1
  119. package/dist/tools/run-cli.js +15 -2
  120. package/dist/tools/run-cli.js.map +1 -1
  121. package/dist/tools/run-terminal.d.ts.map +1 -1
  122. package/dist/tools/run-terminal.js +23 -4
  123. package/dist/tools/run-terminal.js.map +1 -1
  124. package/dist/tools/skill-tool.d.ts.map +1 -1
  125. package/dist/tools/skill-tool.js +5 -0
  126. package/dist/tools/skill-tool.js.map +1 -1
  127. package/dist/tools/tool-loop.d.ts +102 -1
  128. package/dist/tools/tool-loop.d.ts.map +1 -1
  129. package/dist/tools/tool-loop.js +480 -13
  130. package/dist/tools/tool-loop.js.map +1 -1
  131. package/dist/web-dashboard/chat-console.d.ts +7 -0
  132. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  133. package/dist/web-dashboard/chat-console.js +41 -3
  134. package/dist/web-dashboard/chat-console.js.map +1 -1
  135. package/dist/web-dashboard/server.d.ts +46 -0
  136. package/dist/web-dashboard/server.d.ts.map +1 -1
  137. package/dist/web-dashboard/server.js +115 -1
  138. package/dist/web-dashboard/server.js.map +1 -1
  139. package/dist/web-dashboard/src/admin-auth.d.ts +49 -2
  140. package/dist/web-dashboard/src/admin-auth.d.ts.map +1 -1
  141. package/dist/web-dashboard/src/admin-auth.js +64 -3
  142. package/dist/web-dashboard/src/admin-auth.js.map +1 -1
  143. package/dist/web-dashboard/src/types.d.ts +41 -0
  144. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  145. package/package.json +5 -2
  146. package/src/web-dashboard/public/assets/index-CjvoBhlz.js +207 -0
  147. package/src/web-dashboard/public/assets/index-CjvoBhlz.js.map +1 -0
  148. package/src/web-dashboard/public/index.html +1 -1
  149. package/src/web-dashboard/public/assets/index-kCUkORm7.js +0 -207
  150. package/src/web-dashboard/public/assets/index-kCUkORm7.js.map +0 -1
@@ -276,6 +276,96 @@ function looksLikeDeliverableTail(text) {
276
276
  return false;
277
277
  return !REASONING_LINE.test(s.split(/\r?\n/, 1)[0] ?? '');
278
278
  }
279
+ /**
280
+ * A leading line that is the model's OWN working notes or an echo of the
281
+ * prompt's fields, rather than the deliverable itself.
282
+ *
283
+ * Observed live (a 2-page story unit): the file opened with
284
+ *
285
+ * # Chapter 1
286
+ * Author.
287
+ * Village boy finds a lamp in a banyan root.
288
+ * Chapter 1 (the concluding unit of the opening).
289
+ * * *Note:* The prompt asks for the "CONCLUDING unit — Chapter 1" of an
290
+ * "OPENING unit". This is slightly contradictory…
291
+ *
292
+ * before the prose started. The unit prompt already forbids all of this
293
+ * ("Output ONLY the prose", "No title line, no headings", "No preamble, no
294
+ * note about what you are doing") — but prompt compliance is a probability, and
295
+ * for a 39-unit book a violated prompt pollutes every chapter. The deliverable
296
+ * needs a guarantee, not a request.
297
+ *
298
+ * Deliberately narrow, and only ever applied to a LEADING block: an echoed
299
+ * field label (`Author.`, `Title:`), a heading line (`# Chapter 1`), a note
300
+ * marker, or a sentence that talks about the prompt/task itself.
301
+ */
302
+ const AUTHOR_NOTE_LINE = /^(?:#{1,6}\s*)?(?:author|title|form|book|chapter|unit|word\s*count|target|summary|requirements?|style|genre|logline|premise|setting|characters?)\s*[:.\u2014-]/i;
303
+ const AUTHOR_HEADING_LINE = /^#{1,6}\s+\S/;
304
+ const AUTHOR_NOTE_MARKER = /^\s*(?:\*{1,2}\s*)?(?:note|n\.b\.|nb|reminder)\s*[:.]?/i;
305
+ const AUTHOR_META_SENTENCE = /\b(?:the prompt|this prompt|the task|the instructions?|as an ai|as a language model|i (?:am|will|need|should|must)\b|here(?:'s| is) (?:the|my)|the (?:concluding|opening) unit|following the (?:prompt|instructions)|word target|as requested)\b/i;
306
+ /** Does ONE line look like working notes rather than delivered prose? */
307
+ function isAuthorNoteLine(line) {
308
+ const t = line.trim();
309
+ if (!t)
310
+ return false;
311
+ if (AUTHOR_NOTE_MARKER.test(t))
312
+ return true;
313
+ if (AUTHOR_NOTE_LINE.test(t))
314
+ return true;
315
+ if (AUTHOR_HEADING_LINE.test(t))
316
+ return true;
317
+ return t.length <= 400 && AUTHOR_META_SENTENCE.test(t);
318
+ }
319
+ /**
320
+ * Strip a LEADING block of the model's own working notes from an authored unit,
321
+ * so the artifact holds the work rather than a preamble about the work.
322
+ *
323
+ * Stops at the first line that is prose — so a note that legitimately appears
324
+ * inside the text is untouched — and returns the input UNCHANGED when stripping
325
+ * would leave too little to be the unit (a prose opening that merely happens to
326
+ * match one of the shapes must never cost the deliverable).
327
+ */
328
+ export function stripLeadingAuthorNotes(content) {
329
+ const text = content || '';
330
+ if (!text.trim())
331
+ return text;
332
+ const lines = text.split(/\r?\n/);
333
+ let cut = 0;
334
+ let sawNote = false;
335
+ let blankRun = 0;
336
+ for (let i = 0; i < lines.length; i++) {
337
+ const line = lines[i];
338
+ if (line.trim() === '') {
339
+ // Blanks inside the leading block belong to it; a blank BEFORE any note
340
+ // cannot occur (leading whitespace is skipped by whoever trims first).
341
+ blankRun += 1;
342
+ if (sawNote)
343
+ cut = i + 1;
344
+ continue;
345
+ }
346
+ if (!isAuthorNoteLine(line))
347
+ break;
348
+ // A heading is only a note in the LEADING position, and only when it looks
349
+ // like a container (`# Chapter 1`), never a short line of prose the author
350
+ // happened to bold.
351
+ if (AUTHOR_HEADING_LINE.test(line.trim()) && line.trim().replace(/#+\s*/, '').split(/\s+/).length > 6)
352
+ break;
353
+ sawNote = true;
354
+ cut = i + 1;
355
+ blankRun = 0;
356
+ }
357
+ if (!sawNote)
358
+ return text;
359
+ void blankRun;
360
+ const remainder = lines.slice(cut).join('\n').replace(/^\s*\n/, '');
361
+ // Never trade a real deliverable for a tidy one: require the surviving text
362
+ // to be a substantial majority of what came in, and to be non-empty.
363
+ if (remainder.trim().length < 100)
364
+ return text;
365
+ if (remainder.trim().length < text.trim().length * 0.5)
366
+ return text;
367
+ return remainder;
368
+ }
279
369
  /**
280
370
  * Salvage the deliverable from a reply that opens with a reasoning trace.
281
371
  *
@@ -599,6 +689,20 @@ function parseJsonLoose(text) {
599
689
  return null;
600
690
  }
601
691
  }
692
+ /**
693
+ * The list inside a value keyed by our own tool NAME — either the list itself
694
+ * or a `{followups: …}` wrapper. `undefined` when it is neither.
695
+ */
696
+ function namedFollowupList(value) {
697
+ if (Array.isArray(value))
698
+ return value;
699
+ if (value && typeof value === 'object') {
700
+ const list = value.followups;
701
+ if (Array.isArray(list))
702
+ return list;
703
+ }
704
+ return undefined;
705
+ }
602
706
  /**
603
707
  * Is this parsed value the model's `suggest_followups` payload?
604
708
  *
@@ -607,13 +711,24 @@ function parseJsonLoose(text) {
607
711
  * BARE ARRAY under a `**suggest_followups**` caption (both observed live
608
712
  * 2026-09-21 from `nuvira execute`).
609
713
  *
714
+ * ALSO accepts our tool's ARGUMENTS keyed by our own tool NAME
715
+ * (`{"suggest_followups":[{prompt,label},…]}`) — the shape models actually
716
+ * hand-write when they cannot emit a real call. Observed live 2026-09-22 on the
717
+ * dashboard chat: 14 of 116 stored assistant turns ended with this block, and
718
+ * it was delivered to the reader verbatim while the suggestions were lost
719
+ * entirely (no chips) — the contract's own documented shape (`{"tool":…}`)
720
+ * appeared ZERO times, so matching only that shape matched nothing in practice.
721
+ *
610
722
  * CONSERVATISM ON PLAIN STRINGS: an entry that is a `{prompt}` object is the
611
723
  * tool's own schema and is accepted anywhere; a plain STRING entry is only
612
724
  * accepted when the model captioned the payload with the tool name, because
613
725
  * `{"followups":["Do you like it?"]}` is also a perfectly ordinary config a
614
726
  * user could have asked for and a bare one must survive. (These flags are
615
727
  * deliberately asymmetric rather than perfectly symmetric — this helper must
616
- * never delete a deliverable.)
728
+ * never delete a deliverable.) The name-keyed branch is ALWAYS strict about
729
+ * this for the same reason: the tool's schema only ever allows `{prompt}`
730
+ * objects, so a list of plain strings under that key is almost certainly the
731
+ * user's own JSON, not our contract.
617
732
  */
618
733
  function isFollowupsPayload(value, allowStringEntries) {
619
734
  if (!value || typeof value !== 'object')
@@ -623,10 +738,72 @@ function isFollowupsPayload(value, allowStringEntries) {
623
738
  const o = value;
624
739
  if (o.tool === 'suggest_followups')
625
740
  return true;
741
+ if ('suggest_followups' in o)
742
+ return isFollowupList(namedFollowupList(o.suggest_followups), false);
626
743
  const nested = (o.arguments ?? {});
627
744
  const list = Array.isArray(o.followups) ? o.followups : nested.followups;
628
745
  return isFollowupList(list, allowStringEntries);
629
746
  }
747
+ /**
748
+ * `isFollowupsPayload` for a payload written as TEXT with no caption — the
749
+ * question the tool loop's recovery asks before consuming a block it found by
750
+ * the name-keyed opener. Exported so the strip and the recovery share one
751
+ * definition of "this is our contract".
752
+ */
753
+ export function isTextualFollowupsPayload(value) {
754
+ return isFollowupsPayload(value, false);
755
+ }
756
+ /**
757
+ * The followup entries a parsed `suggest_followups` payload carries — for
758
+ * RECOVERY, as opposed to `isFollowupsPayload`'s strip-or-keep question.
759
+ *
760
+ * Returns null when the payload is ours but carries nothing usable (the model
761
+ * wrote the call with no arguments): the block still gets stripped, there is
762
+ * simply nothing to offer the user.
763
+ *
764
+ * Exported so the tool loop's text-call recovery and the strip share ONE
765
+ * definition of which shapes are the contract. They drifted apart once already
766
+ * — the strip knew a shape the recovery's gate did not, which is exactly how
767
+ * 14 turns lost their followups.
768
+ */
769
+ export function followupEntriesFromPayload(value) {
770
+ if (!value || typeof value !== 'object')
771
+ return null;
772
+ // One expression per accepted shape, in the order the shapes appear on the
773
+ // wire: the list itself, the name-keyed arguments, then the arguments
774
+ // object (directly or wrapped in a `{tool, arguments}` call).
775
+ const o = value;
776
+ const nested = (o.arguments && typeof o.arguments === 'object' ? o.arguments : {});
777
+ const list = Array.isArray(value)
778
+ ? value
779
+ : 'suggest_followups' in o
780
+ ? namedFollowupList(o.suggest_followups)
781
+ : Array.isArray(o.followups)
782
+ ? o.followups
783
+ : nested.followups;
784
+ if (!isFollowupList(list, false))
785
+ return null;
786
+ const entries = list
787
+ .map((f) => {
788
+ const e = f;
789
+ return {
790
+ prompt: typeof e?.prompt === 'string' ? e.prompt : '',
791
+ ...(typeof e?.label === 'string' && e.label ? { label: e.label } : {}),
792
+ };
793
+ })
794
+ .filter((e) => e.prompt.trim());
795
+ return entries.length > 0 ? entries : null;
796
+ }
797
+ /**
798
+ * Cheap pre-check for "could this text carry a tool call written as JSON?".
799
+ *
800
+ * Deliberately shape-agnostic: it matches the canonical `{"tool":…}` opener
801
+ * AND the name-keyed `{"suggest_followups":…}` one. The tool loop's recovery
802
+ * used to gate on the literal `"tool"` substring, so a model that wrote a real
803
+ * call in the name-keyed shape never reached the extractor at all. A gate that
804
+ * only knows one shape is a gate that silently disables the fix for the other.
805
+ */
806
+ export const TEXTUAL_TOOL_CALL_HINT = /[{[]\s*"(?:tool|suggest_followups)"\s*:/;
630
807
  /** A non-empty list of followup entries (`{prompt,label?}` objects, ± strings). */
631
808
  function isFollowupList(list, allowStringEntries) {
632
809
  if (!Array.isArray(list) || list.length === 0)
@@ -634,6 +811,20 @@ function isFollowupList(list, allowStringEntries) {
634
811
  return list.every((f) => (allowStringEntries && typeof f === 'string') ||
635
812
  (f !== null && typeof f === 'object' && typeof f.prompt === 'string'));
636
813
  }
814
+ /**
815
+ * The exact name-keyed opener — our tool's own NAME as the JSON key.
816
+ * A truncated payload (the model hit a token cap mid-block) is scaffolding too,
817
+ * and it is only safe to strip when the block is BOUNDED by fences, which is
818
+ * what `isTruncatedNamedPayload` is for; the tool loop's own extraction handles
819
+ * the unbounded case before any surface sees the text.
820
+ */
821
+ const NAMED_PAYLOAD_OPENER = /^\s*\{\s*"suggest_followups"\s*:/;
822
+ /** A fenced body that only BEGINS the name-keyed payload (cut off mid-JSON). */
823
+ function isTruncatedNamedPayload(body) {
824
+ if (!NAMED_PAYLOAD_OPENER.test(body))
825
+ return false;
826
+ return parseJsonLoose(body) === null;
827
+ }
637
828
  /** Does the text immediately before a payload end on a tool-name caption? */
638
829
  function hasFollowupsCaption(textBefore) {
639
830
  return /\*{0,2}\s*suggest[_ ]?follow[_ ]?ups\s*\*{0,2}\s*:?[ \t]*$/i.test(textBefore.replace(/\s+$/, ''));
@@ -649,6 +840,20 @@ function stripTrailingFollowupsPayload(text) {
649
840
  const trimmed = text.replace(/\s+$/, '');
650
841
  if (!trimmed)
651
842
  return text;
843
+ // 0. An UNTERMINATED trailing fence whose body BEGINS with our tool name as
844
+ // the key — the model was cut off mid-payload (token cap) and the fence
845
+ // never closed. Only the exact name-keyed opener qualifies, so a truncated
846
+ // code block the user actually asked for is untouched.
847
+ if (!trimmed.endsWith('```')) {
848
+ const fenceOpen = trimmed.lastIndexOf('```');
849
+ if (fenceOpen >= 0) {
850
+ const afterFence = trimmed.slice(fenceOpen + 3);
851
+ const nl = afterFence.indexOf('\n');
852
+ const body = nl >= 0 ? afterFence.slice(nl + 1) : afterFence.replace(/^[a-zA-Z]*/, '');
853
+ if (isTruncatedNamedPayload(body))
854
+ return stripTrailingFollowupsHeader(trimmed.slice(0, fenceOpen));
855
+ }
856
+ }
652
857
  // 1. The LAST fenced block, when it ends the text and its body parses to
653
858
  // the payload. (Anchoring on the last block — not the first — keeps an
654
859
  // answer+code-block+followups-fence sequence correct.)
@@ -659,7 +864,8 @@ function stripTrailingFollowupsPayload(text) {
659
864
  const newline = trimmed.indexOf('\n', opening);
660
865
  if (newline >= 0 && newline < closing) {
661
866
  const body = trimmed.slice(newline + 1, closing);
662
- if (isFollowupsPayload(parseJsonLoose(body), hasFollowupsCaption(trimmed.slice(0, opening)))) {
867
+ if (isFollowupsPayload(parseJsonLoose(body), hasFollowupsCaption(trimmed.slice(0, opening))) ||
868
+ isTruncatedNamedPayload(body)) {
663
869
  return stripTrailingFollowupsHeader(trimmed.slice(0, opening));
664
870
  }
665
871
  }
@@ -687,11 +893,17 @@ function stripTrailingFollowupsPayload(text) {
687
893
  * `**suggest_followups**` label and/or the horizontal rule the model tends to
688
894
  * put in front of it. Only ever called once a payload WAS removed, so an
689
895
  * answer that legitimately ends in `---` on its own is untouched.
896
+ *
897
+ * The separator match tolerates a trailing NEWLINE (`\s*$`, not `[ \t]*$`):
898
+ * the caller slices the text at the payload's opening brace, so a model that
899
+ * wrote `…answer\n\n---\n{payload}` hands this function `…answer\n\n---\n`.
900
+ * Requiring the rule to sit at the very end missed exactly that — the common
901
+ * case — and left a dangling `---` under every cleaned answer.
690
902
  */
691
- function stripTrailingFollowupsHeader(text) {
903
+ export function stripTrailingFollowupsHeader(text) {
692
904
  return text
693
905
  .replace(/\n+\s*\*{0,2}\s*suggest[_ ]?follow[_ ]?ups\s*\*{0,2}\s*:?[ \t]*$/i, '')
694
- .replace(/\n+\s*(?:-{3,}|\*{3,}|_{3,})[ \t]*$/, '')
906
+ .replace(/\n+\s*(?:-{3,}|\*{3,}|_{3,})\s*$/, '')
695
907
  .replace(/\s+$/, '');
696
908
  }
697
909
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tool-call-utils.js","sourceRoot":"","sources":["../../src/inference/tool-call-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-call-utils.js","sourceRoot":"","sources":["../../src/inference/tool-call-utils.ts"],"names":[],"mappings":"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"}
@@ -99,6 +99,18 @@ export interface WriteAuthorization {
99
99
  authorized: boolean;
100
100
  /** Why — recorded so the judgment is auditable rather than a vibe. */
101
101
  reason: string;
102
+ /**
103
+ * The destination path the request NAMED, when it named one (`… at
104
+ * /path/Mahagatha.md`).
105
+ *
106
+ * Carried because "the user asked for a file" and "the user asked for THIS
107
+ * file" are different amounts of information, and the deliverable gate needs
108
+ * the second: telling a model "write the deliverable to disk" is a suggestion,
109
+ * while naming the destination the request itself gave is an instruction it
110
+ * can satisfy. Absent when the request named no path — the caller must not
111
+ * invent one.
112
+ */
113
+ requestedPath?: string;
102
114
  }
103
115
  /**
104
116
  * Does this request authorize the agent to CREATE files?
@@ -119,6 +131,22 @@ export interface WriteAuthorization {
119
131
  * which keeps today's confirm-or-refuse gate exactly as strict as it was.
120
132
  */
121
133
  export declare function requestAuthorizesWrites(request: string): WriteAuthorization;
134
+ /**
135
+ * Is this message a plain confirmation of work already proposed ("yes", "go
136
+ * ahead", "do it")? Exported because the intent grant reads it: an affirmative
137
+ * reply to a plan is what turns that plan into an approved envelope.
138
+ */
139
+ export declare function isAffirmativeReply(request: string): boolean;
140
+ /**
141
+ * Pull the destination path out of a request, when it names one.
142
+ *
143
+ * Uses the same pattern the authorization verdict keys on, so "the request
144
+ * names a path" and "here is that path" can never disagree — the failure mode
145
+ * being a gate that refuses for lack of a path while the request visibly
146
+ * contains one. Returns the trimmed match with trailing sentence punctuation
147
+ * removed ("…at /path/x.md." is the file `/path/x.md`).
148
+ */
149
+ export declare function extractRequestedPath(request: string): string | undefined;
122
150
  /**
123
151
  * A request that asks for the work to be recorded in git history.
124
152
  *
@@ -173,6 +201,20 @@ export declare function isPermissionSeekingSentence(sentence: string): boolean;
173
201
  * actual deliverable is narration, not a stall.
174
202
  */
175
203
  export declare function detectPermissionSeeking(content: string): boolean;
204
+ /**
205
+ * Does the reply END by asking the reader something?
206
+ *
207
+ * The companion question to {@link detectPermissionSeeking}, and the difference
208
+ * matters for the DELIVERABLE gate: "Do you want me to create the files?" is a
209
+ * stall the agent must decide past, while "Which of these two titles do you
210
+ * prefer?" is a decision input the user asked to be consulted on. Treating them
211
+ * alike would either stall on the first or bulldoze the second.
212
+ *
213
+ * Only the closing is judged (the gate's window is the turn's END), and only a
214
+ * literal question — an answer that merely mentions questions mid-text is
215
+ * finished prose.
216
+ */
217
+ export declare function replyAsksTheReader(content: string): boolean;
176
218
  /**
177
219
  * Remove the trailing permission-seeking sentences from an answer, keeping
178
220
  * everything before them VERBATIM (deliverables are prose — re-joining split
@@ -1 +1 @@
1
- {"version":3,"file":"autonomy-policy.d.ts","sourceRoot":"","sources":["../../src/learning/autonomy-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autonomy-policy.d.ts","sourceRoot":"","sources":["../../src/learning/autonomy-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,2CAA2C;AAC3C,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvD,wCAAwC;AACxC,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,oFAAoF;IACpF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,kBAAkB;AAClB,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CA6D5E;AA+DD,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAuD3E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAG3D;AAiBD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CASxE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM9D;AAOD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQvE;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI7F;AA4BD,iFAAiF;AACjF,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOrE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIhE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYnE;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QACmJ,CAAC;AAEvL;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,wBAAwB;IACvC,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,MAAM,EAAE,OAAO,CAAC;IAChB,gFAAgF;IAChF,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,SAAS,GAAG,KAAK,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,uEAAuE;AACvE,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,wBAAwB,CAiBnG;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,CAAC;AAEhG,+EAA+E;AAC/E,MAAM,WAAW,kBAAkB;IACjC,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,WAAW,EAAE,gBAAgB,CAAC;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,wBAAwB,CAoCvF;AAID;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAKvD,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAWtD,CAAC;AAEH;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,cAAc,EAAE,OAAO,CAAC;CACzB,GAAG,wBAAwB,CAsB3B;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,CAUtF"}
@@ -109,7 +109,17 @@ export function decideAutonomously(request) {
109
109
  * Verbs that mean "produce the artifact", not "tell me about it".
110
110
  * Deliberately includes the edit verbs: "add a chapter", "update the README".
111
111
  */
112
- const CREATE_VERB_RE = /\b(?:create|build|write|make|generate|develop|implement|scaffold|set\s+up|setup|add|produce|draft|code|rewrite|refactor|fix|update|change|edit|modify|migrate|upgrade|convert|render|export|deploy|install|save|store|persist)\b/i;
112
+ const CREATE_VERB_BODY = 'set\\s+up|setup|creat|build|writ|mak|generat|develop|implement|scaffold|add|produc|draft|cod|rewrit|refactor|fix|updat|chang|edit|modif|migrat|upgrad|convert|render|export|deploy|install|sav|stor|persist';
113
+ /**
114
+ * Verb ENDINGS, so an inflected verb is the same evidence as its base form.
115
+ *
116
+ * The old regexes anchored on the base form (`\bupdate\b`), so "updating" — the
117
+ * form people actually write — matched NOTHING. The stems above drop the final
118
+ * `e` (`updat`, `chang`, `cod`), which is what makes the -ing/-ed forms work
119
+ * (`updat`+`ing`, `chang`+`ing`, `cod`+`ing`) alongside the base (`updat`+`e`).
120
+ */
121
+ const VERB_SUFFIX = '(?:e|es|s|d|ed|ing)?';
122
+ const CREATE_VERB_RE = new RegExp(`\\b(?:${CREATE_VERB_BODY})${VERB_SUFFIX}\\b`, 'i');
113
123
  /** Nouns that name a FILE-SHAPED deliverable (the thing that lands on disk). */
114
124
  const DELIVERABLE_NOUN_RE = /\b(?:file|files|folder|directory|project|repo|repository|app|application|website|site|webpage|web\s?page|page|pages|component|module|class|function|script|program|tool|cli|server|api|endpoint|test|tests|suite|config|document|doc|docs|report|readme|story|book|novel|chapter|chapters|poem|essay|article|post|plan|spec|schema|migration|template|templates|style|styles|asset|assets|manuscript|draft)\b/i;
115
125
  /** A path is the strongest signal of all: the user named the destination. */
@@ -122,7 +132,8 @@ const PATH_RE = /(?:^|[\s"'`(])(?:~|\/|\.{1,2}\/)[\w./-]+/;
122
132
  * object already says the work is to change what is there. Still vetoed by an
123
133
  * analysis opener, so "why is the build failing?" remains a question.
124
134
  */
125
- const MAINTENANCE_VERB_RE = /\b(?:fix|repair|refactor|update|change|edit|modify|migrate|upgrade|improve|optimize|optimise|clean\s*up|rewrite|rename|remove|delete|correct|debug|patch|tweak)\b/i;
135
+ const MAINTENANCE_VERB_BODY = 'clean\\s*up|fix|repair|refactor|updat|chang|edit|modif|migrat|upgrad|improv|optimiz|optimis|rewrit|renam|remov|delet|correct|debugg|debug|patch|tweak';
136
+ const MAINTENANCE_VERB_RE = new RegExp(`\\b(?:${MAINTENANCE_VERB_BODY})${VERB_SUFFIX}\\b`, 'i');
126
137
  /**
127
138
  * An analysis/interrogative opener means the user is asking ABOUT something,
128
139
  * not asking for it to be produced: "what files should I create for X?" is a
@@ -159,33 +170,100 @@ export function requestAuthorizesWrites(request) {
159
170
  const text = (request || '').trim();
160
171
  if (!text)
161
172
  return { authorized: false, reason: 'no request text to judge' };
162
- if (text.length <= 40 && SHORT_AFFIRMATIVE_RE.test(text)) {
173
+ if (isAffirmativeReply(text)) {
163
174
  return { authorized: true, reason: 'the user confirmed the work already proposed' };
164
175
  }
165
176
  if (CONTINUATION_RE.test(text)) {
166
177
  return { authorized: true, reason: 'the request continues work that was already authorized' };
167
178
  }
168
- const analyzing = ANALYSIS_OPENER_RE.test(text);
169
- if (PATH_RE.test(text) && CREATE_VERB_RE.test(text) && !analyzing) {
170
- return { authorized: true, reason: 'the request names a destination path for the work' };
179
+ // Judge the message CLAUSE BY CLAUSE, never by its opener alone.
180
+ //
181
+ // The old shape vetoed the WHOLE message the moment it began with an analysis
182
+ // word: `if (ANALYSIS_OPENER_RE.test(text)) return { authorized: false }`. A
183
+ // live turn proved how bad that is — the user wrote: "why are you asking me
184
+ // this again and again ? 🤔 Apply a safe expression parser … by updating
185
+ // script.js". The `why` de-authorized the entire turn, which switched OFF the
186
+ // autonomy gates that would have stopped the prompting. A complaint about
187
+ // repeated permission questions therefore INCREASED them. A message can carry
188
+ // a question AND a directive; only a message with no directive clause is a
189
+ // question.
190
+ const namedPath = extractRequestedPath(text);
191
+ let sawQuestion = false;
192
+ for (const clause of splitSentences(text)) {
193
+ if (isQuestionClause(clause)) {
194
+ sawQuestion = true;
195
+ continue;
196
+ }
197
+ if (namedPath && CREATE_VERB_RE.test(clause)) {
198
+ return {
199
+ authorized: true,
200
+ reason: 'the request names a destination path for the work',
201
+ requestedPath: namedPath,
202
+ };
203
+ }
204
+ if (CREATE_VERB_RE.test(clause) && DELIVERABLE_NOUN_RE.test(clause)) {
205
+ return { authorized: true, reason: 'the request asks for a file-shaped deliverable' };
206
+ }
207
+ // The noun list names ARTIFACT TYPES (file, app, story, script…), so it misses
208
+ // the most common dev ask there is: "fix the calculator" names no artifact at
209
+ // all, and this verdict came back NOT authorized — which meant the edit gate
210
+ // would still stop to ask for permission to fix the thing the user asked to
211
+ // have fixed. A directive verb is its own evidence: it asks for a change to
212
+ // work that already exists.
213
+ if (MAINTENANCE_VERB_RE.test(clause)) {
214
+ return { authorized: true, reason: 'the request directs a change to work that already exists' };
215
+ }
171
216
  }
172
- if (analyzing) {
217
+ if (sawQuestion) {
173
218
  return { authorized: false, reason: 'the request asks ABOUT the work rather than for it to be produced' };
174
219
  }
175
- if (CREATE_VERB_RE.test(text) && DELIVERABLE_NOUN_RE.test(text)) {
176
- return { authorized: true, reason: 'the request asks for a file-shaped deliverable' };
177
- }
178
- // The noun list names ARTIFACT TYPES (file, app, story, script…), so it misses
179
- // the most common dev ask there is: "fix the calculator" names no artifact at
180
- // all, and this verdict came back NOT authorized — which meant the edit gate
181
- // would still stop to ask for permission to fix the thing the user asked to
182
- // have fixed. A directive verb is its own evidence: it asks for a change to
183
- // work that already exists.
184
- if (MAINTENANCE_VERB_RE.test(text)) {
185
- return { authorized: true, reason: 'the request directs a change to work that already exists' };
186
- }
187
220
  return { authorized: false, reason: 'the request does not ask for files to be created' };
188
221
  }
222
+ /**
223
+ * Is this message a plain confirmation of work already proposed ("yes", "go
224
+ * ahead", "do it")? Exported because the intent grant reads it: an affirmative
225
+ * reply to a plan is what turns that plan into an approved envelope.
226
+ */
227
+ export function isAffirmativeReply(request) {
228
+ const text = (request || '').trim();
229
+ return text.length <= 40 && SHORT_AFFIRMATIVE_RE.test(text);
230
+ }
231
+ /**
232
+ * Is this CLAUSE asking a question rather than directing work?
233
+ *
234
+ * Deliberately narrower than "ends with a question mark": a polite request is
235
+ * a request ("Can you fix the calculator?", "Could you update the README?" are
236
+ * authorized — the analysis-opener list excludes can/could/would/do for exactly
237
+ * this reason). Only an analysis OPENING is treated as a question, so a
238
+ * directive that happens to be phrased politely keeps its authority.
239
+ */
240
+ function isQuestionClause(clause) {
241
+ const c = (clause || '').trim();
242
+ if (!c)
243
+ return true;
244
+ return ANALYSIS_OPENER_RE.test(c);
245
+ }
246
+ /**
247
+ * Pull the destination path out of a request, when it names one.
248
+ *
249
+ * Uses the same pattern the authorization verdict keys on, so "the request
250
+ * names a path" and "here is that path" can never disagree — the failure mode
251
+ * being a gate that refuses for lack of a path while the request visibly
252
+ * contains one. Returns the trimmed match with trailing sentence punctuation
253
+ * removed ("…at /path/x.md." is the file `/path/x.md`).
254
+ */
255
+ export function extractRequestedPath(request) {
256
+ const text = (request || '').trim();
257
+ if (!text)
258
+ return undefined;
259
+ const match = text.match(PATH_RE);
260
+ const raw = match?.[0]?.trim();
261
+ if (!raw)
262
+ return undefined;
263
+ // PATH_RE starts on a boundary character (whitespace/quote/paren); drop it.
264
+ const path = raw.replace(/^[\s"'`(]+/, '').replace(/[.,;:!?)\]]+$/, '').trim();
265
+ return path.length > 0 ? path : undefined;
266
+ }
189
267
  /**
190
268
  * A request that asks for the work to be recorded in git history.
191
269
  *
@@ -298,6 +376,24 @@ export function detectPermissionSeeking(content) {
298
376
  return false;
299
377
  return splitSentences(text).slice(-2).some(isPermissionSeekingSentence);
300
378
  }
379
+ /**
380
+ * Does the reply END by asking the reader something?
381
+ *
382
+ * The companion question to {@link detectPermissionSeeking}, and the difference
383
+ * matters for the DELIVERABLE gate: "Do you want me to create the files?" is a
384
+ * stall the agent must decide past, while "Which of these two titles do you
385
+ * prefer?" is a decision input the user asked to be consulted on. Treating them
386
+ * alike would either stall on the first or bulldoze the second.
387
+ *
388
+ * Only the closing is judged (the gate's window is the turn's END), and only a
389
+ * literal question — an answer that merely mentions questions mid-text is
390
+ * finished prose.
391
+ */
392
+ export function replyAsksTheReader(content) {
393
+ const sentences = splitSentences((content || '').trim());
394
+ const last = sentences[sentences.length - 1];
395
+ return Boolean(last && last.trim().endsWith('?'));
396
+ }
301
397
  /**
302
398
  * Remove the trailing permission-seeking sentences from an answer, keeping
303
399
  * everything before them VERBATIM (deliverables are prose — re-joining split