@ouispec/agent-worker 0.1.1 → 0.2.2
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/approvals/continuation.d.ts +14 -1
- package/dist/approvals/continuation.d.ts.map +1 -1
- package/dist/approvals/continuation.js +12 -2
- package/dist/approvals/continuation.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +406 -129
- package/dist/orchestrator.js.map +1 -1
- package/dist/prompt/clock.d.ts +34 -0
- package/dist/prompt/clock.d.ts.map +1 -0
- package/dist/prompt/clock.js +63 -0
- package/dist/prompt/clock.js.map +1 -0
- package/dist/prompt/rules/ui-control.d.ts +3 -3
- package/dist/prompt/rules/ui-control.d.ts.map +1 -1
- package/dist/prompt/rules/ui-control.js +45 -22
- package/dist/prompt/rules/ui-control.js.map +1 -1
- package/dist/runtime/turn-runner.d.ts.map +1 -1
- package/dist/runtime/turn-runner.js +3 -1
- package/dist/runtime/turn-runner.js.map +1 -1
- package/dist/runtime/types.d.ts +5 -3
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/tools/builtin-tools.js +11 -4
- package/dist/tools/builtin-tools.js.map +1 -1
- package/dist/tools/input-validation.d.ts +6 -0
- package/dist/tools/input-validation.d.ts.map +1 -1
- package/dist/tools/input-validation.js +50 -1
- package/dist/tools/input-validation.js.map +1 -1
- package/dist/tools/types.d.ts +17 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/turn-ledger.d.ts +30 -0
- package/dist/turn-ledger.d.ts.map +1 -0
- package/dist/turn-ledger.js +45 -0
- package/dist/turn-ledger.js.map +1 -0
- package/dist/types.d.ts +9 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/answer-image.d.ts +32 -0
- package/dist/ui/answer-image.d.ts.map +1 -0
- package/dist/ui/answer-image.js +50 -0
- package/dist/ui/answer-image.js.map +1 -0
- package/dist/ui/observations.d.ts +29 -5
- package/dist/ui/observations.d.ts.map +1 -1
- package/dist/ui/observations.js +122 -46
- package/dist/ui/observations.js.map +1 -1
- package/dist/ui/outline.d.ts +63 -0
- package/dist/ui/outline.d.ts.map +1 -0
- package/dist/ui/outline.js +258 -0
- package/dist/ui/outline.js.map +1 -0
- package/dist/ui/page-index.d.ts +74 -0
- package/dist/ui/page-index.d.ts.map +1 -0
- package/dist/ui/page-index.js +137 -0
- package/dist/ui/page-index.js.map +1 -0
- package/dist/ui/snapshot.d.ts +24 -12
- package/dist/ui/snapshot.d.ts.map +1 -1
- package/dist/ui/snapshot.js +34 -39
- package/dist/ui/snapshot.js.map +1 -1
- package/dist/ui/ui-sequence.d.ts +9 -9
- package/dist/ui/ui-sequence.d.ts.map +1 -1
- package/dist/ui/ui-sequence.js +2 -2
- package/dist/ui/ui-sequence.js.map +1 -1
- package/dist/ui/ui-tools.d.ts +64 -14
- package/dist/ui/ui-tools.d.ts.map +1 -1
- package/dist/ui/ui-tools.js +473 -92
- package/dist/ui/ui-tools.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin-tools.js","sourceRoot":"","sources":["../../src/tools/builtin-tools.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO;QACL;YACE,IAAI,EAAE,iBAAiB;YACvB,WAAW,EACT,uLAAuL;YACzL,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"builtin-tools.js","sourceRoot":"","sources":["../../src/tools/builtin-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
export type ToolInputValidation = {
|
|
2
2
|
ok: true;
|
|
3
3
|
value: Record<string, unknown>;
|
|
4
|
+
/**
|
|
5
|
+
* Properties that arrived as JSON text and were read as the list or
|
|
6
|
+
* object the text holds, because the schema takes one there. The caller
|
|
7
|
+
* tells the model, so it sends the value itself next time.
|
|
8
|
+
*/
|
|
9
|
+
coerced?: string[];
|
|
4
10
|
} | {
|
|
5
11
|
ok: false;
|
|
6
12
|
errors: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-validation.d.ts","sourceRoot":"","sources":["../../src/tools/input-validation.ts"],"names":[],"mappings":"AA+BA,MAAM,MAAM,mBAAmB,GAC3B;
|
|
1
|
+
{"version":3,"file":"input-validation.d.ts","sourceRoot":"","sources":["../../src/tools/input-validation.ts"],"names":[],"mappings":"AA+BA,MAAM,MAAM,mBAAmB,GAC3B;IACE,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEpC,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,mBAAmB,CAAC;AA6DzE;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC/C,kBAAkB,CAiCpB"}
|
|
@@ -37,6 +37,50 @@ function describeError(error) {
|
|
|
37
37
|
}
|
|
38
38
|
return `${at} ${error.message ?? 'is invalid'}`;
|
|
39
39
|
}
|
|
40
|
+
const isRecord = (value) => !!value && typeof value === 'object' && !Array.isArray(value);
|
|
41
|
+
/** Whether a property's schema takes a list or an object, and so never a string that only spells one. */
|
|
42
|
+
function takesStructure(schema) {
|
|
43
|
+
if (!isRecord(schema))
|
|
44
|
+
return false;
|
|
45
|
+
const types = Array.isArray(schema.type) ? schema.type : [schema.type];
|
|
46
|
+
if (types.includes('string'))
|
|
47
|
+
return false;
|
|
48
|
+
if (types.includes('array') || types.includes('object'))
|
|
49
|
+
return true;
|
|
50
|
+
if (isRecord(schema.items) || isRecord(schema.properties))
|
|
51
|
+
return true;
|
|
52
|
+
const members = (schema.oneOf ?? schema.anyOf);
|
|
53
|
+
return Array.isArray(members) && members.length > 0 && members.every(takesStructure);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* `value` with each property that the schema takes as a list or an object, and
|
|
57
|
+
* that arrived as a string of JSON spelling one, replaced by what the string
|
|
58
|
+
* holds. Models do this under load: `"ids": "[\"a\",\"b\"]"` for `"ids": ["a","b"]`
|
|
59
|
+
* (three calls of one session, each refused and retried). Only such a property
|
|
60
|
+
* is read this way: a string where the schema takes a string is left alone.
|
|
61
|
+
*/
|
|
62
|
+
function structuresFromText(value, properties) {
|
|
63
|
+
const out = { ...value };
|
|
64
|
+
const coerced = [];
|
|
65
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
66
|
+
if (typeof entry !== 'string' || !takesStructure(properties[key]))
|
|
67
|
+
continue;
|
|
68
|
+
const text = entry.trim();
|
|
69
|
+
if (!text.startsWith('[') && !text.startsWith('{'))
|
|
70
|
+
continue;
|
|
71
|
+
try {
|
|
72
|
+
const read = JSON.parse(text);
|
|
73
|
+
if (read && typeof read === 'object') {
|
|
74
|
+
out[key] = read;
|
|
75
|
+
coerced.push(key);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// Not JSON: the validator says what is wrong with it as it is.
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return { value: out, coerced };
|
|
83
|
+
}
|
|
40
84
|
/**
|
|
41
85
|
* Compile a validator for a tool's input schema.
|
|
42
86
|
*
|
|
@@ -69,7 +113,12 @@ export function createToolInputValidator(inputSchema) {
|
|
|
69
113
|
}
|
|
70
114
|
if (validate(value))
|
|
71
115
|
return { ok: true, value };
|
|
72
|
-
|
|
116
|
+
const errors = (validate.errors ?? []).map(describeError);
|
|
117
|
+
// A list or an object sent as JSON text is read as what it spells, when that makes the input valid.
|
|
118
|
+
const read = structuresFromText(value, isRecord(schema.properties) ? schema.properties : {});
|
|
119
|
+
if (read.coerced.length > 0 && validate(read.value))
|
|
120
|
+
return { ok: true, value: read.value, coerced: read.coerced };
|
|
121
|
+
return { ok: false, errors };
|
|
73
122
|
};
|
|
74
123
|
}
|
|
75
124
|
//# sourceMappingURL=input-validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-validation.js","sourceRoot":"","sources":["../../src/tools/input-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,GAAG,EAA2C,MAAM,KAAK,CAAC;AACnE,OAAO,aAAa,MAAM,aAAa,CAAC;AAGxC,2EAA2E;AAC3E,MAAM,UAAU,GACb,aAAwD,CAAC,OAAO;IAChE,aAA0C,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"input-validation.js","sourceRoot":"","sources":["../../src/tools/input-validation.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/types.d.ts
CHANGED
|
@@ -27,6 +27,14 @@ export interface RegisteredTool {
|
|
|
27
27
|
destructive?: boolean;
|
|
28
28
|
description: string;
|
|
29
29
|
inputSchema: Record<string, unknown>;
|
|
30
|
+
/**
|
|
31
|
+
* The schema a call's input is checked against, when it is not known until
|
|
32
|
+
* the tool is used: a UI action's definition is fetched from the page then
|
|
33
|
+
* (ADR-0245 §2.1). Called once per call, before validation; `inputSchema`
|
|
34
|
+
* only stands in for it. A rejection is told to the model as the reason the
|
|
35
|
+
* call did not run.
|
|
36
|
+
*/
|
|
37
|
+
resolveInputSchema?: (ctx: ToolExecutionContext) => Promise<Record<string, unknown>>;
|
|
30
38
|
execute: (input: Record<string, unknown>, ctx: ToolExecutionContext) => Promise<ToolExecutionResult>;
|
|
31
39
|
/** Its name as a person reads it, for the approval card. Default: `name`. */
|
|
32
40
|
title?: string;
|
|
@@ -73,6 +81,15 @@ export interface ToolExecutionResult {
|
|
|
73
81
|
success: boolean;
|
|
74
82
|
data?: unknown;
|
|
75
83
|
error?: string;
|
|
84
|
+
/**
|
|
85
|
+
* A picture the model is given beside the result's text, as an image part
|
|
86
|
+
* of the tool result. It is given once and stored nowhere: `data` says what
|
|
87
|
+
* the picture is.
|
|
88
|
+
*/
|
|
89
|
+
image?: {
|
|
90
|
+
mediaType: string;
|
|
91
|
+
base64: string;
|
|
92
|
+
};
|
|
76
93
|
}
|
|
77
94
|
export interface ToolRegistry {
|
|
78
95
|
tools: RegisteredTool[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;GAGG;AAEH;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,CAAC;AAEtC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrG,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,0FAA0F;IAC1F,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;GAGG;AAEH;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,CAAC;AAEtC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrF,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrG,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,0FAA0F;IAC1F,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAChH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,YAAY,CAiBxE"}
|
package/dist/tools/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAqGA;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAuB;IACxD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAErD,OAAO;QACL,KAAK;QACL,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,KAA8B,EAAE,GAAyB;YACnF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACrF,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The turn's own record of what its calls did (ADR-0244 §2.5).
|
|
3
|
+
*
|
|
4
|
+
* A model writes its closing message from memory of a long turn, and a
|
|
5
|
+
* failure a dozen steps back is easy to pass over: on 2026-10-02 the
|
|
6
|
+
* assistant asked for a 2-second duration, got 5, and told the person 5 was
|
|
7
|
+
* better; it reported five layers centred when two had not moved. The worker
|
|
8
|
+
* knows what each call returned, so before every step after one did not
|
|
9
|
+
* succeed it says so again, in one place, and the reply is held to it.
|
|
10
|
+
*
|
|
11
|
+
* Nothing is added while every call has succeeded: the record costs nothing
|
|
12
|
+
* on a turn that went well.
|
|
13
|
+
*/
|
|
14
|
+
/** One call of the turn. */
|
|
15
|
+
export interface LedgerEntry {
|
|
16
|
+
tool: string;
|
|
17
|
+
ok: boolean;
|
|
18
|
+
/** Why it did not succeed, or did not run, in the words the model was given. */
|
|
19
|
+
error?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface TurnLedger {
|
|
22
|
+
record(entry: LedgerEntry): void;
|
|
23
|
+
entries(): readonly LedgerEntry[];
|
|
24
|
+
/** The note for the next step, or null while every call has succeeded. */
|
|
25
|
+
note(): string | null;
|
|
26
|
+
}
|
|
27
|
+
export declare function createTurnLedger(): TurnLedger;
|
|
28
|
+
/** What the model is told about the turn so far, when any call did not succeed. */
|
|
29
|
+
export declare function ledgerNote(calls: readonly LedgerEntry[]): string | null;
|
|
30
|
+
//# sourceMappingURL=turn-ledger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-ledger.d.ts","sourceRoot":"","sources":["../src/turn-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,4BAA4B;AAC5B,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,OAAO,IAAI,SAAS,WAAW,EAAE,CAAC;IAClC,0EAA0E;IAC1E,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;CACvB;AASD,wBAAgB,gBAAgB,IAAI,UAAU,CAO7C;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,GAAG,IAAI,CAiBvE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The turn's own record of what its calls did (ADR-0244 §2.5).
|
|
3
|
+
*
|
|
4
|
+
* A model writes its closing message from memory of a long turn, and a
|
|
5
|
+
* failure a dozen steps back is easy to pass over: on 2026-10-02 the
|
|
6
|
+
* assistant asked for a 2-second duration, got 5, and told the person 5 was
|
|
7
|
+
* better; it reported five layers centred when two had not moved. The worker
|
|
8
|
+
* knows what each call returned, so before every step after one did not
|
|
9
|
+
* succeed it says so again, in one place, and the reply is held to it.
|
|
10
|
+
*
|
|
11
|
+
* Nothing is added while every call has succeeded: the record costs nothing
|
|
12
|
+
* on a turn that went well.
|
|
13
|
+
*/
|
|
14
|
+
/** How much of each failure's reason the note repeats. */
|
|
15
|
+
const MAX_REASON_CHARS = 240;
|
|
16
|
+
/** How many failures the note lists one by one; the rest are counted. */
|
|
17
|
+
const MAX_LISTED = 12;
|
|
18
|
+
const clip = (text) => (text.length > MAX_REASON_CHARS ? `${text.slice(0, MAX_REASON_CHARS)}…` : text);
|
|
19
|
+
export function createTurnLedger() {
|
|
20
|
+
const calls = [];
|
|
21
|
+
return {
|
|
22
|
+
record: (entry) => void calls.push(entry),
|
|
23
|
+
entries: () => calls,
|
|
24
|
+
note: () => ledgerNote(calls),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** What the model is told about the turn so far, when any call did not succeed. */
|
|
28
|
+
export function ledgerNote(calls) {
|
|
29
|
+
const failed = calls.filter((c) => !c.ok);
|
|
30
|
+
if (failed.length === 0)
|
|
31
|
+
return null;
|
|
32
|
+
const listed = failed
|
|
33
|
+
.slice(0, MAX_LISTED)
|
|
34
|
+
.map((c) => `- ${c.tool}: ${clip(c.error ?? 'did not succeed')}`)
|
|
35
|
+
.join('\n');
|
|
36
|
+
const more = failed.length > MAX_LISTED ? `\n- … and ${failed.length - MAX_LISTED} more` : '';
|
|
37
|
+
return (`<turn_record>\n` +
|
|
38
|
+
`This turn has made ${calls.length} call${calls.length === 1 ? '' : 's'}; ${failed.length} did not succeed:\n` +
|
|
39
|
+
`${listed}${more}\n` +
|
|
40
|
+
`What you tell the person must match this record. For each of these, either it has since been done by a later call ` +
|
|
41
|
+
`that succeeded, or your reply says it was not done and why. Never describe a call that did not succeed as done, ` +
|
|
42
|
+
`and never present what you got in place of what was asked as if it were what was asked.\n` +
|
|
43
|
+
`</turn_record>`);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=turn-ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-ledger.js","sourceRoot":"","sources":["../src/turn-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAiBH,0DAA0D;AAC1D,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,yEAAyE;AACzE,MAAM,UAAU,GAAG,EAAE,CAAC;AAEtB,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE/G,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,OAAO;QACL,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QACzC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;QACpB,IAAI,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,UAAU,CAAC,KAA6B;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM;SAClB,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;SACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,iBAAiB,CAAC,EAAE,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,MAAM,GAAG,UAAU,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,OAAO,CACL,iBAAiB;QACjB,sBAAsB,KAAK,CAAC,MAAM,QAAQ,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM,qBAAqB;QAC9G,GAAG,MAAM,GAAG,IAAI,IAAI;QACpB,oHAAoH;QACpH,kHAAkH;QAClH,2FAA2F;QAC3F,gBAAgB,CACjB,CAAC;AACJ,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -29,7 +29,12 @@ export interface AgentWorkerConfig {
|
|
|
29
29
|
promptCacheBreakpoint?: ProviderOptions;
|
|
30
30
|
maxToolRounds?: number;
|
|
31
31
|
maxTokens?: number;
|
|
32
|
-
|
|
32
|
+
/**
|
|
33
|
+
* The sampling temperature. Default 0.3. `null` sends none: for a model that
|
|
34
|
+
* does not take one (Claude Sonnet 5.5 on Bedrock refuses a request that
|
|
35
|
+
* names it), the model's own sampling is used.
|
|
36
|
+
*/
|
|
37
|
+
temperature?: number | null;
|
|
33
38
|
toolTimeoutMs?: number;
|
|
34
39
|
turnDeadlineMs?: number;
|
|
35
40
|
retries?: number;
|
|
@@ -56,8 +61,10 @@ export interface AgentWorkerConfig {
|
|
|
56
61
|
channel: UIActionChannel;
|
|
57
62
|
/** How long a UI tool waits for the client's answer. Default 20 s. */
|
|
58
63
|
resultTimeoutMs?: number;
|
|
59
|
-
/** Largest page-state payload given to the model, in characters. Default
|
|
64
|
+
/** Largest page-state payload given to the model, in characters. Default 12000 (`DEFAULT_PAGE_STATE_CHARS`). */
|
|
60
65
|
maxObservationChars?: number;
|
|
66
|
+
/** Largest index of the page's actions given to the model, in characters. Default 60000 (`DEFAULT_INDEX_CHARS`). */
|
|
67
|
+
maxIndexChars?: number;
|
|
61
68
|
};
|
|
62
69
|
}
|
|
63
70
|
export interface SystemPromptContext {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,mBAAmB,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,qBAAqB,EAAE,eAAe,CAAC;IAC3D,YAAY,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,mBAAmB,KAAK,MAAM,CAAC,CAAC;IAClE,2EAA2E;IAC3E,KAAK,EAAE,aAAa,CAAC;IACrB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,eAAe,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A picture in an action's answer (ADR-0244 §2.2, ADR-0245 §2.4).
|
|
3
|
+
*
|
|
4
|
+
* A room can answer a read with what it draws: `data.image`, an encoded
|
|
5
|
+
* picture. As JSON text its base64 would cost the model hundreds of thousands
|
|
6
|
+
* of characters and show it nothing, so the worker lifts it out: the model is
|
|
7
|
+
* given the picture itself as an image part of the tool result, and the text
|
|
8
|
+
* keeps only what the picture is (its type and size). The base64 is given to
|
|
9
|
+
* the model once and kept nowhere: the socket event, the turn's record and the
|
|
10
|
+
* stored tool result carry the text.
|
|
11
|
+
*/
|
|
12
|
+
/** The picture types a model is given. */
|
|
13
|
+
export declare const ANSWER_IMAGE_MEDIA_TYPES: readonly ["image/png", "image/jpeg", "image/webp"];
|
|
14
|
+
/** The longest base64 a picture may be, in characters (256 KB): past it the picture is left out, and said so. */
|
|
15
|
+
export declare const MAX_ANSWER_IMAGE_BASE64_CHARS: number;
|
|
16
|
+
/** A picture for the model: its type and its bytes in base64. */
|
|
17
|
+
export interface AnswerImage {
|
|
18
|
+
mediaType: (typeof ANSWER_IMAGE_MEDIA_TYPES)[number];
|
|
19
|
+
base64: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* `data` with its picture lifted out: `data.image` keeps its type and size,
|
|
23
|
+
* and the picture is returned beside it. Only `data.image` in the shape
|
|
24
|
+
* `{ mediaType, base64, width, height }` is a picture; anything else is left
|
|
25
|
+
* as it is. A picture of a type the model is not given, or past the size, is
|
|
26
|
+
* left out of both, and `data.image.leftOut` says why.
|
|
27
|
+
*/
|
|
28
|
+
export declare function liftAnswerImage(data: unknown): {
|
|
29
|
+
data: unknown;
|
|
30
|
+
image?: AnswerImage;
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=answer-image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-image.d.ts","sourceRoot":"","sources":["../../src/ui/answer-image.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,0CAA0C;AAC1C,eAAO,MAAM,wBAAwB,oDAAqD,CAAC;AAC3F,iHAAiH;AACjH,eAAO,MAAM,6BAA6B,QAAa,CAAC;AAExD,iEAAiE;AACjE,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,EAAE,MAAM,CAAC;CAChB;AAKD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAA;CAAE,CAuBrF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A picture in an action's answer (ADR-0244 §2.2, ADR-0245 §2.4).
|
|
3
|
+
*
|
|
4
|
+
* A room can answer a read with what it draws: `data.image`, an encoded
|
|
5
|
+
* picture. As JSON text its base64 would cost the model hundreds of thousands
|
|
6
|
+
* of characters and show it nothing, so the worker lifts it out: the model is
|
|
7
|
+
* given the picture itself as an image part of the tool result, and the text
|
|
8
|
+
* keeps only what the picture is (its type and size). The base64 is given to
|
|
9
|
+
* the model once and kept nowhere: the socket event, the turn's record and the
|
|
10
|
+
* stored tool result carry the text.
|
|
11
|
+
*/
|
|
12
|
+
/** The picture types a model is given. */
|
|
13
|
+
export const ANSWER_IMAGE_MEDIA_TYPES = ['image/png', 'image/jpeg', 'image/webp'];
|
|
14
|
+
/** The longest base64 a picture may be, in characters (256 KB): past it the picture is left out, and said so. */
|
|
15
|
+
export const MAX_ANSWER_IMAGE_BASE64_CHARS = 256 * 1024;
|
|
16
|
+
const isRecord = (value) => !!value && typeof value === 'object' && !Array.isArray(value);
|
|
17
|
+
const BASE64 = /^[A-Za-z0-9+/]+={0,2}$/;
|
|
18
|
+
/**
|
|
19
|
+
* `data` with its picture lifted out: `data.image` keeps its type and size,
|
|
20
|
+
* and the picture is returned beside it. Only `data.image` in the shape
|
|
21
|
+
* `{ mediaType, base64, width, height }` is a picture; anything else is left
|
|
22
|
+
* as it is. A picture of a type the model is not given, or past the size, is
|
|
23
|
+
* left out of both, and `data.image.leftOut` says why.
|
|
24
|
+
*/
|
|
25
|
+
export function liftAnswerImage(data) {
|
|
26
|
+
if (!isRecord(data) || !isRecord(data.image))
|
|
27
|
+
return { data };
|
|
28
|
+
const { mediaType, base64, ...rest } = data.image;
|
|
29
|
+
if (typeof mediaType !== 'string' || typeof base64 !== 'string')
|
|
30
|
+
return { data };
|
|
31
|
+
const described = (extra = {}) => ({ ...data, image: { ...rest, mediaType, ...extra } });
|
|
32
|
+
if (!ANSWER_IMAGE_MEDIA_TYPES.includes(mediaType)) {
|
|
33
|
+
return { data: described({ leftOut: `a picture of type ${mediaType} cannot be shown to you; ${ANSWER_IMAGE_MEDIA_TYPES.join(', ')} can` }) };
|
|
34
|
+
}
|
|
35
|
+
if (base64.length > MAX_ANSWER_IMAGE_BASE64_CHARS) {
|
|
36
|
+
return {
|
|
37
|
+
data: described({
|
|
38
|
+
leftOut: `the picture is ${base64.length} characters of base64; one of at most ${MAX_ANSWER_IMAGE_BASE64_CHARS} can be shown to you. Ask for it smaller if the action takes a size.`,
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
if (base64.length === 0 || !BASE64.test(base64)) {
|
|
43
|
+
return { data: described({ leftOut: 'the picture was not valid base64' }) };
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
data: described({ shown: 'The picture is attached to this result: look at it.' }),
|
|
47
|
+
image: { mediaType: mediaType, base64 },
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=answer-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-image.js","sourceRoot":"","sources":["../../src/ui/answer-image.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,0CAA0C;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AAC3F,iHAAiH;AACjH,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,GAAG,IAAI,CAAC;AAQxD,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrI,MAAM,MAAM,GAAG,wBAAwB,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9D,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;IAClD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAEjF,MAAM,SAAS,GAAG,CAAC,QAAiC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;IAClH,IAAI,CAAE,wBAA8C,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,qBAAqB,SAAS,4BAA4B,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IAC/I,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,6BAA6B,EAAE,CAAC;QAClD,OAAO;YACL,IAAI,EAAE,SAAS,CAAC;gBACd,OAAO,EAAE,kBAAkB,MAAM,CAAC,MAAM,yCAAyC,6BAA6B,sEAAsE;aACrL,CAAC;SACH,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC;IACD,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,qDAAqD,EAAE,CAAC;QACjF,KAAK,EAAE,EAAE,SAAS,EAAE,SAAqC,EAAE,MAAM,EAAE;KACpE,CAAC;AACJ,CAAC"}
|
|
@@ -22,20 +22,44 @@ export declare function surfaceProblems(observations: OUIObservationSnapshot): R
|
|
|
22
22
|
* they must reach it whatever else the page reports.
|
|
23
23
|
*/
|
|
24
24
|
export declare function jobStatuses(observations: OUIObservationSnapshot): Record<string, Record<string, unknown>> | null;
|
|
25
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* The largest page state the model is given when the host sets none
|
|
27
|
+
* (`ui.maxObservationChars`): the user's message's, and each UI action's
|
|
28
|
+
* answer's. About 3,000 tokens: room for a document of a hundred rows as index
|
|
29
|
+
* rows with the few being worked on whole (ADR-0244 §2.1). It was 6,000, which
|
|
30
|
+
* a board of six artboards filled.
|
|
31
|
+
*/
|
|
32
|
+
export declare const DEFAULT_PAGE_STATE_CHARS = 12000;
|
|
33
|
+
/** Rows past this in any list are given as index rows at the first step of fitting an over-budget page state. */
|
|
26
34
|
export declare const MAX_LIST_ROWS = 20;
|
|
27
35
|
/**
|
|
28
36
|
* A list this short is never shortened: it is a field's choices (the engines a
|
|
29
37
|
* voice can speak with, a document's types), not a collection to browse.
|
|
30
38
|
*/
|
|
31
39
|
export declare const WHOLE_LIST_ROWS = 5;
|
|
40
|
+
/** Each surface's observation schemas, by surface id then observation id: where the row lists are declared. */
|
|
41
|
+
export type ObservationSchemas = Readonly<Record<string, Readonly<Record<string, unknown>>>>;
|
|
42
|
+
/** The observation schemas of a turn's surfaces, for fitting their page state. */
|
|
43
|
+
export declare function observationSchemas(surfaces: readonly {
|
|
44
|
+
id: string;
|
|
45
|
+
observations?: readonly {
|
|
46
|
+
id: string;
|
|
47
|
+
schema?: unknown;
|
|
48
|
+
}[];
|
|
49
|
+
}[]): ObservationSchemas;
|
|
50
|
+
/** What fitting reads beside the observations: where the row lists are declared, and the rows an action just changed. */
|
|
51
|
+
export interface FitOptions {
|
|
52
|
+
schemas?: ObservationSchemas;
|
|
53
|
+
/** Refs of the rows the answered action changed: kept whole, like the selection. */
|
|
54
|
+
changed?: readonly string[];
|
|
55
|
+
}
|
|
32
56
|
/**
|
|
33
57
|
* The observations as the model receives them: whole when they fit. Over
|
|
34
58
|
* budget, every surface's problems and job statuses are kept whole; the rest is
|
|
35
|
-
* fitted (see fitted): long lists
|
|
36
|
-
* and kept whole, and only if that still does not fit is the rest cut, saying so.
|
|
59
|
+
* fitted (see fitted): long lists cut to index rows first, the page it acted on
|
|
60
|
+
* first and kept whole, and only if that still does not fit is the rest cut, saying so.
|
|
37
61
|
*/
|
|
38
|
-
export declare function boundObservations(observations: OUIObservationSnapshot, maxChars: number, actingSurfaceId?: string): unknown;
|
|
62
|
+
export declare function boundObservations(observations: OUIObservationSnapshot, maxChars: number, actingSurfaceId?: string, options?: FitOptions): unknown;
|
|
39
63
|
/** The same, as the text of a `<page_state>` block. */
|
|
40
|
-
export declare function observationsText(observations: OUIObservationSnapshot, maxChars: number): string;
|
|
64
|
+
export declare function observationsText(observations: OUIObservationSnapshot, maxChars: number, options?: FitOptions): string;
|
|
41
65
|
//# sourceMappingURL=observations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observations.d.ts","sourceRoot":"","sources":["../../src/ui/observations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE5D,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAElD,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,YAAY,EAAE,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CASpG;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAShH;AAgBD,
|
|
1
|
+
{"version":3,"file":"observations.d.ts","sourceRoot":"","sources":["../../src/ui/observations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE5D,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAElD,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,YAAY,EAAE,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CASpG;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAShH;AAgBD;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C,iHAAiH;AACjH,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AA6DjC,+GAA+G;AAC/G,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7F,kFAAkF;AAClF,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;CAAE,EAAE,GAC9F,kBAAkB,CAIpB;AAsID,yHAAyH;AACzH,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,oFAAoF;IACpF,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAuFD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,sBAAsB,EACpC,QAAQ,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,MAAM,EACxB,OAAO,GAAE,UAAe,GACvB,OAAO,CAcT;AAED,uDAAuD;AACvD,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,MAAM,CAczH"}
|