@nxisai/agent-harness 0.7.0 → 0.9.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/LICENSE +201 -0
- package/README.md +17 -5
- package/dist/a2ui/cards.d.ts +3 -0
- package/dist/a2ui/cards.d.ts.map +1 -1
- package/dist/a2ui/cards.js +11 -2
- package/dist/a2ui/cards.js.map +1 -1
- package/dist/harness/cta.d.ts +27 -0
- package/dist/harness/cta.d.ts.map +1 -0
- package/dist/harness/cta.js +43 -0
- package/dist/harness/cta.js.map +1 -0
- package/dist/harness/harness.d.ts +33 -0
- package/dist/harness/harness.d.ts.map +1 -1
- package/dist/harness/harness.js +84 -2
- package/dist/harness/harness.js.map +1 -1
- package/dist/harness/recommend.d.ts +46 -0
- package/dist/harness/recommend.d.ts.map +1 -0
- package/dist/harness/recommend.js +144 -0
- package/dist/harness/recommend.js.map +1 -0
- package/dist/harness/records.d.ts +70 -0
- package/dist/harness/records.d.ts.map +1 -0
- package/dist/harness/records.js +209 -0
- package/dist/harness/records.js.map +1 -0
- package/dist/harness/renderer.d.ts +11 -1
- package/dist/harness/renderer.d.ts.map +1 -1
- package/dist/harness/router/coordinator.d.ts +6 -0
- package/dist/harness/router/coordinator.d.ts.map +1 -1
- package/dist/harness/router/coordinator.js +14 -0
- package/dist/harness/router/coordinator.js.map +1 -1
- package/dist/harness/tools/action-tools.d.ts +25 -0
- package/dist/harness/tools/action-tools.d.ts.map +1 -1
- package/dist/harness/tools/action-tools.js +39 -0
- package/dist/harness/tools/action-tools.js.map +1 -1
- package/dist/harness/tools/inbound.d.ts +88 -0
- package/dist/harness/tools/inbound.d.ts.map +1 -0
- package/dist/harness/tools/inbound.js +156 -0
- package/dist/harness/tools/inbound.js.map +1 -0
- package/dist/harness/tools/site-pages.js +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/ui/agent-fullscreen.d.ts.map +1 -1
- package/dist/ui/agent-fullscreen.js +154 -76
- package/dist/ui/agent-fullscreen.js.map +1 -1
- package/dist/ui/result-pick.d.ts +52 -0
- package/dist/ui/result-pick.d.ts.map +1 -0
- package/dist/ui/result-pick.js +196 -0
- package/dist/ui/result-pick.js.map +1 -0
- package/package.json +1 -1
- package/src/a2ui/cards.ts +14 -2
- package/src/harness/cta.ts +54 -0
- package/src/harness/harness.ts +93 -2
- package/src/harness/recommend.ts +194 -0
- package/src/harness/records.ts +237 -0
- package/src/harness/renderer.ts +12 -1
- package/src/harness/router/coordinator.ts +14 -0
- package/src/harness/tools/action-tools.ts +41 -0
- package/src/harness/tools/inbound.ts +189 -0
- package/src/harness/tools/site-pages.ts +1 -1
- package/src/index.ts +16 -0
- package/src/ui/agent-fullscreen.ts +162 -66
- package/src/ui/result-pick.ts +233 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { ModelContext, ModelContextToolInfo } from '../../types.js';
|
|
2
|
+
/** The action to open on: its `@id`. */
|
|
3
|
+
export declare const HANDOFF_PARAM = "nxis_handoff";
|
|
4
|
+
/** What the person wants, in a few words. Optional. */
|
|
5
|
+
export declare const INTENT_PARAM = "nxis_intent";
|
|
6
|
+
/** A few words: enough for "a quote for a panel upgrade", not a message. */
|
|
7
|
+
export declare const MAX_INTENT = 120;
|
|
8
|
+
/** A handoff read from the address. */
|
|
9
|
+
export interface InboundHandoff {
|
|
10
|
+
/** The `@id` of the action whose form to open. */
|
|
11
|
+
actionId: string;
|
|
12
|
+
/** What the person wants, cleaned up; absent when none was given. */
|
|
13
|
+
intent?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The handoff in an address, if there is one.
|
|
17
|
+
*
|
|
18
|
+
* @param href - The page's address.
|
|
19
|
+
* @returns The handoff, or null when there is none or it is malformed.
|
|
20
|
+
*/
|
|
21
|
+
export declare function readInboundHandoff(href: string): InboundHandoff | null;
|
|
22
|
+
/** One line of plain text, at most {@link MAX_INTENT} characters. */
|
|
23
|
+
export declare function cleanIntent(raw: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* The address without the handoff parameters, everything else kept.
|
|
26
|
+
*
|
|
27
|
+
* A reload, a bookmark or a copied link would otherwise open the form again.
|
|
28
|
+
*/
|
|
29
|
+
export declare function withoutHandoff(href: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* The address that hands someone to an action's page.
|
|
32
|
+
*
|
|
33
|
+
* @param pageUrl - The page the action's form is on.
|
|
34
|
+
* @param actionId - The action's `@id`.
|
|
35
|
+
* @param intent - What they want, in a few words. Nothing personal.
|
|
36
|
+
*/
|
|
37
|
+
export declare function handoffUrl(pageUrl: string, actionId: string, intent?: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Read the handoff from this page's address and take it out.
|
|
40
|
+
*
|
|
41
|
+
* @param opts - The address and the history to rewrite; the browser's by default.
|
|
42
|
+
*/
|
|
43
|
+
export declare function takeInboundHandoff(opts?: {
|
|
44
|
+
href?: string;
|
|
45
|
+
replace?: (href: string) => void;
|
|
46
|
+
}): InboundHandoff | null;
|
|
47
|
+
/** What the agent says to start a form: "Start the quote form". */
|
|
48
|
+
export declare function startMessage(tool: ModelContextToolInfo): string;
|
|
49
|
+
/**
|
|
50
|
+
* What the agent says to start a site form for one business, in the words a
|
|
51
|
+
* result card's button uses: "Get a quote from McManus Electric".
|
|
52
|
+
*/
|
|
53
|
+
export declare function startFormMessage(noun: string, choice?: string): string;
|
|
54
|
+
/** Where the form a handoff names stands, once the page has loaded. */
|
|
55
|
+
export type ArrivalOutcome =
|
|
56
|
+
/** WebMCP never appeared, so the page's forms cannot be reached. */
|
|
57
|
+
{
|
|
58
|
+
status: 'no-registry';
|
|
59
|
+
}
|
|
60
|
+
/** The page has no form for that action. */
|
|
61
|
+
| {
|
|
62
|
+
status: 'no-tool';
|
|
63
|
+
}
|
|
64
|
+
/** The form is here. */
|
|
65
|
+
| {
|
|
66
|
+
status: 'ready';
|
|
67
|
+
tool: ModelContextToolInfo;
|
|
68
|
+
};
|
|
69
|
+
/** Overrides, so this can be exercised without a page. */
|
|
70
|
+
export interface ArrivalOptions {
|
|
71
|
+
/** How long to wait for the registry, and then for the tool. */
|
|
72
|
+
timeoutMs?: number;
|
|
73
|
+
/** Wait for a WebMCP registry. */
|
|
74
|
+
registry?(timeoutMs: number): Promise<ModelContext | null>;
|
|
75
|
+
/** Wait for the page's own tool for this action. */
|
|
76
|
+
pageTool?(mc: ModelContext, ref: {
|
|
77
|
+
id: string;
|
|
78
|
+
name: string;
|
|
79
|
+
}, timeoutMs: number): Promise<ModelContextToolInfo | null>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Find the form a handoff names, waiting for the page to register it.
|
|
83
|
+
*
|
|
84
|
+
* Runs while the page is still loading, as the cross-page resume does: the
|
|
85
|
+
* registry and the form's tool usually appear a moment after the agent.
|
|
86
|
+
*/
|
|
87
|
+
export declare function findHandoffForm(handoff: InboundHandoff, opts?: ArrivalOptions): Promise<ArrivalOutcome>;
|
|
88
|
+
//# sourceMappingURL=inbound.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbound.d.ts","sourceRoot":"","sources":["../../../src/harness/tools/inbound.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEzE,wCAAwC;AACxC,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAC5C,uDAAuD;AACvD,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAI1C,4EAA4E;AAC5E,eAAO,MAAM,UAAU,MAAM,CAAC;AAK9B,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAWtE;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWnD;AAWD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAQrF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAO,GAC7D,cAAc,GAAG,IAAI,CAevB;AAED,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAE/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtE;AAED,uEAAuE;AACvE,MAAM,MAAM,cAAc;AACxB,oEAAoE;AAClE;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE;AAC3B,4CAA4C;GAC1C;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE;AACvB,wBAAwB;GACtB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAEpD,0DAA0D;AAC1D,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,QAAQ,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC3D,oDAAoD;IACpD,QAAQ,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;CACzH;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAQjH"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Arriving from somewhere else to use one of this page's forms.
|
|
3
|
+
*
|
|
4
|
+
* The NxisAI app in Claude or ChatGPT cannot fill a form that runs in the
|
|
5
|
+
* browser, so for such an action it sends the person to the page instead:
|
|
6
|
+
* `?nxis_handoff=<the action's @id>`, and optionally `&nxis_intent=<what they
|
|
7
|
+
* want>`. On arrival the agent opens on that form.
|
|
8
|
+
*
|
|
9
|
+
* In the query, so the fragment, which some sites route by, is left alone. A
|
|
10
|
+
* page's structured data is found by its registered address, so the site tag
|
|
11
|
+
* leaves these two parameters out of the address it asks for.
|
|
12
|
+
*
|
|
13
|
+
* A link can be written by anyone, so it only ever chooses which of the page's
|
|
14
|
+
* own forms to start. The words that start it are the agent's own, built from
|
|
15
|
+
* the form; the intent is left in the composer for the person to send, change
|
|
16
|
+
* or delete, never sent on their behalf. Neither parameter carries anything
|
|
17
|
+
* personal, and both are taken out of the address bar once read.
|
|
18
|
+
*
|
|
19
|
+
* @module
|
|
20
|
+
*/
|
|
21
|
+
import { awaitPageTool, withoutSiteSuffix } from './action-tools.js';
|
|
22
|
+
import { waitForModelContext } from './source.js';
|
|
23
|
+
/** The action to open on: its `@id`. */
|
|
24
|
+
export const HANDOFF_PARAM = 'nxis_handoff';
|
|
25
|
+
/** What the person wants, in a few words. Optional. */
|
|
26
|
+
export const INTENT_PARAM = 'nxis_intent';
|
|
27
|
+
/** Longer than any `@id` the crawler writes; a longer value is not one. */
|
|
28
|
+
const MAX_ID = 512;
|
|
29
|
+
/** A few words: enough for "a quote for a panel upgrade", not a message. */
|
|
30
|
+
export const MAX_INTENT = 120;
|
|
31
|
+
/** How long to wait for the registry, and then for the form's own tool. */
|
|
32
|
+
const WAIT_MS = 8000;
|
|
33
|
+
/**
|
|
34
|
+
* The handoff in an address, if there is one.
|
|
35
|
+
*
|
|
36
|
+
* @param href - The page's address.
|
|
37
|
+
* @returns The handoff, or null when there is none or it is malformed.
|
|
38
|
+
*/
|
|
39
|
+
export function readInboundHandoff(href) {
|
|
40
|
+
let url;
|
|
41
|
+
try {
|
|
42
|
+
url = new URL(href);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
const actionId = (url.searchParams.get(HANDOFF_PARAM) ?? '').trim();
|
|
48
|
+
if (!actionId || actionId.length > MAX_ID || /\s/.test(actionId))
|
|
49
|
+
return null;
|
|
50
|
+
const intent = cleanIntent(url.searchParams.get(INTENT_PARAM) ?? '');
|
|
51
|
+
return intent ? { actionId, intent } : { actionId };
|
|
52
|
+
}
|
|
53
|
+
/** One line of plain text, at most {@link MAX_INTENT} characters. */
|
|
54
|
+
export function cleanIntent(raw) {
|
|
55
|
+
// Control characters, newlines included, become spaces: a draft is one line.
|
|
56
|
+
const flat = raw.replace(/[\u0000-\u001f\u007f]+/g, ' ').replace(/\s+/g, ' ').trim();
|
|
57
|
+
return flat.length > MAX_INTENT ? flat.slice(0, MAX_INTENT - 1).trimEnd() + '…' : flat;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The address without the handoff parameters, everything else kept.
|
|
61
|
+
*
|
|
62
|
+
* A reload, a bookmark or a copied link would otherwise open the form again.
|
|
63
|
+
*/
|
|
64
|
+
export function withoutHandoff(href) {
|
|
65
|
+
const url = new URL(href);
|
|
66
|
+
if (!url.search)
|
|
67
|
+
return url.toString();
|
|
68
|
+
// Pair by pair on the raw text: re-serializing would re-encode the other
|
|
69
|
+
// parameters, and the address would no longer be the one the page had.
|
|
70
|
+
const kept = url.search
|
|
71
|
+
.slice(1)
|
|
72
|
+
.split('&')
|
|
73
|
+
.filter((pair) => ![HANDOFF_PARAM, INTENT_PARAM].includes(decodeName(pair.split('=')[0])));
|
|
74
|
+
url.search = kept.length ? `?${kept.join('&')}` : '';
|
|
75
|
+
return url.toString();
|
|
76
|
+
}
|
|
77
|
+
/** A query parameter's name, decoded; as written when it can't be. */
|
|
78
|
+
function decodeName(raw) {
|
|
79
|
+
try {
|
|
80
|
+
return decodeURIComponent(raw.replace(/\+/g, ' '));
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return raw;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The address that hands someone to an action's page.
|
|
88
|
+
*
|
|
89
|
+
* @param pageUrl - The page the action's form is on.
|
|
90
|
+
* @param actionId - The action's `@id`.
|
|
91
|
+
* @param intent - What they want, in a few words. Nothing personal.
|
|
92
|
+
*/
|
|
93
|
+
export function handoffUrl(pageUrl, actionId, intent) {
|
|
94
|
+
const url = new URL(pageUrl);
|
|
95
|
+
// Appended to the raw query, so the page's own parameters keep their encoding.
|
|
96
|
+
const added = new URLSearchParams({ [HANDOFF_PARAM]: actionId });
|
|
97
|
+
const said = intent ? cleanIntent(intent) : '';
|
|
98
|
+
if (said)
|
|
99
|
+
added.set(INTENT_PARAM, said);
|
|
100
|
+
url.search = url.search ? `${url.search}&${added}` : `?${added}`;
|
|
101
|
+
return url.toString();
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Read the handoff from this page's address and take it out.
|
|
105
|
+
*
|
|
106
|
+
* @param opts - The address and the history to rewrite; the browser's by default.
|
|
107
|
+
*/
|
|
108
|
+
export function takeInboundHandoff(opts = {}) {
|
|
109
|
+
const href = opts.href ?? (typeof location !== 'undefined' ? location.href : '');
|
|
110
|
+
const handoff = href ? readInboundHandoff(href) : null;
|
|
111
|
+
if (!handoff)
|
|
112
|
+
return null;
|
|
113
|
+
const replace = opts.replace ??
|
|
114
|
+
((next) => {
|
|
115
|
+
try {
|
|
116
|
+
history.replaceState(history.state, '', next);
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// A sandboxed frame can refuse; the handoff is still taken once, below.
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
replace(withoutHandoff(href));
|
|
123
|
+
return handoff;
|
|
124
|
+
}
|
|
125
|
+
/** What the agent says to start a form: "Start the quote form". */
|
|
126
|
+
export function startMessage(tool) {
|
|
127
|
+
return startFormMessage(withoutSiteSuffix(tool.name).replace(/[_-]+/g, ' ').trim().toLowerCase());
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* What the agent says to start a site form for one business, in the words a
|
|
131
|
+
* result card's button uses: "Get a quote from McManus Electric".
|
|
132
|
+
*/
|
|
133
|
+
export function startFormMessage(noun, choice) {
|
|
134
|
+
const named = noun || 'form';
|
|
135
|
+
const form = /\bform\b/.test(named) ? named : `${named} form`;
|
|
136
|
+
if (!choice)
|
|
137
|
+
return `Start the ${form}`;
|
|
138
|
+
return /quote/.test(named) ? `Get a quote from ${choice}` : `Start the ${form} for ${choice}`;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Find the form a handoff names, waiting for the page to register it.
|
|
142
|
+
*
|
|
143
|
+
* Runs while the page is still loading, as the cross-page resume does: the
|
|
144
|
+
* registry and the form's tool usually appear a moment after the agent.
|
|
145
|
+
*/
|
|
146
|
+
export async function findHandoffForm(handoff, opts = {}) {
|
|
147
|
+
const timeoutMs = opts.timeoutMs ?? WAIT_MS;
|
|
148
|
+
const mc = await (opts.registry ?? ((ms) => waitForModelContext(ms)))(timeoutMs);
|
|
149
|
+
if (!mc)
|
|
150
|
+
return { status: 'no-registry' };
|
|
151
|
+
// By id only: a name match could be a different form on this page.
|
|
152
|
+
const find = opts.pageTool ?? ((c, ref, ms) => awaitPageTool(c, ref, ms));
|
|
153
|
+
const tool = await find(mc, { id: handoff.actionId, name: '' }, timeoutMs);
|
|
154
|
+
return tool ? { status: 'ready', tool } : { status: 'no-tool' };
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=inbound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbound.js","sourceRoot":"","sources":["../../../src/harness/tools/inbound.ts"],"names":[],"mappings":"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"}
|
|
@@ -158,7 +158,7 @@ export function pageForEntity(entity, pages, origin) {
|
|
|
158
158
|
/**
|
|
159
159
|
* The page an id formed from it names, or null.
|
|
160
160
|
*
|
|
161
|
-
*
|
|
161
|
+
* The NxisAI index forms a page entity's id as the page URL plus a fragment, so the page is the id with
|
|
162
162
|
* the fragment removed.
|
|
163
163
|
*/
|
|
164
164
|
function pageOfId(id, origin) {
|
package/dist/index.d.ts
CHANGED
|
@@ -30,12 +30,14 @@ export type { ToolPolicy, Decision } from './harness/policy.js';
|
|
|
30
30
|
export { resolveSlots, summarySlots } from './harness/slots.js';
|
|
31
31
|
export type { Slot, Resolution, ResolveSources } from './harness/slots.js';
|
|
32
32
|
export { buildPlan } from './harness/plan.js';
|
|
33
|
+
export { actionCta } from './harness/cta.js';
|
|
34
|
+
export type { CardAction } from './harness/cta.js';
|
|
33
35
|
export { AgentCoordinator } from './harness/router/coordinator.js';
|
|
34
36
|
export type { CoordinatorOptions, RoutedTurn, RouteSource } from './harness/router/coordinator.js';
|
|
35
37
|
export { matchRoute } from './harness/router/rules.js';
|
|
36
38
|
export type { RouteRule, RouteDecision } from './harness/router/rules.js';
|
|
37
39
|
export type { ClarificationPlan, PlanStep } from './harness/plan.js';
|
|
38
|
-
export type { HarnessRenderer, AskRequest, ConfirmRequest, StreamingBubble, } from './harness/renderer.js';
|
|
40
|
+
export type { HarnessRenderer, AskRequest, ConfirmRequest, ResultsExtra, StreamingBubble, } from './harness/renderer.js';
|
|
39
41
|
export { parseToolCall, stripMarkers, humanize, lcFirst, escapeHtml, MODEL_ID, MODEL_HOST, MODEL_PATH_TEMPLATE, SYSTEM_PROMPT, MAX_STEPS, MAX_NEW_TOKENS, TOOLS_TIMEOUT_MS, } from './engine.js';
|
|
40
42
|
/**
|
|
41
43
|
* Brand marks and icons used by the packaged UI.
|
|
@@ -51,6 +53,8 @@ export { beginJourney, currentJourney, journeySteps, onJourneyChange, recordStep
|
|
|
51
53
|
export type { AgentStep, AgentStepId, AgentStepStatus } from './harness/steps.js';
|
|
52
54
|
export { resumePendingAction } from './harness/tools/resume.js';
|
|
53
55
|
export type { ResumeOutcome, ResumeOptions } from './harness/tools/resume.js';
|
|
56
|
+
export { HANDOFF_PARAM, INTENT_PARAM, readInboundHandoff, takeInboundHandoff, handoffUrl, findHandoffForm, } from './harness/tools/inbound.js';
|
|
57
|
+
export type { InboundHandoff, ArrivalOutcome, ArrivalOptions } from './harness/tools/inbound.js';
|
|
54
58
|
export { loadSitePages, parsePage, pagesFromActions, mergePages, pageForEntity, findPage, } from './harness/tools/site-pages.js';
|
|
55
59
|
export type { SitePage, SitePagesOptions } from './harness/tools/site-pages.js';
|
|
56
60
|
export { buildOpenPageTool, registerOpenPageTool, resolveDestination, visitFor, OPEN_PAGE_TOOL } from './harness/tools/open-page.js';
|
|
@@ -63,6 +67,8 @@ export type { SiteActionTool, Handoff, PageToolRef } from './harness/tools/actio
|
|
|
63
67
|
export { savePendingAction, takePendingAction, clearPendingAction, PENDING_TTL_MS, savePendingVisit, takePendingVisit, setConversationSource, } from './harness/tools/pending-action.js';
|
|
64
68
|
export type { PendingAction, PendingVisit } from './harness/tools/pending-action.js';
|
|
65
69
|
export { findEmbeddedAction, loadSiteActions, parseAction, type EmbeddedActionQuery } from './harness/tools/site-actions.js';
|
|
70
|
+
export { extractRecords, openStatus, recordFacts, factLines, type OpenStatus, type RecordFacts } from './harness/records.js';
|
|
71
|
+
export { recommend, grounded, RECOMMEND_TOOL, type ResultPick, type RecommendRequest } from './harness/recommend.js';
|
|
66
72
|
export type { ConnectResult, ConnectOptions, SiteActionsOptions } from './harness/tools/source.js';
|
|
67
73
|
export type { BridgeOptions } from './harness/tools/bridge.js';
|
|
68
74
|
export * from './handoff/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC5F,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,SAAS,GACV,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EACL,UAAU,EACV,eAAe,EACf,aAAa,EACb,aAAa,EACb,WAAW,GACZ,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1E,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAErE,YAAY,EACV,eAAe,EACf,UAAU,EACV,cAAc,EACd,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,UAAU,EACV,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB;;;;;GAKG;AACH,OAAO,EACL,aAAa,EACb,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,eAAe,EACf,cAAc,EACd,cAAc,EACd,WAAW,GACZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,eAAe,EACf,UAAU,EACV,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -26,6 +26,7 @@ export { toolSchema, missingRequired, reconcileArgs, extractResult, proseAnswer,
|
|
|
26
26
|
export { policyFor, decide } from './harness/policy.js';
|
|
27
27
|
export { resolveSlots, summarySlots } from './harness/slots.js';
|
|
28
28
|
export { buildPlan } from './harness/plan.js';
|
|
29
|
+
export { actionCta } from './harness/cta.js';
|
|
29
30
|
export { AgentCoordinator } from './harness/router/coordinator.js';
|
|
30
31
|
export { matchRoute } from './harness/router/rules.js';
|
|
31
32
|
export { parseToolCall, stripMarkers, humanize, lcFirst, escapeHtml, MODEL_ID, MODEL_HOST, MODEL_PATH_TEMPLATE, SYSTEM_PROMPT, MAX_STEPS, MAX_NEW_TOKENS, TOOLS_TIMEOUT_MS, } from './engine.js';
|
|
@@ -40,12 +41,16 @@ export { connectTools, waitForModelContext } from './harness/tools/source.js';
|
|
|
40
41
|
export { buildSiteActionTools, registerSiteActionTools, withoutShadowedTools, handoffFor, findPageTool, awaitPageTool, pageToolRef, siteToolName, sanitizeToolName, selectSiteTools, DEFAULT_SITE_TOOL_LIMIT, } from './harness/tools/action-tools.js';
|
|
41
42
|
export { beginJourney, currentJourney, journeySteps, onJourneyChange, recordStep, restoreJourney, } from './harness/steps.js';
|
|
42
43
|
export { resumePendingAction } from './harness/tools/resume.js';
|
|
44
|
+
// Arriving from the NxisAI app to use one of this page's forms.
|
|
45
|
+
export { HANDOFF_PARAM, INTENT_PARAM, readInboundHandoff, takeInboundHandoff, handoffUrl, findHandoffForm, } from './harness/tools/inbound.js';
|
|
43
46
|
export { loadSitePages, parsePage, pagesFromActions, mergePages, pageForEntity, findPage, } from './harness/tools/site-pages.js';
|
|
44
47
|
export { buildOpenPageTool, registerOpenPageTool, resolveDestination, visitFor, OPEN_PAGE_TOOL } from './harness/tools/open-page.js';
|
|
45
48
|
export { isRateLimited, retryAfterMs, withRetry } from './harness/tools/retry.js';
|
|
46
49
|
export { applyTrails, buildNav, buildPageLinksTool, describeNav, loadSiteTrails, nameOf, navFor, parentOf, parseTrail, registerPageLinksTool, PAGE_LINKS_TOOL, } from './harness/tools/site-nav.js';
|
|
47
50
|
export { savePendingAction, takePendingAction, clearPendingAction, PENDING_TTL_MS, savePendingVisit, takePendingVisit, setConversationSource, } from './harness/tools/pending-action.js';
|
|
48
51
|
export { findEmbeddedAction, loadSiteActions, parseAction } from './harness/tools/site-actions.js';
|
|
52
|
+
export { extractRecords, openStatus, recordFacts, factLines } from './harness/records.js';
|
|
53
|
+
export { recommend, grounded, RECOMMEND_TOOL } from './harness/recommend.js';
|
|
49
54
|
// Handing a conversation to another agent or a person, over A2A. See docs/handoff.md.
|
|
50
55
|
export * from './handoff/index.js';
|
|
51
56
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,gFAAgF;AAChF,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAS5F,gFAAgF;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EACL,UAAU,EACV,eAAe,EACf,aAAa,EACb,aAAa,EACb,WAAW,GACZ,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGhE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-fullscreen.d.ts","sourceRoot":"","sources":["../../src/ui/agent-fullscreen.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-fullscreen.d.ts","sourceRoot":"","sources":["../../src/ui/agent-fullscreen.ts"],"names":[],"mappings":"AAuHA,OAAO,KAAK,EAAc,oBAAoB,EAA4B,MAAM,aAAa,CAAC;AAiL9F;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC,sEAAsE;IACtE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC1C,qCAAqC;IACrC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,+CAA+C;IAC/C,IAAI,IAAI,MAAM,EAAE,CAAC;IACjB,sEAAsE;IACtE,OAAO,EAAE,OAAO,CAAC;CAClB;AA+HD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
|