dsh-thinking-guard 0.1.17 → 0.1.20

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 (79) hide show
  1. package/README.md +40 -130
  2. package/cordis.patch.yml +5 -0
  3. package/lib/client.d.ts +8 -2
  4. package/lib/client.d.ts.map +1 -1
  5. package/lib/client.js +4627 -6732
  6. package/lib/guard-core.js +74 -15
  7. package/lib/guard-core.js.map +1 -1
  8. package/lib/guard-loop-core.js +158 -24
  9. package/lib/guard-loop-core.js.map +1 -1
  10. package/lib/guard.js +228 -85
  11. package/lib/guard.js.map +1 -1
  12. package/lib/host-face.js +1 -0
  13. package/lib/host-face.js.map +1 -1
  14. package/lib/index.js +11 -1
  15. package/lib/index.js.map +1 -1
  16. package/lib/invoke.js +16 -10
  17. package/lib/invoke.js.map +1 -1
  18. package/lib/policy-state.js +29 -1
  19. package/lib/policy-state.js.map +1 -1
  20. package/lib/policy.js +178 -10
  21. package/lib/policy.js.map +1 -1
  22. package/lib/registry.js +12 -2
  23. package/lib/registry.js.map +1 -1
  24. package/lib/server/call-index-remote.js +110 -0
  25. package/lib/server/call-index-remote.js.map +1 -0
  26. package/lib/server/remote.js +13 -0
  27. package/lib/server/remote.js.map +1 -1
  28. package/lib/types/guard-core.d.ts +91 -6
  29. package/lib/types/guard-core.d.ts.map +1 -1
  30. package/lib/types/guard-loop-core.d.ts +64 -3
  31. package/lib/types/guard-loop-core.d.ts.map +1 -1
  32. package/lib/types/guard.d.ts +7 -1
  33. package/lib/types/guard.d.ts.map +1 -1
  34. package/lib/types/host-face.d.ts.map +1 -1
  35. package/lib/types/index.d.ts +5 -0
  36. package/lib/types/index.d.ts.map +1 -1
  37. package/lib/types/invoke.d.ts.map +1 -1
  38. package/lib/types/policy-state.d.ts +6 -0
  39. package/lib/types/policy-state.d.ts.map +1 -1
  40. package/lib/types/policy.d.ts +34 -3
  41. package/lib/types/policy.d.ts.map +1 -1
  42. package/lib/types/registry.d.ts.map +1 -1
  43. package/lib/types/server/call-index-remote.d.ts +17 -0
  44. package/lib/types/server/call-index-remote.d.ts.map +1 -0
  45. package/lib/types/server/remote.d.ts +9 -0
  46. package/lib/types/server/remote.d.ts.map +1 -1
  47. package/lib/types/usage/call-index-core.d.ts +152 -0
  48. package/lib/types/usage/call-index-core.d.ts.map +1 -0
  49. package/lib/types/usage/call-index-host-face.d.ts +44 -0
  50. package/lib/types/usage/call-index-host-face.d.ts.map +1 -0
  51. package/lib/types/usage/call-index-host.d.ts +7 -0
  52. package/lib/types/usage/call-index-host.d.ts.map +1 -0
  53. package/lib/types/usage/call-index-query.d.ts +97 -0
  54. package/lib/types/usage/call-index-query.d.ts.map +1 -0
  55. package/lib/types/usage/call-index-runtime.d.ts +46 -0
  56. package/lib/types/usage/call-index-runtime.d.ts.map +1 -0
  57. package/lib/types/usage/call-index-scope.d.ts +59 -0
  58. package/lib/types/usage/call-index-scope.d.ts.map +1 -0
  59. package/lib/types/usage/call-index-wire.d.ts +286 -0
  60. package/lib/types/usage/call-index-wire.d.ts.map +1 -0
  61. package/lib/types/usage/session-index.d.ts +149 -0
  62. package/lib/types/usage/session-index.d.ts.map +1 -0
  63. package/lib/usage/call-index-core.js +761 -0
  64. package/lib/usage/call-index-core.js.map +1 -0
  65. package/lib/usage/call-index-host-face.js +77 -0
  66. package/lib/usage/call-index-host-face.js.map +1 -0
  67. package/lib/usage/call-index-host.js +13 -0
  68. package/lib/usage/call-index-host.js.map +1 -0
  69. package/lib/usage/call-index-query.js +669 -0
  70. package/lib/usage/call-index-query.js.map +1 -0
  71. package/lib/usage/call-index-runtime.js +376 -0
  72. package/lib/usage/call-index-runtime.js.map +1 -0
  73. package/lib/usage/call-index-scope.js +79 -0
  74. package/lib/usage/call-index-scope.js.map +1 -0
  75. package/lib/usage/call-index-wire.js +490 -0
  76. package/lib/usage/call-index-wire.js.map +1 -0
  77. package/lib/usage/session-index.js +600 -0
  78. package/lib/usage/session-index.js.map +1 -0
  79. package/package.json +5 -5
package/lib/guard.js CHANGED
@@ -2,7 +2,7 @@ import z from '@deepseek-ai/schemastery';
2
2
  import { createUserMessage } from '@deepseek-ai/dsh-llm';
3
3
  import { TOOL_ABORTED, TOOL_ABORTED_BEFORE_DISPATCH } from '@deepseek-ai/dsh-tools';
4
4
  import { DEFAULT_REPEAT_THRESHOLDS, LOOP_HISTORY_LIMIT, createGuardLoopState, guardResultFingerprint, guardToolSignature, observeGuardLoop, } from "./guard-loop-core.js";
5
- import { DEFAULT_GUARD_PROFILES, DEFAULT_HOST_INTEGRATION, EfficiencyGuard, } from "./guard-core.js";
5
+ import { DEFAULT_GUARD_PROFILES, DEFAULT_HOST_INTEGRATION, EfficiencyGuard, processGuardStats, } from "./guard-core.js";
6
6
  export const name = 'thinking-guard';
7
7
  export const inject = ['tools', 'capabilityPolicy'];
8
8
  const DEFAULT_POLLING_TOOLS = [
@@ -26,6 +26,7 @@ export const Config = z.object({
26
26
  duplicateDetection: z.boolean().default(true),
27
27
  alternatingCycleDetection: z.boolean().default(true),
28
28
  noProgressProtection: z.boolean().default(true),
29
+ repeatThresholds: z.array(z.number()).default([...DEFAULT_REPEAT_THRESHOLDS]),
29
30
  duplicateWarnAfter: z.number().default(2),
30
31
  duplicateHardBlock: z.boolean().default(false),
31
32
  excludedTools: z.array(z.string()).default([]),
@@ -53,6 +54,15 @@ const LOOP_WARNING_LIMIT = 32;
53
54
  function isControlPlaneTool(policy, name) {
54
55
  return RESERVED_TRANSPORT_TOOLS.has(name) || policy.metaTools().includes(name);
55
56
  }
57
+ /**
58
+ * True when this tool can never become a local-block candidate, judged from its
59
+ * name alone. Such a call needs no result fingerprint at all, which is what lets
60
+ * the result stage skip canonicalizing and hashing a payload it would discard.
61
+ */
62
+ function isNonBlockableTool(policy, name, excludedTools, pollingTools, warnOnlyTools) {
63
+ return isControlPlaneTool(policy, name)
64
+ || excludedTools.has(name) || pollingTools.has(name) || warnOnlyTools.has(name);
65
+ }
56
66
  function rememberDeniedCall(state, callId) {
57
67
  if (state.deniedCallIds.has(callId))
58
68
  return;
@@ -78,7 +88,7 @@ function failOpenLoopDetection(state) {
78
88
  state.loopDetectionDisabled = true;
79
89
  state.dispatchRecords.clear();
80
90
  state.pendingLoopObservations.clear();
81
- state.pendingBlockSignatures.clear();
91
+ state.pendingBlockCandidates.clear();
82
92
  state.loopState = createGuardLoopState(state.turn);
83
93
  state.nextLoopSequence = state.nextDispatchSequence;
84
94
  }
@@ -93,15 +103,36 @@ function rememberLoopWarning(state, key) {
93
103
  state.loopWarnings.add(key);
94
104
  return true;
95
105
  }
96
- function rememberBlockCandidate(state, signature) {
97
- if (state.pendingBlockSignatures.has(signature))
106
+ function rememberBlockCandidate(state, signature, source) {
107
+ const sources = state.pendingBlockCandidates.get(signature);
108
+ if (sources !== undefined) {
109
+ sources.add(source);
98
110
  return;
99
- if (state.pendingBlockSignatures.size >= LOOP_HISTORY_LIMIT) {
100
- const oldest = state.pendingBlockSignatures.values().next().value;
111
+ }
112
+ if (state.pendingBlockCandidates.size >= LOOP_HISTORY_LIMIT) {
113
+ const oldest = state.pendingBlockCandidates.keys().next().value;
101
114
  if (oldest !== undefined)
102
- state.pendingBlockSignatures.delete(oldest);
115
+ state.pendingBlockCandidates.delete(oldest);
103
116
  }
104
- state.pendingBlockSignatures.add(signature);
117
+ state.pendingBlockCandidates.set(signature, new Set([source]));
118
+ }
119
+ /**
120
+ * Consume a pending candidate, but only if the detector that produced it is still
121
+ * enabled. A candidate whose source switch was flipped off stops counting instead
122
+ * of being silently ignored, and the other source's candidate survives untouched.
123
+ */
124
+ function takeBlockCandidate(state, signature, allowed) {
125
+ const sources = state.pendingBlockCandidates.get(signature);
126
+ if (sources === undefined)
127
+ return false;
128
+ for (const source of allowed) {
129
+ if (sources.delete(source)) {
130
+ if (sources.size === 0)
131
+ state.pendingBlockCandidates.delete(signature);
132
+ return true;
133
+ }
134
+ }
135
+ return false;
105
136
  }
106
137
  function rememberBlockedSignature(state, signature) {
107
138
  if (state.blockedLoopSignatures.has(signature))
@@ -139,12 +170,19 @@ function handleLoopObservation(state, agent, observation, options) {
139
170
  }, options);
140
171
  state.loopState = loopObserved.state;
141
172
  const decision = loopObserved.decision;
173
+ // "Did the Guard look at this call at all?" — an excluded/polling call is
174
+ // skipped by the detector and must not inflate the observation count, or the
175
+ // settings page would report activity the detector never had.
176
+ if (!decision.ignored)
177
+ processGuardStats.observe(observation.outcome);
142
178
  const signature = decision.signature;
143
179
  // No-progress protection is the evidence gate for the LOCAL denial. With it off
144
180
  // the call is still reminded about (below), but never becomes blockable, so the
145
181
  // switch in the settings page changes behaviour instead of being cosmetic.
146
- if (signature !== undefined && decision.blockCandidate && options.noProgressProtection !== false) {
147
- rememberBlockCandidate(state, signature);
182
+ const blockSource = decision.blockSource;
183
+ if (signature !== undefined && decision.blockCandidate && blockSource !== undefined
184
+ && options.noProgressProtection !== false) {
185
+ rememberBlockCandidate(state, signature, blockSource);
148
186
  }
149
187
  if (signature === undefined || decision.warning === 'none')
150
188
  return;
@@ -157,13 +195,18 @@ function handleLoopObservation(state, agent, observation, options) {
157
195
  : '检测到交替工具调用循环且结果/错误指纹未变化;后续相同循环调用可能被局部拒绝,当前 Turn 会继续。'
158
196
  : `检测到工具调用连续重复(第 ${decision.repeatThreshold ?? decision.repeatCount} 次);请检查已有结果,避免无意义重复。`;
159
197
  agent.inject(shortMessage(message));
198
+ // Counted after the inject returns: a reminder the host refused to deliver is
199
+ // not a reminder the user was ever told about.
200
+ processGuardStats.remind(decision.warning === 'alternating-cycle' ? 'cycle' : 'repeat');
160
201
  }
161
- function createLoopOptions(ctx, excludedTools, pollingTools, warnOnlyTools, alternatingCycleEnabled) {
202
+ function createLoopOptions(ctx, excludedTools, pollingTools, warnOnlyTools, repeatThresholds, repeatDetectionEnabled, alternatingCycleEnabled) {
162
203
  return {
163
- repeatThresholds: DEFAULT_REPEAT_THRESHOLDS,
204
+ // Configured, not constant: the settings page owns this list now.
205
+ repeatThresholds,
164
206
  excludedTools: new Set([...excludedTools, ...ctx.capabilityPolicy.metaTools(), ...RESERVED_TRANSPORT_TOOLS]),
165
207
  pollingTools,
166
208
  warnOnlyTools,
209
+ repeatDetection: repeatDetectionEnabled,
167
210
  alternatingCycleEnabled,
168
211
  };
169
212
  }
@@ -175,6 +218,7 @@ function toGuardConfig(config) {
175
218
  duplicateDetection: config.duplicateDetection,
176
219
  alternatingCycleDetection: config.alternatingCycleDetection,
177
220
  noProgressProtection: config.noProgressProtection,
221
+ repeatThresholds: config.repeatThresholds,
178
222
  duplicateWarnAfter: config.duplicateWarnAfter,
179
223
  duplicateHardBlock: config.duplicateHardBlock,
180
224
  profiles: config.profiles === undefined ? undefined : { ...DEFAULT_GUARD_PROFILES, ...config.profiles },
@@ -196,6 +240,9 @@ function readSwitches(ctx, config) {
196
240
  duplicateDetection: live?.duplicateDetection ?? config.duplicateDetection ?? true,
197
241
  alternatingCycleDetection: live?.alternatingCycleDetection ?? config.alternatingCycleDetection ?? true,
198
242
  noProgressProtection: live?.noProgressProtection ?? config.noProgressProtection ?? true,
243
+ // The persisted list is validated where it is written; an unreadable one here
244
+ // must not disable detection, so the shipped default is the fallback.
245
+ repeatThresholds: live?.repeatThresholds ?? config.repeatThresholds ?? DEFAULT_REPEAT_THRESHOLDS,
199
246
  };
200
247
  }
201
248
  /**
@@ -216,29 +263,71 @@ export function apply(ctx, config = {}) {
216
263
  const pollingTools = new Set([...DEFAULT_POLLING_TOOLS, ...(config.pollingTools ?? [])]);
217
264
  const warnOnlyTools = new Set([...DEFAULT_WARN_ONLY_TOOLS, ...(config.warnOnlyTools ?? [])]);
218
265
  const switches = () => readSwitches(ctx, config);
219
- const loopOptions = () => ({
220
- ...createLoopOptions(ctx, excludedTools, pollingTools, warnOnlyTools, switches().alternatingCycleDetection),
221
- noProgressProtection: switches().noProgressProtection,
222
- });
223
- const toolGuard = ctx.tools.guard((execution) => {
224
- const agent = execution.agent;
266
+ /**
267
+ * True while at least one of the two detectors is on. The observation entries
268
+ * key off this instead of `duplicateDetection` alone, so turning exact-repeat
269
+ * detection off no longer starves the alternating-cycle detector of history.
270
+ */
271
+ const loopDetectionActive = () => {
225
272
  const sw = switches();
226
- if (!sw.enabled || !sw.duplicateDetection || agent === undefined
227
- || isControlPlaneTool(ctx.capabilityPolicy, execution.name)
228
- || excludedTools.has(execution.name) || pollingTools.has(execution.name) || warnOnlyTools.has(execution.name))
229
- return undefined;
230
- const state = guard.states.get(agent);
231
- if (state === undefined || state.loopDetectionDisabled)
232
- return undefined;
233
- const signature = guardToolSignature(execution.name, execution.arguments);
234
- if (state.localLoopDenials >= MAX_LOCAL_LOOP_DENIALS
235
- || !state.pendingBlockSignatures.delete(signature)
236
- || state.blockedLoopSignatures.has(signature))
273
+ return sw.duplicateDetection || sw.alternatingCycleDetection;
274
+ };
275
+ /** Candidate sources still permitted by the live switches. */
276
+ const allowedBlockSources = () => {
277
+ const sw = switches();
278
+ const sources = new Set();
279
+ if (sw.duplicateDetection)
280
+ sources.add('repeat');
281
+ if (sw.alternatingCycleDetection)
282
+ sources.add('cycle');
283
+ return sources;
284
+ };
285
+ const loopOptions = () => {
286
+ const sw = switches();
287
+ return {
288
+ ...createLoopOptions(ctx, excludedTools, pollingTools, warnOnlyTools, sw.repeatThresholds, sw.duplicateDetection, sw.alternatingCycleDetection),
289
+ noProgressProtection: sw.noProgressProtection,
290
+ };
291
+ };
292
+ const toolGuard = ctx.tools.guard((execution) => {
293
+ try {
294
+ const agent = execution.agent;
295
+ const sw = switches();
296
+ // Candidates are gated per source instead of by `duplicateDetection`, which
297
+ // used to make every alternating-cycle candidate unblockable.
298
+ const allowed = allowedBlockSources();
299
+ // `noProgressProtection` is the gate for the LOCAL DENIAL itself, so it must
300
+ // be re-read here and not only where a candidate is recorded. A turn can
301
+ // record candidates while the switch is on and then have it turned off;
302
+ // without this check those already-recorded candidates would still fire and
303
+ // the switch would not mean what the settings page promises.
304
+ if (!sw.enabled || sw.noProgressProtection === false || allowed.size === 0 || agent === undefined
305
+ || isControlPlaneTool(ctx.capabilityPolicy, execution.name)
306
+ || excludedTools.has(execution.name) || pollingTools.has(execution.name) || warnOnlyTools.has(execution.name))
307
+ return undefined;
308
+ const state = guard.states.get(agent);
309
+ if (state === undefined || state.loopDetectionDisabled)
310
+ return undefined;
311
+ // A signature beyond the fingerprint budget is not a stable identity, so it
312
+ // can never justify a denial: fail open instead of comparing it.
313
+ const signature = guardToolSignature(execution.name, execution.arguments);
314
+ if (signature === undefined)
315
+ return undefined;
316
+ if (state.localLoopDenials >= MAX_LOCAL_LOOP_DENIALS
317
+ || !takeBlockCandidate(state, signature, allowed)
318
+ || state.blockedLoopSignatures.has(signature))
319
+ return undefined;
320
+ rememberBlockedSignature(state, signature);
321
+ rememberDeniedCall(state, String(execution.callId));
322
+ state.localLoopDenials += 1;
323
+ // The one counter that answers "did it actually refuse anything?".
324
+ processGuardStats.deny();
325
+ return '检测到相同工具调用及相同结果/错误证据;已局部拒绝本次重复调用,当前 Turn 继续运行。';
326
+ }
327
+ catch {
328
+ // Fail open: a Guard fault must never block a real tool call.
237
329
  return undefined;
238
- rememberBlockedSignature(state, signature);
239
- rememberDeniedCall(state, String(execution.callId));
240
- state.localLoopDenials += 1;
241
- return '检测到相同工具调用及相同结果/错误证据;已局部拒绝本次重复调用,当前 Turn 继续运行。';
330
+ }
242
331
  });
243
332
  disposers.push(toolGuard);
244
333
  disposers.push(ctx.on('agent/pre-step', async (payload, next) => {
@@ -254,64 +343,118 @@ export function apply(ctx, config = {}) {
254
343
  guard.resetLoopState(agent);
255
344
  }));
256
345
  disposers.push(ctx.on('tools/execute', async (execution, next) => {
257
- const agent = execution.agent;
258
- if (!switches().enabled || !switches().duplicateDetection || agent === undefined)
259
- return next();
260
- const state = guard.states.get(agent);
261
- if (state === undefined || state.loopDetectionDisabled)
346
+ try {
347
+ const agent = execution.agent;
348
+ // Both detectors share one history, so the dispatch record must be built while
349
+ // either switch is on; gating on `duplicateDetection` alone starved the cycle
350
+ // detector whenever exact-repeat detection was turned off.
351
+ if (!switches().enabled || !loopDetectionActive() || agent === undefined)
352
+ return next();
353
+ const state = guard.states.get(agent);
354
+ if (state === undefined || state.loopDetectionDisabled)
355
+ return next();
356
+ const callId = String(execution.callId);
357
+ if (state.dispatchRecords.has(callId)
358
+ || state.dispatchRecords.size + state.pendingLoopObservations.size >= MAX_PENDING_DISPATCHES) {
359
+ failOpenLoopDetection(state);
360
+ return next();
361
+ }
362
+ const dispatchSequence = state.nextDispatchSequence;
363
+ // A call that can never become a block candidate gets no result fingerprint:
364
+ // the decision is name-based, so it is made here and the result stage skips
365
+ // canonicalizing and hashing a payload it would only throw away.
366
+ const fingerprintNeeded = !isNonBlockableTool(ctx.capabilityPolicy, execution.name, excludedTools, pollingTools, warnOnlyTools);
367
+ // A signature beyond the fingerprint budget is not a stable identity, so the
368
+ // call is not observed at all. The sequence number is consumed only when a
369
+ // record is actually stored: a gap would stall the ordered drain below and
370
+ // silently disable detection for the rest of the turn.
371
+ const signature = guardToolSignature(execution.name, execution.arguments);
372
+ if (signature === undefined)
373
+ return next();
374
+ state.nextDispatchSequence += 1;
375
+ const epoch = state.loopEpoch;
376
+ state.dispatchRecords.set(callId, {
377
+ sequence: dispatchSequence, epoch, name: execution.name, signature, fingerprintNeeded,
378
+ });
379
+ guard.observeTool(agent, state.turn, { controlPlane: isControlPlaneTool(ctx.capabilityPolicy, execution.name) });
262
380
  return next();
263
- const callId = String(execution.callId);
264
- if (state.dispatchRecords.has(callId)
265
- || state.dispatchRecords.size + state.pendingLoopObservations.size >= MAX_PENDING_DISPATCHES) {
266
- failOpenLoopDetection(state);
381
+ }
382
+ catch {
383
+ // Fail open: loop detection is advisory, the tool call is not.
267
384
  return next();
268
385
  }
269
- const dispatchSequence = state.nextDispatchSequence++;
270
- const epoch = state.loopEpoch;
271
- const signature = guardToolSignature(execution.name, execution.arguments);
272
- state.dispatchRecords.set(callId, { sequence: dispatchSequence, epoch, name: execution.name, signature });
273
- guard.observeTool(agent, state.turn, { controlPlane: isControlPlaneTool(ctx.capabilityPolicy, execution.name) });
274
- return next();
275
386
  }));
276
387
  disposers.push(ctx.on('tools/result', (execution, result) => {
277
- const agent = execution.agent;
278
- const state = agent === undefined ? undefined : guard.states.get(agent);
279
- if (!switches().enabled || agent === undefined || state === undefined)
280
- return;
281
- const callId = String(execution.callId);
282
- if (state.deniedCallIds.delete(callId))
283
- return;
284
- const dispatch = state.dispatchRecords.get(callId);
285
- if (dispatch === undefined)
286
- return;
287
- state.dispatchRecords.delete(callId);
288
- if (dispatch.epoch !== state.loopEpoch || !switches().duplicateDetection || state.loopDetectionDisabled)
289
- return;
290
- const outcome = outcomeFor(result);
291
- const evidence = result.isError
292
- ? { code: result.error.info?.code ?? null, message: result.error.message, content: result.content }
293
- : { value: result.value, content: result.content };
294
- const pending = {
295
- name: dispatch.name,
296
- callId,
297
- dispatchSequence: dispatch.sequence,
298
- epoch: dispatch.epoch,
299
- signature: dispatch.signature,
300
- outcome,
301
- resultFingerprint: guardResultFingerprint(outcome, evidence),
302
- };
303
- if (state.pendingLoopObservations.size >= MAX_PENDING_DISPATCHES) {
304
- failOpenLoopDetection(state);
305
- return;
388
+ let activeState;
389
+ try {
390
+ const agent = execution.agent;
391
+ const state = agent === undefined ? undefined : guard.states.get(agent);
392
+ if (!switches().enabled || agent === undefined || state === undefined)
393
+ return;
394
+ activeState = state;
395
+ const callId = String(execution.callId);
396
+ if (state.deniedCallIds.delete(callId))
397
+ return;
398
+ const dispatch = state.dispatchRecords.get(callId);
399
+ if (dispatch === undefined)
400
+ return;
401
+ state.dispatchRecords.delete(callId);
402
+ if (dispatch.epoch !== state.loopEpoch || !loopDetectionActive() || state.loopDetectionDisabled)
403
+ return;
404
+ // No fingerprint for excluded / polling / warn-only / control-plane calls, and
405
+ // none when the payload exceeds the fingerprint budget. The result itself is
406
+ // returned to the caller untouched either way; a missing fingerprint only
407
+ // means "no progress cannot be proven", so it never becomes evidence.
408
+ let resultFingerprint;
409
+ let outcome = 'error';
410
+ if (dispatch.fingerprintNeeded) {
411
+ try {
412
+ outcome = outcomeFor(result);
413
+ resultFingerprint = guardResultFingerprint(outcome, result.isError
414
+ ? { code: result.error.info?.code ?? null, message: result.error.message, content: result.content }
415
+ : { value: result.value, content: result.content });
416
+ }
417
+ catch {
418
+ // A malformed host result yields no fingerprint, but the observation is
419
+ // still recorded below: dropping it would leave a hole in the ordered
420
+ // sequence and stall every later observation for the rest of the turn.
421
+ resultFingerprint = undefined;
422
+ }
423
+ }
424
+ else {
425
+ outcome = outcomeFor(result);
426
+ }
427
+ const pending = {
428
+ name: dispatch.name,
429
+ callId,
430
+ dispatchSequence: dispatch.sequence,
431
+ epoch: dispatch.epoch,
432
+ signature: dispatch.signature,
433
+ outcome,
434
+ ...(resultFingerprint !== undefined ? { resultFingerprint } : {}),
435
+ };
436
+ if (state.pendingLoopObservations.size >= MAX_PENDING_DISPATCHES) {
437
+ failOpenLoopDetection(state);
438
+ return;
439
+ }
440
+ state.pendingLoopObservations.set(dispatch.sequence, pending);
441
+ while (state.pendingLoopObservations.has(state.nextLoopSequence)) {
442
+ const observation = state.pendingLoopObservations.get(state.nextLoopSequence);
443
+ state.pendingLoopObservations.delete(state.nextLoopSequence);
444
+ state.nextLoopSequence += 1;
445
+ if (observation === null || observation === undefined || observation.epoch !== state.loopEpoch)
446
+ continue;
447
+ handleLoopObservation(state, agent, observation, loopOptions());
448
+ }
306
449
  }
307
- state.pendingLoopObservations.set(dispatch.sequence, pending);
308
- while (state.pendingLoopObservations.has(state.nextLoopSequence)) {
309
- const observation = state.pendingLoopObservations.get(state.nextLoopSequence);
310
- state.pendingLoopObservations.delete(state.nextLoopSequence);
311
- state.nextLoopSequence += 1;
312
- if (observation === null || observation === undefined || observation.epoch !== state.loopEpoch)
313
- continue;
314
- handleLoopObservation(state, agent, observation, loopOptions());
450
+ catch {
451
+ // Fail open: a Guard fault must never disturb the real tool result. The
452
+ // ordered drain advances its cursor before handling each observation, so a
453
+ // throw cannot leave a permanent gap; resetting detection for the rest of the
454
+ // turn is a conservative extra: after an unknown fault the Guard stops
455
+ // producing evidence instead of continuing from possibly stale history.
456
+ if (activeState !== undefined)
457
+ failOpenLoopDetection(activeState);
315
458
  }
316
459
  }));
317
460
  disposers.push(ctx.on('agent/disposed', ({ agent }) => guard.states.clear(agent)));
package/lib/guard.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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"}
package/lib/host-face.js CHANGED
@@ -79,6 +79,7 @@ const METHODS = [
79
79
  ['updateConfig', ['partial'], []],
80
80
  ['getGuard', [], []],
81
81
  ['updateGuard', ['change'], []],
82
+ ['getGuardStats', [], []],
82
83
  ['classifyAll', [], []],
83
84
  ['getDiagnostics', [], []],
84
85
  ['refresh', [], []],
@@ -1 +1 @@
1
- {"version":3,"file":"host-face.js","sourceRoot":"","sources":["../src/host-face.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-face.js","sourceRoot":"","sources":["../src/host-face.ts"],"names":[],"mappings":"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"}
package/lib/index.js CHANGED
@@ -30,6 +30,15 @@ import { UsageGateway } from "./server/usage-remote.js";
30
30
  import { usageHostFace } from "./usage/usage-host-face.js";
31
31
  import * as AgentEfficiencyGuard from "./guard.js";
32
32
  import { installUsageRuntime } from "./usage/usage-runtime.js";
33
+ import z from '@deepseek-ai/schemastery';
34
+ import * as CallIndexHost from "./usage/call-index-host.js";
35
+ import { CallIndexConfig } from "./usage/call-index-runtime.js";
36
+ import { callIndexHostFace } from "./usage/call-index-host-face.js";
37
+ export const Config = z.object({
38
+ guard: AgentEfficiencyGuard.Config,
39
+ usageRuntime: z.boolean().default(true),
40
+ callIndex: CallIndexConfig,
41
+ });
33
42
  /**
34
43
  * Install the usage runtime once per root context and expose the handle as
35
44
  * `ctx.usageRuntime`.
@@ -64,11 +73,12 @@ export function apply(ctx, config = {}) {
64
73
  ctx.plugin(AgentEfficiencyGuard, config.guard ?? {});
65
74
  if (config.usageRuntime !== false)
66
75
  installUsageRoot(ctx);
76
+ ctx.plugin(CallIndexHost, config.callIndex ?? {});
67
77
  ctx.inject(['typert'], (registry) => {
68
78
  // One contribution, not two: Typert keys contributions by `package`, and a
69
79
  // second `register()` for an already-mounted package withdraws the first
70
80
  // one's strict definitions (see mergeHostFaces in ./host-face.ts).
71
- registerCapabilityPolicyHostFace(registry, [usageHostFace()]);
81
+ registerCapabilityPolicyHostFace(registry, [usageHostFace(), callIndexHostFace()]);
72
82
  });
73
83
  }
74
84
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,KAAK,oBAAoB,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAc9D;;;;;;;;;GASG;AACH,SAAS,gBAAgB,CAAC,GAAY;IACpC,IAAI,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,SAAS;QAAE,OAAM;IACjD,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACxC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;AACtC,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,MAAM,IAAI,GAAG,gBAAgB,CAAA;AAEpC;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,SAAiB,EAAE;IACrD,GAAG,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAA;IACnC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACxB,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;IACpD,IAAI,MAAM,CAAC,YAAY,KAAK,KAAK;QAAE,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACxD,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE;QAClC,2EAA2E;QAC3E,yEAAyE;QACzE,mEAAmE;QACnE,gCAAgC,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,KAAK,oBAAoB,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,CAAC,MAAM,0BAA0B,CAAA;AACxC,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,eAAe,EAA+B,MAAM,+BAA+B,CAAA;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAenE,MAAM,CAAC,MAAM,MAAM,GAAc,CAAC,CAAC,MAAM,CAAC;IACxC,KAAK,EAAE,oBAAoB,CAAC,MAAM;IAClC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACvC,SAAS,EAAE,eAAe;CAC3B,CAAC,CAAA;AAEF;;;;;;;;;GASG;AACH,SAAS,gBAAgB,CAAC,GAAY;IACpC,IAAI,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,SAAS;QAAE,OAAM;IACjD,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACxC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;AACtC,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,MAAM,IAAI,GAAG,gBAAgB,CAAA;AAEpC;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,SAAiB,EAAE;IACrD,GAAG,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAA;IACnC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACxB,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;IACpD,IAAI,MAAM,CAAC,YAAY,KAAK,KAAK;QAAE,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACxD,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;IACjD,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE;QAClC,2EAA2E;QAC3E,yEAAyE;QACzE,mEAAmE;QACnE,gCAAgC,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAA;IACpF,CAAC,CAAC,CAAA;AACJ,CAAC"}
package/lib/invoke.js CHANGED
@@ -47,18 +47,24 @@ export function apply(ctx, config = {}) {
47
47
  // The source override keeps On-demand targets reachable. The policy hides them
48
48
  // with an agent-scoped `tools.restrict({ deny })` (see `src/policy.ts`), which
49
49
  // removes them from `view(agent)` — and the default lookup,
50
- // `tools.executable(name, scope, toolSet)`, reads exactly that view. Without
51
- // the fallback every On-demand forward would fail as UNKNOWN_TOOL. The
52
- // fallback is limited to names THIS policy classifies as On-demand, so a
53
- // restriction placed by someone else still denies the call. Execution still
54
- // carries `agent`, `signal`, and `parent`, so scope, pre-execute policy,
55
- // guards, and event attribution are unchanged.
50
+ // `tools.executable(name, scope, toolSet)`, reads exactly that view. Without a
51
+ // fallback every On-demand forward would fail as UNKNOWN_TOOL.
52
+ //
53
+ // The fallback is therefore narrow on purpose: it applies only to a name the
54
+ // policy can PROVE is invisible *solely* because of its own On-demand mask
55
+ // (`capabilityPolicy.isHiddenOnlyByPolicy`). Classification alone is not
56
+ // evidence — it says how this plugin treats a name, not whether a third party
57
+ // also denies it — so a `tools.restrict({ deny })`, an `allow` filter, or any
58
+ // other restriction installed by someone else still denies the call, exactly
59
+ // like it denies a direct one. Execution still carries `agent`, `signal`, and
60
+ // `parent`, so scope, pre-execute policy, guards, and event attribution are
61
+ // unchanged.
56
62
  const resolveForwardDefinition = (name, scope, toolSet) => {
57
63
  const visible = ctx.tools.executable(name, scope, toolSet);
58
64
  if (visible !== undefined)
59
65
  return visible;
60
66
  const policy = ctx.get('capabilityPolicy');
61
- if (policy?.classifyTool(name) !== 'on-demand')
67
+ if (policy?.isHiddenOnlyByPolicy(scope, name) !== true)
62
68
  return undefined;
63
69
  // Registered definitions only: the step's admission set belongs to the
64
70
  // caller's view, which this policy just masked.
@@ -177,9 +183,9 @@ export function apply(ctx, config = {}) {
177
183
  // schema.
178
184
  if (capability.kind === 'tool') {
179
185
  // Resolve the target the same way the forward does: the caller's view
180
- // first, then — only for a name this policy classified On-demand — the
181
- // registered definition, because the policy itself masked that name out
182
- // of the caller's view. Every other restriction still reads as absent.
186
+ // first, then — only for a name the policy proved it alone masked — the
187
+ // registered definition. Any other restriction still reads as absent,
188
+ // so this never lifts a third party's decision.
183
189
  const definition = resolveForwardDefinition(capability.name, exec.agent, exec.toolSet);
184
190
  if (definition === undefined) {
185
191
  throw new Error(`meta_invoke: tool "${capability.name}" is not available`);