agentfootprint 9.76.1 → 9.78.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 (105) hide show
  1. package/CHANGELOG.md +188 -0
  2. package/CLAUDE.md +2 -0
  3. package/dist/core/Agent.js +86 -0
  4. package/dist/core/Agent.js.map +1 -1
  5. package/dist/core/agent/integrityFindings.js +47 -0
  6. package/dist/core/agent/integrityFindings.js.map +1 -0
  7. package/dist/core/agent/stages/callLLM.js +28 -29
  8. package/dist/core/agent/stages/callLLM.js.map +1 -1
  9. package/dist/core/agent/stages/toolCalls.js +184 -0
  10. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  11. package/dist/core/tools.js +9 -1
  12. package/dist/core/tools.js.map +1 -1
  13. package/dist/esm/core/Agent.d.ts +10 -0
  14. package/dist/esm/core/Agent.js +86 -0
  15. package/dist/esm/core/Agent.js.map +1 -1
  16. package/dist/esm/core/agent/integrityFindings.d.ts +27 -0
  17. package/dist/esm/core/agent/integrityFindings.js +43 -0
  18. package/dist/esm/core/agent/integrityFindings.js.map +1 -0
  19. package/dist/esm/core/agent/stages/callLLM.d.ts +25 -0
  20. package/dist/esm/core/agent/stages/callLLM.js +25 -26
  21. package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
  22. package/dist/esm/core/agent/stages/toolCalls.d.ts +43 -0
  23. package/dist/esm/core/agent/stages/toolCalls.js +185 -1
  24. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  25. package/dist/esm/core/agent/types.d.ts +112 -0
  26. package/dist/esm/core/tools.d.ts +63 -0
  27. package/dist/esm/core/tools.js +17 -0
  28. package/dist/esm/core/tools.js.map +1 -1
  29. package/dist/esm/index.d.ts +3 -0
  30. package/dist/esm/index.js +18 -0
  31. package/dist/esm/index.js.map +1 -1
  32. package/dist/esm/integrity/argumentLeaves.d.ts +33 -0
  33. package/dist/esm/integrity/argumentLeaves.js +49 -0
  34. package/dist/esm/integrity/argumentLeaves.js.map +1 -0
  35. package/dist/esm/integrity/column-types/check.d.ts +156 -0
  36. package/dist/esm/integrity/column-types/check.js +363 -0
  37. package/dist/esm/integrity/column-types/check.js.map +1 -0
  38. package/dist/esm/integrity/column-types/types.d.ts +121 -0
  39. package/dist/esm/integrity/column-types/types.js +107 -0
  40. package/dist/esm/integrity/column-types/types.js.map +1 -0
  41. package/dist/esm/integrity/disposition/lifecycle.d.ts +31 -1
  42. package/dist/esm/integrity/disposition/lifecycle.js +54 -1
  43. package/dist/esm/integrity/disposition/lifecycle.js.map +1 -1
  44. package/dist/esm/integrity/empty-lookup/check.d.ts +140 -0
  45. package/dist/esm/integrity/empty-lookup/check.js +212 -0
  46. package/dist/esm/integrity/empty-lookup/check.js.map +1 -0
  47. package/dist/esm/integrity/finding/types.d.ts +23 -2
  48. package/dist/esm/integrity/finding/types.js.map +1 -1
  49. package/dist/esm/integrity/unsupported-argument/check.js +11 -27
  50. package/dist/esm/integrity/unsupported-argument/check.js.map +1 -1
  51. package/dist/esm/lib/mcp/toolExtras.d.ts +17 -2
  52. package/dist/esm/lib/mcp/toolExtras.js +5 -2
  53. package/dist/esm/lib/mcp/toolExtras.js.map +1 -1
  54. package/dist/esm/lib/trace-toolpack/traceToolpack.js +8 -4
  55. package/dist/esm/lib/trace-toolpack/traceToolpack.js.map +1 -1
  56. package/dist/index.js +26 -3
  57. package/dist/index.js.map +1 -1
  58. package/dist/integrity/argumentLeaves.js +54 -0
  59. package/dist/integrity/argumentLeaves.js.map +1 -0
  60. package/dist/integrity/column-types/check.js +368 -0
  61. package/dist/integrity/column-types/check.js.map +1 -0
  62. package/dist/integrity/column-types/types.js +112 -0
  63. package/dist/integrity/column-types/types.js.map +1 -0
  64. package/dist/integrity/disposition/lifecycle.js +54 -1
  65. package/dist/integrity/disposition/lifecycle.js.map +1 -1
  66. package/dist/integrity/empty-lookup/check.js +217 -0
  67. package/dist/integrity/empty-lookup/check.js.map +1 -0
  68. package/dist/integrity/finding/types.js.map +1 -1
  69. package/dist/integrity/unsupported-argument/check.js +13 -29
  70. package/dist/integrity/unsupported-argument/check.js.map +1 -1
  71. package/dist/lib/mcp/toolExtras.js +4 -1
  72. package/dist/lib/mcp/toolExtras.js.map +1 -1
  73. package/dist/lib/trace-toolpack/traceToolpack.js +8 -4
  74. package/dist/lib/trace-toolpack/traceToolpack.js.map +1 -1
  75. package/dist/types/core/Agent.d.ts +10 -0
  76. package/dist/types/core/Agent.d.ts.map +1 -1
  77. package/dist/types/core/agent/integrityFindings.d.ts +28 -0
  78. package/dist/types/core/agent/integrityFindings.d.ts.map +1 -0
  79. package/dist/types/core/agent/stages/callLLM.d.ts +25 -0
  80. package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
  81. package/dist/types/core/agent/stages/toolCalls.d.ts +43 -0
  82. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  83. package/dist/types/core/agent/types.d.ts +112 -0
  84. package/dist/types/core/agent/types.d.ts.map +1 -1
  85. package/dist/types/core/tools.d.ts +63 -0
  86. package/dist/types/core/tools.d.ts.map +1 -1
  87. package/dist/types/index.d.ts +3 -0
  88. package/dist/types/index.d.ts.map +1 -1
  89. package/dist/types/integrity/argumentLeaves.d.ts +34 -0
  90. package/dist/types/integrity/argumentLeaves.d.ts.map +1 -0
  91. package/dist/types/integrity/column-types/check.d.ts +157 -0
  92. package/dist/types/integrity/column-types/check.d.ts.map +1 -0
  93. package/dist/types/integrity/column-types/types.d.ts +122 -0
  94. package/dist/types/integrity/column-types/types.d.ts.map +1 -0
  95. package/dist/types/integrity/disposition/lifecycle.d.ts +31 -1
  96. package/dist/types/integrity/disposition/lifecycle.d.ts.map +1 -1
  97. package/dist/types/integrity/empty-lookup/check.d.ts +141 -0
  98. package/dist/types/integrity/empty-lookup/check.d.ts.map +1 -0
  99. package/dist/types/integrity/finding/types.d.ts +23 -2
  100. package/dist/types/integrity/finding/types.d.ts.map +1 -1
  101. package/dist/types/integrity/unsupported-argument/check.d.ts.map +1 -1
  102. package/dist/types/lib/mcp/toolExtras.d.ts +17 -2
  103. package/dist/types/lib/mcp/toolExtras.d.ts.map +1 -1
  104. package/dist/types/lib/trace-toolpack/traceToolpack.d.ts.map +1 -1
  105. package/package.json +1 -1
@@ -0,0 +1,122 @@
1
+ /**
2
+ * The COLUMN-TYPE CONTRACT's vocabulary — what a tool may say about the
3
+ * columns of the rowset it returns, and the one rule that judges the saying.
4
+ *
5
+ * Pattern: closed vocabulary + definition-time assert (the `resultCeiling` /
6
+ * `resultClass` law: a declaration this library cannot honour fails
7
+ * at `defineTool`, never at the first row of the first run).
8
+ * Role: leaf. `src/integrity/` imports nothing outside itself, so the
9
+ * vocabulary lives HERE and `core/tools.ts` reaches in for it —
10
+ * never the other way round.
11
+ *
12
+ * ── Why the words are these words ───────────────────────────────────────
13
+ * They are NOT invented. `number | string | boolean | date` is the vocabulary
14
+ * this ecosystem's rowset consumers already speak — a column-type union with
15
+ * exactly these members is what the visualization layer sniffs its way to
16
+ * today. Declaring in the consumer's own words is the `resultKind` law
17
+ * (9.70.0) restated one level down: the tool's result in the CONSUMER's
18
+ * vocabulary, not the framework's.
19
+ *
20
+ * The one member deliberately NOT carried over is `unknown`. A sniffer needs
21
+ * that word — it is what "I looked at the values and could not tell" sounds
22
+ * like. A DECLARATION has no use for it: an author who does not know what a
23
+ * column holds should not name the column, and `columns: { x: 'unknown' }`
24
+ * would be a promise about nothing that the checker would then have to
25
+ * pretend to verify.
26
+ *
27
+ * ── Two spellings, one meaning ──────────────────────────────────────────
28
+ * A column maps to a bare type (`lun: 'number'`) or to an object form
29
+ * (`note: { type: 'string', nullable: true }`). That is this library's house
30
+ * pattern for exactly this shape — `CostBudget` takes a bare number or
31
+ * `{ usd, onExceed }`, `artifacts` takes a bare store or `{ store, placement }`
32
+ * — and it is normalized ONCE, here, so every reader downstream sees one
33
+ * shape and no downstream file learns that there were two.
34
+ */
35
+ /**
36
+ * What a declared column holds.
37
+ *
38
+ * | word | what a value must be |
39
+ * | --- | --- |
40
+ * | `number` | a JavaScript number that is FINITE — `NaN` and the infinities are a number that means "no number", and a chart handed one draws nothing |
41
+ * | `string` | a JavaScript string, including the empty one (emptiness is meaning, and meaning is above this check's ceiling) |
42
+ * | `boolean` | `true` or `false` — never `'true'`, never `0`, never `1` |
43
+ * | `date` | a valid `Date` instance, or a string `Date.parse` accepts (an epoch NUMBER is a `number`; say so and the axis picker stops guessing) |
44
+ */
45
+ export type ColumnType = 'number' | 'string' | 'boolean' | 'date';
46
+ /** The closed set, in one place, for the assert and for its own error message. */
47
+ export declare const COLUMN_TYPES: readonly ColumnType[];
48
+ /** The object spelling of one column's declaration. */
49
+ export interface ColumnDeclaration {
50
+ /** What the column holds. */
51
+ readonly type: ColumnType;
52
+ /**
53
+ * `true` — a row of this column may legitimately carry NO VALUE (`null`,
54
+ * `undefined`, or the key simply not set on that row), and such a row is
55
+ * never a type violation.
56
+ *
57
+ * Default `false`, and the default is the strict one ON PURPOSE. The field
58
+ * failure this check is built from was a value that went missing and left
59
+ * an empty string behind; had the same code left a `null` behind, the
60
+ * defect would have been identical and a lenient default would have waved
61
+ * it through. One word turns it off, and every finding names that word — so
62
+ * a legitimate null column costs a one-word edit, while a silent default
63
+ * would cost the bug.
64
+ *
65
+ * `nullable` is a promise about VALUES. It is NOT a promise about the
66
+ * column's existence: a declared column that appears in no row at all is a
67
+ * `missing-column` finding whether or not it is nullable, because the
68
+ * declaration named a column and the result has no such column. The valve
69
+ * for "this column may or may not be there" is to not declare it —
70
+ * unlisted columns are allowed and unjudged.
71
+ */
72
+ readonly nullable?: boolean;
73
+ }
74
+ /**
75
+ * What a tool declares about the columns of its rowset — column name to type.
76
+ *
77
+ * OPEN, NEVER CLOSED. A declaration is a promise about what it NAMES, not a
78
+ * schema of everything the result may contain: a column nobody listed is
79
+ * allowed and is never judged. Two reasons, and both are the same reason.
80
+ *
81
+ * • A closed schema punishes the wrong party. The day the backend adds a
82
+ * column, every one of these tools starts filing findings about a change
83
+ * that broke nothing — and a check that cries about correct behaviour is
84
+ * a check people switch off, which is how the failure it exists to catch
85
+ * gets back in.
86
+ * • It is the rule the neighbouring boundary already keeps.
87
+ * `toolArgsValidation` is permissive on keywords it does not know and
88
+ * enforces `additionalProperties: false` only when an author explicitly
89
+ * asks for it. Two validators at one seam disagreeing about whether
90
+ * silence means "allowed" would be a worse defect than either could
91
+ * catch.
92
+ */
93
+ export type ToolResultColumns = Readonly<Record<string, ColumnType | ColumnDeclaration>>;
94
+ /** One column's declaration after normalization — the ONLY shape any reader
95
+ * downstream of `normalizeColumns` ever sees. */
96
+ export interface NormalizedColumn {
97
+ readonly name: string;
98
+ readonly type: ColumnType;
99
+ readonly nullable: boolean;
100
+ }
101
+ /**
102
+ * Both spellings into one list, in declaration order.
103
+ *
104
+ * Order is kept because it is the author's order, and a finding that names
105
+ * columns in the order the author wrote them is a finding they can scan
106
+ * against their own source.
107
+ */
108
+ export declare function normalizeColumns(columns: ToolResultColumns): readonly NormalizedColumn[];
109
+ /**
110
+ * Refuse a `resultColumns` this library cannot honour, at definition time —
111
+ * naming the tool, the column and the fix.
112
+ *
113
+ * Exported beside {@link ColumnType} and called from `defineTool`, so a
114
+ * misspelled type fails on the line that wrote it rather than at the first
115
+ * rowset of the first armed run. Also called by the MCP ingest
116
+ * (`readToolExtras`) on a bag from a server this process does not control —
117
+ * which is why every read below goes through a fallback: a `null`, a number
118
+ * or an array must reach the teaching refusal, never blow up on the way to
119
+ * it.
120
+ */
121
+ export declare function assertResultColumns(toolName: string, columns: unknown): void;
122
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/integrity/column-types/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAElE,kFAAkF;AAClF,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAA4C,CAAC;AAE3F,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC;AAEzF;kDACkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,gBAAgB,EAAE,CAUxF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD5E"}
@@ -10,7 +10,14 @@
10
10
  * compose-invariant: a mount kernel is configured; dangling: at
11
11
  * least one tool declared `argumentsFrom`, which arms BOTH the
12
12
  * compose-seam dangling-reference check and the choice-seam
13
- * unsupported-argument check off the same declaration).
13
+ * unsupported-argument check off the same declaration;
14
+ * empty-lookup: that same declaration AND the operator's
15
+ * `noticeEmptyLookups` dial — two halves, because an advisory that
16
+ * armed itself off a declaration made for something else would not
17
+ * be opt-in at all; column-types: `Tool.resultColumns` AND the
18
+ * operator's `checkColumnTypes` dial off `'off'` — the same two
19
+ * halves, arming BOTH `column-type-mismatch` and `missing-column`
20
+ * off the one declaration).
14
21
  * Registration is what makes silence auditable — an unregistered
15
22
  * check is honest
16
23
  * absence, a registered one that never notes is the wiring rot
@@ -45,6 +52,29 @@ export interface IntegrityChecksPresent {
45
52
  readonly dangling: boolean;
46
53
  /** A `.claims()` contract is declared (9.61.0). */
47
54
  readonly claim?: boolean;
55
+ /**
56
+ * The write seam's `empty-lookup` notice (9.77.0) — armed only when BOTH
57
+ * halves are true: the operator turned `noticeEmptyLookups` on AND at least
58
+ * one tool declared `argumentsFrom`. Deliberately NOT armed by the
59
+ * declaration alone, unlike its two siblings: this check would otherwise
60
+ * start filing advisories in every app that already declares
61
+ * `argumentsFrom` for the other two, and an absent dial must leave a run
62
+ * byte-identical. Absent → a registered `not-applicable` ROW, never
63
+ * silence.
64
+ */
65
+ readonly emptyLookup?: boolean;
66
+ /**
67
+ * The write seam's COLUMN-TYPE CONTRACT (9.78.0) — armed only when BOTH
68
+ * halves are true: the operator set `checkColumnTypes` to something other
69
+ * than `'off'` AND at least one tool declared `resultColumns`. The same
70
+ * two-halves law as `empty-lookup`, for the same reason: a declaration is
71
+ * a promise a consumer may already be reading for its own purposes, and
72
+ * arming a boundary check off it alone would make an absent dial change a
73
+ * run's bytes. ONE FLAG, TWO CHECKS — `column-type-mismatch` and
74
+ * `missing-column` are the same declaration read two ways, and nothing can
75
+ * arm one without arming the other.
76
+ */
77
+ readonly columnTypes?: boolean;
48
78
  }
49
79
  /**
50
80
  * Start one run's ledger: register the present checks and, in dev posture,
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../../src/integrity/disposition/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AASxE,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,KAAK,CAAC;AAEjD,gEAAgE;AAChE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,mDAAmD;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,sBAAsB,EAC/B,OAAO,EAAE,gBAAgB,GACxB,iBAAiB,CA8HnB"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../../src/integrity/disposition/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAWxE,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,KAAK,CAAC;AAEjD,gEAAgE;AAChE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,mDAAmD;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;;;OASG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,sBAAsB,EAC/B,OAAO,EAAE,gBAAgB,GACxB,iBAAiB,CAgLnB"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * empty-lookup — the run itself produced this identifier, and the lookup for
3
+ * it found nothing. Filed at the WRITE seam, as an advisory, never an
4
+ * accusation.
5
+ *
6
+ * Pattern: pure function over (one finished call, the results its declared
7
+ * producers served); the domain check, one seam later than
8
+ * `unsupported-argument`.
9
+ * Role: the decidable fragment of "did this tool answer, or did it only
10
+ * appear to answer?".
11
+ *
12
+ * THE MEASURED FAILURE. A triage agent's reverse-lookup tool filtered a
13
+ * column before a pivot, so the column did not exist yet and EVERY reverse
14
+ * lookup returned an empty result — for every identifier, always. The tool
15
+ * then answered SUCCESSFULLY with an empty list, and the agent reported in a
16
+ * table, with confidence, that the device was "not currently logged in to any
17
+ * port on the collected switches" and advised checking physical cabling. It
18
+ * was logged in the whole time. Nothing in the framework noticed, because an
19
+ * empty result from a broken filter is byte-identical to an empty result from
20
+ * a genuine absence.
21
+ *
22
+ * WHAT THE LIBRARY ALREADY KNOWS, and this check is nothing more than the
23
+ * join of the two:
24
+ * (a) the identifier was GROUNDED — it came out of an earlier tool result
25
+ * in THIS run, from a tool the consumer's author named in
26
+ * `Tool.argumentsFrom`;
27
+ * (b) the lookup keyed on it came back EMPTY.
28
+ * When the run produced the identifier and the lookup for it finds nothing,
29
+ * that is worth filing. It is not worth accusing anyone of.
30
+ *
31
+ * THE CEILING, and it is the whole reason this is an advisory: an empty
32
+ * answer can be perfectly true. The device may exist and simply have no
33
+ * logins right now. NOTHING IN THIS FILE CAN TELL THOSE APART, and nothing in
34
+ * this file pretends to — the finding says "here is a pair worth a look", the
35
+ * record carries the ceiling sentence verbatim, and the same finding is filed
36
+ * for the true absence and the broken filter alike. A check that guessed
37
+ * which one it was looking at would be inventing the certainty the field
38
+ * failure was made of.
39
+ *
40
+ * DECLARED, NEVER INFERRED — the `argumentsFrom` precedent, THIRD use. A tool
41
+ * is this check's subject only because its author said its arguments come
42
+ * from another tool's results. One declaration now arms three seams:
43
+ * `dangling-reference` asks whether the ground is still in reach when the
44
+ * tool is OFFERED, `unsupported-argument` whether the value the model chose
45
+ * came from that ground when the tool was CALLED, and this whether the ground
46
+ * the run really did serve then found anything when the tool ANSWERED.
47
+ *
48
+ * WHAT COUNTS AS EMPTY — and what this refuses to judge. See
49
+ * {@link readLookupResult}. A rowset is counted, never interpreted; an
50
+ * absence is read from the marker its own helper mints. Every other shape a
51
+ * tool has ever returned — a sentence, an object, a `null`, a claim ticket —
52
+ * is BESPOKE: the library cannot see whether it holds rows, so the encounter
53
+ * is `not-applicable` and says so in the ledger. That row is the point. A
54
+ * check that silently skipped what it could not read would be the decoration
55
+ * the disposition family exists to make impossible.
56
+ *
57
+ * Detection only. Nothing here blocks, retries, rewrites or delays anything;
58
+ * the result the model reads is the result the tool returned.
59
+ */
60
+ import type { Disposition } from '../disposition/types.js';
61
+ import type { ContextError } from '../finding/types.js';
62
+ /**
63
+ * THE CEILING, as one string with one owner.
64
+ *
65
+ * Quoted verbatim into every finding's message, into the check's README and
66
+ * into its docs page, so the bound cannot drift out of one of them and leave
67
+ * a reader thinking the library knows more than it does.
68
+ */
69
+ export declare const EMPTY_LOOKUP_CEILING: string;
70
+ /** What the library could read about a finished lookup's result. */
71
+ export interface LookupResultReading {
72
+ /** `'rowset'` — an array, counted. `'absence'` — the `absent()` envelope. */
73
+ readonly shape: 'rowset' | 'absence';
74
+ readonly empty: boolean;
75
+ /** Rows counted, for a rowset. Absent for an absence, which declares itself. */
76
+ readonly rows?: number;
77
+ }
78
+ /**
79
+ * READ a finished result's shape, or decline to.
80
+ *
81
+ * The two readable shapes, and why only these two:
82
+ *
83
+ * • a **rowset** — an array. Its length is COUNTED, not interpreted: zero
84
+ * rows is zero rows, and no judgement about what the tool meant is
85
+ * involved. This is the shape the recorded failure actually returned.
86
+ * • an **absence** — the `absent()` envelope, whose author said in so many
87
+ * words "the search ran and matched nothing".
88
+ *
89
+ * Everything else returns `undefined`, which the caller files as
90
+ * `not-applicable`. A prose sentence, a bespoke `{ rows: [...] }` wrapper, a
91
+ * `null`, a placement claim ticket — the library cannot see rows in any of
92
+ * them, and guessing is how a checker starts lying.
93
+ *
94
+ * @param value the tool's own answer, as it returned it.
95
+ * @param declaredAbsence whether `readAbsence` recognized the value. PASSED
96
+ * IN rather than re-derived here on purpose: the `af_absent` marker has
97
+ * exactly one owner (`core/agent/coverage/absent.ts`), a second spelling of
98
+ * a reserved word would eventually disagree with the first, and
99
+ * `src/integrity/` stays a leaf that imports no agent code.
100
+ */
101
+ export declare function readLookupResult(value: unknown, declaredAbsence: boolean): LookupResultReading | undefined;
102
+ /** One finished call to a tool whose author declared where its arguments come from. */
103
+ export interface EmptyLookupCall {
104
+ /** The CONSUMER — the tool that was called and answered. */
105
+ readonly toolName: string;
106
+ /** The provider's id for this call — what the witness points a reader at. */
107
+ readonly toolCallId: string;
108
+ readonly args: Readonly<Record<string, unknown>>;
109
+ /** `Tool.argumentsFrom` — the tools whose results were meant to ground these arguments. */
110
+ readonly argumentsFrom: readonly string[];
111
+ /** What the library could read about the result — `undefined` = bespoke shape. */
112
+ readonly reading: LookupResultReading | undefined;
113
+ }
114
+ /** One earlier tool result this run served, with the tool that produced it. */
115
+ export interface ProducedResult {
116
+ readonly toolName: string;
117
+ /** The result exactly as the run served it into the conversation. */
118
+ readonly text: string;
119
+ }
120
+ /** One encounter's outcome: the findings, and the disposition it earns. */
121
+ export interface EmptyLookupEncounter {
122
+ readonly findings: readonly ContextError[];
123
+ /**
124
+ * The ledger row this encounter files — computed HERE, beside the rules
125
+ * that decide it, so "the library refused to judge this shape" is provable
126
+ * without a live agent.
127
+ */
128
+ readonly disposition: Disposition;
129
+ }
130
+ /**
131
+ * Judge one finished call to an armed tool.
132
+ *
133
+ * @param call the call and what the library could read of its result. The
134
+ * caller has already established the tool declared `argumentsFrom`;
135
+ * nothing here re-decides who is a subject.
136
+ * @param produced every tool result this run served BEFORE this call, with
137
+ * the tool that produced each. Filtered to the declared producers here.
138
+ * @param epoch the run iteration, stamped on every witness.
139
+ */
140
+ export declare function emptyLookupOf(call: EmptyLookupCall, produced: readonly ProducedResult[], epoch: number): EmptyLookupEncounter;
141
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../../src/integrity/empty-lookup/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,QAEkD,CAAC;AAEpF,oEAAoE;AACpE,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,gFAAgF;IAChF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,OAAO,GACvB,mBAAmB,GAAG,SAAS,CAKjC;AAED,uFAAuF;AACvF,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,2FAA2F;IAC3F,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,kFAAkF;IAClF,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACnD;AAED,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,2EAA2E;AAC3E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,KAAK,EAAE,MAAM,GACZ,oBAAoB,CAyGtB"}
@@ -20,7 +20,7 @@
20
20
  import type { Assertion, SubjectRef } from '../assertion/types.js';
21
21
  import type { IntegritySeam } from '../disposition/types.js';
22
22
  /**
23
- * The five defect classes, by their plain names:
23
+ * The eight defect classes, by their plain names:
24
24
  *
25
25
  * | kind | means | mechanism |
26
26
  * |---|---|---|
@@ -29,8 +29,29 @@ import type { IntegritySeam } from '../disposition/types.js';
29
29
  * | `dangling-reference` | offered an action whose inputs are no longer available | closure |
30
30
  * | `duplicate-execution` | did settled work again | once |
31
31
  * | `unsupported-claim` | stated something the record does not support | grounding |
32
+ * | `empty-lookup` | the run produced this value, and the lookup for it found nothing | join |
33
+ * | `column-type-mismatch` | a column holds something other than the type its tool declared | type |
34
+ * | `missing-column` | a column the tool declared is in none of its rows | presence |
35
+ *
36
+ * `empty-lookup` is the one class that is ADVISORY BY CONSTRUCTION (9.77.0) —
37
+ * every finding it files carries `advisory: true`, because an empty result
38
+ * can be perfectly true and nothing in the library can tell a true absence
39
+ * from a lookup that could never have matched. It is a place to look, not a
40
+ * defect that was proven. It is deliberately NOT `dangling-reference`, whose
41
+ * meaning is the opposite: there the ground has left reach, here the ground
42
+ * is in reach and the lookup came back with nothing.
43
+ *
44
+ * `column-type-mismatch` and `missing-column` (9.78.0) are two classes rather
45
+ * than one ON PURPOSE, and the field failure they come from is the argument:
46
+ * a LUN of 0 stored as `''` and a LUN column that was never delivered send a
47
+ * person to two different files, and a checker that said only "something is
48
+ * off with logical_unit_number" would have helped with neither. Unlike
49
+ * `empty-lookup`, neither is advisory: a column declared `number` that holds
50
+ * a string is not a place to look, it is a broken promise — though what the
51
+ * check can see about it is bounded, and the bound ships as
52
+ * `COLUMN_TYPE_CEILING` in every message.
32
53
  */
33
- export type ContextErrorKind = 'invariant-violation' | 'unsupported-argument' | 'dangling-reference' | 'duplicate-execution' | 'unsupported-claim';
54
+ export type ContextErrorKind = 'invariant-violation' | 'unsupported-argument' | 'dangling-reference' | 'duplicate-execution' | 'unsupported-claim' | 'empty-lookup' | 'column-type-mismatch' | 'missing-column';
34
55
  /** One detected context error — a labelled instance, automatically. */
35
56
  export interface ContextError {
36
57
  readonly kind: ContextErrorKind;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/integrity/finding/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GACxB,qBAAqB,GACrB,sBAAsB,GACtB,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,CAAC;AAExB,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAC;IACzC,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAC;IACzC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAC1B;;;;;;;;;OASG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IACzB,kGAAkG;IAClG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAW5D;AAED,8DAA8D;AAC9D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,YAAY,EAAE,CAU5F"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/integrity/finding/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,gBAAgB,GACxB,qBAAqB,GACrB,sBAAsB,GACtB,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,cAAc,GACd,sBAAsB,GACtB,gBAAgB,CAAC;AAErB,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAC;IACzC,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAC;IACzC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAC1B;;;;;;;;;OASG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IACzB,kGAAkG;IAClG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAW5D;AAED,8DAA8D;AAC9D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,YAAY,EAAE,CAU5F"}
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../../src/integrity/unsupported-argument/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,2FAA2F;IAC3F,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,uFAAuF;IACvF,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAC/C;AAED,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,0EAA0E;IAC1E,QAAQ,CAAC,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC3D;AAkCD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAgBzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,GACZ,oBAAoB,CAwGtB"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../../src/integrity/unsupported-argument/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,2FAA2F;IAC3F,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,uFAAuF;IACvF,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAC/C;AAED,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,0EAA0E;IAC1E,QAAQ,CAAC,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC3D;AAcD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAgBzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,GACZ,oBAAoB,CA4GtB"}
@@ -28,7 +28,7 @@
28
28
  *
29
29
  * ── What may travel, and the bar ────────────────────────────────────────
30
30
  * **A declaration a consumer-side check or rail reads; nothing that governs
31
- * execution.** The five fields below pass it. `needs` (credentials), `checkIn`
31
+ * execution.** Every field below passes it. `needs` (credentials), `checkIn`
32
32
  * (human consent) and the session hooks do NOT and never will: they govern how
33
33
  * a tool RUNS, and the tool runs on the server. Sending them would tell a
34
34
  * client to hold a gate that the only executor of the tool has already held,
@@ -49,7 +49,7 @@
49
49
  * That is the honest outcome: the rail it would have armed stays unarmed, and
50
50
  * the developer is told which rail and why.
51
51
  */
52
- import { type Tool, type ToolOwner, type ToolResultCeiling } from '../../core/tools.js';
52
+ import { type Tool, type ToolOwner, type ToolResultCeiling, type ToolResultColumns } from '../../core/tools.js';
53
53
  import type { ToolResultClass } from '../semantics/types.js';
54
54
  /**
55
55
  * The single `_meta` key every agentfootprint declaration travels under.
@@ -79,6 +79,21 @@ export interface McpToolExtras {
79
79
  /** The artifact kind a PLACED result is minted under — see
80
80
  * {@link Tool.resultKind}. What makes a placed result spendable by `wants`. */
81
81
  readonly resultKind?: string;
82
+ /**
83
+ * What this tool's ROWS contain (9.78.0) — see {@link Tool.resultColumns}.
84
+ * Arms the write seam's `column-type-mismatch` and `missing-column` checks.
85
+ *
86
+ * It clears the bar this file states, and by the widest margin of the eight.
87
+ * It is a flat, inert fact about the RESULT that a consumer-side check
88
+ * reads; it governs nothing about how the tool runs, and the tool runs on
89
+ * the server. It is also the field case for carrying declarations at all: a
90
+ * remote catalogue of rowset tools is exactly where a numeric column
91
+ * arriving as text goes unnoticed, because the consumer holding the chart
92
+ * has no way to know what the producer meant. Leaving it behind would arm
93
+ * the check for local tools and leave every MCP tool a second-class citizen
94
+ * of it — the whole defect `toolExtras` was built to end.
95
+ */
96
+ readonly resultColumns?: ToolResultColumns;
82
97
  /** The identity edge integrity checks join on — see {@link Tool.owner}. */
83
98
  readonly owner?: ToolOwner;
84
99
  /** The declared class of this tool's results — see {@link Tool.resultClass}. */
@@ -1 +1 @@
1
- {"version":3,"file":"toolExtras.d.ts","sourceRoot":"","sources":["../../../../src/lib/mcp/toolExtras.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH,OAAO,EAQL,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAC5B;uEACmE;IACnE,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;oFACgF;IAChF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,gFAAgF;IAChF,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC;IACvC;sCACkC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAC3C;;gBAEY;IACZ,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC;;+CAE2C;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,GAAG,SAAS,CAWlE;AAED,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,GAAG,aAAa,CAuCxF;AA+ED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
1
+ {"version":3,"file":"toolExtras.d.ts","sourceRoot":"","sources":["../../../../src/lib/mcp/toolExtras.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH,OAAO,EASL,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAC5B;uEACmE;IACnE,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;oFACgF;IAChF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,gFAAgF;IAChF,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC;IACvC;sCACkC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAC3C;;gBAEY;IACZ,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC;;+CAE2C;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,GAAG,SAAS,CAYlE;AAED,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,GAAG,aAAa,CA2CxF;AA+ED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"traceToolpack.d.ts","sourceRoot":"","sources":["../../../../src/lib/trace-toolpack/traceToolpack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AASH,OAAO,EAAc,KAAK,IAAI,EAA6B,MAAM,qBAAqB,CAAC;AAcvF,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,YAAY,CAAC;AAuQpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,sBAAsB,EACjC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,IAAI,EAAE,CA0BR;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,kMAYnB,CAAC;AAopEX;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,OAAO,CAAC,MAAM,CAAC,CASjB"}
1
+ {"version":3,"file":"traceToolpack.d.ts","sourceRoot":"","sources":["../../../../src/lib/trace-toolpack/traceToolpack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AASH,OAAO,EAAc,KAAK,IAAI,EAA6B,MAAM,qBAAqB,CAAC;AAcvF,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,YAAY,CAAC;AAuQpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,sBAAsB,EACjC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,IAAI,EAAE,CA0BR;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,kMAYnB,CAAC;AAwpEX;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,OAAO,CAAC,MAAM,CAAC,CASjB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentfootprint",
3
- "version": "9.76.1",
3
+ "version": "9.78.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
  "type": "commonjs",