@dani-builder/agent-contract 0.3.0 → 0.4.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 +50 -0
- package/dist/extensions.d.ts +12 -1
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +27 -0
- package/dist/extensions.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,3 +10,53 @@ import { parseSseEvent } from "@dani-builder/agent-contract";
|
|
|
10
10
|
The package is safe to import from browser clients: it has no Strapi or plugin
|
|
11
11
|
peer dependency. It defines chat request/response, retrieval citation, and SSE
|
|
12
12
|
event shapes; it does not implement a chat runtime.
|
|
13
|
+
|
|
14
|
+
Follow-up question extensions support two wire versions. The existing
|
|
15
|
+
`FollowUpQuestionsExtension` type remains version 1:
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import type { FollowUpQuestionsExtension } from "@dani-builder/agent-contract";
|
|
19
|
+
|
|
20
|
+
const v1: FollowUpQuestionsExtension = {
|
|
21
|
+
type: "follow_up_questions",
|
|
22
|
+
version: 1,
|
|
23
|
+
payload: { questions: ["Tell me more"] },
|
|
24
|
+
};
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Version 2 separates the displayed label from an optional submitted prompt. Import
|
|
28
|
+
`FollowUpQuestionsV2Extension` and `SuggestedPrompt` from the package root:
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
import type {
|
|
32
|
+
FollowUpQuestionsExtension,
|
|
33
|
+
FollowUpQuestionsV2Extension,
|
|
34
|
+
ResponseExtension,
|
|
35
|
+
SuggestedPrompt,
|
|
36
|
+
} from "@dani-builder/agent-contract";
|
|
37
|
+
|
|
38
|
+
const item: SuggestedPrompt = {
|
|
39
|
+
label: "Pricing",
|
|
40
|
+
prompt: "What does your service cost?",
|
|
41
|
+
};
|
|
42
|
+
const v2: FollowUpQuestionsV2Extension = {
|
|
43
|
+
type: "follow_up_questions",
|
|
44
|
+
version: 2,
|
|
45
|
+
payload: { items: [item, { label: "Tell me more" }] },
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
function submittedPrompts(extension: ResponseExtension): string[] {
|
|
49
|
+
if (extension.type !== "follow_up_questions") return [];
|
|
50
|
+
if (extension.version === 1) return extension.payload.questions;
|
|
51
|
+
return extension.payload.items.map((item) => item.prompt ?? item.label);
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Discriminate on `version` after checking `type`: both versions belong to
|
|
56
|
+
`ResponseExtension`, so exhaustive consumers must account for version 2.
|
|
57
|
+
`parseSseEvent` accepts both standalone extension events and extensions in done
|
|
58
|
+
events. For version 2, labels must be nonblank strings; missing, empty, or
|
|
59
|
+
whitespace-only prompts are omitted so `item.prompt ?? item.label` falls back to
|
|
60
|
+
the label. Nonblank strings are preserved, including surrounding whitespace.
|
|
61
|
+
Non-string prompts and malformed items reject the extension; done events filter
|
|
62
|
+
invalid extensions. Empty item arrays are valid. Version 1 parsing is unchanged.
|
package/dist/extensions.d.ts
CHANGED
|
@@ -5,6 +5,17 @@ export interface FollowUpQuestionsExtension {
|
|
|
5
5
|
questions: string[];
|
|
6
6
|
};
|
|
7
7
|
}
|
|
8
|
+
export interface SuggestedPrompt {
|
|
9
|
+
label: string;
|
|
10
|
+
prompt?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface FollowUpQuestionsV2Extension {
|
|
13
|
+
type: "follow_up_questions";
|
|
14
|
+
version: 2;
|
|
15
|
+
payload: {
|
|
16
|
+
items: SuggestedPrompt[];
|
|
17
|
+
};
|
|
18
|
+
}
|
|
8
19
|
export interface GenericBlockItem {
|
|
9
20
|
label: string;
|
|
10
21
|
value: string;
|
|
@@ -27,6 +38,6 @@ export interface PersonaRoutingExtension {
|
|
|
27
38
|
topic: string;
|
|
28
39
|
};
|
|
29
40
|
}
|
|
30
|
-
export type ResponseExtension = PersonaRoutingExtension | FollowUpQuestionsExtension | GenericBlockExtension;
|
|
41
|
+
export type ResponseExtension = PersonaRoutingExtension | FollowUpQuestionsExtension | FollowUpQuestionsV2Extension | GenericBlockExtension;
|
|
31
42
|
export declare function parseResponseExtension(value: unknown): ResponseExtension | null;
|
|
32
43
|
//# sourceMappingURL=extensions.d.ts.map
|
package/dist/extensions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC;CACxD;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE;QAAE,KAAK,EAAE,eAAe,EAAE,CAAA;KAAE,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC;CACxD;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,MAAM,iBAAiB,GACzB,uBAAuB,GACvB,0BAA0B,GAC1B,4BAA4B,GAC5B,qBAAqB,CAAC;AAQ1B,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,GACb,iBAAiB,GAAG,IAAI,CAwF1B"}
|
package/dist/extensions.js
CHANGED
|
@@ -34,6 +34,33 @@ export function parseResponseExtension(value) {
|
|
|
34
34
|
? { type: "follow_up_questions", version: 1, payload: { questions } }
|
|
35
35
|
: null;
|
|
36
36
|
}
|
|
37
|
+
if (record.type === "follow_up_questions" && record.version === 2) {
|
|
38
|
+
const payload = record.payload;
|
|
39
|
+
if (typeof payload !== "object" ||
|
|
40
|
+
payload === null ||
|
|
41
|
+
Array.isArray(payload))
|
|
42
|
+
return null;
|
|
43
|
+
const rawItems = payload.items;
|
|
44
|
+
if (!Array.isArray(rawItems))
|
|
45
|
+
return null;
|
|
46
|
+
const items = [];
|
|
47
|
+
for (const rawItem of rawItems) {
|
|
48
|
+
if (typeof rawItem !== "object" ||
|
|
49
|
+
rawItem === null ||
|
|
50
|
+
Array.isArray(rawItem))
|
|
51
|
+
return null;
|
|
52
|
+
const { label, prompt } = rawItem;
|
|
53
|
+
if (typeof label !== "string" || !label.trim())
|
|
54
|
+
return null;
|
|
55
|
+
if (prompt !== undefined && typeof prompt !== "string")
|
|
56
|
+
return null;
|
|
57
|
+
items.push({
|
|
58
|
+
label,
|
|
59
|
+
...(typeof prompt === "string" && prompt.trim() ? { prompt } : {}),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return { type: "follow_up_questions", version: 2, payload: { items } };
|
|
63
|
+
}
|
|
37
64
|
if (record.type === "generic_block" && record.version === 1) {
|
|
38
65
|
const payload = record.payload;
|
|
39
66
|
if (typeof payload !== "object" || payload === null)
|
package/dist/extensions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { AGENT_ID_PREFIX, DEFAULT_AGENT_ALIAS, isAgentId, isAgentSelector, } fro
|
|
|
2
2
|
export { formatSseEvent, parseSseEvent } from "./events.js";
|
|
3
3
|
export { parseCitedSource, parseCitedSources } from "./sources.js";
|
|
4
4
|
export type { ChatEvent, ChatEventName, ChatDoneEventData, ChatSessionEventData, } from "./events.js";
|
|
5
|
-
export type { PersonaRoutingExtension, FollowUpQuestionsExtension, GenericBlockExtension, GenericBlockItem, ResponseExtension, } from "./extensions.js";
|
|
5
|
+
export type { PersonaRoutingExtension, FollowUpQuestionsExtension, FollowUpQuestionsV2Extension, SuggestedPrompt, GenericBlockExtension, GenericBlockItem, ResponseExtension, } from "./extensions.js";
|
|
6
6
|
export type { AgentPublicProfile, AgentRetrievalConfig, ChatRequest, ChatResponse, ConversationHistoryMessage, PublicAgentSummary, } from "./public-api.js";
|
|
7
7
|
export type { ChatContextStatus, CitedSource, StoredContext, StoredContextQuote, } from "./sources.js";
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACnE,YAAY,EACV,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACnE,YAAY,EACV,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,cAAc,CAAC"}
|