agentfootprint 9.134.5 → 9.134.6
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.
- package/dist/core/agent/assessment/reasons.js +1 -1
- package/dist/core/agent/assessment/reasons.js.map +1 -1
- package/dist/core/agent/coverage/emptiness.js +103 -24
- package/dist/core/agent/coverage/emptiness.js.map +1 -1
- package/dist/esm/core/agent/assessment/reasons.js +1 -1
- package/dist/esm/core/agent/assessment/reasons.js.map +1 -1
- package/dist/esm/core/agent/coverage/emptiness.d.ts +50 -1
- package/dist/esm/core/agent/coverage/emptiness.js +103 -24
- package/dist/esm/core/agent/coverage/emptiness.js.map +1 -1
- package/dist/esm/lib/answer-account/account.js +2 -3
- package/dist/esm/lib/answer-account/account.js.map +1 -1
- package/dist/esm/lib/answer-account/facts/calls.js +2 -3
- package/dist/esm/lib/answer-account/facts/calls.js.map +1 -1
- package/dist/esm/lib/answer-account/facts/common.d.ts +11 -0
- package/dist/esm/lib/answer-account/facts/common.js +11 -0
- package/dist/esm/lib/answer-account/facts/common.js.map +1 -1
- package/dist/esm/lib/answer-account/facts/inView.js +2 -3
- package/dist/esm/lib/answer-account/facts/inView.js.map +1 -1
- package/dist/esm/lib/answer-account/shown.js +5 -1
- package/dist/esm/lib/answer-account/shown.js.map +1 -1
- package/dist/esm/lib/answer-account/signals.js +28 -15
- package/dist/esm/lib/answer-account/signals.js.map +1 -1
- package/dist/esm/lib/answer-account/templates.d.ts +3 -1
- package/dist/esm/lib/answer-account/templates.js +5 -1
- package/dist/esm/lib/answer-account/templates.js.map +1 -1
- package/dist/esm/lib/answer-account/types.d.ts +21 -0
- package/dist/lib/answer-account/account.js +1 -2
- package/dist/lib/answer-account/account.js.map +1 -1
- package/dist/lib/answer-account/facts/calls.js +1 -2
- package/dist/lib/answer-account/facts/calls.js.map +1 -1
- package/dist/lib/answer-account/facts/common.js +13 -1
- package/dist/lib/answer-account/facts/common.js.map +1 -1
- package/dist/lib/answer-account/facts/inView.js +1 -2
- package/dist/lib/answer-account/facts/inView.js.map +1 -1
- package/dist/lib/answer-account/shown.js +5 -1
- package/dist/lib/answer-account/shown.js.map +1 -1
- package/dist/lib/answer-account/signals.js +27 -14
- package/dist/lib/answer-account/signals.js.map +1 -1
- package/dist/lib/answer-account/templates.js +5 -1
- package/dist/lib/answer-account/templates.js.map +1 -1
- package/dist/types/core/agent/coverage/emptiness.d.ts +50 -1
- package/dist/types/core/agent/coverage/emptiness.d.ts.map +1 -1
- package/dist/types/lib/answer-account/account.d.ts.map +1 -1
- package/dist/types/lib/answer-account/facts/calls.d.ts.map +1 -1
- package/dist/types/lib/answer-account/facts/common.d.ts +11 -0
- package/dist/types/lib/answer-account/facts/common.d.ts.map +1 -1
- package/dist/types/lib/answer-account/facts/inView.d.ts.map +1 -1
- package/dist/types/lib/answer-account/shown.d.ts.map +1 -1
- package/dist/types/lib/answer-account/signals.d.ts.map +1 -1
- package/dist/types/lib/answer-account/templates.d.ts +3 -1
- package/dist/types/lib/answer-account/templates.d.ts.map +1 -1
- package/dist/types/lib/answer-account/types.d.ts +21 -0
- package/dist/types/lib/answer-account/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -83,7 +83,7 @@ exports.REASONS = Object.freeze([
|
|
|
83
83
|
reason: 'empty-undeclared',
|
|
84
84
|
layer: 3,
|
|
85
85
|
class: 'not-sure',
|
|
86
|
-
reads: 'history: an empty rowset (a top-level array,
|
|
86
|
+
reads: 'history: an empty rowset (a top-level array, the app’s rowsAt key, or the dataset ticket left where those rows were, counting 0) whose call has no coverage row',
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
89
|
reason: 'period-not-held',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reasons.js","sourceRoot":"","sources":["../../../../src/core/agent/assessment/reasons.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;;AAaH,sFAAsF;AACzE,QAAA,OAAO,GAA2B,MAAM,CAAC,MAAM,CAAC;IAC3D;QACE,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,KAAK;QACZ,KAAK,EACH,gJAAgJ;KACnJ;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,KAAK;QACZ,KAAK,EACH,yLAAyL;KAC5L;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,KAAK,EACH,iNAAiN;KACpN;IACD;QACE,MAAM,EAAE,qBAAqB;QAC7B,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,KAAK,EACH,0JAA0J;KAC7J;IACD;QACE,MAAM,EAAE,eAAe;QACvB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,KAAK,EACH,4LAA4L;KAC/L;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,KAAK,EACH,8JAA8J;KACjK;IACD;QACE,MAAM,EAAE,cAAc;QACtB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,KAAK,EACH,+JAA+J;KAClK;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,KAAK,EACH,iOAAiO;KACpO;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,KAAK,EACH,
|
|
1
|
+
{"version":3,"file":"reasons.js","sourceRoot":"","sources":["../../../../src/core/agent/assessment/reasons.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* Pattern: typed routes over two inputs — the value the MODEL read, and the
|
|
6
6
|
* door the RECORD says the call returned — and never a guess.
|
|
7
7
|
* Role: core/ layer, pure. It imports the recognizers only
|
|
8
|
-
* (`coverage/recognize.ts
|
|
8
|
+
* (`coverage/recognize.ts`; the artifact ref grammar and the
|
|
9
|
+
* placement ticket's guard, `artifacts/naming.ts`,
|
|
10
|
+
* `artifacts/placement.ts`), never a mint, so a post-hoc reader
|
|
9
11
|
* loads it without the tool-name checks and refusal sentences.
|
|
10
12
|
* Callers: the `/observe` answer account (`lib/answer-account/facts/calls.ts`
|
|
11
13
|
* for this run's calls, `lib/answer-account/facts/inView.ts` for an
|
|
@@ -25,9 +27,40 @@
|
|
|
25
27
|
* | a `describedResult()` with only `clarify` | `clarify` — a question handed back, no data | — |
|
|
26
28
|
* | a `coverage()` envelope | its wrapped `result`, read by these same routes, marked `bounded`; an empty wrapped rowset reads `declared-absent` | library or app |
|
|
27
29
|
* | a bare top-level array | `undeclared-empty` or `non-empty` | library |
|
|
30
|
+
* | the library's placement ticket (`placedToolResult`) — the whole result is in the store | `unknown`, said: the ticket counts bytes, never rows | — |
|
|
28
31
|
* | an object whose key the app declared in `rowsAt` | `undeclared-empty` or `non-empty` | app |
|
|
32
|
+
* | an object whose `rowsAt` rows went to the store — the dataset ticket left in their place | the ticket's whole-number `rows`: `undeclared-empty` (0) or `non-empty`; no count → `unknown`, said | app |
|
|
33
|
+
* | an object with no list and no ticket at the declared `rowsAt` | `unknown`, said: the declared key holds no list | — |
|
|
29
34
|
* | anything else | `unknown` — the record cannot read it | — |
|
|
30
35
|
*
|
|
36
|
+
* ## Rows that travel by reference
|
|
37
|
+
*
|
|
38
|
+
* A projection may move a rowset out of the value the model reads and leave a
|
|
39
|
+
* TICKET to the artifact store in its place — `withDatasetArtifacts` /
|
|
40
|
+
* `stageDatasetArtifacts` stage the rows, and a projection (or an after-tool
|
|
41
|
+
* `allow(replacement)`) keeps the ticket and drops the rows. The library's
|
|
42
|
+
* spelling of that ticket, the one this reader counts:
|
|
43
|
+
*
|
|
44
|
+
* ```ts
|
|
45
|
+
* { …, datasets: { rows: { ref: 'art_…', kind: 'dataset/rows', rows: 2, sourceField: 'rows' } },
|
|
46
|
+
* dataset: { ref: 'art_…', kind: 'dataset/rows', rows: 2, sourceField: 'rows' } } // the principal one
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* `ref` is a store ref (`isArtifactRef`), `rows` the whole-number row count,
|
|
50
|
+
* `sourceField` the result key the rows came from. The ticket is read only for
|
|
51
|
+
* the key the APP declared (`rowsAt`), only when that key is gone from the
|
|
52
|
+
* value (moved, not merely beside it), and only when the ticket names it —
|
|
53
|
+
* keyed under `datasets[rowsAt]` (a `sourceField`, when present, agreeing) or
|
|
54
|
+
* the principal `dataset` with `sourceField: rowsAt`. Two declarations meet
|
|
55
|
+
* there: the app's key and the ticket's field. A ticket with no whole-number
|
|
56
|
+
* `rows` is never guessed: whether the result was empty cannot be told, and
|
|
57
|
+
* the reading says why (`rowsUnread`). The library's own placement ticket
|
|
58
|
+
* (`artifacts/placement.ts`) puts the WHOLE result in the store and counts
|
|
59
|
+
* bytes, so it reads the same way. Take 4 of the demo video: a ticketed
|
|
60
|
+
* `pscale_client_health` (2 rows, `sourceField: 'rows'`, the app's `rowsAt:
|
|
61
|
+
* 'rows'`) read as "its shape is not declared", and the account's tone stayed
|
|
62
|
+
* unknown.
|
|
63
|
+
*
|
|
31
64
|
* ## The door decides, when the record holds one
|
|
32
65
|
*
|
|
33
66
|
* A marker in the bytes is not a declaration: an envelope a tool returned as
|
|
@@ -62,6 +95,8 @@
|
|
|
62
95
|
*/
|
|
63
96
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
64
97
|
exports.readEmptiness = exports.declaredByValue = exports.parseMaybeJson = exports.rowsAtProblem = void 0;
|
|
98
|
+
const naming_js_1 = require("../../../artifacts/naming.js");
|
|
99
|
+
const placement_js_1 = require("../../../artifacts/placement.js");
|
|
65
100
|
const recognize_js_1 = require("./recognize.js");
|
|
66
101
|
/** How deep `coverage(coverage(…))` is read before the reading gives up (`unknown`). */
|
|
67
102
|
const MAX_BOUND_DEPTH = 8;
|
|
@@ -100,29 +135,71 @@ const DECLARED_ABSENT = Object.freeze({
|
|
|
100
135
|
emptiness: 'declared-absent',
|
|
101
136
|
undeclaredShape: false,
|
|
102
137
|
});
|
|
103
|
-
/** A
|
|
104
|
-
function
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
138
|
+
/** A count of rows: `undeclared-empty` at zero, `non-empty` above it. */
|
|
139
|
+
function counted(rows, source, countedAt, rowsAt) {
|
|
140
|
+
return {
|
|
141
|
+
emptiness: rows === 0 ? 'undeclared-empty' : 'non-empty',
|
|
142
|
+
rows,
|
|
143
|
+
source,
|
|
144
|
+
...(rowsAt !== undefined && { rowsAt }),
|
|
145
|
+
countedAt,
|
|
146
|
+
undeclaredShape: false,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
const UNCOUNTED_TICKET = Object.freeze({
|
|
150
|
+
emptiness: 'unknown',
|
|
151
|
+
undeclaredShape: false,
|
|
152
|
+
rowsUnread: 'uncounted-ticket',
|
|
153
|
+
});
|
|
154
|
+
/** A ticket to the artifact store: an object whose `ref` is a store ref. */
|
|
155
|
+
const isTicket = (value) => isRecord(value) && (0, naming_js_1.isArtifactRef)(value.ref);
|
|
156
|
+
/**
|
|
157
|
+
* The dataset ticket standing for the declared rows key — `datasets[rowsAt]`
|
|
158
|
+
* (its `sourceField`, when present, naming that key) or the principal
|
|
159
|
+
* `dataset` with `sourceField: rowsAt` — with where it sits. See "Rows that
|
|
160
|
+
* travel by reference" in the header.
|
|
161
|
+
*/
|
|
162
|
+
function ticketFor(data, rowsAt) {
|
|
163
|
+
const all = data.datasets;
|
|
164
|
+
if (isRecord(all) && Object.hasOwn(all, rowsAt)) {
|
|
165
|
+
const ticket = all[rowsAt];
|
|
166
|
+
if (isTicket(ticket) && (ticket.sourceField === undefined || ticket.sourceField === rowsAt)) {
|
|
167
|
+
return { ticket, at: ['datasets', rowsAt] };
|
|
122
168
|
}
|
|
169
|
+
}
|
|
170
|
+
const principal = data.dataset;
|
|
171
|
+
return isTicket(principal) && principal.sourceField === rowsAt
|
|
172
|
+
? { ticket: principal, at: ['dataset'] }
|
|
173
|
+
: undefined;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* A bare rowset: a top-level array (library-counted), the app's `rowsAt` key
|
|
177
|
+
* or the dataset ticket left where those rows were (app-counted).
|
|
178
|
+
*/
|
|
179
|
+
function rowsetReading(data, rowsAt) {
|
|
180
|
+
if (Array.isArray(data))
|
|
181
|
+
return counted(data.length, 'library', []);
|
|
182
|
+
if (!isRecord(data))
|
|
183
|
+
return { emptiness: 'unknown', undeclaredShape: false };
|
|
184
|
+
// The library's own placement: the whole result is in the store, and its ticket counts bytes.
|
|
185
|
+
if ((0, placement_js_1.isPlacedToolResult)(data))
|
|
186
|
+
return UNCOUNTED_TICKET;
|
|
187
|
+
if (rowsAt === undefined)
|
|
123
188
|
return { emptiness: 'unknown', undeclaredShape: true };
|
|
189
|
+
// Own keys only. A key set to `undefined` is gone too — its JSON (the history, a saved
|
|
190
|
+
// recording) drops it, and the live value must read the same.
|
|
191
|
+
const rows = Object.hasOwn(data, rowsAt) ? data[rowsAt] : undefined;
|
|
192
|
+
if (Array.isArray(rows))
|
|
193
|
+
return counted(rows.length, 'app', [rowsAt], rowsAt);
|
|
194
|
+
// Moved, not merely beside: a key still in the value is read as the value holds it.
|
|
195
|
+
const found = rows === undefined ? ticketFor(data, rowsAt) : undefined;
|
|
196
|
+
if (found === undefined) {
|
|
197
|
+
return { emptiness: 'unknown', rowsAt, undeclaredShape: false, rowsUnread: 'no-list' };
|
|
124
198
|
}
|
|
125
|
-
|
|
199
|
+
const n = found.ticket.rows;
|
|
200
|
+
return typeof n === 'number' && Number.isSafeInteger(n) && n >= 0
|
|
201
|
+
? counted(n, 'app', [...found.at, 'rows'], rowsAt)
|
|
202
|
+
: { ...UNCOUNTED_TICKET, rowsAt };
|
|
126
203
|
}
|
|
127
204
|
/** The data a recorded described envelope carries, per kind — or `undefined` when it cannot be read. */
|
|
128
205
|
function describedReading(envelope) {
|
|
@@ -183,12 +260,14 @@ function boundedReading(data, door, rowsAt, depth) {
|
|
|
183
260
|
return rowsetReading(data, rowsAt);
|
|
184
261
|
if (depth >= MAX_BOUND_DEPTH)
|
|
185
262
|
return { emptiness: 'unknown', undeclaredShape: false };
|
|
186
|
-
const
|
|
263
|
+
const read = boundedReading(covered.result, door, rowsAt, depth + 1);
|
|
264
|
+
// The count sits under the boundary's `result`.
|
|
265
|
+
const inner = read.countedAt !== undefined ? { ...read, countedAt: ['result', ...read.countedAt] } : read;
|
|
187
266
|
// An empty rowset inside a declared boundary is a declared absence — the same meaning, the same reading.
|
|
188
267
|
if (inner.emptiness === 'undeclared-empty') {
|
|
189
|
-
const { undeclaredShape: _shape, ...
|
|
268
|
+
const { undeclaredShape: _shape, ...rest } = inner;
|
|
190
269
|
void _shape;
|
|
191
|
-
return { ...
|
|
270
|
+
return { ...rest, emptiness: 'declared-absent', bounded: true, undeclaredShape: false };
|
|
192
271
|
}
|
|
193
272
|
return { ...inner, bounded: true };
|
|
194
273
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emptiness.js","sourceRoot":"","sources":["../../../../src/core/agent/coverage/emptiness.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"emptiness.js","sourceRoot":"","sources":["../../../../src/core/agent/coverage/emptiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -80,7 +80,7 @@ export const REASONS = Object.freeze([
|
|
|
80
80
|
reason: 'empty-undeclared',
|
|
81
81
|
layer: 3,
|
|
82
82
|
class: 'not-sure',
|
|
83
|
-
reads: 'history: an empty rowset (a top-level array,
|
|
83
|
+
reads: 'history: an empty rowset (a top-level array, the app’s rowsAt key, or the dataset ticket left where those rows were, counting 0) whose call has no coverage row',
|
|
84
84
|
},
|
|
85
85
|
{
|
|
86
86
|
reason: 'period-not-held',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reasons.js","sourceRoot":"","sources":["../../../../../src/core/agent/assessment/reasons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAaH,sFAAsF;AACtF,MAAM,CAAC,MAAM,OAAO,GAA2B,MAAM,CAAC,MAAM,CAAC;IAC3D;QACE,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,KAAK;QACZ,KAAK,EACH,gJAAgJ;KACnJ;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,KAAK;QACZ,KAAK,EACH,yLAAyL;KAC5L;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,KAAK,EACH,iNAAiN;KACpN;IACD;QACE,MAAM,EAAE,qBAAqB;QAC7B,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,KAAK,EACH,0JAA0J;KAC7J;IACD;QACE,MAAM,EAAE,eAAe;QACvB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,KAAK,EACH,4LAA4L;KAC/L;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,KAAK,EACH,8JAA8J;KACjK;IACD;QACE,MAAM,EAAE,cAAc;QACtB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,KAAK,EACH,+JAA+J;KAClK;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,KAAK,EACH,iOAAiO;KACpO;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,KAAK,EACH,
|
|
1
|
+
{"version":3,"file":"reasons.js","sourceRoot":"","sources":["../../../../../src/core/agent/assessment/reasons.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
* Pattern: typed routes over two inputs — the value the MODEL read, and the
|
|
5
5
|
* door the RECORD says the call returned — and never a guess.
|
|
6
6
|
* Role: core/ layer, pure. It imports the recognizers only
|
|
7
|
-
* (`coverage/recognize.ts
|
|
7
|
+
* (`coverage/recognize.ts`; the artifact ref grammar and the
|
|
8
|
+
* placement ticket's guard, `artifacts/naming.ts`,
|
|
9
|
+
* `artifacts/placement.ts`), never a mint, so a post-hoc reader
|
|
8
10
|
* loads it without the tool-name checks and refusal sentences.
|
|
9
11
|
* Callers: the `/observe` answer account (`lib/answer-account/facts/calls.ts`
|
|
10
12
|
* for this run's calls, `lib/answer-account/facts/inView.ts` for an
|
|
@@ -24,9 +26,40 @@
|
|
|
24
26
|
* | a `describedResult()` with only `clarify` | `clarify` — a question handed back, no data | — |
|
|
25
27
|
* | a `coverage()` envelope | its wrapped `result`, read by these same routes, marked `bounded`; an empty wrapped rowset reads `declared-absent` | library or app |
|
|
26
28
|
* | a bare top-level array | `undeclared-empty` or `non-empty` | library |
|
|
29
|
+
* | the library's placement ticket (`placedToolResult`) — the whole result is in the store | `unknown`, said: the ticket counts bytes, never rows | — |
|
|
27
30
|
* | an object whose key the app declared in `rowsAt` | `undeclared-empty` or `non-empty` | app |
|
|
31
|
+
* | an object whose `rowsAt` rows went to the store — the dataset ticket left in their place | the ticket's whole-number `rows`: `undeclared-empty` (0) or `non-empty`; no count → `unknown`, said | app |
|
|
32
|
+
* | an object with no list and no ticket at the declared `rowsAt` | `unknown`, said: the declared key holds no list | — |
|
|
28
33
|
* | anything else | `unknown` — the record cannot read it | — |
|
|
29
34
|
*
|
|
35
|
+
* ## Rows that travel by reference
|
|
36
|
+
*
|
|
37
|
+
* A projection may move a rowset out of the value the model reads and leave a
|
|
38
|
+
* TICKET to the artifact store in its place — `withDatasetArtifacts` /
|
|
39
|
+
* `stageDatasetArtifacts` stage the rows, and a projection (or an after-tool
|
|
40
|
+
* `allow(replacement)`) keeps the ticket and drops the rows. The library's
|
|
41
|
+
* spelling of that ticket, the one this reader counts:
|
|
42
|
+
*
|
|
43
|
+
* ```ts
|
|
44
|
+
* { …, datasets: { rows: { ref: 'art_…', kind: 'dataset/rows', rows: 2, sourceField: 'rows' } },
|
|
45
|
+
* dataset: { ref: 'art_…', kind: 'dataset/rows', rows: 2, sourceField: 'rows' } } // the principal one
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* `ref` is a store ref (`isArtifactRef`), `rows` the whole-number row count,
|
|
49
|
+
* `sourceField` the result key the rows came from. The ticket is read only for
|
|
50
|
+
* the key the APP declared (`rowsAt`), only when that key is gone from the
|
|
51
|
+
* value (moved, not merely beside it), and only when the ticket names it —
|
|
52
|
+
* keyed under `datasets[rowsAt]` (a `sourceField`, when present, agreeing) or
|
|
53
|
+
* the principal `dataset` with `sourceField: rowsAt`. Two declarations meet
|
|
54
|
+
* there: the app's key and the ticket's field. A ticket with no whole-number
|
|
55
|
+
* `rows` is never guessed: whether the result was empty cannot be told, and
|
|
56
|
+
* the reading says why (`rowsUnread`). The library's own placement ticket
|
|
57
|
+
* (`artifacts/placement.ts`) puts the WHOLE result in the store and counts
|
|
58
|
+
* bytes, so it reads the same way. Take 4 of the demo video: a ticketed
|
|
59
|
+
* `pscale_client_health` (2 rows, `sourceField: 'rows'`, the app's `rowsAt:
|
|
60
|
+
* 'rows'`) read as "its shape is not declared", and the account's tone stayed
|
|
61
|
+
* unknown.
|
|
62
|
+
*
|
|
30
63
|
* ## The door decides, when the record holds one
|
|
31
64
|
*
|
|
32
65
|
* A marker in the bytes is not a declaration: an envelope a tool returned as
|
|
@@ -113,12 +146,28 @@ export interface EmptinessReading {
|
|
|
113
146
|
readonly source?: 'library' | 'app';
|
|
114
147
|
/** The rows key the reading used (the app's `rowsAt`), when it used one. */
|
|
115
148
|
readonly rowsAt?: string;
|
|
149
|
+
/**
|
|
150
|
+
* Where in the value read the count was taken (path segments; `[]` the value
|
|
151
|
+
* itself; `result` for each declared boundary read through): the rowset, or
|
|
152
|
+
* the `rows` of the dataset ticket standing for it.
|
|
153
|
+
*/
|
|
154
|
+
readonly countedAt?: readonly string[];
|
|
116
155
|
/** A described result's data, per kind. */
|
|
117
156
|
readonly described?: DescribedCounts;
|
|
118
157
|
/** Read through a declared `coverage()` boundary. */
|
|
119
158
|
readonly bounded?: true;
|
|
120
159
|
/** An object result with no declared shape — whether it was empty cannot be told. */
|
|
121
160
|
readonly undeclaredShape: boolean;
|
|
161
|
+
/**
|
|
162
|
+
* Why the rows could not be counted when the shape IS known — so a reader
|
|
163
|
+
* never says "not declared" of a declared key:
|
|
164
|
+
* - `no-list` — the app declared `rowsAt`, and the value holds neither a list
|
|
165
|
+
* there nor a ticket standing for it;
|
|
166
|
+
* - `uncounted-ticket` — the rows went to the artifact store and the ticket
|
|
167
|
+
* left in their place carries no whole-number count (a dataset ticket
|
|
168
|
+
* without `rows`, or the library's placement ticket, which counts bytes).
|
|
169
|
+
*/
|
|
170
|
+
readonly rowsUnread?: 'no-list' | 'uncounted-ticket';
|
|
122
171
|
}
|
|
123
172
|
/**
|
|
124
173
|
* The ONE rule for an app's declared rows key: a non-empty TOP-LEVEL key of the
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
* Pattern: typed routes over two inputs — the value the MODEL read, and the
|
|
5
5
|
* door the RECORD says the call returned — and never a guess.
|
|
6
6
|
* Role: core/ layer, pure. It imports the recognizers only
|
|
7
|
-
* (`coverage/recognize.ts
|
|
7
|
+
* (`coverage/recognize.ts`; the artifact ref grammar and the
|
|
8
|
+
* placement ticket's guard, `artifacts/naming.ts`,
|
|
9
|
+
* `artifacts/placement.ts`), never a mint, so a post-hoc reader
|
|
8
10
|
* loads it without the tool-name checks and refusal sentences.
|
|
9
11
|
* Callers: the `/observe` answer account (`lib/answer-account/facts/calls.ts`
|
|
10
12
|
* for this run's calls, `lib/answer-account/facts/inView.ts` for an
|
|
@@ -24,9 +26,40 @@
|
|
|
24
26
|
* | a `describedResult()` with only `clarify` | `clarify` — a question handed back, no data | — |
|
|
25
27
|
* | a `coverage()` envelope | its wrapped `result`, read by these same routes, marked `bounded`; an empty wrapped rowset reads `declared-absent` | library or app |
|
|
26
28
|
* | a bare top-level array | `undeclared-empty` or `non-empty` | library |
|
|
29
|
+
* | the library's placement ticket (`placedToolResult`) — the whole result is in the store | `unknown`, said: the ticket counts bytes, never rows | — |
|
|
27
30
|
* | an object whose key the app declared in `rowsAt` | `undeclared-empty` or `non-empty` | app |
|
|
31
|
+
* | an object whose `rowsAt` rows went to the store — the dataset ticket left in their place | the ticket's whole-number `rows`: `undeclared-empty` (0) or `non-empty`; no count → `unknown`, said | app |
|
|
32
|
+
* | an object with no list and no ticket at the declared `rowsAt` | `unknown`, said: the declared key holds no list | — |
|
|
28
33
|
* | anything else | `unknown` — the record cannot read it | — |
|
|
29
34
|
*
|
|
35
|
+
* ## Rows that travel by reference
|
|
36
|
+
*
|
|
37
|
+
* A projection may move a rowset out of the value the model reads and leave a
|
|
38
|
+
* TICKET to the artifact store in its place — `withDatasetArtifacts` /
|
|
39
|
+
* `stageDatasetArtifacts` stage the rows, and a projection (or an after-tool
|
|
40
|
+
* `allow(replacement)`) keeps the ticket and drops the rows. The library's
|
|
41
|
+
* spelling of that ticket, the one this reader counts:
|
|
42
|
+
*
|
|
43
|
+
* ```ts
|
|
44
|
+
* { …, datasets: { rows: { ref: 'art_…', kind: 'dataset/rows', rows: 2, sourceField: 'rows' } },
|
|
45
|
+
* dataset: { ref: 'art_…', kind: 'dataset/rows', rows: 2, sourceField: 'rows' } } // the principal one
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* `ref` is a store ref (`isArtifactRef`), `rows` the whole-number row count,
|
|
49
|
+
* `sourceField` the result key the rows came from. The ticket is read only for
|
|
50
|
+
* the key the APP declared (`rowsAt`), only when that key is gone from the
|
|
51
|
+
* value (moved, not merely beside it), and only when the ticket names it —
|
|
52
|
+
* keyed under `datasets[rowsAt]` (a `sourceField`, when present, agreeing) or
|
|
53
|
+
* the principal `dataset` with `sourceField: rowsAt`. Two declarations meet
|
|
54
|
+
* there: the app's key and the ticket's field. A ticket with no whole-number
|
|
55
|
+
* `rows` is never guessed: whether the result was empty cannot be told, and
|
|
56
|
+
* the reading says why (`rowsUnread`). The library's own placement ticket
|
|
57
|
+
* (`artifacts/placement.ts`) puts the WHOLE result in the store and counts
|
|
58
|
+
* bytes, so it reads the same way. Take 4 of the demo video: a ticketed
|
|
59
|
+
* `pscale_client_health` (2 rows, `sourceField: 'rows'`, the app's `rowsAt:
|
|
60
|
+
* 'rows'`) read as "its shape is not declared", and the account's tone stayed
|
|
61
|
+
* unknown.
|
|
62
|
+
*
|
|
30
63
|
* ## The door decides, when the record holds one
|
|
31
64
|
*
|
|
32
65
|
* A marker in the bytes is not a declaration: an envelope a tool returned as
|
|
@@ -59,6 +92,8 @@
|
|
|
59
92
|
* Recognizing JSON-text envelopes at run time belongs at the execute boundary,
|
|
60
93
|
* with one owner, not in a reader.
|
|
61
94
|
*/
|
|
95
|
+
import { isArtifactRef } from '../../../artifacts/naming.js';
|
|
96
|
+
import { isPlacedToolResult } from '../../../artifacts/placement.js';
|
|
62
97
|
import { readAbsence, readCoverageLedger } from './recognize.js';
|
|
63
98
|
/** How deep `coverage(coverage(…))` is read before the reading gives up (`unknown`). */
|
|
64
99
|
const MAX_BOUND_DEPTH = 8;
|
|
@@ -95,29 +130,71 @@ const DECLARED_ABSENT = Object.freeze({
|
|
|
95
130
|
emptiness: 'declared-absent',
|
|
96
131
|
undeclaredShape: false,
|
|
97
132
|
});
|
|
98
|
-
/** A
|
|
99
|
-
function
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
133
|
+
/** A count of rows: `undeclared-empty` at zero, `non-empty` above it. */
|
|
134
|
+
function counted(rows, source, countedAt, rowsAt) {
|
|
135
|
+
return {
|
|
136
|
+
emptiness: rows === 0 ? 'undeclared-empty' : 'non-empty',
|
|
137
|
+
rows,
|
|
138
|
+
source,
|
|
139
|
+
...(rowsAt !== undefined && { rowsAt }),
|
|
140
|
+
countedAt,
|
|
141
|
+
undeclaredShape: false,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
const UNCOUNTED_TICKET = Object.freeze({
|
|
145
|
+
emptiness: 'unknown',
|
|
146
|
+
undeclaredShape: false,
|
|
147
|
+
rowsUnread: 'uncounted-ticket',
|
|
148
|
+
});
|
|
149
|
+
/** A ticket to the artifact store: an object whose `ref` is a store ref. */
|
|
150
|
+
const isTicket = (value) => isRecord(value) && isArtifactRef(value.ref);
|
|
151
|
+
/**
|
|
152
|
+
* The dataset ticket standing for the declared rows key — `datasets[rowsAt]`
|
|
153
|
+
* (its `sourceField`, when present, naming that key) or the principal
|
|
154
|
+
* `dataset` with `sourceField: rowsAt` — with where it sits. See "Rows that
|
|
155
|
+
* travel by reference" in the header.
|
|
156
|
+
*/
|
|
157
|
+
function ticketFor(data, rowsAt) {
|
|
158
|
+
const all = data.datasets;
|
|
159
|
+
if (isRecord(all) && Object.hasOwn(all, rowsAt)) {
|
|
160
|
+
const ticket = all[rowsAt];
|
|
161
|
+
if (isTicket(ticket) && (ticket.sourceField === undefined || ticket.sourceField === rowsAt)) {
|
|
162
|
+
return { ticket, at: ['datasets', rowsAt] };
|
|
117
163
|
}
|
|
164
|
+
}
|
|
165
|
+
const principal = data.dataset;
|
|
166
|
+
return isTicket(principal) && principal.sourceField === rowsAt
|
|
167
|
+
? { ticket: principal, at: ['dataset'] }
|
|
168
|
+
: undefined;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* A bare rowset: a top-level array (library-counted), the app's `rowsAt` key
|
|
172
|
+
* or the dataset ticket left where those rows were (app-counted).
|
|
173
|
+
*/
|
|
174
|
+
function rowsetReading(data, rowsAt) {
|
|
175
|
+
if (Array.isArray(data))
|
|
176
|
+
return counted(data.length, 'library', []);
|
|
177
|
+
if (!isRecord(data))
|
|
178
|
+
return { emptiness: 'unknown', undeclaredShape: false };
|
|
179
|
+
// The library's own placement: the whole result is in the store, and its ticket counts bytes.
|
|
180
|
+
if (isPlacedToolResult(data))
|
|
181
|
+
return UNCOUNTED_TICKET;
|
|
182
|
+
if (rowsAt === undefined)
|
|
118
183
|
return { emptiness: 'unknown', undeclaredShape: true };
|
|
184
|
+
// Own keys only. A key set to `undefined` is gone too — its JSON (the history, a saved
|
|
185
|
+
// recording) drops it, and the live value must read the same.
|
|
186
|
+
const rows = Object.hasOwn(data, rowsAt) ? data[rowsAt] : undefined;
|
|
187
|
+
if (Array.isArray(rows))
|
|
188
|
+
return counted(rows.length, 'app', [rowsAt], rowsAt);
|
|
189
|
+
// Moved, not merely beside: a key still in the value is read as the value holds it.
|
|
190
|
+
const found = rows === undefined ? ticketFor(data, rowsAt) : undefined;
|
|
191
|
+
if (found === undefined) {
|
|
192
|
+
return { emptiness: 'unknown', rowsAt, undeclaredShape: false, rowsUnread: 'no-list' };
|
|
119
193
|
}
|
|
120
|
-
|
|
194
|
+
const n = found.ticket.rows;
|
|
195
|
+
return typeof n === 'number' && Number.isSafeInteger(n) && n >= 0
|
|
196
|
+
? counted(n, 'app', [...found.at, 'rows'], rowsAt)
|
|
197
|
+
: { ...UNCOUNTED_TICKET, rowsAt };
|
|
121
198
|
}
|
|
122
199
|
/** The data a recorded described envelope carries, per kind — or `undefined` when it cannot be read. */
|
|
123
200
|
function describedReading(envelope) {
|
|
@@ -177,12 +254,14 @@ function boundedReading(data, door, rowsAt, depth) {
|
|
|
177
254
|
return rowsetReading(data, rowsAt);
|
|
178
255
|
if (depth >= MAX_BOUND_DEPTH)
|
|
179
256
|
return { emptiness: 'unknown', undeclaredShape: false };
|
|
180
|
-
const
|
|
257
|
+
const read = boundedReading(covered.result, door, rowsAt, depth + 1);
|
|
258
|
+
// The count sits under the boundary's `result`.
|
|
259
|
+
const inner = read.countedAt !== undefined ? { ...read, countedAt: ['result', ...read.countedAt] } : read;
|
|
181
260
|
// An empty rowset inside a declared boundary is a declared absence — the same meaning, the same reading.
|
|
182
261
|
if (inner.emptiness === 'undeclared-empty') {
|
|
183
|
-
const { undeclaredShape: _shape, ...
|
|
262
|
+
const { undeclaredShape: _shape, ...rest } = inner;
|
|
184
263
|
void _shape;
|
|
185
|
-
return { ...
|
|
264
|
+
return { ...rest, emptiness: 'declared-absent', bounded: true, undeclaredShape: false };
|
|
186
265
|
}
|
|
187
266
|
return { ...inner, bounded: true };
|
|
188
267
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emptiness.js","sourceRoot":"","sources":["../../../../../src/core/agent/coverage/emptiness.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"emptiness.js","sourceRoot":"","sources":["../../../../../src/core/agent/coverage/emptiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ import { chip, clipFact, MAX_VAR_CHARS, saidBy, sentence } from './render.js';
|
|
|
16
16
|
import { ANSWER_ACCOUNT_TEMPLATE_SET_VERSION } from './templates.js';
|
|
17
17
|
import { validateDeclarations } from './declarations.js';
|
|
18
18
|
import { isRecord, num, str, recordingView } from './view.js';
|
|
19
|
-
import { at, derived, makeSay, stateAt, } from './facts/common.js';
|
|
19
|
+
import { at, countedFields, derived, makeSay, stateAt, } from './facts/common.js';
|
|
20
20
|
import { readAsked } from './facts/asked.js';
|
|
21
21
|
import { readUnderstood } from './facts/understood.js';
|
|
22
22
|
import { FACT_TEXT_CHARS, MAX_CALLS, readCalls } from './facts/calls.js';
|
|
@@ -338,8 +338,7 @@ function beforePauseFact(c) {
|
|
|
338
338
|
toolName: c.toolName.slice(0, FACT_TEXT_CHARS),
|
|
339
339
|
toolCallId: c.toolCallId.slice(0, FACT_TEXT_CHARS),
|
|
340
340
|
emptiness: reading.emptiness,
|
|
341
|
-
...(reading
|
|
342
|
-
...(reading.source !== undefined && { emptinessSource: reading.source }),
|
|
341
|
+
...countedFields(reading),
|
|
343
342
|
...(coverage !== undefined && {
|
|
344
343
|
coverage: {
|
|
345
344
|
kind: coverage.kind,
|