@nxisai/agent-harness 0.2.4 → 0.3.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 +89 -2
- package/dist/a2ui/stepper.d.ts +1 -1
- package/dist/a2ui/stepper.d.ts.map +1 -1
- package/dist/a2ui/stepper.js +2 -2
- package/dist/a2ui/stepper.js.map +1 -1
- package/dist/engine.d.ts +1 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +1 -0
- package/dist/engine.js.map +1 -1
- package/dist/harness/harness.d.ts +38 -0
- package/dist/harness/harness.d.ts.map +1 -1
- package/dist/harness/harness.js +127 -4
- package/dist/harness/harness.js.map +1 -1
- package/dist/harness/renderer.d.ts +30 -0
- package/dist/harness/renderer.d.ts.map +1 -1
- package/dist/harness/steps.d.ts +101 -0
- package/dist/harness/steps.d.ts.map +1 -0
- package/dist/harness/steps.js +102 -0
- package/dist/harness/steps.js.map +1 -0
- package/dist/harness/tools/action-tools.d.ts +213 -0
- package/dist/harness/tools/action-tools.d.ts.map +1 -0
- package/dist/harness/tools/action-tools.js +724 -0
- package/dist/harness/tools/action-tools.js.map +1 -0
- package/dist/harness/tools/bridge.d.ts.map +1 -1
- package/dist/harness/tools/bridge.js +28 -2
- package/dist/harness/tools/bridge.js.map +1 -1
- package/dist/harness/tools/pending-action.d.ts +55 -0
- package/dist/harness/tools/pending-action.d.ts.map +1 -0
- package/dist/harness/tools/pending-action.js +93 -0
- package/dist/harness/tools/pending-action.js.map +1 -0
- package/dist/harness/tools/resume.d.ts +92 -0
- package/dist/harness/tools/resume.d.ts.map +1 -0
- package/dist/harness/tools/resume.js +84 -0
- package/dist/harness/tools/resume.js.map +1 -0
- package/dist/harness/tools/schema.js +29 -2
- package/dist/harness/tools/schema.js.map +1 -1
- package/dist/harness/tools/site-actions.d.ts +69 -0
- package/dist/harness/tools/site-actions.d.ts.map +1 -0
- package/dist/harness/tools/site-actions.js +310 -0
- package/dist/harness/tools/site-actions.js.map +1 -0
- package/dist/harness/tools/source.d.ts +40 -3
- package/dist/harness/tools/source.d.ts.map +1 -1
- package/dist/harness/tools/source.js +54 -7
- package/dist/harness/tools/source.js.map +1 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/proxy.d.ts +5 -0
- package/dist/providers/proxy.d.ts.map +1 -1
- package/dist/providers/proxy.js +16 -1
- package/dist/providers/proxy.js.map +1 -1
- package/dist/providers/types.d.ts +15 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/types.d.ts +7 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/agent-fullscreen.d.ts.map +1 -1
- package/dist/ui/agent-fullscreen.js +766 -35
- package/dist/ui/agent-fullscreen.js.map +1 -1
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +1 -0
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/journey.d.ts +33 -0
- package/dist/ui/journey.d.ts.map +1 -0
- package/dist/ui/journey.js +27 -0
- package/dist/ui/journey.js.map +1 -0
- 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/dist/webmcp-contract.d.ts +6 -2
- package/dist/webmcp-contract.d.ts.map +1 -1
- package/docs/remote-providers.md +7 -1
- package/package.json +1 -1
package/dist/harness/harness.js
CHANGED
|
@@ -17,10 +17,12 @@
|
|
|
17
17
|
import { stripMarkers, humanize, } from '../engine.js';
|
|
18
18
|
import { LocalGemmaProvider } from '../engine.js';
|
|
19
19
|
import { WebMcpTools } from './tools/webmcp.js';
|
|
20
|
+
import { handoffFor, selectSiteTools, withoutShadowedTools, withoutSiteSuffix, HANDOFF_RESULT, } from './tools/action-tools.js';
|
|
20
21
|
import { extractResult, reconcileArgs, toolSchema } from './tools/schema.js';
|
|
21
22
|
import { decide, policyFor } from './policy.js';
|
|
22
23
|
import { buildPlan } from './plan.js';
|
|
23
24
|
import { resolveSlots, summarySlots } from './slots.js';
|
|
25
|
+
import { beginJourney, journeySteps, recordStep } from './steps.js';
|
|
24
26
|
/**
|
|
25
27
|
* Whether a reply reads as the model asking rather than answering.
|
|
26
28
|
*
|
|
@@ -87,6 +89,23 @@ export function countRecords(res, text) {
|
|
|
87
89
|
}
|
|
88
90
|
return undefined;
|
|
89
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* How a write's confirmation should describe pressing submit.
|
|
94
|
+
*
|
|
95
|
+
* Submitting a form that lives on another page of the site also takes the
|
|
96
|
+
* visitor there, and a button marked "Submit" would not have said so. The
|
|
97
|
+
* button gets a short label that fits a narrow card, and the destination
|
|
98
|
+
* travels separately for the renderer to name in a sentence.
|
|
99
|
+
*
|
|
100
|
+
* @param tool - The tool about to be called.
|
|
101
|
+
* @param values - The values resolved for it.
|
|
102
|
+
* @returns Fields to spread into the confirmation; empty when the call runs
|
|
103
|
+
* on this page.
|
|
104
|
+
*/
|
|
105
|
+
function handoffPrompt(tool, values) {
|
|
106
|
+
const handoff = handoffFor(tool, values);
|
|
107
|
+
return handoff ? { submitLabel: 'Open & submit', destination: handoff.label } : {};
|
|
108
|
+
}
|
|
90
109
|
/**
|
|
91
110
|
* One agent: a provider, a set of tools, and the loop that runs a turn.
|
|
92
111
|
*
|
|
@@ -236,12 +255,14 @@ export class AgentHarness {
|
|
|
236
255
|
if (this.stopped) {
|
|
237
256
|
return this.stopTurn(bubble, messages, goal);
|
|
238
257
|
}
|
|
258
|
+
// A new request, so the last one's steps are not shown beside this one's.
|
|
259
|
+
beginJourney();
|
|
239
260
|
bubble.thinking('Finding tools…');
|
|
240
261
|
const registered = await this.toolSource.discoverTools(this.abort?.signal);
|
|
241
262
|
if (this.stopped) {
|
|
242
263
|
return this.stopTurn(bubble, messages, goal);
|
|
243
264
|
}
|
|
244
|
-
const tools = this.visibleTools(registered);
|
|
265
|
+
const tools = this.visibleTools(registered, goal);
|
|
245
266
|
if (!tools.length) {
|
|
246
267
|
bubble.finalize('');
|
|
247
268
|
this.renderer.status('');
|
|
@@ -329,9 +350,42 @@ export class AgentHarness {
|
|
|
329
350
|
* @returns The tools matching {@link HarnessOptions.tools}, or all of them
|
|
330
351
|
* when no filter is set.
|
|
331
352
|
*/
|
|
332
|
-
visibleTools(tools) {
|
|
353
|
+
visibleTools(tools, goal = '') {
|
|
354
|
+
// One route per action first: where a site-wide tool covers this page's
|
|
355
|
+
// own form tool, the page tool is its implementation, not an alternative.
|
|
356
|
+
const routed = withoutShadowedTools(tools);
|
|
357
|
+
// Then what fits: a site's forms are many, and all of them reach the
|
|
358
|
+
// prompt unless this turn's request narrows them.
|
|
359
|
+
const budgeted = selectSiteTools(routed, goal, { limit: this.opts.maxSiteTools });
|
|
333
360
|
const filter = this.opts.tools;
|
|
334
|
-
return filter ?
|
|
361
|
+
return filter ? budgeted.filter((t) => filter(t)) : budgeted;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* The tools this agent would be offered for a request, right now.
|
|
365
|
+
*
|
|
366
|
+
* What a surface should list when it shows what the agent can use — not
|
|
367
|
+
* every tool registered on the page: a page tool that a site-wide tool
|
|
368
|
+
* covers is hidden, the per-request budget applies, and so does this
|
|
369
|
+
* agent's own filter. It can change as the page registers tools, and with
|
|
370
|
+
* the request, which is what `goal` is for.
|
|
371
|
+
*
|
|
372
|
+
* Reads the registry as it stands instead of waiting for tools to appear,
|
|
373
|
+
* so a menu opened before the page has finished registering shows what is
|
|
374
|
+
* there rather than hanging.
|
|
375
|
+
*
|
|
376
|
+
* @param goal - The request to budget against. Empty for "before anyone
|
|
377
|
+
* has asked", which keeps this page's tools first.
|
|
378
|
+
* @returns The tools, in the order the registry reported them.
|
|
379
|
+
*/
|
|
380
|
+
async offeredTools(goal = '') {
|
|
381
|
+
let registered = [];
|
|
382
|
+
try {
|
|
383
|
+
registered = (await this.toolSource.modelContext()?.getTools()) ?? [];
|
|
384
|
+
}
|
|
385
|
+
catch {
|
|
386
|
+
// A registry that fails to list has nothing to show.
|
|
387
|
+
}
|
|
388
|
+
return this.visibleTools(registered, goal);
|
|
335
389
|
}
|
|
336
390
|
/**
|
|
337
391
|
* Whether this agent's filter accepts a tool, by name.
|
|
@@ -423,12 +477,22 @@ export class AgentHarness {
|
|
|
423
477
|
/**
|
|
424
478
|
* Resolve a proposed call's arguments, then run it, confirm it, or ask.
|
|
425
479
|
*
|
|
480
|
+
* @internal Used by {@link act}; see {@link handoffPrompt}.
|
|
481
|
+
*
|
|
426
482
|
* @param tool - The tool the model chose.
|
|
427
483
|
* @param rawArgs - Its arguments, before reconciliation against the schema.
|
|
428
484
|
* @param messages - The live conversation.
|
|
429
485
|
* @returns The decision taken and the values it was taken with.
|
|
430
486
|
*/
|
|
431
487
|
async act(tool, rawArgs, messages) {
|
|
488
|
+
// Named for what is being used — "Quote form" — since a surface showing
|
|
489
|
+
// the journey reads this step as its title.
|
|
490
|
+
const named = humanize(withoutSiteSuffix(tool.name));
|
|
491
|
+
this.emitStep({
|
|
492
|
+
id: 'choose',
|
|
493
|
+
label: named.charAt(0).toUpperCase() + named.slice(1),
|
|
494
|
+
status: 'done',
|
|
495
|
+
});
|
|
432
496
|
const schema = toolSchema(tool);
|
|
433
497
|
const modelArgs = reconcileArgs(rawArgs, schema);
|
|
434
498
|
// Keep values already typed while the model revises a call to the same
|
|
@@ -448,10 +512,12 @@ export class AgentHarness {
|
|
|
448
512
|
}
|
|
449
513
|
if (decision === 'confirm') {
|
|
450
514
|
this.liveTool = tool;
|
|
515
|
+
this.emitStep({ id: 'confirm', label: 'Waiting for you to confirm', status: 'active' });
|
|
451
516
|
this.renderer.confirm({
|
|
452
517
|
tool,
|
|
453
518
|
slots: summarySlots(resolution),
|
|
454
519
|
values: resolution.values,
|
|
520
|
+
...handoffPrompt(tool, resolution.values),
|
|
455
521
|
onSubmit: (values) => void this.run(tool, values, messages),
|
|
456
522
|
onCancel: () => this.cancel(),
|
|
457
523
|
onEdit: () => this.askAll(tool, resolution, messages),
|
|
@@ -460,6 +526,12 @@ export class AgentHarness {
|
|
|
460
526
|
}
|
|
461
527
|
// decision === 'ask': the gaps only, stepped when there are several.
|
|
462
528
|
this.liveTool = tool;
|
|
529
|
+
this.emitStep({
|
|
530
|
+
id: 'collect',
|
|
531
|
+
label: 'Collecting details',
|
|
532
|
+
status: 'active',
|
|
533
|
+
detail: resolution.missing.map((s) => humanize(s.name).toLowerCase()).join(', '),
|
|
534
|
+
});
|
|
463
535
|
const plan = buildPlan(resolution.missing, this.opts.groupRelated !== false);
|
|
464
536
|
this.renderer.message('assistant', plan.stepped
|
|
465
537
|
? `I need ${plan.steps.length} more details for ${humanize(tool.name)}.`
|
|
@@ -471,6 +543,7 @@ export class AgentHarness {
|
|
|
471
543
|
onComplete: (answers) => {
|
|
472
544
|
const values = { ...resolution.values, ...answers };
|
|
473
545
|
this.entered = values;
|
|
546
|
+
this.emitStep({ id: 'collect', label: 'Collected your details', status: 'done' });
|
|
474
547
|
// A read was waiting only on the gap. A write still needs its
|
|
475
548
|
// confirmation, now a summary rather than a form.
|
|
476
549
|
if (policy.confirmWhenSatisfied) {
|
|
@@ -478,6 +551,7 @@ export class AgentHarness {
|
|
|
478
551
|
tool,
|
|
479
552
|
slots: summarySlots(resolveSlots(schema, { modelArgs: values })),
|
|
480
553
|
values,
|
|
554
|
+
...handoffPrompt(tool, values),
|
|
481
555
|
onSubmit: (v) => void this.run(tool, v, messages),
|
|
482
556
|
onCancel: () => this.cancel(),
|
|
483
557
|
onEdit: () => this.askAll(tool, resolution, messages),
|
|
@@ -505,8 +579,22 @@ export class AgentHarness {
|
|
|
505
579
|
onCancel: () => this.cancel(),
|
|
506
580
|
});
|
|
507
581
|
}
|
|
582
|
+
/**
|
|
583
|
+
* Record a step, and tell the renderer about it.
|
|
584
|
+
*
|
|
585
|
+
* The journal is the source of truth — it survives the page change, and a
|
|
586
|
+
* surface the host owns subscribes to it directly. Passing the step to the
|
|
587
|
+
* renderer as well saves a renderer from subscribing to anything.
|
|
588
|
+
*/
|
|
589
|
+
emitStep(step) {
|
|
590
|
+
recordStep(step);
|
|
591
|
+
this.renderer.step?.(step, journeySteps());
|
|
592
|
+
}
|
|
508
593
|
/** Discard a live prompt and the values typed into it. */
|
|
509
594
|
cancel() {
|
|
595
|
+
// A journey that stops here should say so, not sit waiting for a press
|
|
596
|
+
// that will never come.
|
|
597
|
+
this.emitStep({ id: 'submit', label: 'Cancelled', status: 'failed' });
|
|
510
598
|
this.entered = {};
|
|
511
599
|
this.liveTool = null;
|
|
512
600
|
this.renderer.dismissPrompt?.();
|
|
@@ -528,6 +616,23 @@ export class AgentHarness {
|
|
|
528
616
|
// covered the last one has been finalized by now.
|
|
529
617
|
const working = this.renderer.streaming();
|
|
530
618
|
working.thinking(`Running ${humanize(tool.name)}…`);
|
|
619
|
+
// Asked before the call, not after: a registry may hand back only the
|
|
620
|
+
// text of a response, dropping the structured part that would have said
|
|
621
|
+
// so. The tool's own annotations are already enough to know.
|
|
622
|
+
const leaving = handoffFor(tool, values);
|
|
623
|
+
const readOnly = policyFor(tool).readOnly;
|
|
624
|
+
if (!readOnly)
|
|
625
|
+
this.emitStep({ id: 'confirm', label: 'You confirmed', status: 'done' });
|
|
626
|
+
// Recorded before the call, because the call is what navigates: the
|
|
627
|
+
// courier persists the journey as it leaves, and this step has to be in
|
|
628
|
+
// it or the page it lands on shows no reason for being there.
|
|
629
|
+
this.emitStep(leaving
|
|
630
|
+
? { id: 'navigate', label: `Opening ${leaving.label}`, status: 'active' }
|
|
631
|
+
: {
|
|
632
|
+
id: 'fill',
|
|
633
|
+
label: readOnly ? 'Looking that up' : `Filling ${humanize(tool.name)}`,
|
|
634
|
+
status: 'active',
|
|
635
|
+
});
|
|
531
636
|
try {
|
|
532
637
|
const res = await this.toolSource.execTool(tool, tool.name, values);
|
|
533
638
|
const text = extractResult(res);
|
|
@@ -541,12 +646,29 @@ export class AgentHarness {
|
|
|
541
646
|
count: countRecords(res, text),
|
|
542
647
|
});
|
|
543
648
|
if (res?.isError) {
|
|
649
|
+
this.emitStep({ id: 'submit', label: 'It did not go through', status: 'failed', detail: text });
|
|
544
650
|
this.renderer.toolError(tool, text || 'Failed');
|
|
545
651
|
return;
|
|
546
652
|
}
|
|
547
653
|
this.entered = {};
|
|
548
654
|
this.liveTool = null;
|
|
549
|
-
|
|
655
|
+
// A call that left for another page has submitted nothing yet, so it
|
|
656
|
+
// gets a line saying where it went rather than a card claiming it was
|
|
657
|
+
// sent. The page it is going to finishes the job.
|
|
658
|
+
if (leaving || res?.structuredContent?.[HANDOFF_RESULT]) {
|
|
659
|
+
// Said from what we know, not from what came back: a registry may
|
|
660
|
+
// return the whole response object as JSON, and that is not a
|
|
661
|
+
// sentence to put in front of anyone.
|
|
662
|
+
this.renderer.message('assistant', leaving ? `Opening ${leaving.label} to submit this…` : 'Opening the page that can submit this…');
|
|
663
|
+
return;
|
|
664
|
+
}
|
|
665
|
+
this.emitStep({ id: 'fill', label: readOnly ? 'Looked it up' : 'Filled the form', status: 'done' });
|
|
666
|
+
this.emitStep({
|
|
667
|
+
id: 'submit',
|
|
668
|
+
label: readOnly ? 'Answered' : 'Submitted',
|
|
669
|
+
status: 'done',
|
|
670
|
+
});
|
|
671
|
+
if (readOnly) {
|
|
550
672
|
this.renderer.results(tool, res);
|
|
551
673
|
messages.push({ role: 'user', content: `[${tool.name} returned: ${text.slice(0, 400)}]` });
|
|
552
674
|
}
|
|
@@ -561,6 +683,7 @@ export class AgentHarness {
|
|
|
561
683
|
}
|
|
562
684
|
catch (err) {
|
|
563
685
|
const message = String(err?.message || err);
|
|
686
|
+
this.emitStep({ id: 'submit', label: 'It did not go through', status: 'failed', detail: message });
|
|
564
687
|
working.finalize('');
|
|
565
688
|
this.renderer.status('');
|
|
566
689
|
// A call that threw is the main reason to open a trace.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/harness/harness.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/harness/harness.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import type { ModelContextToolInfo, ModelContextToolResponse } from '../types.js';
|
|
12
12
|
import type { ClarificationPlan } from './plan.js';
|
|
13
13
|
import type { Resolution, Slot } from './slots.js';
|
|
14
|
+
import type { AgentStep } from './steps.js';
|
|
14
15
|
/** One tool call and its response, for renderers that show their work. */
|
|
15
16
|
export interface TraceEntry {
|
|
16
17
|
/** The tool that was called. */
|
|
@@ -82,6 +83,22 @@ export interface ConfirmRequest {
|
|
|
82
83
|
slots: Slot[];
|
|
83
84
|
/** The values that will be sent. */
|
|
84
85
|
values: Record<string, unknown>;
|
|
86
|
+
/**
|
|
87
|
+
* What the submit button should say, when "Submit" would understate it.
|
|
88
|
+
*
|
|
89
|
+
* Set for a form on another page of the site, where pressing submit also
|
|
90
|
+
* takes the visitor there: `'Open & submit'`. Short on purpose, since a
|
|
91
|
+
* card in a window or a rail has little room; {@link destination} carries
|
|
92
|
+
* the rest. A renderer that ignores both still works, but the page change
|
|
93
|
+
* arrives unannounced.
|
|
94
|
+
*/
|
|
95
|
+
submitLabel?: string;
|
|
96
|
+
/**
|
|
97
|
+
* The page pressing submit will open, named for the visitor:
|
|
98
|
+
* `'Royal Oak Remodeling'`. Set with {@link submitLabel}, for a renderer
|
|
99
|
+
* to say in a sentence what the button no longer has room to.
|
|
100
|
+
*/
|
|
101
|
+
destination?: string;
|
|
85
102
|
/** Call to proceed, optionally with values the user amended. */
|
|
86
103
|
onSubmit(values: Record<string, unknown>): void;
|
|
87
104
|
/** Call if the user declines. */
|
|
@@ -147,6 +164,19 @@ export interface HarnessRenderer {
|
|
|
147
164
|
* panel. Omit it to record nothing.
|
|
148
165
|
*/
|
|
149
166
|
trace?(entry: TraceEntry): void;
|
|
167
|
+
/**
|
|
168
|
+
* Report what the agent is doing, for a surface that shows progress.
|
|
169
|
+
*
|
|
170
|
+
* The thread says what was said; this says that the page is about to
|
|
171
|
+
* change, or that a form is being filled right now. A chat panel can ignore
|
|
172
|
+
* it — the status line and the cards already cover the same ground — and a
|
|
173
|
+
* copilot surface beside the page is built on it.
|
|
174
|
+
*
|
|
175
|
+
* @param step - The step that changed.
|
|
176
|
+
* @param all - Every step of this journey, oldest first, including the ones
|
|
177
|
+
* taken before a page change.
|
|
178
|
+
*/
|
|
179
|
+
step?(step: AgentStep, all: AgentStep[]): void;
|
|
150
180
|
/** Tear down any live ask or confirm UI. */
|
|
151
181
|
dismissPrompt?(): void;
|
|
152
182
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/harness/renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/harness/renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the agent is doing, as a short list a surface can show.
|
|
3
|
+
*
|
|
4
|
+
* A chat thread says what was said; it does not say that the page is about to
|
|
5
|
+
* change, or that a form is being filled right now. A copilot surface beside
|
|
6
|
+
* the page needs the second thing, and so does anyone watching a call travel
|
|
7
|
+
* to another page and finish there.
|
|
8
|
+
*
|
|
9
|
+
* The journey outlives the page. A call confirmed on one page is submitted on
|
|
10
|
+
* another, so the steps taken before the navigation are persisted with the
|
|
11
|
+
* call and restored on arrival — otherwise the surface that exists to explain
|
|
12
|
+
* the journey would show only its last step.
|
|
13
|
+
*
|
|
14
|
+
* @module
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* The steps a turn can take, in the order they happen.
|
|
18
|
+
*
|
|
19
|
+
* A closed set, so a surface can give each one its own words and ordering
|
|
20
|
+
* rather than printing whatever it is handed. Surfaces should still ignore an
|
|
21
|
+
* id they do not know: this list may grow.
|
|
22
|
+
*/
|
|
23
|
+
export type AgentStepId =
|
|
24
|
+
/** A tool was chosen for the request. */
|
|
25
|
+
'choose'
|
|
26
|
+
/** Values are being collected from the user. */
|
|
27
|
+
| 'collect'
|
|
28
|
+
/** Everything is known; a human is being asked to press submit. */
|
|
29
|
+
| 'confirm'
|
|
30
|
+
/** Leaving for the page that can run the action. */
|
|
31
|
+
| 'navigate'
|
|
32
|
+
/** That page is open. */
|
|
33
|
+
| 'arrive'
|
|
34
|
+
/** The form is being filled and submitted. */
|
|
35
|
+
| 'fill'
|
|
36
|
+
/** The turn finished. */
|
|
37
|
+
| 'submit';
|
|
38
|
+
/** How far a step got. */
|
|
39
|
+
export type AgentStepStatus = 'active' | 'done' | 'failed';
|
|
40
|
+
/** One step of what the agent is doing. */
|
|
41
|
+
export interface AgentStep {
|
|
42
|
+
/** Which step this is. Recording the same id again updates it in place. */
|
|
43
|
+
id: AgentStepId;
|
|
44
|
+
/**
|
|
45
|
+
* Which journey the step belongs to — one per request that acts.
|
|
46
|
+
*
|
|
47
|
+
* A conversation holds many requests, and a surface that keeps what was
|
|
48
|
+
* done needs to know which of them a step belongs to. Filled in when the
|
|
49
|
+
* step is recorded; carried across a page change with the rest.
|
|
50
|
+
*/
|
|
51
|
+
journey?: string;
|
|
52
|
+
/** What is happening, in the user's words: `Filling the quote form`. */
|
|
53
|
+
label: string;
|
|
54
|
+
/** How far it got. */
|
|
55
|
+
status: AgentStepStatus;
|
|
56
|
+
/** A quieter second line: `name, email, service`. */
|
|
57
|
+
detail?: string;
|
|
58
|
+
}
|
|
59
|
+
type Listener = (step: AgentStep, all: AgentStep[]) => void;
|
|
60
|
+
/**
|
|
61
|
+
* Start a new journey, discarding the last one.
|
|
62
|
+
*
|
|
63
|
+
* Called when a turn begins, so a surface does not show the previous
|
|
64
|
+
* request's steps beside this one's.
|
|
65
|
+
*
|
|
66
|
+
* @returns The new journey's id, which every step recorded until the next
|
|
67
|
+
* call carries.
|
|
68
|
+
*/
|
|
69
|
+
export declare function beginJourney(): string;
|
|
70
|
+
/** The journey steps are being recorded into, or null before the first. */
|
|
71
|
+
export declare function currentJourney(): string | null;
|
|
72
|
+
/**
|
|
73
|
+
* Record a step, or update one already recorded.
|
|
74
|
+
*
|
|
75
|
+
* @param step - The step. An id already present is replaced where it stands,
|
|
76
|
+
* so `active` becoming `done` does not append a second line. The step is
|
|
77
|
+
* stamped with the current journey.
|
|
78
|
+
*/
|
|
79
|
+
export declare function recordStep(step: AgentStep): void;
|
|
80
|
+
/** The steps so far, oldest first. */
|
|
81
|
+
export declare function journeySteps(): AgentStep[];
|
|
82
|
+
/**
|
|
83
|
+
* Replace the journey with one that was carried here.
|
|
84
|
+
*
|
|
85
|
+
* Used on arrival, where the steps that led to the page change happened
|
|
86
|
+
* before this page existed.
|
|
87
|
+
*/
|
|
88
|
+
export declare function restoreJourney(steps: AgentStep[] | undefined): void;
|
|
89
|
+
/**
|
|
90
|
+
* Watch the journey.
|
|
91
|
+
*
|
|
92
|
+
* A renderer receives steps through {@link HarnessRenderer.step} and needs
|
|
93
|
+
* none of this; a surface drawn outside the harness — a side panel the host
|
|
94
|
+
* owns — subscribes here instead.
|
|
95
|
+
*
|
|
96
|
+
* @param listener - Called with the step that changed, and the whole list.
|
|
97
|
+
* @returns Stop listening.
|
|
98
|
+
*/
|
|
99
|
+
export declare function onJourneyChange(listener: Listener): () => void;
|
|
100
|
+
export {};
|
|
101
|
+
//# sourceMappingURL=steps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/harness/steps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,WAAW;AACrB,yCAAyC;AACvC,QAAQ;AACV,gDAAgD;GAC9C,SAAS;AACX,mEAAmE;GACjE,SAAS;AACX,oDAAoD;GAClD,UAAU;AACZ,yBAAyB;GACvB,QAAQ;AACV,8CAA8C;GAC5C,MAAM;AACR,yBAAyB;GACvB,QAAQ,CAAC;AAEb,0BAA0B;AAC1B,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE3D,2CAA2C;AAC3C,MAAM,WAAW,SAAS;IACxB,2EAA2E;IAC3E,EAAE,EAAE,WAAW,CAAC;IAChB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;AAS5D;;;;;;;;GAQG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAKrC;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAOhD;AAED,sCAAsC;AACtC,wBAAgB,YAAY,IAAI,SAAS,EAAE,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAOnE;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI,CAG9D"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the agent is doing, as a short list a surface can show.
|
|
3
|
+
*
|
|
4
|
+
* A chat thread says what was said; it does not say that the page is about to
|
|
5
|
+
* change, or that a form is being filled right now. A copilot surface beside
|
|
6
|
+
* the page needs the second thing, and so does anyone watching a call travel
|
|
7
|
+
* to another page and finish there.
|
|
8
|
+
*
|
|
9
|
+
* The journey outlives the page. A call confirmed on one page is submitted on
|
|
10
|
+
* another, so the steps taken before the navigation are persisted with the
|
|
11
|
+
* call and restored on arrival — otherwise the surface that exists to explain
|
|
12
|
+
* the journey would show only its last step.
|
|
13
|
+
*
|
|
14
|
+
* @module
|
|
15
|
+
*/
|
|
16
|
+
let journey = [];
|
|
17
|
+
let journeyId = null;
|
|
18
|
+
const listeners = new Set();
|
|
19
|
+
const newJourneyId = () => 'j' + Date.now().toString(36) + Math.random().toString(36).slice(2, 7);
|
|
20
|
+
/**
|
|
21
|
+
* Start a new journey, discarding the last one.
|
|
22
|
+
*
|
|
23
|
+
* Called when a turn begins, so a surface does not show the previous
|
|
24
|
+
* request's steps beside this one's.
|
|
25
|
+
*
|
|
26
|
+
* @returns The new journey's id, which every step recorded until the next
|
|
27
|
+
* call carries.
|
|
28
|
+
*/
|
|
29
|
+
export function beginJourney() {
|
|
30
|
+
journey = [];
|
|
31
|
+
journeyId = newJourneyId();
|
|
32
|
+
notify(undefined);
|
|
33
|
+
return journeyId;
|
|
34
|
+
}
|
|
35
|
+
/** The journey steps are being recorded into, or null before the first. */
|
|
36
|
+
export function currentJourney() {
|
|
37
|
+
return journeyId;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Record a step, or update one already recorded.
|
|
41
|
+
*
|
|
42
|
+
* @param step - The step. An id already present is replaced where it stands,
|
|
43
|
+
* so `active` becoming `done` does not append a second line. The step is
|
|
44
|
+
* stamped with the current journey.
|
|
45
|
+
*/
|
|
46
|
+
export function recordStep(step) {
|
|
47
|
+
journeyId ?? (journeyId = newJourneyId());
|
|
48
|
+
const stamped = { ...step, journey: journeyId };
|
|
49
|
+
const at = journey.findIndex((s) => s.id === step.id);
|
|
50
|
+
if (at >= 0)
|
|
51
|
+
journey[at] = { ...journey[at], ...stamped };
|
|
52
|
+
else
|
|
53
|
+
journey.push(stamped);
|
|
54
|
+
notify(stamped);
|
|
55
|
+
}
|
|
56
|
+
/** The steps so far, oldest first. */
|
|
57
|
+
export function journeySteps() {
|
|
58
|
+
return journey.map((s) => ({ ...s }));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Replace the journey with one that was carried here.
|
|
62
|
+
*
|
|
63
|
+
* Used on arrival, where the steps that led to the page change happened
|
|
64
|
+
* before this page existed.
|
|
65
|
+
*/
|
|
66
|
+
export function restoreJourney(steps) {
|
|
67
|
+
journey = (steps ?? []).map((s) => ({ ...s }));
|
|
68
|
+
// The same journey, continued: steps recorded from here belong with the
|
|
69
|
+
// ones taken on the page before, not to a new request.
|
|
70
|
+
journeyId = journey.find((s) => s.journey)?.journey ?? newJourneyId();
|
|
71
|
+
journey = journey.map((s) => ({ ...s, journey: journeyId }));
|
|
72
|
+
notify(undefined);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Watch the journey.
|
|
76
|
+
*
|
|
77
|
+
* A renderer receives steps through {@link HarnessRenderer.step} and needs
|
|
78
|
+
* none of this; a surface drawn outside the harness — a side panel the host
|
|
79
|
+
* owns — subscribes here instead.
|
|
80
|
+
*
|
|
81
|
+
* @param listener - Called with the step that changed, and the whole list.
|
|
82
|
+
* @returns Stop listening.
|
|
83
|
+
*/
|
|
84
|
+
export function onJourneyChange(listener) {
|
|
85
|
+
listeners.add(listener);
|
|
86
|
+
return () => listeners.delete(listener);
|
|
87
|
+
}
|
|
88
|
+
function notify(step) {
|
|
89
|
+
const all = journeySteps();
|
|
90
|
+
// A restore or a reset has no single step to point at; the list is the news.
|
|
91
|
+
const changed = step ?? all[all.length - 1] ?? { id: 'choose', label: '', status: 'done' };
|
|
92
|
+
for (const listener of listeners) {
|
|
93
|
+
try {
|
|
94
|
+
listener(changed, all);
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
// One surface throwing must not stop the next from being told.
|
|
98
|
+
console.warn('[nxis-agent] a step listener threw:', err);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/harness/steps.ts"],"names":[],"mappings":"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"}
|