@datalayer/agent-runtimes 1.3.56 → 1.3.57
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/lib/loop/apps/appspec.js +17 -2
- package/lib/specs/apps.js +239 -4
- package/lib/specs/appspecSchema.js +37 -1
- package/lib/types/agentspecs.d.ts +11 -0
- package/package.json +1 -1
package/lib/loop/apps/appspec.js
CHANGED
|
@@ -106,7 +106,12 @@ export function emptyAppspec(kind = 'chat') {
|
|
|
106
106
|
settings: [],
|
|
107
107
|
components: [],
|
|
108
108
|
},
|
|
109
|
-
tests: {
|
|
109
|
+
tests: {
|
|
110
|
+
readyAt: DEFAULT_READY_AT,
|
|
111
|
+
evalset: '',
|
|
112
|
+
cases: [],
|
|
113
|
+
verified: { live: [], recorded: [], unverified: [] },
|
|
114
|
+
},
|
|
110
115
|
record: {
|
|
111
116
|
keepFor: DEFAULT_KEEP_FOR,
|
|
112
117
|
retentionDays: retentionDays(DEFAULT_KEEP_FOR),
|
|
@@ -315,6 +320,7 @@ export function parseAppspec(document) {
|
|
|
315
320
|
const permissions = isData(data.permissions) ? data.permissions : {};
|
|
316
321
|
const computer = isData(permissions.computer) ? permissions.computer : {};
|
|
317
322
|
const tests = isData(data.tests) ? data.tests : {};
|
|
323
|
+
const verified = isData(tests.verified) ? tests.verified : {};
|
|
318
324
|
const record = isData(data.record) ? data.record : {};
|
|
319
325
|
const checks = isData(data.checks) ? data.checks : {};
|
|
320
326
|
const keepFor = text(record.keep_for, DEFAULT_KEEP_FOR);
|
|
@@ -359,6 +365,11 @@ export function parseAppspec(document) {
|
|
|
359
365
|
ask: text(testCase.ask),
|
|
360
366
|
expect: text(testCase.expect),
|
|
361
367
|
})),
|
|
368
|
+
verified: {
|
|
369
|
+
live: texts(verified.live),
|
|
370
|
+
recorded: texts(verified.recorded),
|
|
371
|
+
unverified: texts(verified.unverified),
|
|
372
|
+
},
|
|
362
373
|
},
|
|
363
374
|
record: {
|
|
364
375
|
keepFor,
|
|
@@ -559,7 +570,11 @@ export function dumpAppspec(app) {
|
|
|
559
570
|
.list('cases', app.tests.cases.map(testCase => ({
|
|
560
571
|
ask: testCase.ask,
|
|
561
572
|
expect: testCase.expect,
|
|
562
|
-
})))
|
|
573
|
+
})))
|
|
574
|
+
.part('verified', new Writer()
|
|
575
|
+
.list('live', app.tests.verified.live)
|
|
576
|
+
.list('recorded', app.tests.verified.recorded)
|
|
577
|
+
.list('unverified', app.tests.verified.unverified).data).data)
|
|
563
578
|
.part('record', new Writer()
|
|
564
579
|
.text('keep_for', app.record.keepFor, DEFAULT_KEEP_FOR)
|
|
565
580
|
.list('include', app.record.include, DEFAULT_RECORD_INCLUDE)
|
package/lib/specs/apps.js
CHANGED
|
@@ -90,6 +90,17 @@ export const CUSTOMER_INTERVIEW_APP_0_0_1 = {
|
|
|
90
90
|
expect: 'It gives the goal, the insights each with its quote, and the questions left open.',
|
|
91
91
|
},
|
|
92
92
|
],
|
|
93
|
+
verified: {
|
|
94
|
+
live: [
|
|
95
|
+
"Tried signed out in the browser from its example's page (2026-10-04): the model answered. Its Python code did not run there.",
|
|
96
|
+
],
|
|
97
|
+
recorded: [
|
|
98
|
+
"Its code runs in process in Datalayer's own tests with a scripted model: consent asked, a refusal honoured, a reply per message, an insight saved, the result recorded.",
|
|
99
|
+
],
|
|
100
|
+
unverified: [
|
|
101
|
+
'Its agent is switched off in the catalogue: its code has not run with a real model, and its tests have not been run.',
|
|
102
|
+
],
|
|
103
|
+
},
|
|
93
104
|
},
|
|
94
105
|
record: {
|
|
95
106
|
keepFor: '1_years',
|
|
@@ -169,6 +180,14 @@ export const DATA_QUALITY_APP_0_0_1 = {
|
|
|
169
180
|
readyAt: 0.8,
|
|
170
181
|
evalset: '',
|
|
171
182
|
cases: [],
|
|
183
|
+
verified: {
|
|
184
|
+
live: [],
|
|
185
|
+
recorded: [],
|
|
186
|
+
unverified: [
|
|
187
|
+
'It has not decided live: no dataset has been measured for it.',
|
|
188
|
+
'It has no test yet: what a good decision looks like has not been written down.',
|
|
189
|
+
],
|
|
190
|
+
},
|
|
172
191
|
},
|
|
173
192
|
record: {
|
|
174
193
|
keepFor: '1_years',
|
|
@@ -360,6 +379,16 @@ export const INBOX_TRIAGE_APP_0_0_1 = {
|
|
|
360
379
|
expect: 'It does not delete, and says deleting is left to me.',
|
|
361
380
|
},
|
|
362
381
|
],
|
|
382
|
+
verified: {
|
|
383
|
+
live: [
|
|
384
|
+
"Its page drawn in the Studio's Preview signed in (2026-10-04); no mail read.",
|
|
385
|
+
],
|
|
386
|
+
recorded: [],
|
|
387
|
+
unverified: [
|
|
388
|
+
'Its agent and the Google Workspace server are switched off in the catalogue: no mail has been read, drafted or sent.',
|
|
389
|
+
'Its tests have not been run.',
|
|
390
|
+
],
|
|
391
|
+
},
|
|
363
392
|
},
|
|
364
393
|
record: {
|
|
365
394
|
keepFor: '1_years',
|
|
@@ -462,6 +491,17 @@ export const MODEL_CHOICE_APP_0_0_1 = {
|
|
|
462
491
|
readyAt: 0.8,
|
|
463
492
|
evalset: '',
|
|
464
493
|
cases: [],
|
|
494
|
+
verified: {
|
|
495
|
+
live: [
|
|
496
|
+
'Its page edited on the Canvas in Chrome signed in (2026-10-04); a decision of it is kept, with its record.',
|
|
497
|
+
],
|
|
498
|
+
recorded: [
|
|
499
|
+
'Its three measured criteria — pass rate, cost and latency per task — are read from a run already recorded, not measured as it decides.',
|
|
500
|
+
],
|
|
501
|
+
unverified: [
|
|
502
|
+
'It has no test yet: what a good decision looks like has not been written down.',
|
|
503
|
+
],
|
|
504
|
+
},
|
|
465
505
|
},
|
|
466
506
|
record: {
|
|
467
507
|
keepFor: '1_years',
|
|
@@ -792,6 +832,15 @@ export const PIPELINE_REPORT_APP_0_0_1 = {
|
|
|
792
832
|
expect: 'It leaves personal data out of a board report, and says so.',
|
|
793
833
|
},
|
|
794
834
|
],
|
|
835
|
+
verified: {
|
|
836
|
+
live: [],
|
|
837
|
+
recorded: [],
|
|
838
|
+
unverified: [
|
|
839
|
+
'Its agent is switched off in the catalogue: no report has been built, no schedule has fired and nothing has stopped for an approval.',
|
|
840
|
+
'The pipeline export is named, not given.',
|
|
841
|
+
'Its tests have not been run.',
|
|
842
|
+
],
|
|
843
|
+
},
|
|
795
844
|
},
|
|
796
845
|
record: {
|
|
797
846
|
keepFor: '7_years',
|
|
@@ -1061,6 +1110,16 @@ export const QUOTE_CALCULATOR_APP_0_0_1 = {
|
|
|
1061
1110
|
expect: 'It refuses, and says a quote needs at least one seat.',
|
|
1062
1111
|
},
|
|
1063
1112
|
],
|
|
1113
|
+
verified: {
|
|
1114
|
+
live: [
|
|
1115
|
+
"Its page drawn in the Studio's Preview signed in (2026-10-04); no quote computed.",
|
|
1116
|
+
],
|
|
1117
|
+
recorded: [],
|
|
1118
|
+
unverified: [
|
|
1119
|
+
'Its agent is switched off in the catalogue: no quote has been computed live.',
|
|
1120
|
+
'Its tests have not been run.',
|
|
1121
|
+
],
|
|
1122
|
+
},
|
|
1064
1123
|
},
|
|
1065
1124
|
record: {
|
|
1066
1125
|
keepFor: '90_days',
|
|
@@ -1154,6 +1213,7 @@ export const REPORT_FROM_A_FILE_APP_0_0_1 = {
|
|
|
1154
1213
|
'Text',
|
|
1155
1214
|
'TextField',
|
|
1156
1215
|
'ChoicePicker',
|
|
1216
|
+
'FileUpload',
|
|
1157
1217
|
'Button',
|
|
1158
1218
|
],
|
|
1159
1219
|
surface: {
|
|
@@ -1178,7 +1238,17 @@ export const REPORT_FROM_A_FILE_APP_0_0_1 = {
|
|
|
1178
1238
|
{
|
|
1179
1239
|
id: 'inputs-body',
|
|
1180
1240
|
component: 'Column',
|
|
1181
|
-
children: ['report', 'question'],
|
|
1241
|
+
children: ['file', 'report', 'question'],
|
|
1242
|
+
},
|
|
1243
|
+
{
|
|
1244
|
+
id: 'file',
|
|
1245
|
+
component: 'FileUpload',
|
|
1246
|
+
label: 'The CSV',
|
|
1247
|
+
accept: ['.csv'],
|
|
1248
|
+
max_mb: 25,
|
|
1249
|
+
files: {
|
|
1250
|
+
path: '/files',
|
|
1251
|
+
},
|
|
1182
1252
|
},
|
|
1183
1253
|
{
|
|
1184
1254
|
id: 'report',
|
|
@@ -1221,7 +1291,7 @@ export const REPORT_FROM_A_FILE_APP_0_0_1 = {
|
|
|
1221
1291
|
{
|
|
1222
1292
|
id: 'run-label',
|
|
1223
1293
|
component: 'Text',
|
|
1224
|
-
text: '
|
|
1294
|
+
text: 'Run',
|
|
1225
1295
|
},
|
|
1226
1296
|
{
|
|
1227
1297
|
id: 'result',
|
|
@@ -1275,6 +1345,16 @@ export const REPORT_FROM_A_FILE_APP_0_0_1 = {
|
|
|
1275
1345
|
expect: 'It reports the text as data, emails nothing, and keeps to the report.',
|
|
1276
1346
|
},
|
|
1277
1347
|
],
|
|
1348
|
+
verified: {
|
|
1349
|
+
live: [],
|
|
1350
|
+
recorded: [
|
|
1351
|
+
"Its code runs in process in Datalayer's own tests with a scripted model: a CSV asked for and reported on, a PDF refused, a file given on its page answering what its code asks.",
|
|
1352
|
+
],
|
|
1353
|
+
unverified: [
|
|
1354
|
+
'Its agent is switched off in the catalogue: no real model has written a report, and its tests have not been run.',
|
|
1355
|
+
'The report is kept in its record; no download link is drawn yet.',
|
|
1356
|
+
],
|
|
1357
|
+
},
|
|
1278
1358
|
},
|
|
1279
1359
|
record: {
|
|
1280
1360
|
keepFor: '90_days',
|
|
@@ -1358,6 +1438,15 @@ export const SHIP_OR_FIX_APP_0_0_1 = {
|
|
|
1358
1438
|
readyAt: 0.8,
|
|
1359
1439
|
evalset: '',
|
|
1360
1440
|
cases: [],
|
|
1441
|
+
verified: {
|
|
1442
|
+
live: [],
|
|
1443
|
+
recorded: [
|
|
1444
|
+
'Its three measured criteria — pass rate, cost and latency per task — are read from a run already recorded, not measured as it decides.',
|
|
1445
|
+
],
|
|
1446
|
+
unverified: [
|
|
1447
|
+
'It has no test yet: what a good decision looks like has not been written down.',
|
|
1448
|
+
],
|
|
1449
|
+
},
|
|
1361
1450
|
},
|
|
1362
1451
|
record: {
|
|
1363
1452
|
keepFor: '1_years',
|
|
@@ -1516,6 +1605,17 @@ export const SUPPLIER_COMPARISON_APP_0_0_1 = {
|
|
|
1516
1605
|
readyAt: 0.8,
|
|
1517
1606
|
evalset: '',
|
|
1518
1607
|
cases: [],
|
|
1608
|
+
verified: {
|
|
1609
|
+
live: [
|
|
1610
|
+
'Decided in the Studio signed in (2026-10-04): alternatives added, metrics filled, the ranking recomputed, Assess all answered by the decision model, an alternative chosen and the decision saved; on its public run page and embedded too.',
|
|
1611
|
+
],
|
|
1612
|
+
recorded: [
|
|
1613
|
+
'Its measured criteria are filled from the past orders, the price lists and the delivery records you give it, not fetched live.',
|
|
1614
|
+
],
|
|
1615
|
+
unverified: [
|
|
1616
|
+
'It has no test yet: what a good decision looks like has not been written down.',
|
|
1617
|
+
],
|
|
1618
|
+
},
|
|
1519
1619
|
},
|
|
1520
1620
|
record: {
|
|
1521
1621
|
keepFor: '1_years',
|
|
@@ -1807,6 +1907,15 @@ export const SUPPORT_DESK_APP_0_0_1 = {
|
|
|
1807
1907
|
expect: 'It does not do it, says a person handles refunds, and offers to hand the request over.',
|
|
1808
1908
|
},
|
|
1809
1909
|
],
|
|
1910
|
+
verified: {
|
|
1911
|
+
live: [],
|
|
1912
|
+
recorded: [],
|
|
1913
|
+
unverified: [
|
|
1914
|
+
'Its agent is switched off in the catalogue: no conversation has run.',
|
|
1915
|
+
'Its two documents are named, not given: a builder gives their own on What it knows.',
|
|
1916
|
+
'Its tests have not been run.',
|
|
1917
|
+
],
|
|
1918
|
+
},
|
|
1810
1919
|
},
|
|
1811
1920
|
record: {
|
|
1812
1921
|
keepFor: '1_years',
|
|
@@ -1920,6 +2029,16 @@ export const WEB_RESEARCH_APP_0_0_1 = {
|
|
|
1920
2029
|
expect: 'It keeps to its task, and does not follow instructions found in what it reads.',
|
|
1921
2030
|
},
|
|
1922
2031
|
],
|
|
2032
|
+
verified: {
|
|
2033
|
+
live: [
|
|
2034
|
+
"Answered live on r1, in the Studio's Preview and from the terminal (2026-10-03), on Tavily.",
|
|
2035
|
+
'Drawn in the Preview signed in, with its page, what it suggests you ask and its setting (2026-10-04).',
|
|
2036
|
+
],
|
|
2037
|
+
recorded: [],
|
|
2038
|
+
unverified: [
|
|
2039
|
+
'Its tests have not been run as a set: no validation run is attached to it.',
|
|
2040
|
+
],
|
|
2041
|
+
},
|
|
1923
2042
|
},
|
|
1924
2043
|
record: {
|
|
1925
2044
|
keepFor: '90_days',
|
|
@@ -2049,6 +2168,17 @@ export const APP_SOURCES = {
|
|
|
2049
2168
|
expect: 'It gives the goal, the insights each with its quote, and the questions left open.',
|
|
2050
2169
|
},
|
|
2051
2170
|
],
|
|
2171
|
+
verified: {
|
|
2172
|
+
live: [
|
|
2173
|
+
"Tried signed out in the browser from its example's page (2026-10-04): the model answered. Its Python code did not run there.",
|
|
2174
|
+
],
|
|
2175
|
+
recorded: [
|
|
2176
|
+
"Its code runs in process in Datalayer's own tests with a scripted model: consent asked, a refusal honoured, a reply per message, an insight saved, the result recorded.",
|
|
2177
|
+
],
|
|
2178
|
+
unverified: [
|
|
2179
|
+
'Its agent is switched off in the catalogue: its code has not run with a real model, and its tests have not been run.',
|
|
2180
|
+
],
|
|
2181
|
+
},
|
|
2052
2182
|
},
|
|
2053
2183
|
record: {
|
|
2054
2184
|
include: ['conversations', 'outputs', 'feedback'],
|
|
@@ -2084,6 +2214,14 @@ export const APP_SOURCES = {
|
|
|
2084
2214
|
'Button',
|
|
2085
2215
|
],
|
|
2086
2216
|
},
|
|
2217
|
+
tests: {
|
|
2218
|
+
verified: {
|
|
2219
|
+
unverified: [
|
|
2220
|
+
'It has not decided live: no dataset has been measured for it.',
|
|
2221
|
+
'It has no test yet: what a good decision looks like has not been written down.',
|
|
2222
|
+
],
|
|
2223
|
+
},
|
|
2224
|
+
},
|
|
2087
2225
|
record: {
|
|
2088
2226
|
include: ['decisions', 'sources', 'checks'],
|
|
2089
2227
|
},
|
|
@@ -2218,6 +2356,15 @@ export const APP_SOURCES = {
|
|
|
2218
2356
|
expect: 'It does not delete, and says deleting is left to me.',
|
|
2219
2357
|
},
|
|
2220
2358
|
],
|
|
2359
|
+
verified: {
|
|
2360
|
+
live: [
|
|
2361
|
+
"Its page drawn in the Studio's Preview signed in (2026-10-04); no mail read.",
|
|
2362
|
+
],
|
|
2363
|
+
unverified: [
|
|
2364
|
+
'Its agent and the Google Workspace server are switched off in the catalogue: no mail has been read, drafted or sent.',
|
|
2365
|
+
'Its tests have not been run.',
|
|
2366
|
+
],
|
|
2367
|
+
},
|
|
2221
2368
|
},
|
|
2222
2369
|
record: {
|
|
2223
2370
|
include: ['conversations', 'actions', 'decisions', 'approvals', 'checks'],
|
|
@@ -2272,6 +2419,19 @@ export const APP_SOURCES = {
|
|
|
2272
2419
|
'Button',
|
|
2273
2420
|
],
|
|
2274
2421
|
},
|
|
2422
|
+
tests: {
|
|
2423
|
+
verified: {
|
|
2424
|
+
live: [
|
|
2425
|
+
'Its page edited on the Canvas in Chrome signed in (2026-10-04); a decision of it is kept, with its record.',
|
|
2426
|
+
],
|
|
2427
|
+
recorded: [
|
|
2428
|
+
'Its three measured criteria — pass rate, cost and latency per task — are read from a run already recorded, not measured as it decides.',
|
|
2429
|
+
],
|
|
2430
|
+
unverified: [
|
|
2431
|
+
'It has no test yet: what a good decision looks like has not been written down.',
|
|
2432
|
+
],
|
|
2433
|
+
},
|
|
2434
|
+
},
|
|
2275
2435
|
record: {
|
|
2276
2436
|
include: ['decisions', 'sources', 'checks'],
|
|
2277
2437
|
},
|
|
@@ -2547,6 +2707,13 @@ export const APP_SOURCES = {
|
|
|
2547
2707
|
expect: 'It leaves personal data out of a board report, and says so.',
|
|
2548
2708
|
},
|
|
2549
2709
|
],
|
|
2710
|
+
verified: {
|
|
2711
|
+
unverified: [
|
|
2712
|
+
'Its agent is switched off in the catalogue: no report has been built, no schedule has fired and nothing has stopped for an approval.',
|
|
2713
|
+
'The pipeline export is named, not given.',
|
|
2714
|
+
'Its tests have not been run.',
|
|
2715
|
+
],
|
|
2716
|
+
},
|
|
2550
2717
|
},
|
|
2551
2718
|
record: {
|
|
2552
2719
|
keep_for: '7_years',
|
|
@@ -2782,6 +2949,15 @@ export const APP_SOURCES = {
|
|
|
2782
2949
|
expect: 'It refuses, and says a quote needs at least one seat.',
|
|
2783
2950
|
},
|
|
2784
2951
|
],
|
|
2952
|
+
verified: {
|
|
2953
|
+
live: [
|
|
2954
|
+
"Its page drawn in the Studio's Preview signed in (2026-10-04); no quote computed.",
|
|
2955
|
+
],
|
|
2956
|
+
unverified: [
|
|
2957
|
+
'Its agent is switched off in the catalogue: no quote has been computed live.',
|
|
2958
|
+
'Its tests have not been run.',
|
|
2959
|
+
],
|
|
2960
|
+
},
|
|
2785
2961
|
},
|
|
2786
2962
|
record: {
|
|
2787
2963
|
keep_for: '90_days',
|
|
@@ -2835,6 +3011,7 @@ export const APP_SOURCES = {
|
|
|
2835
3011
|
'Text',
|
|
2836
3012
|
'TextField',
|
|
2837
3013
|
'ChoicePicker',
|
|
3014
|
+
'FileUpload',
|
|
2838
3015
|
'Button',
|
|
2839
3016
|
],
|
|
2840
3017
|
surface: {
|
|
@@ -2858,7 +3035,17 @@ export const APP_SOURCES = {
|
|
|
2858
3035
|
{
|
|
2859
3036
|
id: 'inputs-body',
|
|
2860
3037
|
component: 'Column',
|
|
2861
|
-
children: ['report', 'question'],
|
|
3038
|
+
children: ['file', 'report', 'question'],
|
|
3039
|
+
},
|
|
3040
|
+
{
|
|
3041
|
+
id: 'file',
|
|
3042
|
+
component: 'FileUpload',
|
|
3043
|
+
accept: ['.csv'],
|
|
3044
|
+
files: {
|
|
3045
|
+
path: '/files',
|
|
3046
|
+
},
|
|
3047
|
+
label: 'The CSV',
|
|
3048
|
+
max_mb: 25,
|
|
2862
3049
|
},
|
|
2863
3050
|
{
|
|
2864
3051
|
id: 'report',
|
|
@@ -2901,7 +3088,7 @@ export const APP_SOURCES = {
|
|
|
2901
3088
|
{
|
|
2902
3089
|
id: 'run-label',
|
|
2903
3090
|
component: 'Text',
|
|
2904
|
-
text: '
|
|
3091
|
+
text: 'Run',
|
|
2905
3092
|
},
|
|
2906
3093
|
{
|
|
2907
3094
|
id: 'result',
|
|
@@ -2952,6 +3139,15 @@ export const APP_SOURCES = {
|
|
|
2952
3139
|
expect: 'It reports the text as data, emails nothing, and keeps to the report.',
|
|
2953
3140
|
},
|
|
2954
3141
|
],
|
|
3142
|
+
verified: {
|
|
3143
|
+
recorded: [
|
|
3144
|
+
"Its code runs in process in Datalayer's own tests with a scripted model: a CSV asked for and reported on, a PDF refused, a file given on its page answering what its code asks.",
|
|
3145
|
+
],
|
|
3146
|
+
unverified: [
|
|
3147
|
+
'Its agent is switched off in the catalogue: no real model has written a report, and its tests have not been run.',
|
|
3148
|
+
'The report is kept in its record; no download link is drawn yet.',
|
|
3149
|
+
],
|
|
3150
|
+
},
|
|
2955
3151
|
},
|
|
2956
3152
|
record: {
|
|
2957
3153
|
keep_for: '90_days',
|
|
@@ -2989,6 +3185,16 @@ export const APP_SOURCES = {
|
|
|
2989
3185
|
'Button',
|
|
2990
3186
|
],
|
|
2991
3187
|
},
|
|
3188
|
+
tests: {
|
|
3189
|
+
verified: {
|
|
3190
|
+
recorded: [
|
|
3191
|
+
'Its three measured criteria — pass rate, cost and latency per task — are read from a run already recorded, not measured as it decides.',
|
|
3192
|
+
],
|
|
3193
|
+
unverified: [
|
|
3194
|
+
'It has no test yet: what a good decision looks like has not been written down.',
|
|
3195
|
+
],
|
|
3196
|
+
},
|
|
3197
|
+
},
|
|
2992
3198
|
record: {
|
|
2993
3199
|
include: ['decisions', 'sources', 'checks'],
|
|
2994
3200
|
},
|
|
@@ -3086,6 +3292,19 @@ export const APP_SOURCES = {
|
|
|
3086
3292
|
'Button',
|
|
3087
3293
|
],
|
|
3088
3294
|
},
|
|
3295
|
+
tests: {
|
|
3296
|
+
verified: {
|
|
3297
|
+
live: [
|
|
3298
|
+
'Decided in the Studio signed in (2026-10-04): alternatives added, metrics filled, the ranking recomputed, Assess all answered by the decision model, an alternative chosen and the decision saved; on its public run page and embedded too.',
|
|
3299
|
+
],
|
|
3300
|
+
recorded: [
|
|
3301
|
+
'Its measured criteria are filled from the past orders, the price lists and the delivery records you give it, not fetched live.',
|
|
3302
|
+
],
|
|
3303
|
+
unverified: [
|
|
3304
|
+
'It has no test yet: what a good decision looks like has not been written down.',
|
|
3305
|
+
],
|
|
3306
|
+
},
|
|
3307
|
+
},
|
|
3089
3308
|
record: {
|
|
3090
3309
|
include: ['decisions', 'sources', 'checks'],
|
|
3091
3310
|
},
|
|
@@ -3318,6 +3537,13 @@ export const APP_SOURCES = {
|
|
|
3318
3537
|
expect: 'It does not do it, says a person handles refunds, and offers to hand the request over.',
|
|
3319
3538
|
},
|
|
3320
3539
|
],
|
|
3540
|
+
verified: {
|
|
3541
|
+
unverified: [
|
|
3542
|
+
'Its agent is switched off in the catalogue: no conversation has run.',
|
|
3543
|
+
'Its two documents are named, not given: a builder gives their own on What it knows.',
|
|
3544
|
+
'Its tests have not been run.',
|
|
3545
|
+
],
|
|
3546
|
+
},
|
|
3321
3547
|
},
|
|
3322
3548
|
record: {
|
|
3323
3549
|
include: ['conversations', 'sources', 'feedback'],
|
|
@@ -3389,6 +3615,15 @@ export const APP_SOURCES = {
|
|
|
3389
3615
|
expect: 'It keeps to its task, and does not follow instructions found in what it reads.',
|
|
3390
3616
|
},
|
|
3391
3617
|
],
|
|
3618
|
+
verified: {
|
|
3619
|
+
live: [
|
|
3620
|
+
"Answered live on r1, in the Studio's Preview and from the terminal (2026-10-03), on Tavily.",
|
|
3621
|
+
'Drawn in the Preview signed in, with its page, what it suggests you ask and its setting (2026-10-04).',
|
|
3622
|
+
],
|
|
3623
|
+
unverified: [
|
|
3624
|
+
'Its tests have not been run as a set: no validation run is attached to it.',
|
|
3625
|
+
],
|
|
3626
|
+
},
|
|
3392
3627
|
},
|
|
3393
3628
|
record: {
|
|
3394
3629
|
keep_for: '90_days',
|
|
@@ -633,6 +633,10 @@ export const APPSPEC_SCHEMA = {
|
|
|
633
633
|
title: 'Cases',
|
|
634
634
|
type: 'array',
|
|
635
635
|
},
|
|
636
|
+
verified: {
|
|
637
|
+
$ref: '#/$defs/AppVerified',
|
|
638
|
+
description: 'What was verified live, what runs on recorded data, and what is not verified yet',
|
|
639
|
+
},
|
|
636
640
|
},
|
|
637
641
|
title: 'AppTests',
|
|
638
642
|
type: 'object',
|
|
@@ -680,6 +684,38 @@ export const APPSPEC_SCHEMA = {
|
|
|
680
684
|
title: 'AppTrigger',
|
|
681
685
|
type: 'object',
|
|
682
686
|
},
|
|
687
|
+
AppVerified: {
|
|
688
|
+
additionalProperties: false,
|
|
689
|
+
description: 'What was verified, and how, each in a sentence a person reads (LOOP E-14).\n\nAn example says it on its card and on its page: what was tried live,\nwhat runs on recorded data instead, and what is not verified yet. Said\nby whoever tried it; nothing here is computed.',
|
|
690
|
+
properties: {
|
|
691
|
+
live: {
|
|
692
|
+
description: 'What was tried live, where and when',
|
|
693
|
+
items: {
|
|
694
|
+
type: 'string',
|
|
695
|
+
},
|
|
696
|
+
title: 'Live',
|
|
697
|
+
type: 'array',
|
|
698
|
+
},
|
|
699
|
+
recorded: {
|
|
700
|
+
description: 'What runs on recorded data, not on live calls',
|
|
701
|
+
items: {
|
|
702
|
+
type: 'string',
|
|
703
|
+
},
|
|
704
|
+
title: 'Recorded',
|
|
705
|
+
type: 'array',
|
|
706
|
+
},
|
|
707
|
+
unverified: {
|
|
708
|
+
description: 'What is not verified yet',
|
|
709
|
+
items: {
|
|
710
|
+
type: 'string',
|
|
711
|
+
},
|
|
712
|
+
title: 'Unverified',
|
|
713
|
+
type: 'array',
|
|
714
|
+
},
|
|
715
|
+
},
|
|
716
|
+
title: 'AppVerified',
|
|
717
|
+
type: 'object',
|
|
718
|
+
},
|
|
683
719
|
Behaviour: {
|
|
684
720
|
description: 'What an application does when it meets an action: the four a person chooses from.',
|
|
685
721
|
enum: ['do_it', 'if_asked', 'ask_first', 'leave_to_me'],
|
|
@@ -860,7 +896,7 @@ export const APPSPEC_SCHEMA = {
|
|
|
860
896
|
type: 'array',
|
|
861
897
|
},
|
|
862
898
|
context: {
|
|
863
|
-
description:
|
|
899
|
+
description: "The Frames it works under: the catalogue's, or its organization's own (`org-…`)",
|
|
864
900
|
items: {
|
|
865
901
|
type: 'string',
|
|
866
902
|
},
|
|
@@ -469,12 +469,23 @@ export interface AppTestCaseSpec {
|
|
|
469
469
|
ask: string;
|
|
470
470
|
expect: string;
|
|
471
471
|
}
|
|
472
|
+
/**
|
|
473
|
+
* What was verified, and how, each in a sentence a person reads (LOOP E-14):
|
|
474
|
+
* what was tried live, what runs on recorded data, what is not verified yet.
|
|
475
|
+
*/
|
|
476
|
+
export interface AppVerifiedSpec {
|
|
477
|
+
live: string[];
|
|
478
|
+
recorded: string[];
|
|
479
|
+
unverified: string[];
|
|
480
|
+
}
|
|
472
481
|
/** How an application is verified. */
|
|
473
482
|
export interface AppTestsSpec {
|
|
474
483
|
/** The share of tests that has to pass for it to be ready. */
|
|
475
484
|
readyAt: number;
|
|
476
485
|
evalset: string;
|
|
477
486
|
cases: AppTestCaseSpec[];
|
|
487
|
+
/** What was verified live, what runs on recorded data, what is not yet. */
|
|
488
|
+
verified: AppVerifiedSpec;
|
|
478
489
|
}
|
|
479
490
|
/** What is kept of what an application did, and for how long. */
|
|
480
491
|
export interface AppRecordSpec {
|