@dani-builder/agent-contract 0.3.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 CHANGED
@@ -10,3 +10,80 @@ 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.
63
+
64
+ ## Persistent sessions and inquiry drafts
65
+
66
+ `SessionResponse` contains the issued `sessionId`, plaintext `token`, and
67
+ `expiresAt`. Send this token as Bearer auth for chat, restore, and cancel. Chat
68
+ adds optional `requestId` for compatibility with standalone runtimes; the installed
69
+ plugin content API requires it for admission and idempotent replay.
70
+ `ConversationRestoreResponse` contains completed history, `activePersona`, and
71
+ expiration. History messages can carry `persona`, `previousPersona`, and
72
+ `requestId`, so the UI can identify the speaker after restoration.
73
+
74
+ `InquiryDraftExtension` (`type: "inquiry_draft", version: 1`) carries
75
+ `{ topics: [{ id, title, summary, facts }], message, persona }`. Facts come from
76
+ selected user topics. `parseSseEvent` validates it in standalone `extension` and
77
+ `done.extensions` events; malformed topics are rejected. Clients decide how to
78
+ open/prepopulate forms and handle consent/submission. This contract does not
79
+ submit an inquiry.
80
+
81
+ `persona_routing` v1 still carries a string `topic`. The plugin's structured
82
+ internal planner topic is projected to its title, preserving existing clients.
83
+
84
+ ## Response extensions
85
+
86
+ See [Agent output extensions](../../docs/guides/agent-output-extensions.md) for the
87
+ versioned extension table, inquiry prefill and renderer overrides.
88
+ `ResponseExtension` includes `UiBlockExtension` v1 and inquiry draft optional
89
+ `InquiryPrefill`. Legacy inquiry drafts and both follow-up versions still parse.
@@ -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,37 @@ export interface PersonaRoutingExtension {
27
38
  topic: string;
28
39
  };
29
40
  }
30
- export type ResponseExtension = PersonaRoutingExtension | FollowUpQuestionsExtension | GenericBlockExtension;
41
+ export interface InquiryPrefill {
42
+ name?: string;
43
+ email?: string;
44
+ phone?: string;
45
+ subject?: string;
46
+ message?: string;
47
+ }
48
+ export interface UiBlockExtension {
49
+ type: "ui_block";
50
+ version: 1;
51
+ payload: {
52
+ component: string;
53
+ props: Record<string, unknown>;
54
+ placement?: "inline" | "after" | "panel";
55
+ };
56
+ }
57
+ export interface InquiryDraftExtension {
58
+ type: "inquiry_draft";
59
+ version: 1;
60
+ payload: {
61
+ topics: {
62
+ id: string;
63
+ title: string;
64
+ summary: string;
65
+ facts: string[];
66
+ }[];
67
+ message: string;
68
+ persona: string;
69
+ prefill?: InquiryPrefill;
70
+ };
71
+ }
72
+ export type ResponseExtension = UiBlockExtension | InquiryDraftExtension | PersonaRoutingExtension | FollowUpQuestionsExtension | FollowUpQuestionsV2Extension | GenericBlockExtension;
31
73
  export declare function parseResponseExtension(value: unknown): ResponseExtension | null;
32
74
  //# sourceMappingURL=extensions.d.ts.map
@@ -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,GAC3B,uBAAuB,GAAG,0BAA0B,GAAG,qBAAqB,CAAC;AAQ/E,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,GACb,iBAAiB,GAAG,IAAI,CA4D1B"}
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,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;KAC1C,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE;QACP,MAAM,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,EAAE,CAAA;SAAE,EAAE,CAAC;QAC1E,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,cAAc,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,MAAM,iBAAiB,GACzB,gBAAgB,GAChB,qBAAqB,GACrB,uBAAuB,GACvB,0BAA0B,GAC1B,4BAA4B,GAC5B,qBAAqB,CAAC;AAQ1B,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,GACb,iBAAiB,GAAG,IAAI,CA6K1B"}
@@ -5,6 +5,79 @@ export function parseResponseExtension(value) {
5
5
  if (typeof value !== "object" || value === null)
6
6
  return null;
7
7
  const record = value;
8
+ if (record.type === "ui_block" && record.version === 1) {
9
+ const payload = record.payload;
10
+ if (!payload || typeof payload !== "object" || Array.isArray(payload))
11
+ return null;
12
+ const { component, props, placement } = payload;
13
+ if (typeof component !== "string" ||
14
+ !component.trim() ||
15
+ !props ||
16
+ typeof props !== "object" ||
17
+ Array.isArray(props) ||
18
+ (placement !== undefined &&
19
+ (typeof placement !== "string" ||
20
+ !["inline", "after", "panel"].includes(placement))))
21
+ return null;
22
+ return {
23
+ type: "ui_block",
24
+ version: 1,
25
+ payload: {
26
+ component,
27
+ props: props,
28
+ ...(placement !== undefined
29
+ ? { placement: placement }
30
+ : {}),
31
+ },
32
+ };
33
+ }
34
+ if (record.type === "inquiry_draft" && record.version === 1) {
35
+ const payload = record.payload;
36
+ if (!payload ||
37
+ typeof payload.message !== "string" ||
38
+ typeof payload.persona !== "string" ||
39
+ !Array.isArray(payload.topics))
40
+ return null;
41
+ let prefill;
42
+ if (payload.prefill !== undefined) {
43
+ if (!payload.prefill ||
44
+ typeof payload.prefill !== "object" ||
45
+ Array.isArray(payload.prefill))
46
+ return null;
47
+ const fields = payload.prefill;
48
+ if (Object.entries(fields).some(([key, item]) => !["name", "email", "phone", "subject", "message"].includes(key) ||
49
+ typeof item !== "string"))
50
+ return null;
51
+ prefill = fields;
52
+ }
53
+ const topics = [];
54
+ for (const item of payload.topics) {
55
+ if (!item || typeof item !== "object")
56
+ return null;
57
+ const topic = item;
58
+ if (typeof topic.id !== "string" ||
59
+ typeof topic.title !== "string" ||
60
+ typeof topic.summary !== "string" ||
61
+ !isStringArray(topic.facts))
62
+ return null;
63
+ topics.push({
64
+ id: topic.id,
65
+ title: topic.title,
66
+ summary: topic.summary,
67
+ facts: topic.facts,
68
+ });
69
+ }
70
+ return {
71
+ type: "inquiry_draft",
72
+ version: 1,
73
+ payload: {
74
+ topics,
75
+ message: payload.message,
76
+ persona: payload.persona,
77
+ ...(prefill ? { prefill } : {}),
78
+ },
79
+ };
80
+ }
8
81
  if (record.type === "persona_routing" && record.version === 1) {
9
82
  if (!record.payload || typeof record.payload !== "object")
10
83
  return null;
@@ -34,6 +107,33 @@ export function parseResponseExtension(value) {
34
107
  ? { type: "follow_up_questions", version: 1, payload: { questions } }
35
108
  : null;
36
109
  }
110
+ if (record.type === "follow_up_questions" && record.version === 2) {
111
+ const payload = record.payload;
112
+ if (typeof payload !== "object" ||
113
+ payload === null ||
114
+ Array.isArray(payload))
115
+ return null;
116
+ const rawItems = payload.items;
117
+ if (!Array.isArray(rawItems))
118
+ return null;
119
+ const items = [];
120
+ for (const rawItem of rawItems) {
121
+ if (typeof rawItem !== "object" ||
122
+ rawItem === null ||
123
+ Array.isArray(rawItem))
124
+ return null;
125
+ const { label, prompt } = rawItem;
126
+ if (typeof label !== "string" || !label.trim())
127
+ return null;
128
+ if (prompt !== undefined && typeof prompt !== "string")
129
+ return null;
130
+ items.push({
131
+ label,
132
+ ...(typeof prompt === "string" && prompt.trim() ? { prompt } : {}),
133
+ });
134
+ }
135
+ return { type: "follow_up_questions", version: 2, payload: { items } };
136
+ }
37
137
  if (record.type === "generic_block" && record.version === 1) {
38
138
  const payload = record.payload;
39
139
  if (typeof payload !== "object" || payload === null)
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"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"}
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";
6
- export type { AgentPublicProfile, AgentRetrievalConfig, ChatRequest, ChatResponse, ConversationHistoryMessage, PublicAgentSummary, } from "./public-api.js";
5
+ export type { InquiryPrefill, UiBlockExtension, InquiryDraftExtension, PersonaRoutingExtension, FollowUpQuestionsExtension, FollowUpQuestionsV2Extension, SuggestedPrompt, GenericBlockExtension, GenericBlockItem, ResponseExtension, } from "./extensions.js";
6
+ export type { AgentPublicProfile, AgentRetrievalConfig, SessionResponse, ConversationRestoreResponse, 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
@@ -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,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,2BAA2B,EAC3B,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"}
@@ -21,6 +21,8 @@ export interface AgentRetrievalConfig {
21
21
  }
22
22
  export interface ChatRequest {
23
23
  message: string;
24
+ /** Required by the persistent content API; retries reuse this ID and payload. */
25
+ requestId?: string;
24
26
  agentId?: string;
25
27
  sessionId?: string;
26
28
  locale?: string;
@@ -41,7 +43,22 @@ export interface ChatResponse {
41
43
  contextApplied?: boolean;
42
44
  contextStatus?: "applied" | "quote_unverified" | "unavailable";
43
45
  }
46
+ export interface SessionResponse {
47
+ sessionId: string;
48
+ token: string;
49
+ expiresAt: string;
50
+ }
51
+ export interface ConversationRestoreResponse {
52
+ sessionId: string;
53
+ agentId: string;
54
+ activePersona: string | null;
55
+ expiresAt: string;
56
+ messages: ConversationHistoryMessage[];
57
+ }
44
58
  export interface ConversationHistoryMessage {
59
+ persona?: string | null;
60
+ previousPersona?: string | null;
61
+ requestId?: string;
45
62
  role: "user" | "assistant";
46
63
  content: string;
47
64
  context?: StoredContext | null;
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAC/E;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,SAAS,GAAG,kBAAkB,GAAG,aAAa,CAAC;CAChE;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACjC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B"}
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAC/E;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,SAAS,GAAG,kBAAkB,GAAG,aAAa,CAAC;CAChE;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,0BAA0B,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACjC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dani-builder/agent-contract",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Zero-dependency wire contracts for Daniworks Agent clients.",
5
5
  "license": "MIT",
6
6
  "type": "module",