agent-nuvira 3.3.11 → 3.3.13

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 (220) hide show
  1. package/README.md +32 -1
  2. package/dist/agents/agents/reasoner.d.ts.map +1 -1
  3. package/dist/agents/agents/reasoner.js +13 -0
  4. package/dist/agents/agents/reasoner.js.map +1 -1
  5. package/dist/agents/orchestrator.d.ts.map +1 -1
  6. package/dist/agents/orchestrator.js +56 -20
  7. package/dist/agents/orchestrator.js.map +1 -1
  8. package/dist/cli/chat.d.ts +36 -0
  9. package/dist/cli/chat.d.ts.map +1 -1
  10. package/dist/cli/chat.js +456 -43
  11. package/dist/cli/chat.js.map +1 -1
  12. package/dist/cli/cli-program.d.ts.map +1 -1
  13. package/dist/cli/cli-program.js +8 -0
  14. package/dist/cli/cli-program.js.map +1 -1
  15. package/dist/cli/config.d.ts.map +1 -1
  16. package/dist/cli/config.js +35 -4
  17. package/dist/cli/config.js.map +1 -1
  18. package/dist/cli/execute.d.ts.map +1 -1
  19. package/dist/cli/execute.js +14 -0
  20. package/dist/cli/execute.js.map +1 -1
  21. package/dist/cli/knowledge.d.ts +23 -0
  22. package/dist/cli/knowledge.d.ts.map +1 -0
  23. package/dist/cli/knowledge.js +132 -0
  24. package/dist/cli/knowledge.js.map +1 -0
  25. package/dist/cli/loop-executor.d.ts.map +1 -1
  26. package/dist/cli/loop-executor.js +57 -13
  27. package/dist/cli/loop-executor.js.map +1 -1
  28. package/dist/cli/omniroute-control.d.ts +88 -0
  29. package/dist/cli/omniroute-control.d.ts.map +1 -0
  30. package/dist/cli/omniroute-control.js +179 -0
  31. package/dist/cli/omniroute-control.js.map +1 -0
  32. package/dist/cli/omniroute.d.ts +21 -0
  33. package/dist/cli/omniroute.d.ts.map +1 -0
  34. package/dist/cli/omniroute.js +67 -0
  35. package/dist/cli/omniroute.js.map +1 -0
  36. package/dist/cli/tool-install-prompt.d.ts +58 -0
  37. package/dist/cli/tool-install-prompt.d.ts.map +1 -1
  38. package/dist/cli/tool-install-prompt.js +137 -0
  39. package/dist/cli/tool-install-prompt.js.map +1 -1
  40. package/dist/cli/weak-model-prompt.d.ts +16 -7
  41. package/dist/cli/weak-model-prompt.d.ts.map +1 -1
  42. package/dist/cli/weak-model-prompt.js +24 -8
  43. package/dist/cli/weak-model-prompt.js.map +1 -1
  44. package/dist/config/types.d.ts +44 -0
  45. package/dist/config/types.d.ts.map +1 -1
  46. package/dist/context/cache.d.ts +35 -1
  47. package/dist/context/cache.d.ts.map +1 -1
  48. package/dist/context/cache.js +31 -2
  49. package/dist/context/cache.js.map +1 -1
  50. package/dist/context/history.d.ts +21 -0
  51. package/dist/context/history.d.ts.map +1 -1
  52. package/dist/context/history.js +50 -0
  53. package/dist/context/history.js.map +1 -1
  54. package/dist/gateway/hook-contract.d.ts +173 -0
  55. package/dist/gateway/hook-contract.d.ts.map +1 -0
  56. package/dist/gateway/hook-contract.js +352 -0
  57. package/dist/gateway/hook-contract.js.map +1 -0
  58. package/dist/gateway/hooks.d.ts.map +1 -1
  59. package/dist/gateway/hooks.js +14 -0
  60. package/dist/gateway/hooks.js.map +1 -1
  61. package/dist/inference/interface.d.ts +17 -0
  62. package/dist/inference/interface.d.ts.map +1 -1
  63. package/dist/inference/model-catalog.d.ts +17 -0
  64. package/dist/inference/model-catalog.d.ts.map +1 -1
  65. package/dist/inference/model-catalog.js +42 -7
  66. package/dist/inference/model-catalog.js.map +1 -1
  67. package/dist/inference/model-id-validation.d.ts +57 -0
  68. package/dist/inference/model-id-validation.d.ts.map +1 -0
  69. package/dist/inference/model-id-validation.js +127 -0
  70. package/dist/inference/model-id-validation.js.map +1 -0
  71. package/dist/inference/openai-compat-adapter.d.ts.map +1 -1
  72. package/dist/inference/openai-compat-adapter.js +12 -1
  73. package/dist/inference/openai-compat-adapter.js.map +1 -1
  74. package/dist/inference/provider-catalog.d.ts +11 -0
  75. package/dist/inference/provider-catalog.d.ts.map +1 -1
  76. package/dist/inference/provider-catalog.js +80 -0
  77. package/dist/inference/provider-catalog.js.map +1 -1
  78. package/dist/inference/route-resolver.d.ts +2 -8
  79. package/dist/inference/route-resolver.d.ts.map +1 -1
  80. package/dist/inference/route-resolver.js +17 -0
  81. package/dist/inference/route-resolver.js.map +1 -1
  82. package/dist/inference/tool-call-utils.d.ts +4 -3
  83. package/dist/inference/tool-call-utils.d.ts.map +1 -1
  84. package/dist/inference/tool-call-utils.js +26 -12
  85. package/dist/inference/tool-call-utils.js.map +1 -1
  86. package/dist/inference/tools.d.ts +1 -0
  87. package/dist/inference/tools.d.ts.map +1 -1
  88. package/dist/inference/tools.js +20 -3
  89. package/dist/inference/tools.js.map +1 -1
  90. package/dist/learning/agentic-route-gate.d.ts +104 -0
  91. package/dist/learning/agentic-route-gate.d.ts.map +1 -0
  92. package/dist/learning/agentic-route-gate.js +125 -0
  93. package/dist/learning/agentic-route-gate.js.map +1 -0
  94. package/dist/learning/auto-router.d.ts +89 -0
  95. package/dist/learning/auto-router.d.ts.map +1 -1
  96. package/dist/learning/auto-router.js +188 -8
  97. package/dist/learning/auto-router.js.map +1 -1
  98. package/dist/learning/build-prerequisites.d.ts +68 -0
  99. package/dist/learning/build-prerequisites.d.ts.map +1 -0
  100. package/dist/learning/build-prerequisites.js +267 -0
  101. package/dist/learning/build-prerequisites.js.map +1 -0
  102. package/dist/learning/continuation-intent.d.ts +43 -0
  103. package/dist/learning/continuation-intent.d.ts.map +1 -0
  104. package/dist/learning/continuation-intent.js +82 -0
  105. package/dist/learning/continuation-intent.js.map +1 -0
  106. package/dist/learning/error-repair.d.ts +23 -1
  107. package/dist/learning/error-repair.d.ts.map +1 -1
  108. package/dist/learning/error-repair.js +58 -0
  109. package/dist/learning/error-repair.js.map +1 -1
  110. package/dist/learning/knowledge-base.d.ts +124 -0
  111. package/dist/learning/knowledge-base.d.ts.map +1 -0
  112. package/dist/learning/knowledge-base.js +337 -0
  113. package/dist/learning/knowledge-base.js.map +1 -0
  114. package/dist/learning/model-harness.d.ts +19 -0
  115. package/dist/learning/model-harness.d.ts.map +1 -1
  116. package/dist/learning/model-harness.js +27 -0
  117. package/dist/learning/model-harness.js.map +1 -1
  118. package/dist/learning/model-selection.d.ts +2 -1
  119. package/dist/learning/model-selection.d.ts.map +1 -1
  120. package/dist/learning/model-selection.js +35 -2
  121. package/dist/learning/model-selection.js.map +1 -1
  122. package/dist/learning/project-docs.d.ts +83 -0
  123. package/dist/learning/project-docs.d.ts.map +1 -0
  124. package/dist/learning/project-docs.js +132 -0
  125. package/dist/learning/project-docs.js.map +1 -0
  126. package/dist/learning/prompt-budget.d.ts +91 -0
  127. package/dist/learning/prompt-budget.d.ts.map +1 -0
  128. package/dist/learning/prompt-budget.js +99 -0
  129. package/dist/learning/prompt-budget.js.map +1 -0
  130. package/dist/learning/quota-ledger.d.ts +13 -0
  131. package/dist/learning/quota-ledger.d.ts.map +1 -1
  132. package/dist/learning/quota-ledger.js +28 -0
  133. package/dist/learning/quota-ledger.js.map +1 -1
  134. package/dist/learning/reasoning-trace.d.ts +55 -2
  135. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  136. package/dist/learning/reasoning-trace.js +48 -0
  137. package/dist/learning/reasoning-trace.js.map +1 -1
  138. package/dist/learning/resilient-call.d.ts.map +1 -1
  139. package/dist/learning/resilient-call.js +16 -3
  140. package/dist/learning/resilient-call.js.map +1 -1
  141. package/dist/learning/routing-history.d.ts +13 -0
  142. package/dist/learning/routing-history.d.ts.map +1 -1
  143. package/dist/learning/routing-history.js.map +1 -1
  144. package/dist/learning/seeded-benchmark.d.ts +14 -0
  145. package/dist/learning/seeded-benchmark.d.ts.map +1 -1
  146. package/dist/learning/seeded-benchmark.js +43 -4
  147. package/dist/learning/seeded-benchmark.js.map +1 -1
  148. package/dist/learning/turn-report.d.ts +78 -0
  149. package/dist/learning/turn-report.d.ts.map +1 -0
  150. package/dist/learning/turn-report.js +140 -0
  151. package/dist/learning/turn-report.js.map +1 -0
  152. package/dist/security/secret-scan.d.ts +156 -0
  153. package/dist/security/secret-scan.d.ts.map +1 -0
  154. package/dist/security/secret-scan.js +525 -0
  155. package/dist/security/secret-scan.js.map +1 -0
  156. package/dist/tools/edit-verification.d.ts +2 -11
  157. package/dist/tools/edit-verification.d.ts.map +1 -1
  158. package/dist/tools/edit-verification.js +33 -1
  159. package/dist/tools/edit-verification.js.map +1 -1
  160. package/dist/tools/loop-skill-hint.d.ts +51 -0
  161. package/dist/tools/loop-skill-hint.d.ts.map +1 -1
  162. package/dist/tools/loop-skill-hint.js +87 -2
  163. package/dist/tools/loop-skill-hint.js.map +1 -1
  164. package/dist/tools/plan-store.d.ts +126 -3
  165. package/dist/tools/plan-store.d.ts.map +1 -1
  166. package/dist/tools/plan-store.js +290 -6
  167. package/dist/tools/plan-store.js.map +1 -1
  168. package/dist/tools/registry.d.ts +20 -1
  169. package/dist/tools/registry.d.ts.map +1 -1
  170. package/dist/tools/registry.js +165 -4
  171. package/dist/tools/registry.js.map +1 -1
  172. package/dist/tools/remediation-ladder.d.ts +91 -0
  173. package/dist/tools/remediation-ladder.d.ts.map +1 -0
  174. package/dist/tools/remediation-ladder.js +308 -0
  175. package/dist/tools/remediation-ladder.js.map +1 -0
  176. package/dist/tools/run-terminal.d.ts.map +1 -1
  177. package/dist/tools/run-terminal.js +60 -2
  178. package/dist/tools/run-terminal.js.map +1 -1
  179. package/dist/tools/skills-hub.d.ts +7 -0
  180. package/dist/tools/skills-hub.d.ts.map +1 -1
  181. package/dist/tools/skills-hub.js +11 -2
  182. package/dist/tools/skills-hub.js.map +1 -1
  183. package/dist/tools/step-artifact.d.ts +35 -0
  184. package/dist/tools/step-artifact.d.ts.map +1 -0
  185. package/dist/tools/step-artifact.js +154 -0
  186. package/dist/tools/step-artifact.js.map +1 -0
  187. package/dist/tools/tool-loop.d.ts +35 -0
  188. package/dist/tools/tool-loop.d.ts.map +1 -1
  189. package/dist/tools/tool-loop.js +284 -9
  190. package/dist/tools/tool-loop.js.map +1 -1
  191. package/dist/tools/toolsets.js +4 -4
  192. package/dist/tools/toolsets.js.map +1 -1
  193. package/dist/tools/worktree.d.ts +11 -2
  194. package/dist/tools/worktree.d.ts.map +1 -1
  195. package/dist/tools/worktree.js +11 -2
  196. package/dist/tools/worktree.js.map +1 -1
  197. package/dist/utils/effect-verification.js +1 -1
  198. package/dist/utils/effect-verification.js.map +1 -1
  199. package/dist/web-dashboard/chat-console.d.ts +21 -1
  200. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  201. package/dist/web-dashboard/chat-console.js +33 -5
  202. package/dist/web-dashboard/chat-console.js.map +1 -1
  203. package/dist/web-dashboard/server.d.ts +29 -0
  204. package/dist/web-dashboard/server.d.ts.map +1 -1
  205. package/dist/web-dashboard/server.js +410 -5
  206. package/dist/web-dashboard/server.js.map +1 -1
  207. package/dist/web-dashboard/src/types.d.ts +137 -0
  208. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  209. package/dist/web-dashboard/workspace-guard.d.ts +7 -0
  210. package/dist/web-dashboard/workspace-guard.d.ts.map +1 -1
  211. package/dist/web-dashboard/workspace-guard.js +70 -0
  212. package/dist/web-dashboard/workspace-guard.js.map +1 -1
  213. package/package.json +4 -1
  214. package/src/web-dashboard/public/assets/index-DhiuR4S2.js +210 -0
  215. package/src/web-dashboard/public/assets/index-DhiuR4S2.js.map +1 -0
  216. package/src/web-dashboard/public/assets/index-tK8Y2qHB.css +1 -0
  217. package/src/web-dashboard/public/index.html +2 -2
  218. package/src/web-dashboard/public/assets/index-BdKf5Xw2.js +0 -207
  219. package/src/web-dashboard/public/assets/index-BdKf5Xw2.js.map +0 -1
  220. package/src/web-dashboard/public/assets/index-C9eBskc9.css +0 -1
@@ -0,0 +1,352 @@
1
+ /**
2
+ * Hook contract (`src/gateway/hook-contract.ts`).
3
+ *
4
+ * WHY THIS EXISTS. Third-party plugins in the Claude Code ecosystem assume a
5
+ * hook contract (`SessionStart`, `PreToolUse`, …) that runs THEIR code. nuvira
6
+ * deliberately has no remote-code hook API — that is a remote-execution surface
7
+ * (see `docs/DESIGN-skill-plugin-ecosystem.md` §5.2/§6). But the *value* people
8
+ * want from hooks is real, and nuvira already fires four lifecycle seams
9
+ * internally (`src/gateway/hooks.ts`). This module is the missing half: a
10
+ * DECLARATIVE contract an operator can write from the dashboard, bound to those
11
+ * existing seams, with a fixed allow-list of native actions.
12
+ *
13
+ * POSITIONING — what a hook IS and IS NOT here:
14
+ * - A hook is a RULE: "when <event> matches <when>, do <action>". Data, not code.
15
+ * - The action set is a fixed allow-list enforced natively by nuvira
16
+ * ({@link HookActionKind}). There is deliberately no `run-command`, no
17
+ * `script`, no `mcp`. A hook can DENY a tool call, NOTIFY, or SCAN the call's
18
+ * arguments for secret shapes — nothing else.
19
+ * - Therefore installing a hook can never execute third-party code, and the
20
+ * worst a rogue declaration can do is block a call or log a line. That is
21
+ * the whole reason this is safe to expose to an operator.
22
+ *
23
+ * HOW IT WORKS (the four seams are defined in hooks.ts; this module binds to them):
24
+ * before_tool_call → can `deny` (veto) or `notify` or `scan-args` (+deny-on-hit)
25
+ * after_tool_call → `notify` or `scan-args` on the result
26
+ * failed_tool_call → `notify` on the failure
27
+ * on_session_end → `notify` with the run's summary
28
+ *
29
+ * Declarations persist as JSON at `<config-dir>/hooks.json` and are reloaded in
30
+ * memory on every save, so a dashboard edit takes effect without a restart. One
31
+ * handler per event is registered on the shared registry; it reads the current
32
+ * declarations on each call. Enforcement FAILS OPEN exactly like the underlying
33
+ * registry: a broken declaration is reported, never fatal.
34
+ */
35
+ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
36
+ import { dirname, join } from 'node:path';
37
+ import { z } from 'zod';
38
+ import { resolveBuffConfigDir } from '../config/paths.js';
39
+ import { logger } from '../utils/logger.js';
40
+ import { scanText } from '../security/secret-scan.js';
41
+ // ─── The allow-list ─────────────────────────────────────────────────────────
42
+ /** The four lifecycle seams, in the order the runtime fires them. */
43
+ export const HOOK_EVENTS = [
44
+ 'before_tool_call',
45
+ 'after_tool_call',
46
+ 'failed_tool_call',
47
+ 'on_session_end',
48
+ ];
49
+ /** One human sentence per seam — shown verbatim in the dashboard. */
50
+ export const HOOK_EVENT_DESCRIPTIONS = {
51
+ before_tool_call: 'Runs BEFORE a tool call. The only seam that can DENY (stop) the call.',
52
+ after_tool_call: 'Runs after a tool call SUCCEEDS, with the result text and duration.',
53
+ failed_tool_call: 'Runs after a tool call FAILS (threw, or returned a failure), with the error.',
54
+ on_session_end: 'Runs when a pipeline run finishes, with its success flag and summary.',
55
+ };
56
+ export const HOOK_ACTION_KINDS = ['deny', 'notify', 'scan-args'];
57
+ export const HOOK_ACTION_DESCRIPTIONS = {
58
+ deny: 'Stop the tool call. Only available on before_tool_call.',
59
+ notify: 'Write a line to the log (with {tool} / {surface} / {event} interpolated).',
60
+ 'scan-args': 'Scan the call arguments (or the tool result) for secret-shaped values.',
61
+ };
62
+ // ─── Validation ─────────────────────────────────────────────────────────────
63
+ const ID_RE = /^[a-z0-9][a-z0-9-]{0,63}$/;
64
+ const matcherSchema = z
65
+ .object({
66
+ tool: z.string().max(120).optional(),
67
+ surface: z.string().max(120).optional(),
68
+ cwdPrefix: z.string().max(512).optional(),
69
+ argsMatch: z.record(z.string(), z.string().max(200)).optional(),
70
+ })
71
+ .strict();
72
+ const actionSchema = z.discriminatedUnion('kind', [
73
+ z.object({ kind: z.literal('deny'), reason: z.string().max(500).optional() }).strict(),
74
+ z.object({ kind: z.literal('notify'), message: z.string().min(1).max(500) }).strict(),
75
+ z.object({
76
+ kind: z.literal('scan-args'),
77
+ denyOnHit: z.boolean().optional(),
78
+ reason: z.string().max(500).optional(),
79
+ }).strict(),
80
+ ]);
81
+ const declarationSchema = z
82
+ .object({
83
+ id: z.string().regex(ID_RE, 'id must be lowercase letters, digits and hyphens (e.g. "block-rm-rf")'),
84
+ label: z.string().min(1).max(120),
85
+ event: z.enum(['before_tool_call', 'after_tool_call', 'failed_tool_call', 'on_session_end']),
86
+ enabled: z.boolean(),
87
+ when: matcherSchema.optional(),
88
+ action: actionSchema,
89
+ source: z.enum(['user', 'builtin']).optional(),
90
+ updatedAt: z.number().optional(),
91
+ })
92
+ .strict();
93
+ /**
94
+ * Validate one declaration.
95
+ *
96
+ * Beyond field shapes this enforces the two cross-field rules of the contract,
97
+ * because both would otherwise be silent no-ops:
98
+ * - `deny` is only meaningful on `before_tool_call` (the other seams cannot
99
+ * stop anything), so it is rejected elsewhere rather than ignored;
100
+ * - `scan-args` is about a tool call, so it is rejected on `on_session_end`.
101
+ */
102
+ export function validateHookDeclaration(value) {
103
+ const parsed = declarationSchema.safeParse(value);
104
+ if (!parsed.success) {
105
+ return { ok: false, error: parsed.error.issues.map((i) => `${i.path.join('.') || 'hook'}: ${i.message}`).join('; ') };
106
+ }
107
+ const hook = parsed.data;
108
+ if (hook.action.kind === 'deny' && hook.event !== 'before_tool_call') {
109
+ return { ok: false, error: `"${hook.id}": deny is only available on before_tool_call (${hook.event} cannot stop a call).` };
110
+ }
111
+ if (hook.action.kind === 'scan-args' && hook.event === 'on_session_end') {
112
+ return { ok: false, error: `"${hook.id}": scan-args needs a tool call, not on_session_end.` };
113
+ }
114
+ return { ok: true, hook };
115
+ }
116
+ /** Validate a whole list, catching duplicate ids. */
117
+ export function validateHookDeclarations(value) {
118
+ if (!Array.isArray(value))
119
+ return { ok: false, error: 'hooks must be an array.' };
120
+ const out = [];
121
+ const seen = new Set();
122
+ for (const item of value) {
123
+ const res = validateHookDeclaration(item);
124
+ if (!res.ok)
125
+ return { ok: false, error: res.error };
126
+ if (seen.has(res.hook.id))
127
+ return { ok: false, error: `duplicate hook id: "${res.hook.id}".` };
128
+ seen.add(res.hook.id);
129
+ out.push(res.hook);
130
+ }
131
+ return { ok: true, declarations: out };
132
+ }
133
+ // ─── Matching ───────────────────────────────────────────────────────────────
134
+ /** Compile a glob (`*` only) to a case-insensitive anchored regex. */
135
+ export function globToRegExp(glob) {
136
+ const escaped = glob.replace(/[.*+?^${}()|[\]\\]/g, '\\$&').replace(/\\\*/g, '.*');
137
+ return new RegExp(`^${escaped}$`, 'i');
138
+ }
139
+ /** True when `glob` matches `value` (missing value only matches a bare `*`). */
140
+ export function globMatches(glob, value) {
141
+ if (value === undefined || value === '')
142
+ return glob === '*';
143
+ return globToRegExp(glob).test(value);
144
+ }
145
+ function stringifyArg(value) {
146
+ if (value === undefined || value === null)
147
+ return '';
148
+ if (typeof value === 'string')
149
+ return value;
150
+ try {
151
+ return JSON.stringify(value) ?? '';
152
+ }
153
+ catch {
154
+ return String(value);
155
+ }
156
+ }
157
+ /**
158
+ * Does this declaration's `when` match the call context? A context is `any`
159
+ * because the four seams carry different fields; only the fields a matcher
160
+ * names are read, which keeps the predicate identical across seams.
161
+ */
162
+ export function matchesHookDeclaration(hook, ctx) {
163
+ const when = hook.when;
164
+ if (!when)
165
+ return true;
166
+ if (when.tool !== undefined && !globMatches(when.tool, typeof ctx?.tool === 'string' ? ctx.tool : ''))
167
+ return false;
168
+ if (when.surface !== undefined && !globMatches(when.surface, typeof ctx?.surface === 'string' ? ctx.surface : ''))
169
+ return false;
170
+ if (when.cwdPrefix !== undefined) {
171
+ const cwd = typeof ctx?.cwd === 'string' ? ctx.cwd : '';
172
+ if (!cwd.startsWith(when.cwdPrefix))
173
+ return false;
174
+ }
175
+ if (when.argsMatch) {
176
+ for (const [key, glob] of Object.entries(when.argsMatch)) {
177
+ const arg = ctx?.args && typeof ctx.args === 'object' ? ctx.args[key] : undefined;
178
+ if (!globMatches(glob, stringifyArg(arg)))
179
+ return false;
180
+ }
181
+ }
182
+ return true;
183
+ }
184
+ // ─── Evaluation (the native action implementations) ─────────────────────────
185
+ function interpolate(template, hook, ctx) {
186
+ return template
187
+ .replace(/\{tool\}/g, typeof ctx?.tool === 'string' ? ctx.tool : '')
188
+ .replace(/\{surface\}/g, typeof ctx?.surface === 'string' ? ctx.surface : '')
189
+ .replace(/\{event\}/g, hook.event);
190
+ }
191
+ /** Scan a text blob for secret shapes; returns a human count summary or null. */
192
+ function scanForSecrets(hook, text) {
193
+ if (!text)
194
+ return null;
195
+ try {
196
+ const hits = scanText(text, `hook:${hook.id}`);
197
+ if (hits.length === 0)
198
+ return null;
199
+ const kinds = [...new Set(hits.map((h) => h.label))].join(', ');
200
+ return `${hits.length} secret-shaped value(s) (${kinds}) — values masked.`;
201
+ }
202
+ catch {
203
+ return null;
204
+ }
205
+ }
206
+ /**
207
+ * Apply one declaration's action to a context.
208
+ *
209
+ * Returns a {@link HookDecision} only when the action is a `deny` (or a
210
+ * `scan-args` hit with `denyOnHit` on `before_tool_call`). Every other action
211
+ * is a side effect (a log line, a `report` note) and returns null, so the
212
+ * registry's "first denial wins" rule is preserved exactly.
213
+ */
214
+ export function applyHookDeclaration(hook, ctx) {
215
+ if (!hook.enabled)
216
+ return null;
217
+ if (!matchesHookDeclaration(hook, ctx))
218
+ return null;
219
+ switch (hook.action.kind) {
220
+ case 'notify': {
221
+ const message = interpolate(hook.action.message, hook, ctx);
222
+ logger.info(`hook '${hook.id}': ${message}`);
223
+ ctx?.report?.(`hook '${hook.id}': ${message}`);
224
+ return null;
225
+ }
226
+ case 'deny': {
227
+ const reason = hook.action.reason ? interpolate(hook.action.reason, hook, ctx) : undefined;
228
+ return { deny: true, reason: reason ?? `blocked by hook '${hook.id}'`, by: `hook:${hook.id}` };
229
+ }
230
+ case 'scan-args': {
231
+ // Scan the arguments before a call, or the result after a call.
232
+ const payload = hook.event === 'before_tool_call'
233
+ ? stringifyArg(ctx?.args)
234
+ : typeof ctx?.result === 'string'
235
+ ? ctx.result
236
+ : stringifyArg(ctx?.args);
237
+ const summary = scanForSecrets(hook, payload);
238
+ if (!summary)
239
+ return null;
240
+ const message = `hook '${hook.id}': ${summary}`;
241
+ if (hook.action.denyOnHit && hook.event === 'before_tool_call') {
242
+ const reason = hook.action.reason ? interpolate(hook.action.reason, hook, ctx) : `${summary} — blocked before running.`;
243
+ return { deny: true, reason, by: `hook:${hook.id}` };
244
+ }
245
+ logger.warn(message);
246
+ ctx?.report?.(message);
247
+ return null;
248
+ }
249
+ default:
250
+ return null;
251
+ }
252
+ }
253
+ /** Evaluate every declaration for one event; returns the first denial or null. */
254
+ export function evaluateDeclarations(declarations, event, ctx) {
255
+ for (const hook of declarations) {
256
+ if (hook.event !== event)
257
+ continue;
258
+ const decision = applyHookDeclaration(hook, ctx);
259
+ if (decision)
260
+ return decision;
261
+ }
262
+ return null;
263
+ }
264
+ // ─── Persistence ────────────────────────────────────────────────────────────
265
+ /** `<config-dir>/hooks.json` (NUVIRA_CONFIG_DIR aware, like contacts.json). */
266
+ export function hookDeclarationsFile() {
267
+ return join(resolveBuffConfigDir(), 'hooks.json');
268
+ }
269
+ /** Read declarations from disk. Missing/corrupt → [] (never throws). */
270
+ export function readHookDeclarations() {
271
+ try {
272
+ const parsed = JSON.parse(readFileSync(hookDeclarationsFile(), 'utf-8'));
273
+ const validated = validateHookDeclarations(parsed.hooks ?? []);
274
+ return validated.ok ? validated.declarations : [];
275
+ }
276
+ catch {
277
+ return [];
278
+ }
279
+ }
280
+ /** Persist declarations (best-effort — a failed write never breaks the caller). */
281
+ export function writeHookDeclarations(declarations) {
282
+ try {
283
+ const file = hookDeclarationsFile();
284
+ mkdirSync(dirname(file), { recursive: true });
285
+ writeFileSync(file, JSON.stringify({ version: 1, hooks: declarations }, null, 2), 'utf-8');
286
+ }
287
+ catch {
288
+ /* best-effort */
289
+ }
290
+ }
291
+ // ─── In-memory registry (the runtime reads this) ────────────────────────────
292
+ let declarations = [];
293
+ let loadedOnce = false;
294
+ /** The declarations currently in force (loads from disk on first use). */
295
+ export function getHookDeclarations() {
296
+ if (!loadedOnce) {
297
+ declarations = readHookDeclarations();
298
+ loadedOnce = true;
299
+ }
300
+ return declarations;
301
+ }
302
+ /**
303
+ * Replace the in-force declarations. Validates first; on success persists and
304
+ * swaps the in-memory list (so the next tool call sees the change). Returns the
305
+ * validation error unchanged on failure — never a silent partial save.
306
+ */
307
+ export function setHookDeclarations(next) {
308
+ const validated = validateHookDeclarations(next);
309
+ if (!validated.ok)
310
+ return validated;
311
+ declarations = validated.declarations;
312
+ loadedOnce = true;
313
+ writeHookDeclarations(declarations);
314
+ return { ok: true, declarations };
315
+ }
316
+ /** Test/CLI helper: drop the cache so the next read hits disk. */
317
+ export function resetHookDeclarationsCache() {
318
+ declarations = [];
319
+ loadedOnce = false;
320
+ }
321
+ let installedOn = null;
322
+ /**
323
+ * Register one handler per seam on `registrar`. Idempotent per registrar
324
+ * instance, so importing the gateway more than once cannot double-fire hooks.
325
+ *
326
+ * Each handler reads {@link getHookDeclarations} at call time, so an edit from
327
+ * the dashboard is live on the next call without re-registering.
328
+ */
329
+ export function installDeclaredHooks(registrar) {
330
+ if (installedOn === registrar)
331
+ return;
332
+ installedOn = registrar;
333
+ getHookDeclarations(); // warm from disk
334
+ registrar.register('before_tool_call', (ctx) => evaluateDeclarations(getHookDeclarations(), 'before_tool_call', ctx) ?? undefined);
335
+ registrar.register('after_tool_call', (ctx) => {
336
+ evaluateDeclarations(getHookDeclarations(), 'after_tool_call', ctx);
337
+ return undefined;
338
+ });
339
+ registrar.register('failed_tool_call', (ctx) => {
340
+ evaluateDeclarations(getHookDeclarations(), 'failed_tool_call', ctx);
341
+ return undefined;
342
+ });
343
+ registrar.register('on_session_end', (ctx) => {
344
+ evaluateDeclarations(getHookDeclarations(), 'on_session_end', ctx);
345
+ return undefined;
346
+ });
347
+ }
348
+ /** Test helper: forget which registrar was installed. */
349
+ export function resetDeclaredHooksInstall() {
350
+ installedOn = null;
351
+ }
352
+ //# sourceMappingURL=hook-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-contract.js","sourceRoot":"","sources":["../../src/gateway/hook-contract.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/gateway/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/gateway/hooks.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,10 @@
29
29
  */
30
30
  import { logger } from '../utils/logger.js';
31
31
  import { getEventBus, EventNames } from '../observability/event-bus.js';
32
+ // The declarative contract (operator-authored rules) binds to this registry.
33
+ // Import direction is one-way: hook-contract.ts imports only TYPES from here,
34
+ // so there is no runtime cycle.
35
+ import { installDeclaredHooks } from './hook-contract.js';
32
36
  // ─── Registry ───────────────────────────────────────────────────────────────
33
37
  class HookRegistry {
34
38
  handlers = new Map();
@@ -148,4 +152,14 @@ export function registerBuiltinHooks() {
148
152
  }
149
153
  // Install the builtin once (idempotent — register() dedupes by function ref).
150
154
  registerBuiltinHooks();
155
+ // Install the operator-authored declarative hooks (src/gateway/hook-contract.ts).
156
+ // They are rules, not code: the allow-list is deny / notify / scan-args, all
157
+ // implemented natively, so loading them can never execute third-party code.
158
+ // Best-effort — a failure here must never stop the process from starting.
159
+ try {
160
+ installDeclaredHooks(hooks);
161
+ }
162
+ catch (err) {
163
+ logger.debug(`hook contract install skipped: ${err instanceof Error ? err.message : err}`);
164
+ }
151
165
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/gateway/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/gateway/hooks.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,17 @@ export interface ToolMessage {
38
38
  toolCalls?: ToolCallRequest[];
39
39
  /** Tool only — the id of the tool call being answered. */
40
40
  toolCallId?: string;
41
+ /**
42
+ * Assistant only — the model's `reasoning_content` for this turn, when it
43
+ * produced one. Some thinking models (DeepSeek's v4 reasoning models, reached
44
+ * directly or through a gateway such as OmniRoute) REQUIRE their prior
45
+ * reasoning to be sent back with the assistant message that carried the tool
46
+ * calls; omitting it fails the whole conversation with
47
+ * `400: The reasoning_content in the thinking mode must be passed back to the API`.
48
+ * Echoed verbatim by {@link buildWireMessages}; harmless to models that
49
+ * ignore it.
50
+ */
51
+ reasoningContent?: string;
41
52
  }
42
53
  /** A tool call in the assistant message (wire form: arguments is a JSON string). */
43
54
  export interface ToolCallRequest {
@@ -77,6 +88,12 @@ export interface ToolCallResponse {
77
88
  content: string;
78
89
  /** Parsed tool calls (empty = end turn). */
79
90
  toolCalls: ToolCall[];
91
+ /**
92
+ * The model's `reasoning_content` for this turn, when the endpoint returned
93
+ * one. Captured so the loop can attach it to the assistant message and the
94
+ * next request can replay it — see {@link ToolMessage.reasoningContent}.
95
+ */
96
+ reasoningContent?: string;
80
97
  }
81
98
  /**
82
99
  * Unified inference provider interface.
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/inference/interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/inference/interface.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,23 @@ export interface CategoryInfo {
22
22
  * Ordered roughly by popularity / usefulness.
23
23
  */
24
24
  export declare const CATEGORY_INFO: Record<ModelCategory, CategoryInfo>;
25
+ /**
26
+ * Model-id patterns that identify a REASONING/THINKING model — a cross-vendor
27
+ * capability, not one brand alias. DeepSeek (`-reasoner`, `-r1`, `-v2/v3/v4`),
28
+ * OpenAI's o-series (`o1`/`o3`/`o4-mini`), Qwen (`qwq`, `qwen3` thinking), Zhipu
29
+ * (`glm-z1`), Mistral (`magistral`), LG (`exaone-deep`), plus the generic
30
+ * `reasoning` / `reasoner` / `think(ing)` tokens any vendor uses.
31
+ *
32
+ * Single source of truth: shared by the category table below and
33
+ * `isReasoningModel()`, so a new family is taught once.
34
+ */
35
+ export declare const REASONING_MODEL_PATTERNS: RegExp[];
36
+ /**
37
+ * True when the model id names a reasoning/thinking model (any vendor).
38
+ * Unknown ids are `false` — we only claim a capability we can positively
39
+ * identify from the id.
40
+ */
41
+ export declare function isReasoningModel(modelId: string): boolean;
25
42
  /**
26
43
  * Determine the category for a given model ID.
27
44
  * Uses pattern matching against known model naming conventions.
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../src/inference/model-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,0CAA0C;AAC1C,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,MAAM,GACN,WAAW,GACX,MAAM,GACN,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,GACT,SAAS,GACT,QAAQ,GACR,OAAO,CAAC;AAEZ,yCAAyC;AACzC,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,YAAY,CAyD7D,CAAC;AAkIF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAuB/E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBvE;AA6BD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGvD;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsBvD;AAQD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIjE"}
1
+ {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../src/inference/model-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,0CAA0C;AAC1C,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,MAAM,GACN,WAAW,GACX,MAAM,GACN,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,GACT,SAAS,GACT,QAAQ,GACR,OAAO,CAAC;AAEZ,yCAAyC;AACzC,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,YAAY,CAyD7D,CAAC;AAUF;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,EAU5C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGzD;AA8HD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAuB/E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBvE;AA6BD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGvD;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsBvD;AAQD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIjE"}
@@ -67,6 +67,37 @@ export const CATEGORY_INFO = {
67
67
  description: 'Uncategorized models',
68
68
  },
69
69
  };
70
+ /**
71
+ * Model-id patterns that identify a REASONING/THINKING model — a cross-vendor
72
+ * capability, not one brand alias. DeepSeek (`-reasoner`, `-r1`, `-v2/v3/v4`),
73
+ * OpenAI's o-series (`o1`/`o3`/`o4-mini`), Qwen (`qwq`, `qwen3` thinking), Zhipu
74
+ * (`glm-z1`), Mistral (`magistral`), LG (`exaone-deep`), plus the generic
75
+ * `reasoning` / `reasoner` / `think(ing)` tokens any vendor uses.
76
+ *
77
+ * Single source of truth: shared by the category table below and
78
+ * `isReasoningModel()`, so a new family is taught once.
79
+ */
80
+ export const REASONING_MODEL_PATTERNS = [
81
+ /qwen-2(?:\.5)?-(?:\d+)?b?(?:\d+)?-?(?:instruct|reasoning)?$/i,
82
+ /qwen-?3(?:\.\d+)?(?:[:@-](?:\d+)?b)?$/i,
83
+ /\bqwq\b/i,
84
+ /deepseek-r1/i,
85
+ /deepseek-(?:v[234]|reasoner)/i,
86
+ /(?:^|[-/_.])o[134](?:-(?:mini|preview|pro|high|low))?(?=$|[-/_.])/i,
87
+ /\b(?:glm-?z1|magistral|exaone-deep|reasoner)\b/i,
88
+ /reasoning/i,
89
+ /think(?:ing)?/i,
90
+ ];
91
+ /**
92
+ * True when the model id names a reasoning/thinking model (any vendor).
93
+ * Unknown ids are `false` — we only claim a capability we can positively
94
+ * identify from the id.
95
+ */
96
+ export function isReasoningModel(modelId) {
97
+ if (!modelId)
98
+ return false;
99
+ return REASONING_MODEL_PATTERNS.some((re) => re.test(modelId));
100
+ }
70
101
  /**
71
102
  * Ordered list of pattern matchers.
72
103
  * Each entry has a list of regex patterns to test against the model ID,
@@ -80,14 +111,18 @@ const CATEGORY_PATTERNS = [
80
111
  // ── Vision / Multimodal ────────────────────────────────────────────────
81
112
  { patterns: [/vision/i, /multimodal/i], category: 'vision', priority: 2 },
82
113
  // ── Reasoning / Thinking ───────────────────────────────────────────────
114
+ // Capability families, NOT one brand alias. Reasoning/thinking is now a
115
+ // CROSS-VENDOR capability: DeepSeek (`-reasoner`, `-r1`, `-v2/v3/v4`),
116
+ // OpenAI's o-series (`o1`/`o3`/`o4-mini`), Qwen (`qwq`, `qwen3` thinking),
117
+ // Zhipu (`glm-z1`), Mistral (`magistral`), LG (`exaone-deep`), plus the
118
+ // generic `reasoning` / `reasoner` / `think(ing)` tokens any vendor uses.
119
+ // The old list keyed on `deepseek-r1`/`deepseek-v2|v3` alone, so the shipped
120
+ // `deepseek-reasoner` alias fell through to the broad chat catch-all (it is
121
+ // not a `-r1` and contains `reasoner`, not `reasoning`) and o-series ids were
122
+ // filed as `other`. Matching a *family* here lets the picker, the badges and
123
+ // any capability floor reason about reasoning uniformly. See `isReasoningModel`.
83
124
  {
84
- patterns: [
85
- /qwen-2(?:\.5)?-(?:\d+)?b?(?:\d+)?-?(?:instruct|reasoning)?$/i,
86
- /deepseek-r1/i,
87
- /deepseek-(?:v2|v3)/i,
88
- /reasoning/i,
89
- /think/i,
90
- ],
125
+ patterns: REASONING_MODEL_PATTERNS,
91
126
  category: 'reasoning',
92
127
  priority: 3,
93
128
  },
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../../src/inference/model-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../../src/inference/model-catalog.ts"],"names":[],"mappings":"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"}