@feedmepos/mf-remy-panel 0.21.0 → 0.22.0-dev.2

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.
@@ -1,30 +1,27 @@
1
- import { defineComponent as C, ref as n, openBlock as l, createElementBlock as i, createElementVNode as e, createVNode as E, createTextVNode as f, createStaticVNode as x, toDisplayString as p, createCommentVNode as r } from "vue";
2
- import { u as w, a as B, b as _, R as N, _ as R } from "./app-870637cb.js";
3
- import "pinia";
4
- import "@feedmepos/mf-common";
5
- import "vue-router";
1
+ import { defineComponent as C, ref as n, openBlock as l, createElementBlock as i, createElementVNode as e, createVNode as E, createTextVNode as _, createStaticVNode as x, toDisplayString as p, createCommentVNode as m } from "vue";
2
+ import { u as w, d as B, c as f, R as N, _ as R } from "./app-6m9EMNjP.js";
6
3
  const T = { class: "home" }, D = { class: "home__hero" }, I = { class: "home__brand" }, S = { class: "home__card" }, M = {
7
4
  key: 0,
8
5
  class: "home__autofill"
9
- }, H = { class: "home__autofill-price" }, Q = {
6
+ }, Q = { class: "home__autofill-price" }, H = {
10
7
  key: 1,
11
8
  class: "home__autofill"
12
- }, O = { class: "home__autofill-value" }, V = {
9
+ }, O = { class: "home__autofill-value" }, P = {
13
10
  key: 2,
14
11
  class: "home__autofill"
15
- }, P = { class: "home__autofill-value" }, j = {
12
+ }, V = { class: "home__autofill-value" }, j = {
16
13
  key: 3,
17
14
  class: "home__debug"
18
15
  }, F = { class: "home__debug-title" }, G = { class: "home__debug-json" }, U = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAB2klEQVR4nO2ZO04DMRCGc6tt9wJISNTbUuQStFyDK9BQcBk4AW06UBJk/JjHP15nZ5FGmiLx7tjfZ3v2kRy+T5//Og7uBCHgTRAC3gQh4E0QAt4EIeBNEALeBCHgTRAC3gQh4E0QAt4EIeBNEAK36/3jtYidClSUfbG1wBDoQTIWgbe7IqxkVbraAzl6p0A7tlWjO70CMAsIY2sQXw/3efQ75CcbBFp0vt8ClBOg0h/fjyn0dTPUQJXc9pi10KBke2aboxMa5NyhK0DS86tfgabd0jbmX1kBbo+lzzYBoAZuKNDOnS6QcoSlbNqJYtVO0wUEAF2AVBeLjKjUZuxqTdgCkOcOEhB2IVIb/JnFQl3a2a3P1YAg8PL8RF9twN65E1amNzxnTk7g18E0x/KTArhEYPuFnha4HvhbBMuNjDiqVhGXzl8q0vTnDoTA+RgCZ7lMjUovIFEB07MKt5G60xl6WEAdXoYA08U7fYsOCRRfOyBwdGzH6wKVA5HQwbQiFBjyMrrMk5y2gQkCsMzTKoHhMtZBWYE+h40jp6cfp/fsUNGzb2TLPO1N44oEv1LuSYND1wXcNWR0VAC/UQwMHKn/t1FH6DECQ2TWDx3/D3hHCHhHCHhHCHjHDwvk2e+WkMn1AAAAAElFTkSuQmCC", K = /* @__PURE__ */ C({
19
16
  __name: "HomeView",
20
17
  setup(Y) {
21
- const s = w(), g = B(), d = n(null), u = n(null), c = n(null), a = n(null), m = n(null);
22
- _("apply-pricing", (o) => {
23
- d.value = o, a.value = "apply-pricing", m.value = o;
24
- }), _("apply-description", (o) => {
25
- u.value = o, a.value = "apply-description", m.value = o;
26
- }), _("apply-image", (o) => {
27
- c.value = (o == null ? void 0 : o.mimeType) ?? null, a.value = "apply-image", m.value = o;
18
+ const s = w(), g = B(), d = n(null), u = n(null), c = n(null), a = n(null), r = n(null);
19
+ f("apply-pricing", (o) => {
20
+ d.value = o, a.value = "apply-pricing", r.value = o;
21
+ }), f("apply-description", (o) => {
22
+ u.value = o, a.value = "apply-description", r.value = o;
23
+ }), f("apply-image", (o) => {
24
+ c.value = (o == null ? void 0 : o.mimeType) ?? null, a.value = "apply-image", r.value = o;
28
25
  });
29
26
  function h() {
30
27
  s.activate({
@@ -74,9 +71,9 @@ const T = { class: "home" }, D = { class: "home__hero" }, I = { class: "home__br
74
71
  t[1] || (t[1] = e("h1", { class: "home__title" }, "Welcome to Remy Panel", -1)),
75
72
  t[2] || (t[2] = e("p", { class: "home__subtitle" }, "Your AI assistant for pricing, descriptions, and menu images.", -1)),
76
73
  t[3] || (t[3] = e("div", { class: "home__hero-hint" }, [
77
- f("Tip: Type "),
74
+ _("Tip: Type "),
78
75
  e("code", null, "/"),
79
- f(" in chat to access commands.")
76
+ _(" in chat to access commands.")
80
77
  ], -1))
81
78
  ]),
82
79
  t[14] || (t[14] = x('<section class="home__card" data-v-ff1df845><h2 class="home__section-title" data-v-ff1df845>Getting Started</h2><ol class="home__list" data-v-ff1df845><li data-v-ff1df845>Click the <strong data-v-ff1df845>Remy icon</strong> in your top navigation to open the chat panel.</li><li data-v-ff1df845> Desktop opens a right-side panel. Mobile/tablet opens Remy in <strong data-v-ff1df845>full-screen</strong>. </li><li data-v-ff1df845> Use <strong data-v-ff1df845>/suggestPrice</strong>, <strong data-v-ff1df845>/suggestDescription</strong>, <strong data-v-ff1df845>/modifyImage</strong>, or <strong data-v-ff1df845>/askReport</strong>. </li><li data-v-ff1df845>After selecting a command, enter the item details and send.</li></ol></section>', 1)),
@@ -143,25 +140,24 @@ const T = { class: "home" }, D = { class: "home__hero" }, I = { class: "home__br
143
140
  ]),
144
141
  d.value !== null ? (l(), i("div", M, [
145
142
  t[10] || (t[10] = e("p", { class: "home__autofill-label" }, "Applied price event received", -1)),
146
- e("p", H, "RM " + p(d.value.toFixed(2)), 1)
147
- ])) : r("", !0),
148
- u.value ? (l(), i("div", Q, [
143
+ e("p", Q, "RM " + p(d.value.toFixed(2)), 1)
144
+ ])) : m("", !0),
145
+ u.value ? (l(), i("div", H, [
149
146
  t[11] || (t[11] = e("p", { class: "home__autofill-label" }, "Applied description event received", -1)),
150
147
  e("p", O, p(u.value), 1)
151
- ])) : r("", !0),
152
- c.value ? (l(), i("div", V, [
148
+ ])) : m("", !0),
149
+ c.value ? (l(), i("div", P, [
153
150
  t[12] || (t[12] = e("p", { class: "home__autofill-label" }, "Applied image event received", -1)),
154
- e("p", P, p(c.value), 1)
155
- ])) : r("", !0),
151
+ e("p", V, p(c.value), 1)
152
+ ])) : m("", !0),
156
153
  a.value ? (l(), i("div", j, [
157
154
  e("p", F, "Last Apply Event: " + p(a.value), 1),
158
- e("pre", G, p(JSON.stringify(m.value, null, 2)), 1)
159
- ])) : r("", !0)
155
+ e("pre", G, p(JSON.stringify(r.value, null, 2)), 1)
156
+ ])) : m("", !0)
160
157
  ])
161
158
  ]));
162
159
  }
163
- });
164
- const Z = /* @__PURE__ */ R(K, [["__scopeId", "data-v-ff1df845"]]);
160
+ }), L = /* @__PURE__ */ R(K, [["__scopeId", "data-v-ff1df845"]]);
165
161
  export {
166
- Z as default
162
+ L as default
167
163
  };
@@ -0,0 +1,27 @@
1
+ import { defineComponent as l, computed as t, openBlock as r, createElementBlock as m, normalizeClass as n, createVNode as u, createCommentVNode as p } from "vue";
2
+ import { u as d, R as g } from "./app-6m9EMNjP.js";
3
+ const w = /* @__PURE__ */ l({
4
+ __name: "RemyButton",
5
+ emits: ["click"],
6
+ setup(y, { emit: a }) {
7
+ const c = a, e = d(), s = t(() => e.showRemy), o = t(() => e.dialogShowing);
8
+ function i() {
9
+ c("click");
10
+ }
11
+ return (_, f) => s.value ? (r(), m("button", {
12
+ key: 0,
13
+ class: n(["bg-fm-color-neutral-gray-100 rounded-lg p-[6px]"]),
14
+ type: "button",
15
+ onClick: i
16
+ }, [
17
+ u(g, {
18
+ animation: o.value ? "listening" : "sleeping",
19
+ size: 24,
20
+ class: n(["h-6 w-6 rounded", { "opacity-80": o.value }])
21
+ }, null, 8, ["animation", "class"])
22
+ ])) : p("", !0);
23
+ }
24
+ });
25
+ export {
26
+ w as default
27
+ };
@@ -1,3 +1,5 @@
1
1
  export declare const apiClient: import("axios").AxiosInstance;
2
2
  export declare function setApiBaseUrl(url: string): void;
3
+ export declare function setHostApp(app: string | undefined): void;
4
+ export declare function getHostApp(): string;
3
5
  export declare function setApiAuthTokenProvider(provider: () => string | undefined): void;
@@ -5,6 +5,9 @@ export type KnownMemoryScope = 'general' | 'report' | 'menu' | 'marketing';
5
5
  export type MemoryScope = KnownMemoryScope | (string & {});
6
6
  export type MemoryStatus = 'active' | 'superseded' | 'archived';
7
7
  export interface MemoryDto {
8
+ source?: 'feedme_portal' | 'whatsapp';
9
+ memoryFor?: 'person' | 'business' | 'outlet';
10
+ restaurantId?: string;
8
11
  id: string;
9
12
  text: string;
10
13
  key?: string;
@@ -74,7 +77,30 @@ export interface EpisodeListResponse {
74
77
  export interface EpisodeDetailDto extends EpisodeDto {
75
78
  memories: MemoryDto[];
76
79
  }
80
+ export interface MemoryReviewItemDto {
81
+ source?: 'feedme_portal' | 'whatsapp';
82
+ reconciliation?: {
83
+ action: string;
84
+ previousText: string;
85
+ };
86
+ target?: {
87
+ kind: 'person' | 'business' | 'outlet';
88
+ restaurantId?: string;
89
+ };
90
+ approvalBlockedReason?: string;
91
+ id: string;
92
+ text: string;
93
+ key: string;
94
+ evidence: 'explicit' | 'observed';
95
+ reason?: {
96
+ text: string;
97
+ certainty: 'stated' | 'hypothesis';
98
+ };
99
+ occurredAt: string;
100
+ reviewReasons: string[];
101
+ }
77
102
  export declare function fetchMemories(businessId: string, opts?: {
103
+ memoryFor?: 'person' | 'business' | 'outlet';
78
104
  category?: string;
79
105
  scope?: string;
80
106
  status?: string;
@@ -87,8 +113,10 @@ export declare function updateMemory(businessId: string, id: string, patch: {
87
113
  category?: string;
88
114
  scope?: string;
89
115
  }): Promise<MemoryDto>;
90
- export declare function forgetMemory(businessId: string, id: string): Promise<void>;
116
+ export declare function forgetMemory(businessId: string, id: string, source?: 'feedme_portal' | 'whatsapp'): Promise<void>;
91
117
  export declare function pinMemory(businessId: string, id: string, pinned: boolean): Promise<MemoryDto>;
92
118
  export declare function fetchMemoryGraph(businessId: string): Promise<MemoryGraphResponse>;
93
119
  export declare function fetchEpisodes(businessId: string, page?: number, limit?: number): Promise<EpisodeListResponse>;
94
120
  export declare function fetchEpisode(businessId: string, id: string): Promise<EpisodeDetailDto>;
121
+ export declare function fetchMemoryReviews(businessId: string): Promise<MemoryReviewItemDto[]>;
122
+ export declare function reviewMemory(businessId: string, id: string, action: 'approve' | 'reject', text?: string, source?: 'feedme_portal' | 'whatsapp'): Promise<void>;