agentfootprint 7.3.1 → 7.5.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 (179) hide show
  1. package/AGENTS.md +1 -1
  2. package/CLAUDE.md +1 -1
  3. package/README.md +88 -11
  4. package/ai-instructions/claude-code/SKILL.md +1 -1
  5. package/dist/core/Agent.js +26 -4
  6. package/dist/core/Agent.js.map +1 -1
  7. package/dist/core/RunnerBase.js +12 -1
  8. package/dist/core/RunnerBase.js.map +1 -1
  9. package/dist/core/agent/AgentBuilder.js +33 -1
  10. package/dist/core/agent/AgentBuilder.js.map +1 -1
  11. package/dist/core/agent/stages/toolCalls.js +225 -16
  12. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  13. package/dist/core/checkin.js +266 -0
  14. package/dist/core/checkin.js.map +1 -0
  15. package/dist/core/pause.js +17 -1
  16. package/dist/core/pause.js.map +1 -1
  17. package/dist/core/tools.js +3 -0
  18. package/dist/core/tools.js.map +1 -1
  19. package/dist/debug.js +8 -2
  20. package/dist/debug.js.map +1 -1
  21. package/dist/embedders/index.js +2 -1
  22. package/dist/embedders/index.js.map +1 -1
  23. package/dist/esm/core/Agent.d.ts +31 -5
  24. package/dist/esm/core/Agent.js +26 -4
  25. package/dist/esm/core/Agent.js.map +1 -1
  26. package/dist/esm/core/RunnerBase.js +12 -1
  27. package/dist/esm/core/RunnerBase.js.map +1 -1
  28. package/dist/esm/core/agent/AgentBuilder.d.ts +27 -0
  29. package/dist/esm/core/agent/AgentBuilder.js +33 -1
  30. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  31. package/dist/esm/core/agent/stages/toolCalls.d.ts +9 -0
  32. package/dist/esm/core/agent/stages/toolCalls.js +225 -16
  33. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  34. package/dist/esm/core/agent/types.d.ts +2 -0
  35. package/dist/esm/core/checkin.d.ts +263 -0
  36. package/dist/esm/core/checkin.js +254 -0
  37. package/dist/esm/core/checkin.js.map +1 -0
  38. package/dist/esm/core/pause.d.ts +24 -0
  39. package/dist/esm/core/pause.js +15 -0
  40. package/dist/esm/core/pause.js.map +1 -1
  41. package/dist/esm/core/tools.d.ts +19 -0
  42. package/dist/esm/core/tools.js +3 -0
  43. package/dist/esm/core/tools.js.map +1 -1
  44. package/dist/esm/debug.d.ts +2 -2
  45. package/dist/esm/debug.js +2 -2
  46. package/dist/esm/debug.js.map +1 -1
  47. package/dist/esm/embedders/index.js +2 -1
  48. package/dist/esm/embedders/index.js.map +1 -1
  49. package/dist/esm/events/dispatcher.d.ts +1 -1
  50. package/dist/esm/events/dispatcher.js.map +1 -1
  51. package/dist/esm/events/payloads.d.ts +19 -0
  52. package/dist/esm/events/registry.d.ts +7 -1
  53. package/dist/esm/events/registry.js +6 -0
  54. package/dist/esm/events/registry.js.map +1 -1
  55. package/dist/esm/index.d.ts +6 -3
  56. package/dist/esm/index.js +9 -1
  57. package/dist/esm/index.js.map +1 -1
  58. package/dist/esm/lib/context-bisect/index.d.ts +2 -1
  59. package/dist/esm/lib/context-bisect/index.js +4 -1
  60. package/dist/esm/lib/context-bisect/index.js.map +1 -1
  61. package/dist/esm/lib/context-bisect/localize.d.ts +6 -2
  62. package/dist/esm/lib/context-bisect/localize.js +19 -3
  63. package/dist/esm/lib/context-bisect/localize.js.map +1 -1
  64. package/dist/esm/lib/context-bisect/rerun.d.ts +123 -0
  65. package/dist/esm/lib/context-bisect/rerun.js +155 -0
  66. package/dist/esm/lib/context-bisect/rerun.js.map +1 -0
  67. package/dist/esm/lib/context-bisect/sliceToBacktrackTrace.js +12 -3
  68. package/dist/esm/lib/context-bisect/sliceToBacktrackTrace.js.map +1 -1
  69. package/dist/esm/lib/context-bisect/types.d.ts +8 -0
  70. package/dist/esm/lib/context-bisect/types.js.map +1 -1
  71. package/dist/esm/lib/context-ledger/contextLedger.js +10 -1
  72. package/dist/esm/lib/context-ledger/contextLedger.js.map +1 -1
  73. package/dist/esm/lib/context-ledger/gates.js +4 -1
  74. package/dist/esm/lib/context-ledger/gates.js.map +1 -1
  75. package/dist/esm/lib/influence-core/attribute.js +4 -1
  76. package/dist/esm/lib/influence-core/attribute.js.map +1 -1
  77. package/dist/esm/lib/influence-core/index.d.ts +2 -0
  78. package/dist/esm/lib/influence-core/index.js +2 -0
  79. package/dist/esm/lib/influence-core/index.js.map +1 -1
  80. package/dist/esm/lib/influence-core/lexical.d.ts +60 -0
  81. package/dist/esm/lib/influence-core/lexical.js +142 -0
  82. package/dist/esm/lib/influence-core/lexical.js.map +1 -0
  83. package/dist/esm/lib/influence-core/signals.d.ts +5 -0
  84. package/dist/esm/lib/influence-core/signals.js +6 -2
  85. package/dist/esm/lib/influence-core/signals.js.map +1 -1
  86. package/dist/esm/lib/influence-core/strategies.d.ts +51 -0
  87. package/dist/esm/lib/influence-core/strategies.js +29 -0
  88. package/dist/esm/lib/influence-core/strategies.js.map +1 -0
  89. package/dist/esm/lib/trace-toolpack/traceToolpack.js.map +1 -1
  90. package/dist/esm/observe.d.ts +2 -2
  91. package/dist/esm/observe.js +2 -2
  92. package/dist/esm/observe.js.map +1 -1
  93. package/dist/esm/recorders/core/CheckInRecorder.d.ts +90 -0
  94. package/dist/esm/recorders/core/CheckInRecorder.js +109 -0
  95. package/dist/esm/recorders/core/CheckInRecorder.js.map +1 -0
  96. package/dist/events/dispatcher.js.map +1 -1
  97. package/dist/events/registry.js +6 -0
  98. package/dist/events/registry.js.map +1 -1
  99. package/dist/index.js +18 -1
  100. package/dist/index.js.map +1 -1
  101. package/dist/lib/context-bisect/index.js +6 -1
  102. package/dist/lib/context-bisect/index.js.map +1 -1
  103. package/dist/lib/context-bisect/localize.js +19 -3
  104. package/dist/lib/context-bisect/localize.js.map +1 -1
  105. package/dist/lib/context-bisect/rerun.js +160 -0
  106. package/dist/lib/context-bisect/rerun.js.map +1 -0
  107. package/dist/lib/context-bisect/sliceToBacktrackTrace.js +12 -3
  108. package/dist/lib/context-bisect/sliceToBacktrackTrace.js.map +1 -1
  109. package/dist/lib/context-bisect/types.js.map +1 -1
  110. package/dist/lib/context-ledger/contextLedger.js +10 -1
  111. package/dist/lib/context-ledger/contextLedger.js.map +1 -1
  112. package/dist/lib/context-ledger/gates.js +4 -1
  113. package/dist/lib/context-ledger/gates.js.map +1 -1
  114. package/dist/lib/influence-core/attribute.js +4 -1
  115. package/dist/lib/influence-core/attribute.js.map +1 -1
  116. package/dist/lib/influence-core/index.js +7 -1
  117. package/dist/lib/influence-core/index.js.map +1 -1
  118. package/dist/lib/influence-core/lexical.js +146 -0
  119. package/dist/lib/influence-core/lexical.js.map +1 -0
  120. package/dist/lib/influence-core/signals.js +8 -3
  121. package/dist/lib/influence-core/signals.js.map +1 -1
  122. package/dist/lib/influence-core/strategies.js +33 -0
  123. package/dist/lib/influence-core/strategies.js.map +1 -0
  124. package/dist/lib/trace-toolpack/traceToolpack.js.map +1 -1
  125. package/dist/observe.js.map +1 -1
  126. package/dist/recorders/core/CheckInRecorder.js +114 -0
  127. package/dist/recorders/core/CheckInRecorder.js.map +1 -0
  128. package/dist/types/core/Agent.d.ts +31 -5
  129. package/dist/types/core/Agent.d.ts.map +1 -1
  130. package/dist/types/core/RunnerBase.d.ts.map +1 -1
  131. package/dist/types/core/agent/AgentBuilder.d.ts +27 -0
  132. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  133. package/dist/types/core/agent/stages/toolCalls.d.ts +9 -0
  134. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  135. package/dist/types/core/agent/types.d.ts +2 -0
  136. package/dist/types/core/agent/types.d.ts.map +1 -1
  137. package/dist/types/core/checkin.d.ts +264 -0
  138. package/dist/types/core/checkin.d.ts.map +1 -0
  139. package/dist/types/core/pause.d.ts +24 -0
  140. package/dist/types/core/pause.d.ts.map +1 -1
  141. package/dist/types/core/tools.d.ts +19 -0
  142. package/dist/types/core/tools.d.ts.map +1 -1
  143. package/dist/types/debug.d.ts +2 -2
  144. package/dist/types/debug.d.ts.map +1 -1
  145. package/dist/types/embedders/index.d.ts.map +1 -1
  146. package/dist/types/events/dispatcher.d.ts +1 -1
  147. package/dist/types/events/dispatcher.d.ts.map +1 -1
  148. package/dist/types/events/payloads.d.ts +19 -0
  149. package/dist/types/events/payloads.d.ts.map +1 -1
  150. package/dist/types/events/registry.d.ts +7 -1
  151. package/dist/types/events/registry.d.ts.map +1 -1
  152. package/dist/types/index.d.ts +6 -3
  153. package/dist/types/index.d.ts.map +1 -1
  154. package/dist/types/lib/context-bisect/index.d.ts +2 -1
  155. package/dist/types/lib/context-bisect/index.d.ts.map +1 -1
  156. package/dist/types/lib/context-bisect/localize.d.ts +6 -2
  157. package/dist/types/lib/context-bisect/localize.d.ts.map +1 -1
  158. package/dist/types/lib/context-bisect/rerun.d.ts +124 -0
  159. package/dist/types/lib/context-bisect/rerun.d.ts.map +1 -0
  160. package/dist/types/lib/context-bisect/sliceToBacktrackTrace.d.ts.map +1 -1
  161. package/dist/types/lib/context-bisect/types.d.ts +8 -0
  162. package/dist/types/lib/context-bisect/types.d.ts.map +1 -1
  163. package/dist/types/lib/context-ledger/contextLedger.d.ts.map +1 -1
  164. package/dist/types/lib/context-ledger/gates.d.ts.map +1 -1
  165. package/dist/types/lib/influence-core/attribute.d.ts.map +1 -1
  166. package/dist/types/lib/influence-core/index.d.ts +2 -0
  167. package/dist/types/lib/influence-core/index.d.ts.map +1 -1
  168. package/dist/types/lib/influence-core/lexical.d.ts +61 -0
  169. package/dist/types/lib/influence-core/lexical.d.ts.map +1 -0
  170. package/dist/types/lib/influence-core/signals.d.ts +5 -0
  171. package/dist/types/lib/influence-core/signals.d.ts.map +1 -1
  172. package/dist/types/lib/influence-core/strategies.d.ts +52 -0
  173. package/dist/types/lib/influence-core/strategies.d.ts.map +1 -0
  174. package/dist/types/lib/trace-toolpack/traceToolpack.d.ts.map +1 -1
  175. package/dist/types/observe.d.ts +2 -2
  176. package/dist/types/observe.d.ts.map +1 -1
  177. package/dist/types/recorders/core/CheckInRecorder.d.ts +91 -0
  178. package/dist/types/recorders/core/CheckInRecorder.d.ts.map +1 -0
  179. package/package.json +1 -1
@@ -0,0 +1,91 @@
1
+ /**
2
+ * CheckInRecorder — the audit record for evidence-carrying human consent.
3
+ *
4
+ * Two exports, both for `agentfootprint.checkin.*`:
5
+ *
6
+ * • `checkInEventsBridge(...)` — an {@link EmitBridge} factory (same shape as
7
+ * `costRecorder` / `permissionRecorder`). Forwards `checkin.request` /
8
+ * `checkin.decision` `$emit`s to the EventDispatcher so
9
+ * `agent.on('agentfootprint.checkin.*')` fires. Attached ALWAYS by the
10
+ * Agent (zero-cost until a `checkIn`-declaring tool trips) — this is pure
11
+ * wiring, not a store.
12
+ *
13
+ * • `CheckInRecorder` — a compose-a-STORE recorder (no base class). Attach it
14
+ * with `agent.attach(new CheckInRecorder())` to CAPTURE every ask + decision
15
+ * as a queryable record — the "the decision is a record" pillar. It reads
16
+ * the same `$emit` stream (footprintjs calls `onEmit` for every emit), so it
17
+ * works whether or not any `agent.on(...)` listener is attached.
18
+ *
19
+ * Pattern: Factory over EmitBridge (wiring) + compose-a-store CombinedRecorder
20
+ * (capture). Telemetry rides the EMIT channel — never CommitBundle.
21
+ */
22
+ import type { CombinedRecorder, EmitEvent } from 'footprintjs';
23
+ import { EmitBridge, type EmitBridgeOptions } from './EmitBridge.js';
24
+ import type { CheckInRequest } from '../../core/checkin.js';
25
+ export type CheckInRecorderBridgeOptions = Omit<EmitBridgeOptions, 'id' | 'prefix'> & {
26
+ readonly id?: string;
27
+ };
28
+ /**
29
+ * The always-on dispatcher bridge for `agentfootprint.checkin.*`. Wiring only:
30
+ * forwards the emits so typed `agent.on(...)` listeners fire.
31
+ */
32
+ export declare function checkInEventsBridge(options: CheckInRecorderBridgeOptions): EmitBridge;
33
+ /** One captured check-in ask. */
34
+ export interface CheckInRequestRecord {
35
+ readonly toolName: string;
36
+ readonly toolCallId: string;
37
+ readonly iteration: number;
38
+ /** The typed ask + evidence pack. */
39
+ readonly request: CheckInRequest;
40
+ }
41
+ /** One captured human decision. */
42
+ export interface CheckInDecisionRecord {
43
+ readonly toolName: string;
44
+ readonly toolCallId: string;
45
+ readonly iteration: number;
46
+ readonly approved: boolean;
47
+ readonly by: string;
48
+ readonly note?: string;
49
+ }
50
+ /** Roll-up counts across a run (or the recorder's lifetime). */
51
+ export interface CheckInStats {
52
+ readonly requested: number;
53
+ readonly approved: number;
54
+ readonly declined: number;
55
+ /** Asks with no decision yet (paused, awaiting a human). */
56
+ readonly pending: number;
57
+ }
58
+ /**
59
+ * A queryable store of every check-in ask + decision. Attach once; read after
60
+ * the run (or between runs — it accumulates across `agent.run()` calls until
61
+ * you detach or make a fresh one).
62
+ *
63
+ * @example
64
+ * const checkins = new CheckInRecorder();
65
+ * agent.attach(checkins);
66
+ * await agent.run({ message });
67
+ * // ...human approves...
68
+ * await agent.resume(outcome.checkpoint, checkInApproved({ by: 'alice' }));
69
+ * checkins.getStats(); // { requested: 1, approved: 1, declined: 0, pending: 0 }
70
+ * checkins.getDecisions(); // [{ toolName, approved: true, by: 'alice', ... }]
71
+ */
72
+ export declare class CheckInRecorder implements CombinedRecorder {
73
+ readonly id: string;
74
+ private readonly requests;
75
+ private readonly decisions;
76
+ /**
77
+ * @param id Stable recorder id for idempotent attach/detach. Give distinct
78
+ * ids if you attach more than one to the same agent.
79
+ */
80
+ constructor(id?: string);
81
+ onEmit(event: EmitEvent): void;
82
+ /** Every check-in ask captured, oldest first. */
83
+ getRequests(): readonly CheckInRequestRecord[];
84
+ /** Every human decision captured, oldest first. */
85
+ getDecisions(): readonly CheckInDecisionRecord[];
86
+ /** Roll-up counts. `pending` = asks still awaiting a decision. */
87
+ getStats(): CheckInStats;
88
+ /** Drop all captured records (e.g. between runs when reusing the recorder). */
89
+ reset(): void;
90
+ }
91
+ //# sourceMappingURL=CheckInRecorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckInRecorder.d.ts","sourceRoot":"","sources":["../../../../src/recorders/core/CheckInRecorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,QAAQ,CAAC,GAAG;IACpF,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,4BAA4B,GAAG,UAAU,CAOrF;AAED,iCAAiC;AACjC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qCAAqC;IACrC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAED,mCAAmC;AACnC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IAEzD;;;OAGG;gBACS,EAAE,SAAoC;IAIlD,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAsB9B,iDAAiD;IACjD,WAAW,IAAI,SAAS,oBAAoB,EAAE;IAI9C,mDAAmD;IACnD,YAAY,IAAI,SAAS,qBAAqB,EAAE;IAIhD,kEAAkE;IAClE,QAAQ,IAAI,YAAY;IAYxB,+EAA+E;IAC/E,KAAK,IAAI,IAAI;CAId"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentfootprint",
3
- "version": "7.3.1",
3
+ "version": "7.5.0",
4
4
  "description": "The explainable agent framework — backtrack a wrong answer to the exact context that caused it (evidence, not guesses). Built on footprintjs.",
5
5
  "license": "MIT",
6
6
  "author": "Sanjay Krishna Anbalagan",