@project-ava-supernova/core 0.2.77 → 0.2.79

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 (162) hide show
  1. package/dist/agent/agent.d.ts +7 -15
  2. package/dist/agent/agent.d.ts.map +1 -1
  3. package/dist/agent/agent.js +48 -3
  4. package/dist/agent/agent.js.map +1 -1
  5. package/dist/agent/system-prompt.d.ts +1 -1
  6. package/dist/agent/system-prompt.d.ts.map +1 -1
  7. package/dist/agent/system-prompt.js +14 -9
  8. package/dist/agent/system-prompt.js.map +1 -1
  9. package/dist/agent/vision-bridge.d.ts +37 -0
  10. package/dist/agent/vision-bridge.d.ts.map +1 -1
  11. package/dist/agent/vision-bridge.js +55 -3
  12. package/dist/agent/vision-bridge.js.map +1 -1
  13. package/dist/audit/cost.d.ts.map +1 -1
  14. package/dist/audit/cost.js +5 -0
  15. package/dist/audit/cost.js.map +1 -1
  16. package/dist/auto/auto-coordinator.d.ts.map +1 -1
  17. package/dist/auto/auto-coordinator.js +10 -1
  18. package/dist/auto/auto-coordinator.js.map +1 -1
  19. package/dist/auto/coordinator-model.d.ts +1 -1
  20. package/dist/auto/coordinator-model.d.ts.map +1 -1
  21. package/dist/auto/coordinator-model.js +3 -1
  22. package/dist/auto/coordinator-model.js.map +1 -1
  23. package/dist/auto/longxiang-router.d.ts +2 -2
  24. package/dist/auto/longxiang-router.js +2 -2
  25. package/dist/auto/model-router.js +1 -1
  26. package/dist/billing/credits.d.ts +26 -6
  27. package/dist/billing/credits.d.ts.map +1 -1
  28. package/dist/billing/credits.js +42 -11
  29. package/dist/billing/credits.js.map +1 -1
  30. package/dist/config/personality.js +1 -1
  31. package/dist/creative/index.d.ts +29 -13
  32. package/dist/creative/index.d.ts.map +1 -1
  33. package/dist/creative/index.js +56 -25
  34. package/dist/creative/index.js.map +1 -1
  35. package/dist/desktop/capability.d.ts +7 -11
  36. package/dist/desktop/capability.d.ts.map +1 -1
  37. package/dist/desktop/capability.js +26 -25
  38. package/dist/desktop/capability.js.map +1 -1
  39. package/dist/desktop/personas.d.ts +0 -2
  40. package/dist/desktop/personas.d.ts.map +1 -1
  41. package/dist/desktop/personas.js +0 -8
  42. package/dist/desktop/personas.js.map +1 -1
  43. package/dist/docs/content/concepts.js +1 -1
  44. package/dist/docs/content/concepts.js.map +1 -1
  45. package/dist/docs/content/features.js +2 -2
  46. package/dist/docs/content/features.js.map +1 -1
  47. package/dist/docs/data/providers.js +3 -3
  48. package/dist/docs/data/providers.js.map +1 -1
  49. package/dist/docs/data/tools.js +1 -1
  50. package/dist/docs/data/tools.js.map +1 -1
  51. package/dist/docs/i18n/translations.d.ts.map +1 -1
  52. package/dist/docs/i18n/translations.js +1 -1
  53. package/dist/docs/i18n/translations.js.map +1 -1
  54. package/dist/docs/i18n.d.ts.map +1 -1
  55. package/dist/docs/i18n.js +5 -1
  56. package/dist/docs/i18n.js.map +1 -1
  57. package/dist/i18n/locales/ar.d.ts.map +1 -1
  58. package/dist/i18n/locales/ar.js +38 -22
  59. package/dist/i18n/locales/ar.js.map +1 -1
  60. package/dist/i18n/locales/de.d.ts.map +1 -1
  61. package/dist/i18n/locales/de.js +36 -20
  62. package/dist/i18n/locales/de.js.map +1 -1
  63. package/dist/i18n/locales/en.d.ts +26 -10
  64. package/dist/i18n/locales/en.d.ts.map +1 -1
  65. package/dist/i18n/locales/en.js +48 -21
  66. package/dist/i18n/locales/en.js.map +1 -1
  67. package/dist/i18n/locales/es.d.ts.map +1 -1
  68. package/dist/i18n/locales/es.js +38 -22
  69. package/dist/i18n/locales/es.js.map +1 -1
  70. package/dist/i18n/locales/fr.d.ts.map +1 -1
  71. package/dist/i18n/locales/fr.js +38 -22
  72. package/dist/i18n/locales/fr.js.map +1 -1
  73. package/dist/i18n/locales/hi.d.ts.map +1 -1
  74. package/dist/i18n/locales/hi.js +36 -20
  75. package/dist/i18n/locales/hi.js.map +1 -1
  76. package/dist/i18n/locales/id.d.ts.map +1 -1
  77. package/dist/i18n/locales/id.js +38 -22
  78. package/dist/i18n/locales/id.js.map +1 -1
  79. package/dist/i18n/locales/it.d.ts.map +1 -1
  80. package/dist/i18n/locales/it.js +38 -22
  81. package/dist/i18n/locales/it.js.map +1 -1
  82. package/dist/i18n/locales/ja.d.ts.map +1 -1
  83. package/dist/i18n/locales/ja.js +34 -18
  84. package/dist/i18n/locales/ja.js.map +1 -1
  85. package/dist/i18n/locales/ko.d.ts.map +1 -1
  86. package/dist/i18n/locales/ko.js +38 -22
  87. package/dist/i18n/locales/ko.js.map +1 -1
  88. package/dist/i18n/locales/nl.d.ts.map +1 -1
  89. package/dist/i18n/locales/nl.js +36 -20
  90. package/dist/i18n/locales/nl.js.map +1 -1
  91. package/dist/i18n/locales/pl.d.ts.map +1 -1
  92. package/dist/i18n/locales/pl.js +38 -22
  93. package/dist/i18n/locales/pl.js.map +1 -1
  94. package/dist/i18n/locales/pt.d.ts.map +1 -1
  95. package/dist/i18n/locales/pt.js +38 -22
  96. package/dist/i18n/locales/pt.js.map +1 -1
  97. package/dist/i18n/locales/ru.d.ts.map +1 -1
  98. package/dist/i18n/locales/ru.js +38 -22
  99. package/dist/i18n/locales/ru.js.map +1 -1
  100. package/dist/i18n/locales/th.d.ts.map +1 -1
  101. package/dist/i18n/locales/th.js +38 -22
  102. package/dist/i18n/locales/th.js.map +1 -1
  103. package/dist/i18n/locales/tr.d.ts.map +1 -1
  104. package/dist/i18n/locales/tr.js +38 -22
  105. package/dist/i18n/locales/tr.js.map +1 -1
  106. package/dist/i18n/locales/uk.d.ts.map +1 -1
  107. package/dist/i18n/locales/uk.js +38 -22
  108. package/dist/i18n/locales/uk.js.map +1 -1
  109. package/dist/i18n/locales/vi.d.ts.map +1 -1
  110. package/dist/i18n/locales/vi.js +39 -23
  111. package/dist/i18n/locales/vi.js.map +1 -1
  112. package/dist/i18n/locales/zh-CN.d.ts.map +1 -1
  113. package/dist/i18n/locales/zh-CN.js +38 -22
  114. package/dist/i18n/locales/zh-CN.js.map +1 -1
  115. package/dist/i18n/locales/zh-TW.d.ts.map +1 -1
  116. package/dist/i18n/locales/zh-TW.js +38 -22
  117. package/dist/i18n/locales/zh-TW.js.map +1 -1
  118. package/dist/index.d.ts +2 -1
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +5 -1
  121. package/dist/index.js.map +1 -1
  122. package/dist/projects/project-data.d.ts +14 -0
  123. package/dist/projects/project-data.d.ts.map +1 -1
  124. package/dist/projects/project-data.js +21 -0
  125. package/dist/projects/project-data.js.map +1 -1
  126. package/dist/providers/request-shaping/params.d.ts +5 -0
  127. package/dist/providers/request-shaping/params.d.ts.map +1 -1
  128. package/dist/providers/request-shaping/params.js +21 -5
  129. package/dist/providers/request-shaping/params.js.map +1 -1
  130. package/dist/providers/zhipu/index.js +4 -4
  131. package/dist/providers/zhipu/index.js.map +1 -1
  132. package/dist/providers/zhipu/models.d.ts.map +1 -1
  133. package/dist/providers/zhipu/models.js +36 -15
  134. package/dist/providers/zhipu/models.js.map +1 -1
  135. package/dist/social/index.d.ts +52 -33
  136. package/dist/social/index.d.ts.map +1 -1
  137. package/dist/social/index.js +21 -0
  138. package/dist/social/index.js.map +1 -1
  139. package/dist/tools/create-project.d.ts +35 -0
  140. package/dist/tools/create-project.d.ts.map +1 -0
  141. package/dist/tools/create-project.js +0 -0
  142. package/dist/tools/create-project.js.map +1 -0
  143. package/dist/tools/design-studio-tools.d.ts.map +1 -1
  144. package/dist/tools/design-studio-tools.js +7 -4
  145. package/dist/tools/design-studio-tools.js.map +1 -1
  146. package/dist/tools/desktop-providers.d.ts +1 -1
  147. package/dist/tools/desktop-providers.d.ts.map +1 -1
  148. package/dist/tools/generate-video.d.ts +3 -4
  149. package/dist/tools/generate-video.d.ts.map +1 -1
  150. package/dist/tools/generate-video.js +66 -23
  151. package/dist/tools/generate-video.js.map +1 -1
  152. package/dist/tools/generate-voice.d.ts.map +1 -1
  153. package/dist/tools/generate-voice.js +21 -8
  154. package/dist/tools/generate-voice.js.map +1 -1
  155. package/dist/tools/tool-registry.d.ts.map +1 -1
  156. package/dist/tools/tool-registry.js +2 -0
  157. package/dist/tools/tool-registry.js.map +1 -1
  158. package/dist/tools/write-video-post.d.ts +18 -10
  159. package/dist/tools/write-video-post.d.ts.map +1 -1
  160. package/dist/tools/write-video-post.js +116 -61
  161. package/dist/tools/write-video-post.js.map +1 -1
  162. package/package.json +1 -1
@@ -39,23 +39,15 @@ export declare const DESKTOP_TOOL_NAMES: readonly ["desktop_plan_approve", "desk
39
39
  */
40
40
  export declare function detectModeFromMessages(messages: Message[]): string | null;
41
41
  /**
42
- * Can this mode change files?
42
+ * Whether a tool survives a mode's allowlist.
43
43
  *
44
- * Read from `MODE_ALLOWED_TOOLS` rather than a list of its own. A mode that is
45
- * not handed `write` or `edit` is read-only by design, and nothing downstream
46
- * should be able to grant it more than the mode itself has.
47
- *
48
- * Exists because the AutoCoordinator's Builder hand-off had no idea what mode
49
- * it was in. Seen live 2026-08-19: a Plan-mode turn produced a plan card, wrote
50
- * eleven todos, announced "Builder dispatched — executing 11 tasks", and started
51
- * editing an Unreal project. Plan mode is read-only — it cannot open a file to
52
- * write it — and the orchestrator went around that by spawning agents that
53
- * could. The operator's words were "why are you coding when did i say to do
54
- * anything but plan".
55
- *
56
- * An unknown mode returns true: work mode carries no prefix, so callers that
57
- * default to it must not be silently blocked.
44
+ * The single predicate for BOTH the schema filter and the call-side block, so
45
+ * the two cannot drift into offering a tool and then refusing it. Three ways
46
+ * through: the mode lists it, every mode gets it, or no mode classifies it at
47
+ * all (an unknown tool is somebody's extension, not a policy decision) -
48
+ * except desktop tools, which stay out however they are classified.
58
49
  */
50
+ export declare function toolPassesModeGate(name: string, modeAllowed: Set<string>): boolean;
59
51
  /**
60
52
  * The hard ceiling on what a persona may be handed in a READ-ONLY mode.
61
53
  *
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAqC,MAAM,uBAAuB,CAAC;AAEzF,OAAO,KAAK,EACV,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,UAAU,EAEX,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AA+B9D,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,sBAAsB,CAAC;AA8IhE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,kBAAkB,kQAarB,CAAC;AA+aX;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,CAYzE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAKnG;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAKzE;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAMjD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACnH;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,2BAA2B,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,yBAAyB,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GACrF;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,gBAAgB,CAAA;CAAE,GAEhD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAG3D;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAIjF;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAC/C;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3E,GAKD;IAAE,IAAI,EAAE,0BAA0B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAOpD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAQ1D;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,GAc/B;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElG,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAI5D,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IAKxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAW;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAkB;IAG/C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA6B;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;IACnD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IAKrD,OAAO,CAAC,cAAc,CAAS;IAG/B,OAAO,CAAC,eAAe,CAA4C;IACnE;;;;;;;;;;OAUG;IACH,OAAO,CAAC,SAAS,CAAqB;IAItC,OAAO,CAAC,eAAe,CAAS;IAGhC,OAAO,CAAC,SAAS,CAAiC;IAGlD,OAAO,CAAC,sBAAsB,CAAS;IAEvC;;mFAE+E;IAC/E,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,WAAW,CAAS;IAQ5B,OAAO,CAAC,qBAAqB,CAA8B;IAC3D,OAAO,CAAC,yBAAyB,CAAK;IACtC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,qBAAqB,CAAS;IAItC,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,yBAAyB,CAAa;IAC9C,OAAO,CAAC,2BAA2B,CAA6B;IAEhE,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAU;IAChD;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,sBAAsB,CAAkC;IAChE;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,oBAAoB,CAA6B;IACzD;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB,CAA6D;IAC3F;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAwB;gBAEpC,IAAI,EAAE;QAChB,QAAQ,EAAE,QAAQ,CAAC;QACnB,KAAK,EAAE,eAAe,CAAC;QACvB;;0EAEkE;QAClE,cAAc,CAAC,EAAE,QAAQ,CAAC;QAC1B,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,EAAE,YAAY,CAAC;QAC3B,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC;;;;;WAKG;QACH,OAAO,CAAC,EAAE,UAAU,CAAC;QACrB,iEAAiE;QACjE,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kEAAkE;QAClE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC,CAAC;QAClG;;;;;WAKG;QACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;KACjC;IAoBD;;;;;;;;;OASG;IACH,4BAA4B,IAAI,OAAO,EAAE;IAIzC;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB;;;;;;;;;;;;;OAaG;IACG,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAChD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAuBzB;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAoB7B;;;;;;OAMG;IACH,YAAY,IAAI,IAAI;IAIpB;;;;;;;;OAQG;IACH,yBAAyB,IAAI,IAAI;IAOjC;;;;;;;OAOG;IACH,uBAAuB,IAAI,OAAO;IAIlC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,oBAAoB;IAQtB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YA6ItF,QAAQ;IA03CtB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;YAsChB,cAAc;IAsQ5B;;;;;;;;OAQG;YACW,sBAAsB;YAqGtB,eAAe;IAqI7B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAYpC;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAe7B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,sBAAsB;IAU9B;;;;;;;;;OASG;IACH,OAAO,CAAC,2BAA2B;IAgDnC,uDAAuD;IACvD,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY;IAMlD,8EAA8E;IACxE,cAAc,CAClB,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,EAAE,CAAC;IAMrB;;;;;OAKG;IACG,eAAe,CACnB,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,EAAE,CAAC;IA+MrB,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAMjC,OAAO,CAAC,qBAAqB;IA4B7B,8DAA8D;IAC9D,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM;IAM/C;;;;OAIG;IACH;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,OAAO,CAAC,kBAAkB;IAyE1B,OAAO,CAAC,gBAAgB;IAyDxB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,OAAO,CAAC,4BAA4B;IA0DpC;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,iBAAiB;IA8DzB;;;;;;;OAOG;IACH,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAI9C;;;;OAIG;IACH,OAAO,CAAC,cAAc;CAoDvB"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAqC,MAAM,uBAAuB,CAAC;AAEzF,OAAO,KAAK,EACV,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,UAAU,EAEX,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AA+B9D,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,sBAAsB,CAAC;AA8IhE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,kBAAkB,kQAarB,CAAC;AAocX;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,CAYzE;AAiCD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAGlF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAKnG;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAKzE;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAMjD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACnH;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,2BAA2B,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,yBAAyB,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GACrF;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,gBAAgB,CAAA;CAAE,GAEhD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAG3D;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAIjF;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAC/C;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3E,GAKD;IAAE,IAAI,EAAE,0BAA0B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAOpD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAQ1D;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,GAc/B;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElG,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAI5D,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IAKxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAW;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAkB;IAG/C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA6B;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;IACnD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IAKrD,OAAO,CAAC,cAAc,CAAS;IAG/B,OAAO,CAAC,eAAe,CAA4C;IACnE;;;;;;;;;;OAUG;IACH,OAAO,CAAC,SAAS,CAAqB;IAItC,OAAO,CAAC,eAAe,CAAS;IAGhC,OAAO,CAAC,SAAS,CAAiC;IAGlD,OAAO,CAAC,sBAAsB,CAAS;IAEvC;;mFAE+E;IAC/E,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,WAAW,CAAS;IAQ5B,OAAO,CAAC,qBAAqB,CAA8B;IAC3D,OAAO,CAAC,yBAAyB,CAAK;IACtC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,qBAAqB,CAAS;IAItC,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,yBAAyB,CAAa;IAC9C,OAAO,CAAC,2BAA2B,CAA6B;IAEhE,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAU;IAChD;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,sBAAsB,CAAkC;IAChE;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,oBAAoB,CAA6B;IACzD;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB,CAA6D;IAC3F;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAwB;gBAEpC,IAAI,EAAE;QAChB,QAAQ,EAAE,QAAQ,CAAC;QACnB,KAAK,EAAE,eAAe,CAAC;QACvB;;0EAEkE;QAClE,cAAc,CAAC,EAAE,QAAQ,CAAC;QAC1B,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,YAAY,EAAE,YAAY,CAAC;QAC3B,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC;;;;;WAKG;QACH,OAAO,CAAC,EAAE,UAAU,CAAC;QACrB,iEAAiE;QACjE,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kEAAkE;QAClE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC,CAAC;QAClG;;;;;WAKG;QACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;KACjC;IAoBD;;;;;;;;;OASG;IACH,4BAA4B,IAAI,OAAO,EAAE;IAIzC;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB;;;;;;;;;;;;;OAaG;IACG,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAChD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAuBzB;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAoB7B;;;;;;OAMG;IACH,YAAY,IAAI,IAAI;IAIpB;;;;;;;;OAQG;IACH,yBAAyB,IAAI,IAAI;IAOjC;;;;;;;OAOG;IACH,uBAAuB,IAAI,OAAO;IAIlC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,oBAAoB;IAQtB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YA6ItF,QAAQ;IA03CtB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;YAsChB,cAAc;IAsQ5B;;;;;;;;OAQG;YACW,sBAAsB;YAqGtB,eAAe;IAqI7B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAYpC;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAe7B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,sBAAsB;IAU9B;;;;;;;;;OASG;IACH,OAAO,CAAC,2BAA2B;IAgDnC,uDAAuD;IACvD,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY;IAMlD,8EAA8E;IACxE,cAAc,CAClB,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,EAAE,CAAC;IAMrB;;;;;OAKG;IACG,eAAe,CACnB,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,EAAE,CAAC;IA+MrB,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAMjC,OAAO,CAAC,qBAAqB;IA4B7B,8DAA8D;IAC9D,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM;IAM/C;;;;OAIG;IACH;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,OAAO,CAAC,kBAAkB;IAyE1B,OAAO,CAAC,gBAAgB;IAyDxB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,OAAO,CAAC,4BAA4B;IA0DpC;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,iBAAiB;IA8DzB;;;;;;;OAOG;IACH,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAI9C;;;;OAIG;IACH,OAAO,CAAC,cAAc;CAoDvB"}
@@ -218,7 +218,12 @@ const ALWAYS_ALLOWED_TOOLS = new Set(['self_inspect', 'conversation_recall']);
218
218
  * line in a diff, and so the two surfaces cannot end up disagreeing about
219
219
  * which stage they are in.
220
220
  */
221
- const WORK_TOOL_GATE = 'log';
221
+ // ENFORCING since 2026-09-01. The log-only stage did its job: a full
222
+ // real-world project built end to end in code mode produced no
223
+ // work-gate.log at all, meaning she never once reached for a tool the
224
+ // list withholds. The logger was verified to be live in that build
225
+ // first — an absent file only means something if the writer works.
226
+ const WORK_TOOL_GATE = 'enforce';
222
227
  /**
223
228
  * Where the log-only stage records a reach, under AVA_HOME.
224
229
  *
@@ -245,6 +250,11 @@ const MODE_ALLOWED_TOOLS = {
245
250
  work: new Set([
246
251
  // File operations
247
252
  'read', 'write', 'edit',
253
+ // Creating a NEW project — the only write that reaches outside the open
254
+ // project, and it makes exactly one empty folder in the projects home.
255
+ // Without it, "start me a new project" can only be answered by building
256
+ // inside whatever project is already open.
257
+ 'create_project',
248
258
  // Search
249
259
  'glob', 'grep', 'list_directory', 'find_symbol', 'project_index',
250
260
  // Shell
@@ -356,6 +366,17 @@ const MODE_ALLOWED_TOOLS = {
356
366
  // it. Read-only, and readOnlyModeToolCeiling now enforces that structurally,
357
367
  // so widening what she can READ cannot leak into being able to write.
358
368
  'read', 'glob', 'grep', 'list_directory', 'project_index',
369
+ // Turning an idea into somewhere to put it. Brainstorm exists for someone
370
+ // who does not know what to build, so stopping at "here is what you should
371
+ // build" and leaving them to make the folder by hand is stopping one step
372
+ // short of the point.
373
+ //
374
+ // This does not make the mode writable. modeCanEditFiles asks for 'write'
375
+ // or 'edit' by name and neither is here, so the read-only ceiling still
376
+ // holds — create_project makes ONE empty directory in the projects home
377
+ // and cannot put a byte inside it. The work happens once that folder is
378
+ // opened, in whichever mode you open it in.
379
+ 'create_project',
359
380
  // Research signals (web + news) so coordinator-direct ideation has the
360
381
  // same research surface the orchestrated team gets via IDEATION_TOOLS.
361
382
  'web_search', 'http_request', 'browser', 'news',
@@ -642,6 +663,30 @@ export function detectModeFromMessages(messages) {
642
663
  * An unknown mode returns true: work mode carries no prefix, so callers that
643
664
  * default to it must not be silently blocked.
644
665
  */
666
+ /**
667
+ * Every tool name that any mode lists.
668
+ *
669
+ * Used to tell two different situations apart, which the allowlist alone
670
+ * cannot: a tool code mode deliberately withholds (present, listed by other
671
+ * modes, correctly filtered) versus a tool no mode has ever classified. The
672
+ * second is not a decision, it is an absence - and treating an absence as a
673
+ * refusal is how a registered tool disappears with no error anywhere.
674
+ */
675
+ const MODE_CLASSIFIED_TOOLS = new Set(Object.values(MODE_ALLOWED_TOOLS).flatMap((set) => [...set]));
676
+ /**
677
+ * Whether a tool survives a mode's allowlist.
678
+ *
679
+ * The single predicate for BOTH the schema filter and the call-side block, so
680
+ * the two cannot drift into offering a tool and then refusing it. Three ways
681
+ * through: the mode lists it, every mode gets it, or no mode classifies it at
682
+ * all (an unknown tool is somebody's extension, not a policy decision) -
683
+ * except desktop tools, which stay out however they are classified.
684
+ */
685
+ export function toolPassesModeGate(name, modeAllowed) {
686
+ if (modeAllowed.has(name) || ALWAYS_ALLOWED_TOOLS.has(name))
687
+ return true;
688
+ return !MODE_CLASSIFIED_TOOLS.has(name) && !DESKTOP_ONLY_TOOLS.has(name);
689
+ }
645
690
  /**
646
691
  * The hard ceiling on what a persona may be handed in a READ-ONLY mode.
647
692
  *
@@ -1342,7 +1387,7 @@ export class Agent {
1342
1387
  && (effectiveMode !== 'work' || WORK_TOOL_GATE === 'enforce');
1343
1388
  let filteredSchemas;
1344
1389
  if (modeAllowed && applyModeGate) {
1345
- filteredSchemas = allSchemas.filter(s => modeAllowed.has(s.function.name) || ALWAYS_ALLOWED_TOOLS.has(s.function.name));
1390
+ filteredSchemas = allSchemas.filter(s => toolPassesModeGate(s.function.name, modeAllowed));
1346
1391
  }
1347
1392
  else {
1348
1393
  filteredSchemas = allSchemas.filter(s => !DESKTOP_ONLY_TOOLS.has(s.function.name));
@@ -2115,7 +2160,7 @@ export class Agent {
2115
2160
  // blocking here would do precisely what the paragraph above forbids:
2116
2161
  // offer a tool and then refuse the call.
2117
2162
  if (modeAllowed) {
2118
- const isAllowed = (name) => modeAllowed.has(name) || ALWAYS_ALLOWED_TOOLS.has(name);
2163
+ const isAllowed = (name) => toolPassesModeGate(name, modeAllowed);
2119
2164
  const blocked = assistantMessage.tool_calls.filter((tc) => !isAllowed(tc.function.name));
2120
2165
  if (blocked.length > 0 && !applyModeGate) {
2121
2166
  // The evidence worth having. The static count says what is in play;