@namzu/sdk 6.1.0 → 7.0.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 (185) hide show
  1. package/CHANGELOG.md +361 -0
  2. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  3. package/dist/agents/ReactiveAgent.js +5 -0
  4. package/dist/agents/ReactiveAgent.js.map +1 -1
  5. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  6. package/dist/agents/SupervisorAgent.js +9 -0
  7. package/dist/agents/SupervisorAgent.js.map +1 -1
  8. package/dist/agents/__tests__/supervisor-coordinator-registration.test.js +31 -0
  9. package/dist/agents/__tests__/supervisor-coordinator-registration.test.js.map +1 -1
  10. package/dist/agents/runAgent.d.ts +19 -1
  11. package/dist/agents/runAgent.d.ts.map +1 -1
  12. package/dist/agents/runAgent.js +2 -0
  13. package/dist/agents/runAgent.js.map +1 -1
  14. package/dist/connector/mcp/__tests__/positional-arrays.test.d.ts +2 -0
  15. package/dist/connector/mcp/__tests__/positional-arrays.test.d.ts.map +1 -0
  16. package/dist/connector/mcp/__tests__/positional-arrays.test.js +142 -0
  17. package/dist/connector/mcp/__tests__/positional-arrays.test.js.map +1 -0
  18. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  19. package/dist/connector/mcp/adapter.js +123 -8
  20. package/dist/connector/mcp/adapter.js.map +1 -1
  21. package/dist/constants/agent/index.d.ts +5 -0
  22. package/dist/constants/agent/index.d.ts.map +1 -1
  23. package/dist/constants/agent/index.js +5 -0
  24. package/dist/constants/agent/index.js.map +1 -1
  25. package/dist/constants/plugin/index.d.ts +15 -0
  26. package/dist/constants/plugin/index.d.ts.map +1 -1
  27. package/dist/constants/plugin/index.js +15 -0
  28. package/dist/constants/plugin/index.js.map +1 -1
  29. package/dist/gateway/__tests__/completion-inbox.test.js +17 -0
  30. package/dist/gateway/__tests__/completion-inbox.test.js.map +1 -1
  31. package/dist/gateway/completion-inbox.d.ts.map +1 -1
  32. package/dist/gateway/completion-inbox.js +17 -3
  33. package/dist/gateway/completion-inbox.js.map +1 -1
  34. package/dist/gateway/local.d.ts +11 -0
  35. package/dist/gateway/local.d.ts.map +1 -1
  36. package/dist/gateway/local.js +27 -1
  37. package/dist/gateway/local.js.map +1 -1
  38. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  39. package/dist/manager/agent/lifecycle.js +6 -0
  40. package/dist/manager/agent/lifecycle.js.map +1 -1
  41. package/dist/provider/thinking-support.d.ts +2 -1
  42. package/dist/provider/thinking-support.d.ts.map +1 -1
  43. package/dist/provider/thinking-support.js +14 -0
  44. package/dist/provider/thinking-support.js.map +1 -1
  45. package/dist/public-runtime.d.ts +1 -1
  46. package/dist/public-runtime.d.ts.map +1 -1
  47. package/dist/public-runtime.js +9 -1
  48. package/dist/public-runtime.js.map +1 -1
  49. package/dist/runtime/query/__tests__/context.test.js +18 -0
  50. package/dist/runtime/query/__tests__/context.test.js.map +1 -1
  51. package/dist/runtime/query/__tests__/effort-reaches-the-wire.test.d.ts +2 -0
  52. package/dist/runtime/query/__tests__/effort-reaches-the-wire.test.d.ts.map +1 -0
  53. package/dist/runtime/query/__tests__/effort-reaches-the-wire.test.js +118 -0
  54. package/dist/runtime/query/__tests__/effort-reaches-the-wire.test.js.map +1 -0
  55. package/dist/runtime/query/__tests__/run-survives-its-own-park.proc-test.d.ts +2 -0
  56. package/dist/runtime/query/__tests__/run-survives-its-own-park.proc-test.d.ts.map +1 -0
  57. package/dist/runtime/query/__tests__/run-survives-its-own-park.proc-test.js +122 -0
  58. package/dist/runtime/query/__tests__/run-survives-its-own-park.proc-test.js.map +1 -0
  59. package/dist/runtime/query/__tests__/tool-timeout.test.js +34 -0
  60. package/dist/runtime/query/__tests__/tool-timeout.test.js.map +1 -1
  61. package/dist/runtime/query/context.d.ts.map +1 -1
  62. package/dist/runtime/query/context.js +16 -1
  63. package/dist/runtime/query/context.js.map +1 -1
  64. package/dist/runtime/query/executor.d.ts.map +1 -1
  65. package/dist/runtime/query/executor.js +11 -1
  66. package/dist/runtime/query/executor.js.map +1 -1
  67. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  68. package/dist/runtime/query/iteration/index.js +5 -0
  69. package/dist/runtime/query/iteration/index.js.map +1 -1
  70. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  71. package/dist/runtime/query/iteration/phases/context.js +43 -13
  72. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  73. package/dist/telemetry/__tests__/model-call-span.test.js +22 -4
  74. package/dist/telemetry/__tests__/model-call-span.test.js.map +1 -1
  75. package/dist/telemetry/__tests__/span-closure.test.js +12 -5
  76. package/dist/telemetry/__tests__/span-closure.test.js.map +1 -1
  77. package/dist/tools/builtins/__tests__/bash.proc-test.d.ts +2 -0
  78. package/dist/tools/builtins/__tests__/bash.proc-test.d.ts.map +1 -0
  79. package/dist/tools/builtins/__tests__/bash.proc-test.js +115 -0
  80. package/dist/tools/builtins/__tests__/bash.proc-test.js.map +1 -0
  81. package/dist/tools/builtins/__tests__/bash.test.d.ts +2 -0
  82. package/dist/tools/builtins/__tests__/bash.test.d.ts.map +1 -0
  83. package/dist/tools/builtins/__tests__/bash.test.js +65 -0
  84. package/dist/tools/builtins/__tests__/bash.test.js.map +1 -0
  85. package/dist/tools/builtins/bash.d.ts.map +1 -1
  86. package/dist/tools/builtins/bash.js +89 -17
  87. package/dist/tools/builtins/bash.js.map +1 -1
  88. package/dist/tools/coordinator/__tests__/allow-delegation.test.d.ts +2 -0
  89. package/dist/tools/coordinator/__tests__/allow-delegation.test.d.ts.map +1 -0
  90. package/dist/tools/coordinator/__tests__/allow-delegation.test.js +94 -0
  91. package/dist/tools/coordinator/__tests__/allow-delegation.test.js.map +1 -0
  92. package/dist/tools/coordinator/__tests__/wait-with-idle-bound.test.d.ts +2 -0
  93. package/dist/tools/coordinator/__tests__/wait-with-idle-bound.test.d.ts.map +1 -0
  94. package/dist/tools/coordinator/__tests__/wait-with-idle-bound.test.js +193 -0
  95. package/dist/tools/coordinator/__tests__/wait-with-idle-bound.test.js.map +1 -0
  96. package/dist/tools/coordinator/index.d.ts +28 -0
  97. package/dist/tools/coordinator/index.d.ts.map +1 -1
  98. package/dist/tools/coordinator/index.js +101 -62
  99. package/dist/tools/coordinator/index.js.map +1 -1
  100. package/dist/tools/coordinator/wait-with-idle-bound.d.ts +66 -0
  101. package/dist/tools/coordinator/wait-with-idle-bound.d.ts.map +1 -0
  102. package/dist/tools/coordinator/wait-with-idle-bound.js +78 -0
  103. package/dist/tools/coordinator/wait-with-idle-bound.js.map +1 -0
  104. package/dist/types/agent/base.d.ts +16 -0
  105. package/dist/types/agent/base.d.ts.map +1 -1
  106. package/dist/types/agent/gateway.d.ts +23 -0
  107. package/dist/types/agent/gateway.d.ts.map +1 -1
  108. package/dist/types/agent/lifecycle-event.d.ts +9 -1
  109. package/dist/types/agent/lifecycle-event.d.ts.map +1 -1
  110. package/dist/types/agent/supervisor.d.ts +27 -0
  111. package/dist/types/agent/supervisor.d.ts.map +1 -1
  112. package/dist/types/agent/task.d.ts +5 -0
  113. package/dist/types/agent/task.d.ts.map +1 -1
  114. package/dist/types/hitl/index.d.ts +10 -0
  115. package/dist/types/hitl/index.d.ts.map +1 -1
  116. package/dist/types/hitl/index.js.map +1 -1
  117. package/dist/types/probe/registry.d.ts +6 -0
  118. package/dist/types/probe/registry.d.ts.map +1 -1
  119. package/dist/types/run/config.d.ts +25 -0
  120. package/dist/types/run/config.d.ts.map +1 -1
  121. package/dist/utils/__tests__/abort-reason.test.d.ts +2 -0
  122. package/dist/utils/__tests__/abort-reason.test.d.ts.map +1 -0
  123. package/dist/utils/__tests__/abort-reason.test.js +48 -0
  124. package/dist/utils/__tests__/abort-reason.test.js.map +1 -0
  125. package/dist/utils/abort.d.ts +26 -0
  126. package/dist/utils/abort.d.ts.map +1 -1
  127. package/dist/utils/abort.js +34 -0
  128. package/dist/utils/abort.js.map +1 -1
  129. package/dist/verification/__tests__/rule-order-and-reason.test.d.ts +2 -0
  130. package/dist/verification/__tests__/rule-order-and-reason.test.d.ts.map +1 -0
  131. package/dist/verification/__tests__/rule-order-and-reason.test.js +126 -0
  132. package/dist/verification/__tests__/rule-order-and-reason.test.js.map +1 -0
  133. package/dist/verification/gate.d.ts +17 -1
  134. package/dist/verification/gate.d.ts.map +1 -1
  135. package/dist/verification/gate.js +58 -2
  136. package/dist/verification/gate.js.map +1 -1
  137. package/dist/verification/index.d.ts +1 -1
  138. package/dist/verification/index.d.ts.map +1 -1
  139. package/dist/verification/index.js +1 -1
  140. package/dist/verification/index.js.map +1 -1
  141. package/package.json +3 -2
  142. package/src/agents/ReactiveAgent.ts +5 -0
  143. package/src/agents/SupervisorAgent.ts +9 -0
  144. package/src/agents/__tests__/supervisor-coordinator-registration.test.ts +37 -0
  145. package/src/agents/runAgent.ts +22 -1
  146. package/src/connector/mcp/__tests__/positional-arrays.test.ts +183 -0
  147. package/src/connector/mcp/adapter.ts +131 -7
  148. package/src/constants/agent/index.ts +5 -0
  149. package/src/constants/plugin/index.ts +15 -0
  150. package/src/gateway/__tests__/completion-inbox.test.ts +23 -0
  151. package/src/gateway/completion-inbox.ts +17 -3
  152. package/src/gateway/local.ts +26 -1
  153. package/src/manager/agent/lifecycle.ts +6 -0
  154. package/src/provider/thinking-support.ts +19 -2
  155. package/src/public-runtime.ts +9 -0
  156. package/src/runtime/query/__tests__/context.test.ts +24 -0
  157. package/src/runtime/query/__tests__/effort-reaches-the-wire.test.ts +135 -0
  158. package/src/runtime/query/__tests__/run-survives-its-own-park.proc-test.ts +127 -0
  159. package/src/runtime/query/__tests__/tool-timeout.test.ts +38 -0
  160. package/src/runtime/query/context.ts +16 -1
  161. package/src/runtime/query/executor.ts +11 -1
  162. package/src/runtime/query/iteration/index.ts +5 -0
  163. package/src/runtime/query/iteration/phases/context.ts +41 -15
  164. package/src/telemetry/__tests__/model-call-span.test.ts +22 -5
  165. package/src/telemetry/__tests__/span-closure.test.ts +12 -5
  166. package/src/tools/builtins/__tests__/bash.proc-test.ts +142 -0
  167. package/src/tools/builtins/__tests__/bash.test.ts +79 -0
  168. package/src/tools/builtins/bash.ts +100 -18
  169. package/src/tools/coordinator/__tests__/allow-delegation.test.ts +120 -0
  170. package/src/tools/coordinator/__tests__/wait-with-idle-bound.test.ts +247 -0
  171. package/src/tools/coordinator/index.ts +112 -65
  172. package/src/tools/coordinator/wait-with-idle-bound.ts +142 -0
  173. package/src/types/agent/base.ts +17 -0
  174. package/src/types/agent/gateway.ts +24 -0
  175. package/src/types/agent/lifecycle-event.ts +7 -0
  176. package/src/types/agent/supervisor.ts +28 -0
  177. package/src/types/agent/task.ts +5 -0
  178. package/src/types/hitl/index.ts +10 -0
  179. package/src/types/probe/registry.ts +6 -0
  180. package/src/types/run/config.ts +26 -0
  181. package/src/utils/__tests__/abort-reason.test.ts +56 -0
  182. package/src/utils/abort.ts +34 -0
  183. package/src/verification/__tests__/rule-order-and-reason.test.ts +149 -0
  184. package/src/verification/gate.ts +61 -3
  185. package/src/verification/index.ts +1 -1
@@ -80,6 +80,11 @@ export interface AgentTask {
80
80
  context: AgentTaskContext;
81
81
  state: AgentTaskState;
82
82
  result?: BaseAgentResult;
83
+ /**
84
+ * **Never populated.** Nothing in the SDK writes task progress.
85
+ *
86
+ * @deprecated No producer. Removed in the next major.
87
+ */
83
88
  progress?: AgentTaskProgress;
84
89
  /**
85
90
  * Tokens reserved from the shared pool when this child was spawned.
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/types/agent/task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/types/agent/task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEvD,MAAM,MAAM,cAAc,GACvB,SAAS,GACT,SAAS,GACT,WAAW,GACX,QAAQ,GACR,UAAU,GACV,UAAU,GACV,gBAAgB,CAAA;AAEnB,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAEvE;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAChC,WAAW,EAAE,KAAK,CAAA;IAElB,aAAa,EAAE,MAAM,CAAA;IAErB,qBAAqB,EAAE,eAAe,CAAA;IAEtC,KAAK,EAAE,MAAM,CAAA;IAEb,aAAa,EAAE,eAAe,CAAA;IAE9B,cAAc,CAAC,EAAE,mBAAmB,CAAA;IAEpC;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAE7B,mEAAmE;IACnE,QAAQ,EAAE,QAAQ,CAAA;IAElB;;;;;;OAMG;IACH,QAAQ,EAAE,QAAQ,CAAA;IAElB;;;OAGG;IACH,SAAS,EAAE,SAAS,CAAA;IAEpB;;;;OAIG;IACH,SAAS,EAAE,SAAS,CAAA;IAEpB;;;;OAIG;IACH,WAAW,EAAE,QAAQ,CAAA;CACrB;AAED,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAA;IAEb,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,SAAS;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,KAAK,CAAC,eAAe,EAAE,eAAe,CAAC,CAAA;IAC9C,oBAAoB,EAAE,eAAe,CAAA;IACrC,OAAO,EAAE,gBAAgB,CAAA;IACzB,KAAK,EAAE,cAAc,CAAA;IACrB,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAA;IAE5B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B,eAAe,EAAE,OAAO,EAAE,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CACnC;AAED,MAAM,WAAW,iBAAiB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,UAAU,CAAA;IACjB,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAA;IAEf,KAAK,EAAE,UAAU,CAAA;IAEjB,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAE1C,gBAAgB,CAAC,EAAE;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,SAAS,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IAED;;;OAGG;IACH,eAAe,EAAE,SAAS,CAAA;IAE1B,QAAQ,EAAE,QAAQ,CAAA;IAElB,SAAS,EAAE,SAAS,CAAA;IAEpB,wEAAwE;IACxE,WAAW,EAAE,QAAQ,CAAA;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;CACvC;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAEhB,UAAU,EAAE,MAAM,CAAA;IAElB,iBAAiB,EAAE,MAAM,CAAA;IAEzB;;;;;;;;;;;OAWG;IACH,cAAc,EAAE,MAAM,CAAA;CACtB"}
@@ -190,6 +190,16 @@ export interface IterationCheckpoint {
190
190
  messages: Message[];
191
191
  tokenUsage: TokenUsage;
192
192
  costInfo: CostInfo;
193
+ /**
194
+ * **Never set.** No checkpoint is written with a plan status.
195
+ *
196
+ * It matters more than an unused field usually would: a host restoring a
197
+ * checkpoint and reading this to decide whether the plan was approved
198
+ * gets `undefined` for every run, approved or not, and cannot tell the
199
+ * two apart. Ask the plan manager instead.
200
+ *
201
+ * @deprecated No producer. Removed in the next major.
202
+ */
193
203
  planStatus?: PlanStatus;
194
204
  /**
195
205
  * Present when the run parked at this checkpoint awaiting a human.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/hitl/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/hitl/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/hitl/index.ts"],"names":[],"mappings":"AAgOA,MAAM,UAAU,kBAAkB,CAAC,OAA4B;IAC9D,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,eAAe;YACnB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAA;QACnD,KAAK,aAAa;YACjB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAA;QACpD,KAAK,sBAAsB;YAC1B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;QAC/C,KAAK,eAAe;YACnB,2DAA2D;YAC3D,yDAAyD;YACzD,6DAA6D;YAC7D,uCAAuC;YACvC,OAAO,OAAO,CAAC,OAAO,CAAC;gBACtB,MAAM,EAAE,iBAAiB;gBACzB,iBAAiB,EAAE,EAAE;gBACrB,QAAQ,EAAE,mEAAmE;gBAC7E,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU;aACvC,CAAC,CAAA;QACH,OAAO,CAAC,CAAC,CAAC;YACT,MAAM,WAAW,GAAU,OAAO,CAAA;YAClC,MAAM,IAAI,KAAK,CAAC,gCAAiC,WAAmC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC7F,CAAC;IACF,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/hitl/index.ts"],"names":[],"mappings":"AA0OA,MAAM,UAAU,kBAAkB,CAAC,OAA4B;IAC9D,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,eAAe;YACnB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAA;QACnD,KAAK,aAAa;YACjB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAA;QACpD,KAAK,sBAAsB;YAC1B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;QAC/C,KAAK,eAAe;YACnB,2DAA2D;YAC3D,yDAAyD;YACzD,6DAA6D;YAC7D,uCAAuC;YACvC,OAAO,OAAO,CAAC,OAAO,CAAC;gBACtB,MAAM,EAAE,iBAAiB;gBACzB,iBAAiB,EAAE,EAAE;gBACrB,QAAQ,EAAE,mEAAmE;gBAC7E,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU;aACvC,CAAC,CAAA;QACH,OAAO,CAAC,CAAC,CAAC;YACT,MAAM,WAAW,GAAU,OAAO,CAAA;YAClC,MAAM,IAAI,KAAK,CAAC,gCAAiC,WAAmC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC7F,CAAC;IACF,CAAC;AACF,CAAC"}
@@ -21,6 +21,12 @@ export interface ProbeOptions<K extends ProbeEventKind = ProbeEventKind> {
21
21
  readonly where?: (event: ProbeEventOf<K>) => boolean;
22
22
  readonly priority?: number;
23
23
  readonly name?: string;
24
+ /**
25
+ * **Not implemented.** Setting it changes nothing; no probe emits
26
+ * telemetry because of it.
27
+ *
28
+ * @deprecated Unimplemented. Removed in the next major.
29
+ */
24
30
  readonly otel?: boolean;
25
31
  readonly override?: boolean;
26
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/types/probe/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAA;AAEpC,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,cAAc,IAAI,CACpD,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,GAAG,EAAE,YAAY,KACb,IAAI,CAAA;AAET,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAElG,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,iBAAiB,IAAI,CACtD,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,GAAG,EAAE,YAAY,KACb,YAAY,CAAA;AAEjB,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAA;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IACtE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAA;IACpD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAC3B"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/types/probe/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAA;AAEpC,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,cAAc,IAAI,CACpD,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,GAAG,EAAE,YAAY,KACb,IAAI,CAAA;AAET,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAElG,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,iBAAiB,IAAI,CACtD,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,GAAG,EAAE,YAAY,KACb,YAAY,CAAA;AAEjB,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAA;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IACtE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAA;IACpD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAC3B"}
@@ -16,6 +16,31 @@ export interface AgentRunConfig {
16
16
  * driver omits them rather than sending a request it knows will 400.
17
17
  */
18
18
  thinking?: import('../provider/index.js').ThinkingConfig;
19
+ /**
20
+ * How much work the model should spend on each call in the run.
21
+ *
22
+ * A SIBLING of {@link AgentRunConfig.thinking}, not a field inside it.
23
+ * On some models the two are independent controls that apply together —
24
+ * effort shapes the answer while a budget sets thinking depth — so
25
+ * nesting one inside the other would make that combination unsayable.
26
+ *
27
+ * The failure this closes is the one this codebase keeps finding: the
28
+ * field existed on the provider params, a driver already read it and
29
+ * wrote it to the wire, and nothing in the kernel ever set it. So a
30
+ * caller could not reach it at all, and the symptom — every request
31
+ * going out at the model's default — reads as "this model ignores
32
+ * effort" rather than "nobody plumbed it through".
33
+ *
34
+ * Run-level rather than per-step, deliberately. It is a property of what
35
+ * the run is FOR, and a value that moves between steps buys a different
36
+ * answer shape at the cost of the prompt-cache prefix on every step that
37
+ * changes it.
38
+ *
39
+ * A driver that cannot honour it REFUSES rather than dropping it, on the
40
+ * same reasoning as `thinking`: paying for a run you believe was
41
+ * high-effort and silently was not is worse than a startup error.
42
+ */
43
+ effort?: import('../provider/index.js').ReasoningEffort;
19
44
  tokenBudget: number;
20
45
  costLimitUsd?: number;
21
46
  maxIterations?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/run/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,sBAAsB,EAAE,cAAc,CAAA;IACxD,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,OAAO,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,YAAY,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IAED;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,KAAK,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,cAAc,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;IAEX,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,SAAS,CAAA;IAEpB,WAAW,CAAC,EAAE,KAAK,CAAA;IAEnB,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;;OAKG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,sBAAsB,EAAE,MAAM,CAAA;CAC9B"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/run/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,sBAAsB,EAAE,cAAc,CAAA;IAExD;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,CAAC,EAAE,OAAO,sBAAsB,EAAE,eAAe,CAAA;IACvD,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,OAAO,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,YAAY,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IAED;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,KAAK,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,cAAc,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;IAEX,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,SAAS,CAAA;IAEpB,WAAW,CAAC,EAAE,KAAK,CAAA;IAEnB,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;;OAKG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,sBAAsB,EAAE,MAAM,CAAA;CAC9B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=abort-reason.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort-reason.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/abort-reason.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { abortReasonText } from '../abort.js';
3
+ /**
4
+ * A cancellation and a deadline arrive by the same mechanism and mean opposite
5
+ * things to whoever reads the result. The distinction only survives if the
6
+ * words a caller attached travel with the abort — and only if the words the
7
+ * platform invents on a caller's behalf do NOT, because a fabricated
8
+ * explanation is worse than an honest silence.
9
+ */
10
+ describe('a stop carries the words its caller gave it', () => {
11
+ it('reports a reason someone wrote', () => {
12
+ expect(abortReasonText(new Error('deployment window closed'))).toBe('deployment window closed');
13
+ });
14
+ it('reports a named deadline, which is the case this exists for', () => {
15
+ const reason = new Error('run budget of 30000ms exhausted');
16
+ expect(abortReasonText(reason)).toBe('run budget of 30000ms exhausted');
17
+ });
18
+ });
19
+ describe('a stop with nothing to say stays silent', () => {
20
+ it('says nothing for a bare abort()', () => {
21
+ // `abort()` with no argument fills `reason` with a DOMException named
22
+ // AbortError. Nobody wrote that word; it is the platform's way of
23
+ // saying the caller gave no reason, and rendering it would turn "we
24
+ // do not know" into what looks like an answer.
25
+ const controller = new AbortController();
26
+ controller.abort();
27
+ expect(controller.signal.reason).toBeInstanceOf(Error);
28
+ expect(controller.signal.reason.name).toBe('AbortError');
29
+ expect(abortReasonText(controller.signal.reason)).toBeUndefined();
30
+ });
31
+ it('says nothing for a platform timeout', () => {
32
+ const timeout = new Error('The operation was aborted due to timeout');
33
+ timeout.name = 'TimeoutError';
34
+ expect(abortReasonText(timeout)).toBeUndefined();
35
+ });
36
+ it('says nothing for a non-Error reason', () => {
37
+ // The agent manager aborts a child with the bare string 'canceled'.
38
+ // Rendering it produces "was cancelled: canceled" — noise wearing the
39
+ // shape of information.
40
+ expect(abortReasonText('canceled')).toBeUndefined();
41
+ expect(abortReasonText(undefined)).toBeUndefined();
42
+ expect(abortReasonText({ message: 'not an Error' })).toBeUndefined();
43
+ });
44
+ it('says nothing for an Error whose message is empty', () => {
45
+ expect(abortReasonText(new Error(' '))).toBeUndefined();
46
+ });
47
+ });
48
+ //# sourceMappingURL=abort-reason.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort-reason.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/abort-reason.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;;;GAMG;AAEH,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;IAC5D,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IAChG,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACtE,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QAC3D,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACxD,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC1C,sEAAsE;QACtE,kEAAkE;QAClE,oEAAoE;QACpE,+CAA+C;QAC/C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,UAAU,CAAC,KAAK,EAAE,CAAA;QAElB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QACtD,MAAM,CAAE,UAAU,CAAC,MAAM,CAAC,MAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACnE,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;QACrE,OAAO,CAAC,IAAI,GAAG,cAAc,CAAA;QAC7B,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC9C,oEAAoE;QACpE,sEAAsE;QACtE,wBAAwB;QACxB,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;QACnD,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;QAClD,MAAM,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IACrE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IAC1D,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -1,2 +1,28 @@
1
+ /**
2
+ * The words a caller attached to a stop, or nothing when there were none.
3
+ *
4
+ * A cancellation and a deadline arrive by the same mechanism and mean opposite
5
+ * things to whoever reads the result. "Was cancelled" tells a model that
6
+ * something outside it decided, and nothing about what — so a tool result
7
+ * could not distinguish an operator pressing stop from a budget running out
8
+ * from a parent abandoning a child, and every one of those wants a different
9
+ * next move.
10
+ *
11
+ * Two kinds of reason are deliberately reported as no reason:
12
+ *
13
+ * - `AbortError` and `TimeoutError`. `abort()` with no argument fills `reason`
14
+ * with a DOMException named `AbortError`, so it is not a message anybody
15
+ * wrote; it is the platform's word for "someone stopped and said nothing".
16
+ * Rendering it would turn today's honest silence into a fake explanation.
17
+ * - Anything that is not an `Error`. The agent manager aborts a child with the
18
+ * bare string `'canceled'`, which would otherwise render as "was cancelled:
19
+ * canceled" — noise wearing the shape of information.
20
+ *
21
+ * Name-checked rather than checked by class, because a reason can cross a
22
+ * package boundary where `instanceof` stops holding across duplicate copies.
23
+ * That is the same answer this codebase already settled on for provider
24
+ * errors.
25
+ */
26
+ export declare function abortReasonText(reason: unknown): string | undefined;
1
27
  export declare function createChildAbortController(parent: AbortController): AbortController;
2
28
  //# sourceMappingURL=abort.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../src/utils/abort.ts"],"names":[],"mappings":"AAAA,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CA4BnF"}
1
+ {"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../src/utils/abort.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAKnE;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CA4BnF"}
@@ -1,3 +1,37 @@
1
+ import { toErrorMessage } from './error.js';
2
+ /**
3
+ * The words a caller attached to a stop, or nothing when there were none.
4
+ *
5
+ * A cancellation and a deadline arrive by the same mechanism and mean opposite
6
+ * things to whoever reads the result. "Was cancelled" tells a model that
7
+ * something outside it decided, and nothing about what — so a tool result
8
+ * could not distinguish an operator pressing stop from a budget running out
9
+ * from a parent abandoning a child, and every one of those wants a different
10
+ * next move.
11
+ *
12
+ * Two kinds of reason are deliberately reported as no reason:
13
+ *
14
+ * - `AbortError` and `TimeoutError`. `abort()` with no argument fills `reason`
15
+ * with a DOMException named `AbortError`, so it is not a message anybody
16
+ * wrote; it is the platform's word for "someone stopped and said nothing".
17
+ * Rendering it would turn today's honest silence into a fake explanation.
18
+ * - Anything that is not an `Error`. The agent manager aborts a child with the
19
+ * bare string `'canceled'`, which would otherwise render as "was cancelled:
20
+ * canceled" — noise wearing the shape of information.
21
+ *
22
+ * Name-checked rather than checked by class, because a reason can cross a
23
+ * package boundary where `instanceof` stops holding across duplicate copies.
24
+ * That is the same answer this codebase already settled on for provider
25
+ * errors.
26
+ */
27
+ export function abortReasonText(reason) {
28
+ if (!(reason instanceof Error))
29
+ return undefined;
30
+ if (reason.name === 'AbortError' || reason.name === 'TimeoutError')
31
+ return undefined;
32
+ const text = toErrorMessage(reason).trim();
33
+ return text.length > 0 ? text : undefined;
34
+ }
1
35
  export function createChildAbortController(parent) {
2
36
  const child = new AbortController();
3
37
  if (parent.signal.aborted) {
@@ -1 +1 @@
1
- {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../src/utils/abort.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,0BAA0B,CAAC,MAAuB;IACjE,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAA;IAEnC,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC3B,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACjC,OAAO,KAAK,CAAA;IACb,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAA;IAEpC,MAAM,aAAa,GAAG,GAAS,EAAE;QAChC,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAChC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAChC,CAAC;IACF,CAAC,CAAA;IAED,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAEtE,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAC5B,OAAO,EACP,GAAG,EAAE;QACJ,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAC1D,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACd,CAAA;IAED,OAAO,KAAK,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../src/utils/abort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,eAAe,CAAC,MAAe;IAC9C,IAAI,CAAC,CAAC,MAAM,YAAY,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAChD,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO,SAAS,CAAA;IACpF,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAuB;IACjE,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAA;IAEnC,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC3B,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACjC,OAAO,KAAK,CAAA;IACb,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAA;IAEpC,MAAM,aAAa,GAAG,GAAS,EAAE;QAChC,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAChC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAChC,CAAC;IACF,CAAC,CAAA;IAED,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAEtE,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAC5B,OAAO,EACP,GAAG,EAAE;QACJ,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAC1D,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACd,CAAA;IAED,OAAO,KAAK,CAAA;AACb,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rule-order-and-reason.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-order-and-reason.test.d.ts","sourceRoot":"","sources":["../../../src/verification/__tests__/rule-order-and-reason.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,126 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { getRootLogger } from '../../utils/logger.js';
3
+ import { VerificationGate, describeRule } from '../gate.js';
4
+ /**
5
+ * Two things an operator has to be able to trust about a policy gate: that a
6
+ * rule they wrote is consulted, and that a refusal says enough to act on.
7
+ *
8
+ * Neither held. `allowReadOnlyTools` was expanded into a rule AHEAD of the
9
+ * operator's own, and the gate stops at the first match — so "prompt me before
10
+ * every read" was not rejected, not warned about, just never reached. And a
11
+ * denial arrived as the rule's TYPE NAME, which tells a model that a rule
12
+ * matched and nothing whatever about what it said.
13
+ */
14
+ function gate(config) {
15
+ return new VerificationGate({
16
+ enabled: true,
17
+ rules: [],
18
+ allowReadOnlyTools: false,
19
+ denyDangerousPatterns: false,
20
+ logDecisions: false,
21
+ ...config,
22
+ }, getRootLogger());
23
+ }
24
+ /** Only the fields the gate reads. */
25
+ function toolDef(name, readOnly) {
26
+ return { name, isReadOnly: () => readOnly };
27
+ }
28
+ describe('an operator rule outranks the read-only convenience', () => {
29
+ it('lets a rule make a read-only tool prompt', () => {
30
+ // The case that was silently unreachable: `read` observes only, the
31
+ // convenience is on, and the operator has asked to be consulted anyway.
32
+ const result = gate({
33
+ allowReadOnlyTools: true,
34
+ rules: [{ type: 'deny_by_name', toolNames: ['read'] }],
35
+ }).evaluate({
36
+ toolName: 'read',
37
+ toolInput: { path: 'notes.txt' },
38
+ toolDef: toolDef('read', true),
39
+ });
40
+ expect(result.decision, 'the operator rule was never consulted').toBe('deny');
41
+ });
42
+ it('still allows a read-only tool nobody wrote a rule about', () => {
43
+ // The convenience keeps doing its job as a DEFAULT, which is what it
44
+ // always was in substance.
45
+ const result = gate({
46
+ allowReadOnlyTools: true,
47
+ rules: [{ type: 'deny_by_name', toolNames: ['write'] }],
48
+ }).evaluate({
49
+ toolName: 'grep',
50
+ toolInput: { pattern: 'x' },
51
+ toolDef: toolDef('grep', true),
52
+ });
53
+ expect(result.decision).toBe('allow');
54
+ });
55
+ });
56
+ describe('the safety floor still outranks everything', () => {
57
+ it('refuses a dangerous pattern even when a rule would allow the tool', () => {
58
+ // The denial goes first and stays there. An operator rule must not be
59
+ // able to open what it closes.
60
+ const result = gate({
61
+ denyDangerousPatterns: true,
62
+ rules: [{ type: 'allow_by_name', toolNames: ['bash'] }],
63
+ }).evaluate({
64
+ toolName: 'bash',
65
+ toolInput: { command: 'rm -rf /' },
66
+ toolDef: toolDef('bash', false),
67
+ });
68
+ expect(result.decision).toBe('deny');
69
+ });
70
+ });
71
+ describe('a refusal says what the rule said', () => {
72
+ it('names the pattern rather than the rule type', () => {
73
+ // "Matched rule: custom_pattern" tells a model a rule matched and
74
+ // nothing about it, so it rewords the same call and tries again. The
75
+ // pattern is what makes the retry visibly pointless.
76
+ const reason = describeRule({
77
+ type: 'custom_pattern',
78
+ pattern: 'git push*',
79
+ target: 'args',
80
+ decision: 'deny',
81
+ });
82
+ expect(reason).toContain('git push*');
83
+ expect(reason).toContain('denied');
84
+ expect(reason).not.toContain('custom_pattern');
85
+ });
86
+ it('says a by-name denial is about the tool, not the input', () => {
87
+ // The distinction that decides the next move: reworded arguments will
88
+ // not help, so the model should stop rather than iterate.
89
+ const reason = describeRule({ type: 'deny_by_name', toolNames: ['bash', 'write'] });
90
+ expect(reason).toContain('bash');
91
+ expect(reason).toContain('a different input will not change it');
92
+ });
93
+ it('says a dangerous-pattern refusal is not worth rewording', () => {
94
+ expect(describeRule({ type: 'deny_dangerous_patterns' })).toContain('will not help');
95
+ });
96
+ it('reaches the model through the gate result, not just the helper', () => {
97
+ const result = gate({ rules: [{ type: 'deny_by_name', toolNames: ['bash'] }] }).evaluate({
98
+ toolName: 'bash',
99
+ toolInput: { command: 'ls' },
100
+ toolDef: toolDef('bash', false),
101
+ });
102
+ expect(result.reason).toContain('bash');
103
+ expect(result.reason).not.toMatch(/^Matched rule:/);
104
+ });
105
+ it('is reachable by a caller driving the rules without the gate', async () => {
106
+ // `evaluateRule` is public and answers only WHETHER a rule matched. A
107
+ // caller holding that verdict and no describer is back to switching on
108
+ // the rule's type for its wording — the same defect the gate carried,
109
+ // one layer up. So the two travel together, and this asserts the
110
+ // PAIRING rather than either one alone.
111
+ //
112
+ // Asserted at this barrel rather than the package barrel on purpose.
113
+ // Importing `../../index.js` costs ~4s of module-graph load — measured,
114
+ // on an idle machine, against a default 5s test budget — so the version
115
+ // of this test that looked stronger was one busy CI runner away from
116
+ // failing for a reason that has nothing to do with verification. The
117
+ // package half is gated better elsewhere anyway: the public-surface
118
+ // baseline resolves `dist/index.d.ts` through the checker and reports a
119
+ // REGRESSION naming any symbol that leaves the surface.
120
+ const barrel = await import('../index.js');
121
+ expect(typeof barrel.evaluateRule).toBe('function');
122
+ expect(typeof barrel.describeRule).toBe('function');
123
+ expect(barrel.describeRule({ type: 'deny_by_name', toolNames: ['bash'] })).toContain('bash');
124
+ });
125
+ });
126
+ //# sourceMappingURL=rule-order-and-reason.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-order-and-reason.test.js","sourceRoot":"","sources":["../../../src/verification/__tests__/rule-order-and-reason.test.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,27 @@
1
1
  import type { ToolDefinition } from '../types/tool/index.js';
2
- import type { GateEvaluationResult, VerificationGateConfig } from '../types/verification/index.js';
2
+ import type { GateEvaluationResult, VerificationGateConfig, VerificationRule } from '../types/verification/index.js';
3
3
  import type { Logger } from '../utils/logger.js';
4
4
  export interface ToolCallContext {
5
5
  readonly toolName: string;
6
6
  readonly toolInput: unknown;
7
7
  readonly toolDef: ToolDefinition | undefined;
8
8
  }
9
+ /**
10
+ * What the rule actually said, in words a model can act on.
11
+ *
12
+ * This used to be the rule TYPE and nothing else, so a denial reached the
13
+ * model as "Blocked by the verification gate: Matched rule: deny_by_name" —
14
+ * naming the kind of rule and nothing about it. Not which tool, not which
15
+ * pattern, not whether a different input would fare better.
16
+ *
17
+ * The difference is behavioural rather than cosmetic. Told only that it was
18
+ * denied, a model rewords the same call and tries again, because nothing in
19
+ * the message says a retry is pointless. Told that a pattern rule denies
20
+ * `git push*`, it can stop, say so, and do something else. A refusal that
21
+ * cannot be reasoned about produces thrashing; one that can produces a route
22
+ * around it.
23
+ */
24
+ export declare function describeRule(rule: VerificationRule): string;
9
25
  export declare class VerificationGate {
10
26
  private readonly rules;
11
27
  private readonly compiledPatterns;
@@ -1 +1 @@
1
- {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/verification/gate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EACX,oBAAoB,EACpB,sBAAsB,EAEtB,MAAM,gCAAgC,CAAA;AAEvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,CAAA;CAC5C;AAED,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,sBAAsB,EAAE,GAAG,EAAE,MAAM;IAsDvD,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,oBAAoB;CAwDpD"}
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/verification/gate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EACX,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,MAAM,gCAAgC,CAAA;AAEvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,CAAA;CAC5C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAwB3D;AAED,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,sBAAsB,EAAE,GAAG,EAAE,MAAM;IAuEvD,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,oBAAoB;CAwDpD"}
@@ -1,6 +1,46 @@
1
1
  import { MAX_CUSTOM_PATTERN_LENGTH } from '../constants/verification/index.js';
2
2
  import { VerificationGateConfigSchema } from '../types/verification/index.js';
3
3
  import { evaluateRule } from './rules.js';
4
+ /**
5
+ * What the rule actually said, in words a model can act on.
6
+ *
7
+ * This used to be the rule TYPE and nothing else, so a denial reached the
8
+ * model as "Blocked by the verification gate: Matched rule: deny_by_name" —
9
+ * naming the kind of rule and nothing about it. Not which tool, not which
10
+ * pattern, not whether a different input would fare better.
11
+ *
12
+ * The difference is behavioural rather than cosmetic. Told only that it was
13
+ * denied, a model rewords the same call and tries again, because nothing in
14
+ * the message says a retry is pointless. Told that a pattern rule denies
15
+ * `git push*`, it can stop, say so, and do something else. A refusal that
16
+ * cannot be reasoned about produces thrashing; one that can produces a route
17
+ * around it.
18
+ */
19
+ export function describeRule(rule) {
20
+ switch (rule.type) {
21
+ case 'deny_dangerous_patterns':
22
+ return 'this matches a pattern the operator refuses outright; rewording it will not help';
23
+ case 'allow_read_only':
24
+ return 'allowed because this tool only observes';
25
+ case 'allow_by_name':
26
+ return `allowed by name (${rule.toolNames.join(', ')})`;
27
+ case 'deny_by_name':
28
+ return `denied by name (${rule.toolNames.join(', ')}) — this tool is refused for this run, so a different input will not change it`;
29
+ case 'allow_by_category':
30
+ return `allowed by category (${rule.categories.join(', ')})`;
31
+ case 'allow_by_tier':
32
+ return `allowed by tier (${rule.tiers.join(', ')})`;
33
+ case 'custom_pattern': {
34
+ const where = rule.target === 'both' ? 'name or arguments' : rule.target;
35
+ const verb = rule.decision === 'deny' ? 'denied' : 'allowed';
36
+ return `${verb} by a pattern rule matching the ${where}: ${rule.pattern}`;
37
+ }
38
+ default: {
39
+ const exhaustive = rule;
40
+ return `matched an unrecognised rule: ${JSON.stringify(exhaustive)}`;
41
+ }
42
+ }
43
+ }
4
44
  export class VerificationGate {
5
45
  rules;
6
46
  compiledPatterns;
@@ -14,13 +54,29 @@ export class VerificationGate {
14
54
  this.logDecisions = parsed.logDecisions;
15
55
  this.enabled = parsed.enabled;
16
56
  const expandedRules = [];
57
+ // Order is the whole meaning of this list, because the first rule to
58
+ // match decides and nothing after it is consulted.
59
+ //
60
+ // The dangerous-pattern denial goes FIRST and stays there: it is the
61
+ // floor, and an operator rule must not be able to open what it closes.
62
+ //
63
+ // The read-only allowance goes LAST, and it used to go second — ahead of
64
+ // the operator's own rules. With first-match-wins that made a rule like
65
+ // "prompt me before every read" UNREACHABLE while allowReadOnlyTools was
66
+ // on: not rejected, not warned about, just never consulted. Someone who
67
+ // writes a rule and is silently ignored gets the worst outcome available
68
+ // — they believe a control is in force and it is not.
69
+ //
70
+ // So it becomes what it always was in substance: a DEFAULT for tools
71
+ // nobody wrote a rule about, rather than an override of the rules they
72
+ // did write. The denial above still outranks both.
17
73
  if (parsed.denyDangerousPatterns) {
18
74
  expandedRules.push({ type: 'deny_dangerous_patterns' });
19
75
  }
76
+ expandedRules.push(...parsed.rules);
20
77
  if (parsed.allowReadOnlyTools) {
21
78
  expandedRules.push({ type: 'allow_read_only' });
22
79
  }
23
- expandedRules.push(...parsed.rules);
24
80
  this.rules = expandedRules;
25
81
  this.compiledPatterns = new Map();
26
82
  this.nameSets = new Map();
@@ -73,7 +129,7 @@ export class VerificationGate {
73
129
  const result = {
74
130
  decision,
75
131
  matchedRule: rule,
76
- reason: `Matched rule: ${rule.type}`,
132
+ reason: describeRule(rule),
77
133
  };
78
134
  if (this.logDecisions) {
79
135
  this.log.debug('Gate decision', {
@@ -1 +1 @@
1
- {"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/verification/gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/verification/gate.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { VerificationGate, type ToolCallContext } from './gate.js';
1
+ export { VerificationGate, describeRule, type ToolCallContext } from './gate.js';
2
2
  export { defaultSandboxedGateConfig, defaultSandboxedShellGateConfig } from './presets.js';
3
3
  export { evaluateRule } from './rules.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAA;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAA;AAChF,OAAO,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAA;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA"}
@@ -1,4 +1,4 @@
1
- export { VerificationGate } from './gate.js';
1
+ export { VerificationGate, describeRule } from './gate.js';
2
2
  export { defaultSandboxedGateConfig, defaultSandboxedShellGateConfig } from './presets.js';
3
3
  export { evaluateRule } from './rules.js';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAwB,MAAM,WAAW,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAA;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAwB,MAAM,WAAW,CAAA;AAChF,OAAO,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAA;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@namzu/sdk",
3
- "version": "6.1.0",
3
+ "version": "7.0.0",
4
4
  "description": "Open-source AI agent SDK with a built-in runtime. Nothing between you and your agents.",
5
5
  "license": "FSL-1.1-MIT",
6
6
  "type": "module",
@@ -63,6 +63,7 @@
63
63
  "test:coverage": "vitest run --passWithNoTests --coverage",
64
64
  "typecheck": "tsc --noEmit",
65
65
  "knip": "knip",
66
- "knip:production": "knip --production"
66
+ "knip:production": "knip --production",
67
+ "test:proc": "tsc --build && vitest run --config vitest.proc.config.ts"
67
68
  }
68
69
  }