@nxisai/agent-harness 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/harness/harness.d.ts.map +1 -1
- package/dist/harness/harness.js +31 -9
- package/dist/harness/harness.js.map +1 -1
- package/dist/harness/tools/action-tools.d.ts.map +1 -1
- package/dist/harness/tools/action-tools.js +7 -5
- package/dist/harness/tools/action-tools.js.map +1 -1
- package/dist/harness/tools/bridge.d.ts.map +1 -1
- package/dist/harness/tools/bridge.js +33 -12
- package/dist/harness/tools/bridge.js.map +1 -1
- package/dist/harness/tools/local-context.d.ts +49 -9
- package/dist/harness/tools/local-context.d.ts.map +1 -1
- package/dist/harness/tools/local-context.js +377 -22
- package/dist/harness/tools/local-context.js.map +1 -1
- package/dist/harness/tools/open-page.d.ts +47 -1
- package/dist/harness/tools/open-page.d.ts.map +1 -1
- package/dist/harness/tools/open-page.js +119 -33
- package/dist/harness/tools/open-page.js.map +1 -1
- package/dist/harness/tools/retry.d.ts +53 -0
- package/dist/harness/tools/retry.d.ts.map +1 -0
- package/dist/harness/tools/retry.js +96 -0
- package/dist/harness/tools/retry.js.map +1 -0
- package/dist/harness/tools/schema.d.ts +18 -0
- package/dist/harness/tools/schema.d.ts.map +1 -1
- package/dist/harness/tools/schema.js +38 -0
- package/dist/harness/tools/schema.js.map +1 -1
- package/dist/harness/tools/site-actions.d.ts.map +1 -1
- package/dist/harness/tools/site-actions.js +3 -2
- package/dist/harness/tools/site-actions.js.map +1 -1
- package/dist/harness/tools/site-nav.d.ts +168 -0
- package/dist/harness/tools/site-nav.d.ts.map +1 -0
- package/dist/harness/tools/site-nav.js +316 -0
- package/dist/harness/tools/site-nav.js.map +1 -0
- package/dist/harness/tools/site-pages.d.ts +9 -4
- package/dist/harness/tools/site-pages.d.ts.map +1 -1
- package/dist/harness/tools/site-pages.js +46 -7
- package/dist/harness/tools/site-pages.js.map +1 -1
- package/dist/harness/tools/source.d.ts +11 -2
- package/dist/harness/tools/source.d.ts.map +1 -1
- package/dist/harness/tools/source.js +55 -15
- package/dist/harness/tools/source.js.map +1 -1
- package/dist/harness/tools/webmcp.d.ts +39 -3
- package/dist/harness/tools/webmcp.d.ts.map +1 -1
- package/dist/harness/tools/webmcp.js +93 -14
- package/dist/harness/tools/webmcp.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/agent-fullscreen.d.ts.map +1 -1
- package/dist/ui/agent-fullscreen.js +13 -2
- package/dist/ui/agent-fullscreen.js.map +1 -1
- package/dist/ui/tailwind.generated.d.ts +1 -1
- package/dist/ui/tailwind.generated.d.ts.map +1 -1
- package/dist/ui/tailwind.generated.js +1 -1
- package/dist/ui/tailwind.generated.js.map +1 -1
- package/package.json +2 -1
- package/src/a2ui/cards.ts +177 -0
- package/src/a2ui/emit.ts +147 -0
- package/src/a2ui/form.ts +117 -0
- package/src/a2ui/host.ts +73 -0
- package/src/a2ui/index.ts +22 -0
- package/src/a2ui/stepper.ts +211 -0
- package/src/a2ui/theme.ts +134 -0
- package/src/a2ui/to-v09.ts +118 -0
- package/src/engine.ts +701 -0
- package/src/harness/harness.ts +956 -0
- package/src/harness/plan.ts +91 -0
- package/src/harness/policy.ts +59 -0
- package/src/harness/renderer.ts +208 -0
- package/src/harness/router/coordinator.ts +220 -0
- package/src/harness/router/rules.ts +65 -0
- package/src/harness/slots.ts +117 -0
- package/src/harness/steps.ts +156 -0
- package/src/harness/tools/action-tools.ts +870 -0
- package/src/harness/tools/bridge.ts +393 -0
- package/src/harness/tools/client.ts +26 -0
- package/src/harness/tools/discovery.ts +55 -0
- package/src/harness/tools/local-context.ts +480 -0
- package/src/harness/tools/open-page.ts +273 -0
- package/src/harness/tools/pending-action.ts +232 -0
- package/src/harness/tools/resume.ts +134 -0
- package/src/harness/tools/retry.ts +117 -0
- package/src/harness/tools/schema.ts +245 -0
- package/src/harness/tools/site-actions.ts +356 -0
- package/src/harness/tools/site-nav.ts +432 -0
- package/src/harness/tools/site-pages.ts +288 -0
- package/src/harness/tools/source.ts +353 -0
- package/src/harness/tools/webmcp.ts +200 -0
- package/src/index.ts +193 -0
- package/src/providers/capability.ts +167 -0
- package/src/providers/proxy.ts +191 -0
- package/src/providers/types.ts +150 -0
- package/src/types.ts +258 -0
- package/src/ui/agent-fullscreen.ts +3984 -0
- package/src/ui/agent.tw.css +49 -0
- package/src/ui/config.ts +138 -0
- package/src/ui/index.ts +32 -0
- package/src/ui/journey.ts +57 -0
- package/src/ui/tailwind.generated.ts +2 -0
- package/src/webmcp-contract.ts +65 -0
|
@@ -1,8 +1,101 @@
|
|
|
1
1
|
var _a;
|
|
2
2
|
/** Set on the instance so a later, real provider can be told apart from ours. */
|
|
3
3
|
export const LOCAL_CONTEXT_FLAG = '__nxisLocalModelContext';
|
|
4
|
+
const TOOL_NAME = /^[A-Za-z0-9_.-]{1,128}$/;
|
|
5
|
+
function domException(message, name) {
|
|
6
|
+
if (typeof DOMException === 'function')
|
|
7
|
+
return new DOMException(message, name);
|
|
8
|
+
return Object.assign(new Error(message), { name });
|
|
9
|
+
}
|
|
10
|
+
/** "Queue a global task": after the current task and its microtasks. */
|
|
11
|
+
const queueTask = (steps) => void setTimeout(steps, 0);
|
|
12
|
+
const isObject = (value) => (typeof value === 'object' && value !== null) || typeof value === 'function';
|
|
13
|
+
/** `JSON.stringify`, with a `TypeError` where it yields nothing, as Infra's serializer has it. */
|
|
14
|
+
function serializeJSON(value) {
|
|
15
|
+
const json = JSON.stringify(value);
|
|
16
|
+
if (json === undefined)
|
|
17
|
+
throw new TypeError('The value cannot be serialized as JSON.');
|
|
18
|
+
return json;
|
|
19
|
+
}
|
|
20
|
+
function dictionary(value, type) {
|
|
21
|
+
if (value === undefined || value === null)
|
|
22
|
+
return {};
|
|
23
|
+
if (!isObject(value))
|
|
24
|
+
throw new TypeError(`The provided value is not of type '${type}'.`);
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
function required(dict, member, type) {
|
|
28
|
+
if (dict[member] === undefined) {
|
|
29
|
+
throw new TypeError(`Failed to read the '${member}' property from '${type}': Required member is undefined.`);
|
|
30
|
+
}
|
|
31
|
+
return dict[member];
|
|
32
|
+
}
|
|
33
|
+
function toHints(value) {
|
|
34
|
+
const dict = dictionary(value, 'ToolAnnotations');
|
|
35
|
+
const hint = (key) => (dict[key] === undefined ? false : Boolean(dict[key]));
|
|
36
|
+
return {
|
|
37
|
+
consequentialHint: hint('consequentialHint'),
|
|
38
|
+
debugging: hint('debugging'),
|
|
39
|
+
readOnlyHint: hint('readOnlyHint'),
|
|
40
|
+
untrustedContentHint: hint('untrustedContentHint'),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function toSignal(value) {
|
|
44
|
+
if (value === undefined)
|
|
45
|
+
return undefined;
|
|
46
|
+
if (typeof AbortSignal === 'function' && !(value instanceof AbortSignal)) {
|
|
47
|
+
throw new TypeError("Failed to read the 'signal' property: The provided value is not of type 'AbortSignal'.");
|
|
48
|
+
}
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
const ownWindow = () => (typeof window !== 'undefined' ? window : globalThis);
|
|
52
|
+
const isWindow = (value) => typeof window === 'undefined' ? value === globalThis : isObject(value) && value.window === value;
|
|
53
|
+
/** Outside a browser `http://localhost` stands in: an opaque origin would refuse every call. */
|
|
54
|
+
const ownOrigin = () => (typeof location !== 'undefined' ? location.origin : 'http://localhost');
|
|
55
|
+
function isTrustworthy(url) {
|
|
56
|
+
if (url.origin === 'null')
|
|
57
|
+
return false;
|
|
58
|
+
if (url.protocol === 'https:' || url.protocol === 'wss:')
|
|
59
|
+
return true;
|
|
60
|
+
const host = url.hostname;
|
|
61
|
+
return host === 'localhost' || host.endsWith('.localhost') || /^127(?:\.\d{1,3}){3}$/.test(host) || host === '[::1]';
|
|
62
|
+
}
|
|
63
|
+
/** `SecurityError` for an origin that doesn't parse or isn't potentially trustworthy. */
|
|
64
|
+
function checkOrigins(origins, member) {
|
|
65
|
+
if (origins === undefined)
|
|
66
|
+
return;
|
|
67
|
+
if (!isObject(origins) || typeof origins[Symbol.iterator] !== 'function') {
|
|
68
|
+
throw new TypeError(`Failed to read the '${member}' property: The provided value cannot be converted to a sequence.`);
|
|
69
|
+
}
|
|
70
|
+
for (const origin of origins) {
|
|
71
|
+
let url;
|
|
72
|
+
try {
|
|
73
|
+
url = new URL(`${origin}`);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
throw domException(`"${origin}" is not a valid origin.`, 'SecurityError');
|
|
77
|
+
}
|
|
78
|
+
if (!isTrustworthy(url))
|
|
79
|
+
throw domException(`"${origin}" is not a potentially trustworthy origin.`, 'SecurityError');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/** The spec's opening checks: an origin-keyed agent cluster, unless the page is a `file:` one. */
|
|
83
|
+
function accessError() {
|
|
84
|
+
const keyed = globalThis.originAgentCluster;
|
|
85
|
+
const scheme = typeof location !== 'undefined' ? location.protocol : '';
|
|
86
|
+
return keyed === false && scheme !== 'file:'
|
|
87
|
+
? domException("This page's agent cluster is not origin-keyed.", 'SecurityError')
|
|
88
|
+
: null;
|
|
89
|
+
}
|
|
90
|
+
/** An event carrying the name of the tool it concerns: `toolactivated`, `toolcancel`. */
|
|
91
|
+
class ToolEvent extends Event {
|
|
92
|
+
constructor(type, toolName) {
|
|
93
|
+
super(type);
|
|
94
|
+
this.toolName = toolName;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
4
97
|
/**
|
|
5
|
-
*
|
|
98
|
+
* An in-memory tool registry built to the WebMCP spec.
|
|
6
99
|
*
|
|
7
100
|
* Installed by {@link ensureModelContext} on pages that have no registry of
|
|
8
101
|
* their own, so that discovered remote tools have somewhere to live.
|
|
@@ -12,28 +105,290 @@ export class LocalModelContext extends EventTarget {
|
|
|
12
105
|
super(...arguments);
|
|
13
106
|
this[_a] = true;
|
|
14
107
|
this._tools = new Map();
|
|
108
|
+
this._pending = new Map();
|
|
109
|
+
this._handlers = {};
|
|
110
|
+
this._listeners = {};
|
|
111
|
+
}
|
|
112
|
+
get ontoolchange() {
|
|
113
|
+
return this._handlers.toolchange ?? null;
|
|
114
|
+
}
|
|
115
|
+
set ontoolchange(handler) {
|
|
116
|
+
this._setHandler('toolchange', handler);
|
|
117
|
+
}
|
|
118
|
+
get ontoolactivated() {
|
|
119
|
+
return this._handlers.toolactivated ?? null;
|
|
120
|
+
}
|
|
121
|
+
set ontoolactivated(handler) {
|
|
122
|
+
this._setHandler('toolactivated', handler);
|
|
123
|
+
}
|
|
124
|
+
get ontoolcancel() {
|
|
125
|
+
return this._handlers.toolcancel ?? null;
|
|
126
|
+
}
|
|
127
|
+
set ontoolcancel(handler) {
|
|
128
|
+
this._setHandler('toolcancel', handler);
|
|
129
|
+
}
|
|
130
|
+
registerTool(tool, options = {}) {
|
|
131
|
+
const type = 'ModelContextTool';
|
|
132
|
+
let definition;
|
|
133
|
+
let signal;
|
|
134
|
+
let schema;
|
|
135
|
+
let exposedTo;
|
|
136
|
+
try {
|
|
137
|
+
// Members in lexicographic order, as WebIDL converts a dictionary.
|
|
138
|
+
const dict = dictionary(tool, type);
|
|
139
|
+
const annotations = dict.annotations === undefined ? null : toHints(dict.annotations);
|
|
140
|
+
const description = `${required(dict, 'description', type)}`;
|
|
141
|
+
const execute = required(dict, 'execute', type);
|
|
142
|
+
if (typeof execute !== 'function') {
|
|
143
|
+
throw new TypeError(`Failed to read the 'execute' property from '${type}': The provided value is not a function.`);
|
|
144
|
+
}
|
|
145
|
+
schema = dict.inputSchema;
|
|
146
|
+
if (schema !== undefined && !isObject(schema)) {
|
|
147
|
+
throw new TypeError(`Failed to read the 'inputSchema' property from '${type}': The provided value is not of type 'object'.`);
|
|
148
|
+
}
|
|
149
|
+
const name = `${required(dict, 'name', type)}`;
|
|
150
|
+
const title = dict.title === undefined ? null : `${dict.title}`;
|
|
151
|
+
definition = { name, title, description, inputSchema: '', annotations, execute: execute };
|
|
152
|
+
const opts = dictionary(options, 'ModelContextRegisterToolOptions');
|
|
153
|
+
exposedTo = opts.exposedTo;
|
|
154
|
+
signal = toSignal(opts.signal);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
return Promise.reject(error);
|
|
158
|
+
}
|
|
159
|
+
const denied = accessError();
|
|
160
|
+
if (denied)
|
|
161
|
+
return Promise.reject(denied);
|
|
162
|
+
const { name } = definition;
|
|
163
|
+
if (this._tools.has(name)) {
|
|
164
|
+
return Promise.reject(domException(`A tool named "${name}" is already registered.`, 'InvalidStateError'));
|
|
165
|
+
}
|
|
166
|
+
if (!TOOL_NAME.test(name)) {
|
|
167
|
+
return Promise.reject(domException(`"${name}" is not a valid tool name: 1 to 128 ASCII letters, digits, "_", "-" or ".".`, 'InvalidStateError'));
|
|
168
|
+
}
|
|
169
|
+
if (definition.description === '') {
|
|
170
|
+
return Promise.reject(domException("A tool's description must not be empty.", 'InvalidStateError'));
|
|
171
|
+
}
|
|
172
|
+
if (schema !== undefined) {
|
|
173
|
+
try {
|
|
174
|
+
definition.inputSchema = serializeJSON(schema);
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
return Promise.reject(error);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (signal?.aborted)
|
|
181
|
+
return Promise.reject(signal.reason);
|
|
182
|
+
try {
|
|
183
|
+
checkOrigins(exposedTo, 'exposedTo');
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
return Promise.reject(error);
|
|
187
|
+
}
|
|
188
|
+
let settle;
|
|
189
|
+
const promise = new Promise((resolve, reject) => (settle = { resolve, reject }));
|
|
190
|
+
if (signal) {
|
|
191
|
+
const s = signal;
|
|
192
|
+
s.addEventListener('abort', () => {
|
|
193
|
+
if (this._tools.delete(name))
|
|
194
|
+
this._notifyToolChange();
|
|
195
|
+
settle.reject(s.reason);
|
|
196
|
+
}, { once: true });
|
|
197
|
+
}
|
|
198
|
+
this._tools.set(name, definition);
|
|
199
|
+
this._notifyToolChange();
|
|
200
|
+
queueTask(() => settle.resolve());
|
|
201
|
+
return promise;
|
|
202
|
+
}
|
|
203
|
+
getTools(options = {}) {
|
|
204
|
+
try {
|
|
205
|
+
checkOrigins(dictionary(options, 'ModelContextGetToolOptions').fromOrigins, 'fromOrigins');
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
return Promise.reject(error);
|
|
209
|
+
}
|
|
210
|
+
const denied = accessError();
|
|
211
|
+
if (denied)
|
|
212
|
+
return Promise.reject(denied);
|
|
213
|
+
return new Promise((resolve) => {
|
|
214
|
+
const origin = ownOrigin();
|
|
215
|
+
const win = ownWindow();
|
|
216
|
+
const tools = [...this._tools.values()].map((t) => {
|
|
217
|
+
// Members in lexicographic order, as WebIDL creates a dictionary; absent ones are left out.
|
|
218
|
+
const info = {};
|
|
219
|
+
if (t.annotations)
|
|
220
|
+
info.annotations = { ...t.annotations };
|
|
221
|
+
info.description = t.description;
|
|
222
|
+
if (t.inputSchema !== '')
|
|
223
|
+
info.inputSchema = JSON.parse(t.inputSchema);
|
|
224
|
+
info.name = t.name;
|
|
225
|
+
info.origin = origin;
|
|
226
|
+
info.title = t.title ?? '';
|
|
227
|
+
info.window = win;
|
|
228
|
+
return info;
|
|
229
|
+
});
|
|
230
|
+
tools.sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));
|
|
231
|
+
queueTask(() => resolve(tools));
|
|
232
|
+
});
|
|
15
233
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
234
|
+
executeTool(tool, inputObject, options = {}) {
|
|
235
|
+
const type = 'RegisteredTool';
|
|
236
|
+
let name;
|
|
237
|
+
let origin;
|
|
238
|
+
let win;
|
|
239
|
+
let signal;
|
|
240
|
+
try {
|
|
241
|
+
const dict = dictionary(tool, type);
|
|
242
|
+
if (dict.annotations !== undefined)
|
|
243
|
+
toHints(dict.annotations);
|
|
244
|
+
required(dict, 'description', type);
|
|
245
|
+
if (dict.inputSchema !== undefined && !isObject(dict.inputSchema)) {
|
|
246
|
+
throw new TypeError(`Failed to read the 'inputSchema' property from '${type}': The provided value is not of type 'object'.`);
|
|
247
|
+
}
|
|
248
|
+
name = `${required(dict, 'name', type)}`;
|
|
249
|
+
origin = `${required(dict, 'origin', type)}`;
|
|
250
|
+
win = required(dict, 'window', type);
|
|
251
|
+
if (!isWindow(win)) {
|
|
252
|
+
throw new TypeError(`Failed to read the 'window' property from '${type}': The provided value is not of type 'Window'.`);
|
|
253
|
+
}
|
|
254
|
+
signal = toSignal(dictionary(options, 'ModelContextExecuteToolOptions').signal);
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
return Promise.reject(error);
|
|
258
|
+
}
|
|
259
|
+
const denied = accessError();
|
|
260
|
+
if (denied)
|
|
261
|
+
return Promise.reject(denied);
|
|
262
|
+
let expectedOrigin;
|
|
263
|
+
try {
|
|
264
|
+
expectedOrigin = new URL(origin).origin;
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
return Promise.reject(domException(`"${origin}" is not a valid origin.`, 'NotSupportedError'));
|
|
268
|
+
}
|
|
269
|
+
if (expectedOrigin === 'null')
|
|
270
|
+
return Promise.reject(domException("A tool's origin must not be opaque.", 'NotSupportedError'));
|
|
271
|
+
if (!isObject(inputObject)) {
|
|
272
|
+
return Promise.reject(new TypeError("Failed to execute 'executeTool' on 'ModelContext': The input is not an object."));
|
|
273
|
+
}
|
|
274
|
+
let inputArguments;
|
|
275
|
+
try {
|
|
276
|
+
inputArguments = serializeJSON(inputObject);
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
return Promise.reject(error);
|
|
280
|
+
}
|
|
281
|
+
let settle;
|
|
282
|
+
const promise = new Promise((resolve, reject) => (settle = { resolve, reject }));
|
|
283
|
+
const uuid = Symbol('tool execution');
|
|
284
|
+
if (signal) {
|
|
285
|
+
if (signal.aborted)
|
|
286
|
+
return Promise.reject(signal.reason);
|
|
287
|
+
const s = signal;
|
|
288
|
+
s.addEventListener('abort', () => {
|
|
289
|
+
settle.reject(s.reason);
|
|
290
|
+
queueTask(() => this._cancel(uuid));
|
|
291
|
+
}, { once: true });
|
|
292
|
+
}
|
|
293
|
+
const fail = () => queueTask(() => settle.reject(domException('The tool could not be executed.', 'UnknownError')));
|
|
294
|
+
queueTask(() => {
|
|
295
|
+
if (win !== ownWindow() || ownOrigin() !== expectedOrigin || !this._tools.has(name))
|
|
296
|
+
return fail();
|
|
297
|
+
const execution = {
|
|
298
|
+
toolName: name,
|
|
299
|
+
controller: new AbortController(),
|
|
300
|
+
started: false,
|
|
301
|
+
complete: (result, success) => {
|
|
302
|
+
if (!this._pending.delete(uuid))
|
|
303
|
+
return;
|
|
304
|
+
queueTask(() => success
|
|
305
|
+
? settle.resolve(result)
|
|
306
|
+
: settle.reject(domException("The tool's execution failed.", 'UnknownError')));
|
|
307
|
+
},
|
|
308
|
+
};
|
|
309
|
+
this._pending.set(uuid, execution);
|
|
310
|
+
queueTask(() => this._runTool(name, inputArguments, execution));
|
|
311
|
+
});
|
|
312
|
+
// A string, as the spec resolves it. Typed as a response for the callers that read it through
|
|
313
|
+
// `asResponse` in webmcp.ts.
|
|
314
|
+
return promise;
|
|
315
|
+
}
|
|
316
|
+
/** The spec's tool execute steps, then its imperative execute steps. */
|
|
317
|
+
_runTool(name, inputArguments, execution) {
|
|
318
|
+
const definition = this._tools.get(name);
|
|
319
|
+
if (!definition)
|
|
320
|
+
return execution.complete(null, false);
|
|
321
|
+
let input;
|
|
322
|
+
try {
|
|
323
|
+
input = JSON.parse(inputArguments);
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
return execution.complete(null, false);
|
|
327
|
+
}
|
|
328
|
+
if (!isObject(input))
|
|
329
|
+
return execution.complete(null, false);
|
|
330
|
+
this.dispatchEvent(new ToolEvent('toolactivated', name));
|
|
331
|
+
execution.started = true;
|
|
332
|
+
let toolPromise;
|
|
333
|
+
try {
|
|
334
|
+
// A WebIDL callback: `this` undefined, and a synchronous throw is a rejection.
|
|
335
|
+
toolPromise = Promise.resolve(definition.execute.call(undefined, input, { signal: execution.controller.signal }));
|
|
336
|
+
}
|
|
337
|
+
catch (error) {
|
|
338
|
+
toolPromise = Promise.reject(error);
|
|
339
|
+
}
|
|
340
|
+
toolPromise.then((value) => {
|
|
341
|
+
if (!execution.started)
|
|
342
|
+
return; // cancelled before the tool settled
|
|
343
|
+
execution.started = false;
|
|
344
|
+
let serialized;
|
|
345
|
+
try {
|
|
346
|
+
serialized = serializeJSON(value);
|
|
347
|
+
}
|
|
348
|
+
catch {
|
|
349
|
+
return execution.complete(null, false);
|
|
350
|
+
}
|
|
351
|
+
execution.complete(serialized, true);
|
|
352
|
+
}, () => {
|
|
353
|
+
if (!execution.started)
|
|
354
|
+
return;
|
|
355
|
+
execution.started = false;
|
|
356
|
+
execution.complete(null, false);
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
/** The spec's "cancel a pending tool execution". */
|
|
360
|
+
_cancel(uuid) {
|
|
361
|
+
const execution = this._pending.get(uuid);
|
|
362
|
+
if (!execution)
|
|
363
|
+
return;
|
|
364
|
+
this._pending.delete(uuid);
|
|
365
|
+
queueTask(() => {
|
|
366
|
+
if (!execution.started)
|
|
367
|
+
return;
|
|
368
|
+
execution.started = false;
|
|
369
|
+
execution.controller.abort();
|
|
370
|
+
this.dispatchEvent(new ToolEvent('toolcancel', execution.toolName));
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
_notifyToolChange() {
|
|
374
|
+
queueTask(() => this.dispatchEvent(new Event('toolchange')));
|
|
375
|
+
}
|
|
376
|
+
/** An event handler attribute: one listener, kept in its place however often the handler changes. */
|
|
377
|
+
_setHandler(type, handler) {
|
|
378
|
+
const value = typeof handler === 'function' ? handler : null;
|
|
379
|
+
this._handlers[type] = value;
|
|
380
|
+
if (value && !this._listeners[type]) {
|
|
381
|
+
const listener = (event) => {
|
|
382
|
+
if (this._handlers[type]?.call(this, event) === false)
|
|
383
|
+
event.preventDefault();
|
|
384
|
+
};
|
|
385
|
+
this._listeners[type] = listener;
|
|
386
|
+
this.addEventListener(type, listener);
|
|
387
|
+
}
|
|
388
|
+
else if (!value && this._listeners[type]) {
|
|
389
|
+
this.removeEventListener(type, this._listeners[type]);
|
|
390
|
+
delete this._listeners[type];
|
|
391
|
+
}
|
|
37
392
|
}
|
|
38
393
|
}
|
|
39
394
|
_a = LOCAL_CONTEXT_FLAG;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-context.js","sourceRoot":"","sources":["../../../src/harness/tools/local-context.ts"],"names":[],"mappings":";AAoBA,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAAlD;;QACW,QAAoB,GAAG,IAAI,CAAC;QACpB,WAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;IAgChE,CAAC;IA9BC,YAAY,CAAC,IAAsB;QACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,sEAAsE;QACtE,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,QAAQ;QACN,OAAO,OAAO,CAAC,OAAO,CACpB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CACf,UAA2B,EAC3B,KAA+C;QAE/C,MAAM,IAAI,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAE,UAA+B,CAAC,IAAI,CAAC;QACjG,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACvF,CAAC;QACD,MAAM,IAAI,GACR,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAA6B,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACnG,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACF;KAjCW,kBAAkB;AAmC9B;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC;IACzE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACtC,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"local-context.js","sourceRoot":"","sources":["../../../src/harness/tools/local-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type SitePage } from './site-pages.js';
|
|
2
|
+
import { type SiteNav } from './site-nav.js';
|
|
2
3
|
import type { ModelContext, ModelContextTool, ModelContextToolInfo } from '../../types.js';
|
|
3
4
|
/** The tool's registered name. */
|
|
4
5
|
export declare const OPEN_PAGE_TOOL = "open_page";
|
|
@@ -12,14 +13,59 @@ export interface OpenPageOptions {
|
|
|
12
13
|
storage?: Storage | null;
|
|
13
14
|
/** How to go to another page. Defaults to assigning `location`. */
|
|
14
15
|
navigate?: (url: string) => void;
|
|
16
|
+
/** How to return to the previous page. Defaults to `history.back()`. */
|
|
17
|
+
back?: () => void;
|
|
18
|
+
/** The page the visitor came from. Defaults to `document.referrer`. Read when the tool runs. */
|
|
19
|
+
referrer?: () => string;
|
|
15
20
|
/** The conversation to continue on arrival. Read when the tool runs. */
|
|
16
21
|
conversationId?: () => string | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* The site's graph, from its breadcrumb trails and page links.
|
|
24
|
+
*
|
|
25
|
+
* What makes "up a level" and "the section above" mean something, and what
|
|
26
|
+
* keeps the tool's list of destinations to the pages near this one rather
|
|
27
|
+
* than every page on the site.
|
|
28
|
+
*/
|
|
29
|
+
nav?: SiteNav;
|
|
30
|
+
/**
|
|
31
|
+
* Fetch the trails the graph is missing, if they have not been fetched yet.
|
|
32
|
+
*
|
|
33
|
+
* Awaited when the tool runs, not at connect: the fetch is a read, and a
|
|
34
|
+
* site's rate limit counts reads. Going somewhere is what makes it worth one.
|
|
35
|
+
*/
|
|
36
|
+
loadNav?: () => Promise<SiteNav>;
|
|
17
37
|
}
|
|
38
|
+
/** Where a request to open a page resolves: a page, and whether it is reached by going back. */
|
|
39
|
+
export type Destination = {
|
|
40
|
+
kind: 'page' | 'home';
|
|
41
|
+
url: string;
|
|
42
|
+
label: string;
|
|
43
|
+
} | {
|
|
44
|
+
kind: 'back';
|
|
45
|
+
url: string;
|
|
46
|
+
label: string;
|
|
47
|
+
} | {
|
|
48
|
+
kind: 'none';
|
|
49
|
+
reason: string;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Where a request to open a page goes.
|
|
53
|
+
*
|
|
54
|
+
* A page by name or address, and two that no site lists by name: "home", the
|
|
55
|
+
* site's root, and "back", the page the visitor came from — only when that was
|
|
56
|
+
* a page of this site, since going back must not leave it.
|
|
57
|
+
*
|
|
58
|
+
* @param wanted - What the visitor or model asked for.
|
|
59
|
+
* @param pages - The site's pages.
|
|
60
|
+
* @param origin - The site's origin.
|
|
61
|
+
* @param opts - The referrer seam.
|
|
62
|
+
*/
|
|
63
|
+
export declare function resolveDestination(wanted: string, pages: SitePage[], origin: string, opts?: OpenPageOptions): Destination;
|
|
18
64
|
/**
|
|
19
65
|
* Build the page-opening tool for a site's pages.
|
|
20
66
|
*
|
|
21
67
|
* @param pages - Every page the agent may open.
|
|
22
|
-
* @param opts - Origin, current page, and the navigation
|
|
68
|
+
* @param opts - Origin, current page, and the navigation seams.
|
|
23
69
|
* @returns The definition to register.
|
|
24
70
|
*/
|
|
25
71
|
export declare function buildOpenPageTool(pages: SitePage[], opts?: OpenPageOptions): ModelContextTool;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-page.d.ts","sourceRoot":"","sources":["../../../src/harness/tools/open-page.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"open-page.d.ts","sourceRoot":"","sources":["../../../src/harness/tools/open-page.ts"],"names":[],"mappings":"AAeA,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAA0C,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAIrF,OAAO,KAAK,EAAc,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAA4B,MAAM,gBAAgB,CAAC;AAEjI,kCAAkC;AAClC,eAAO,MAAM,cAAc,cAAc,CAAC;AAK1C,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;IAClB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;IACxB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC1C;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAClC;AAgBD,gGAAgG;AAChG,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAerC;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,eAAoB,GACzB,WAAW,CAiDb;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,GAAE,eAAoB,GAAG,gBAAgB,CA8CjG;AAeD;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,EACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,CAAC,EAAE,MAAM,GACZ;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAK3C;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,QAAQ,EAAE,EACjB,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,OAAO,CAAC,CAgBlB"}
|