@mihe-dev/js 0.1.0 → 0.2.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.
@@ -0,0 +1,79 @@
1
+ /**
2
+ * What a confirmation card says (amendment 99), worked out once per proposal
3
+ * and drawn by every card Mihe has: the web component's and the React SDK's.
4
+ *
5
+ * Two sources, both trusted, neither the model:
6
+ *
7
+ * 1. **The app's own description.** `describeProposal` (an option) is handed
8
+ * the proposal, exactly the input that will run, and returns the lines to
9
+ * show: before and after, money in the store's currency, thumbnails. It is
10
+ * the app's code over the app's data, so it can say what a generic card
11
+ * can't. It must describe the input it was given, never anything else.
12
+ * 2. **The registry's display hints**, for an app that doesn't describe a
13
+ * card. They live in the action's input schema as annotations: a summary
14
+ * template at the root (`x-mihe-summary`), and on each field a `title`,
15
+ * `x-mihe-format` (`money`, `yesno`, `date`) and `x-mihe-hidden`. Fields
16
+ * are shown in the schema's order. Hide only an opaque id that has a
17
+ * readable name beside it which the app checks: everything else that will
18
+ * run must be on the card.
19
+ *
20
+ * With neither, the card is what it always was: every field, by its key.
21
+ */
22
+ import type { ProposalPayload } from "./client.js";
23
+ /** One line of a card. */
24
+ export interface CardLine {
25
+ /** What the line is about: "Price", "Amber Soy Candle". */
26
+ label?: string;
27
+ /** The value, or what it becomes. */
28
+ text?: string;
29
+ /** What it was before, shown struck through ahead of `text`. */
30
+ before?: string;
31
+ /** A list, each entry on its own line so each can be checked. */
32
+ items?: string[];
33
+ /** Pictures of what the line is about, small. http(s), blob: and data:image only. */
34
+ images?: {
35
+ src: string;
36
+ alt?: string;
37
+ }[];
38
+ }
39
+ /** What `describeProposal` returns. */
40
+ export interface ProposalDescription {
41
+ /** One line saying what will happen: "Change Linen Shirt's price". */
42
+ summary?: string;
43
+ lines: CardLine[];
44
+ /** A short note under the lines: "All start as drafts." */
45
+ note?: string;
46
+ /** The confirm button's words: "Make 3 products". Defaults to "Confirm". */
47
+ confirmLabel?: string;
48
+ }
49
+ /**
50
+ * Describes a proposal for its card, from the app's own data. Return null (or
51
+ * throw) to fall back to the registry's hints. Called once per proposal; the
52
+ * card waits for it, with Confirm disabled, for up to four seconds.
53
+ */
54
+ export type DescribeProposal = (proposal: ProposalPayload) => ProposalDescription | null | undefined | Promise<ProposalDescription | null | undefined>;
55
+ /** A card ready to draw. */
56
+ export interface CardView extends ProposalDescription {
57
+ /** Where it came from: the app, the registry's hints, or neither. */
58
+ source: "app" | "hints" | "plain";
59
+ }
60
+ type Schema = {
61
+ title?: unknown;
62
+ properties?: Record<string, Schema>;
63
+ items?: Schema;
64
+ "x-mihe-summary"?: unknown;
65
+ "x-mihe-format"?: unknown;
66
+ "x-mihe-hidden"?: unknown;
67
+ };
68
+ /** One value, as its field's hints say to show it. */
69
+ export declare function formatField(value: unknown, schema: unknown): string;
70
+ /** `x-mihe-summary`, filled from the input: "Change {productName}" → "Change Linen Shirt". Null if a field it names is missing. */
71
+ export declare function fillSummary(template: unknown, input: Record<string, unknown>, schema: Schema): string | null;
72
+ /** The card from the registry's hints (or, with none, every field by its key). */
73
+ export declare function hintedView(proposal: ProposalPayload): CardView;
74
+ /** The app's description, made safe to draw (only plain strings, only picture addresses that can't run anything). */
75
+ export declare function appView(d: ProposalDescription): CardView;
76
+ /** How long a card waits for the app's description before drawing from the hints. */
77
+ export declare const DESCRIBE_TIMEOUT_MS = 4000;
78
+ export {};
79
+ //# sourceMappingURL=card-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-view.d.ts","sourceRoot":"","sources":["../../../js/src/card-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGhD,0BAA0B;AAC1B,MAAM,WAAW,QAAQ;IACvB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,qFAAqF;IACrF,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C;AAED,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,eAAe,KAAK,mBAAmB,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAEvJ,4BAA4B;AAC5B,MAAM,WAAW,QAAS,SAAQ,mBAAmB;IACnD,qEAAqE;IACrE,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;CACnC;AAED,KAAK,MAAM,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAKzK,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAgBnE;AAED,mIAAmI;AACnI,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS5G;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe,GAAG,QAAQ,CAa9D;AAID,qHAAqH;AACrH,wBAAgB,OAAO,CAAC,CAAC,EAAE,mBAAmB,GAAG,QAAQ,CAexD;AAED,qFAAqF;AACrF,eAAO,MAAM,mBAAmB,OAAO,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * What a confirmation card says (amendment 99), worked out once per proposal
3
+ * and drawn by every card Mihe has: the web component's and the React SDK's.
4
+ *
5
+ * Two sources, both trusted, neither the model:
6
+ *
7
+ * 1. **The app's own description.** `describeProposal` (an option) is handed
8
+ * the proposal, exactly the input that will run, and returns the lines to
9
+ * show: before and after, money in the store's currency, thumbnails. It is
10
+ * the app's code over the app's data, so it can say what a generic card
11
+ * can't. It must describe the input it was given, never anything else.
12
+ * 2. **The registry's display hints**, for an app that doesn't describe a
13
+ * card. They live in the action's input schema as annotations: a summary
14
+ * template at the root (`x-mihe-summary`), and on each field a `title`,
15
+ * `x-mihe-format` (`money`, `yesno`, `date`) and `x-mihe-hidden`. Fields
16
+ * are shown in the schema's order. Hide only an opaque id that has a
17
+ * readable name beside it which the app checks: everything else that will
18
+ * run must be on the card.
19
+ *
20
+ * With neither, the card is what it always was: every field, by its key.
21
+ */
22
+ import { formatValue, humanizeKey } from "./widget/format.js";
23
+ const asSchema = (v) => (v && typeof v === "object" ? v : {});
24
+ const hidden = (s) => s["x-mihe-hidden"] === true;
25
+ const title = (key, s) => (typeof s.title === "string" && s.title.trim() ? s.title : humanizeKey(key));
26
+ /** One value, as its field's hints say to show it. */
27
+ export function formatField(value, schema) {
28
+ const s = asSchema(schema);
29
+ const fmt = s["x-mihe-format"];
30
+ if (fmt === "yesno" && typeof value === "boolean")
31
+ return value ? "Yes" : "No";
32
+ if (fmt === "money" && typeof value === "number")
33
+ return value.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 });
34
+ if (fmt === "date" && typeof value === "string" && !Number.isNaN(Date.parse(value)))
35
+ return new Date(value).toLocaleDateString(undefined, { day: "numeric", month: "short", year: "numeric" });
36
+ if (Array.isArray(value))
37
+ return value.map((v) => formatField(v, s.items)).join(", ") || "—";
38
+ if (value && typeof value === "object") {
39
+ const props = s.properties ?? {};
40
+ const keys = [...Object.keys(props).filter((k) => k in value), ...Object.keys(value).filter((k) => !(k in props))];
41
+ const visible = keys.filter((k) => !hidden(asSchema(props[k])));
42
+ // With hints, an object reads as its fields in order, labelled by their titles ("Amber Candle · Price 18").
43
+ if (Object.keys(props).length)
44
+ return visible.map((k) => (k === visible[0] && typeof value[k] === "string" ? String(value[k]) : `${title(k, asSchema(props[k]))} ${formatField(value[k], props[k])}`)).join(" · ");
45
+ return formatValue(value);
46
+ }
47
+ return formatValue(value);
48
+ }
49
+ /** `x-mihe-summary`, filled from the input: "Change {productName}" → "Change Linen Shirt". Null if a field it names is missing. */
50
+ export function fillSummary(template, input, schema) {
51
+ if (typeof template !== "string" || !template.trim())
52
+ return null;
53
+ let missing = false;
54
+ const out = template.replace(/\{([A-Za-z0-9_]+)\}/g, (_, key) => {
55
+ const v = input[key];
56
+ if (v === undefined || v === null || v === "") {
57
+ missing = true;
58
+ return "";
59
+ }
60
+ return Array.isArray(v) ? String(v.length) : formatField(v, schema.properties?.[key]);
61
+ });
62
+ return missing ? null : out;
63
+ }
64
+ /** The card from the registry's hints (or, with none, every field by its key). */
65
+ export function hintedView(proposal) {
66
+ const schema = asSchema(proposal.inputSchema);
67
+ const props = schema.properties ?? {};
68
+ const input = proposal.input ?? {};
69
+ const hinted = !!schema["x-mihe-summary"] || Object.values(props).some((p) => { const s = asSchema(p); return typeof s.title === "string" || hidden(s) || s["x-mihe-format"] !== undefined; });
70
+ const keys = [...Object.keys(props).filter((k) => k in input), ...Object.keys(input).filter((k) => !(k in props))];
71
+ const lines = keys.filter((k) => !hidden(asSchema(props[k]))).map((k) => {
72
+ const v = input[k];
73
+ const label = hinted ? title(k, asSchema(props[k])) : humanizeKey(k);
74
+ return Array.isArray(v) && v.length > 0 ? { label, items: v.map((x) => formatField(x, asSchema(props[k]).items)) } : { label, text: formatField(v, props[k]) };
75
+ });
76
+ const summary = fillSummary(schema["x-mihe-summary"], input, schema) ?? undefined;
77
+ return { source: hinted ? "hints" : "plain", ...(summary ? { summary } : {}), lines };
78
+ }
79
+ const SAFE_SRC = /^(https?:|blob:|data:image\/)/i;
80
+ /** The app's description, made safe to draw (only plain strings, only picture addresses that can't run anything). */
81
+ export function appView(d) {
82
+ const str = (v) => (typeof v === "string" ? v : v === undefined || v === null ? undefined : String(v));
83
+ return {
84
+ source: "app",
85
+ ...(str(d.summary) ? { summary: str(d.summary) } : {}),
86
+ ...(str(d.note) ? { note: str(d.note) } : {}),
87
+ ...(str(d.confirmLabel) ? { confirmLabel: str(d.confirmLabel) } : {}),
88
+ lines: (Array.isArray(d.lines) ? d.lines : []).map((l) => ({
89
+ ...(str(l.label) ? { label: str(l.label) } : {}),
90
+ ...(str(l.text) !== undefined ? { text: str(l.text) } : {}),
91
+ ...(str(l.before) !== undefined ? { before: str(l.before) } : {}),
92
+ ...(Array.isArray(l.items) ? { items: l.items.map((x) => String(x)) } : {}),
93
+ ...(Array.isArray(l.images) ? { images: l.images.filter((im) => im && typeof im.src === "string" && SAFE_SRC.test(im.src)).slice(0, 12).map((im) => ({ src: im.src, ...(str(im.alt) ? { alt: str(im.alt) } : {}) })) } : {}),
94
+ })),
95
+ };
96
+ }
97
+ /** How long a card waits for the app's description before drawing from the hints. */
98
+ export const DESCRIBE_TIMEOUT_MS = 4000;
99
+ //# sourceMappingURL=card-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-view.js","sourceRoot":"","sources":["../../../js/src/card-view.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -23,6 +23,8 @@ export type { AssistantChart, AssistantQueryParam, AssistantTable, AssistantTabl
23
23
  export { mountWidget, defineMiheAssistant, ELEMENT_NAME } from "./widget/element.js";
24
24
  export type { MiheAssistantElement, MountedWidget, WidgetOptions } from "./widget/element.js";
25
25
  export { formatValue, humanizeKey } from "./widget/format.js";
26
+ export { appView, fillSummary, formatField, hintedView, DESCRIBE_TIMEOUT_MS } from "./card-view.js";
27
+ export type { CardLine, CardView, DescribeProposal, ProposalDescription } from "./card-view.js";
26
28
  export { VoiceSession, voiceUrl } from "./voice.js";
27
29
  export type { VoiceEvent, VoiceState, VoiceSessionOptions } from "./voice.js";
28
30
  export { MicrophoneCapture, SpeakerQueue, toPcm16, fromPcm16 } from "./audio.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../js/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC3E,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEjF,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,GACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAClF,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE3E,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,YAAY,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,eAAe,GAChB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../js/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC3E,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEjF,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,GACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAClF,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjG,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE7F,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE3E,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,YAAY,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,eAAe,GAChB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -20,6 +20,7 @@ export { Mihe, createMihe, SDK_VERSION, ASSISTANT_PANEL_ID } from "./mihe.js";
20
20
  export { chartDeclaration, chartSignature, tableDeclaration, tableSignature, tabsDeclaration, tabsSignature, } from "./declarations.js";
21
21
  export { mountWidget, defineMiheAssistant, ELEMENT_NAME } from "./widget/element.js";
22
22
  export { formatValue, humanizeKey } from "./widget/format.js";
23
+ export { appView, fillSummary, formatField, hintedView, DESCRIBE_TIMEOUT_MS } from "./card-view.js";
23
24
  export { VoiceSession, voiceUrl } from "./voice.js";
24
25
  export { MicrophoneCapture, SpeakerQueue, toPcm16, fromPcm16 } from "./audio.js";
25
26
  export { AssistantStore } from "./store.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../js/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAG3E,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,gBAAgB,CAAC;AAUxB,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAWzC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAQ3C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../js/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAG3E,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,gBAAgB,CAAC;AAUxB,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGjG,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAWzC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAQ3C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/mihe.d.ts CHANGED
@@ -15,10 +15,11 @@
15
15
  */
16
16
  import type { KnowledgeSourceRef, ProposalStatus, WidgetSettings } from "@mihe-dev/protocol";
17
17
  import { type ConnectionState, type ProposalPayload } from "./client.js";
18
+ import { type CardView, type DescribeProposal } from "./card-view.js";
18
19
  import { type AssistantChart, type AssistantTable, type AssistantTabs } from "./declarations.js";
19
20
  import { AssistantStore, type ActionHandler, type ComponentDeclaration, type ScreenDeclaration } from "./store.js";
20
21
  import { type VoiceState } from "./voice.js";
21
- export declare const SDK_VERSION = "0.1.0";
22
+ export declare const SDK_VERSION = "0.2.0";
22
23
  /**
23
24
  * DOM id of the assistant panel, so a custom trigger can point
24
25
  * `aria-controls` at it.
@@ -110,6 +111,12 @@ export interface MiheState {
110
111
  messages: ChatMessage[];
111
112
  /** Confirmation cards awaiting a decision. */
112
113
  proposals: ProposalPayload[];
114
+ /**
115
+ * What each card says, by proposal id (amendment 99): the app's description
116
+ * or the registry's hints. `"pending"` while the app is describing it, when
117
+ * the card shows its title and keeps Confirm disabled.
118
+ */
119
+ cardViews: Record<string, CardView | "pending">;
113
120
  /** True from the moment a turn starts until it completes or fails. */
114
121
  busy: boolean;
115
122
  lastError: string | null;
@@ -184,6 +191,14 @@ export interface MiheOptions {
184
191
  * while building an integration; leave it off in production.
185
192
  */
186
193
  debug?: boolean;
194
+ /**
195
+ * Say what a confirmation card means, from the app's own data (amendment
196
+ * 99): before and after ("$12 → $13"), money in the right currency,
197
+ * thumbnails of the photos involved. Handed exactly the input that will run;
198
+ * describe that and nothing else. Without it, or when it returns null, the
199
+ * card uses the registry's display hints. See `ProposalDescription`.
200
+ */
201
+ describeProposal?: DescribeProposal;
187
202
  }
188
203
  /** Create the assistant and connect it. */
189
204
  export declare function createMihe(options: MiheOptions): Mihe;
@@ -249,6 +264,12 @@ export declare class Mihe {
249
264
  /** Disconnect and drop every listener. The instance is done after this. */
250
265
  destroy(): void;
251
266
  send: (text: string) => void;
267
+ /**
268
+ * Work out what a card says (amendment 99). The app's description when it
269
+ * gives one in time, else the registry's hints. Until then the card is
270
+ * pending, so nobody confirms a card whose words are about to change.
271
+ */
272
+ private describe;
252
273
  respondToProposal: (proposalId: string, confirmed: boolean) => void;
253
274
  open: () => void;
254
275
  close: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"mihe.d.ts","sourceRoot":"","sources":["../../../js/src/mihe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mihe.d.ts","sourceRoot":"","sources":["../../../js/src/mihe.ts"],"names":[],"mappings":"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"}