@feedmepos/mf-miniprogram-v2 0.2.2-dev.25 → 0.2.2-dev.27

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.
Files changed (27) hide show
  1. package/dist/{App-CfZCp6Re.js → App-DHpF0JMk.js} +65 -66
  2. package/dist/AppTemplatePicker.vue_vue_type_script_setup_true_lang-DlQnLlND.js +231 -0
  3. package/dist/{BrandFontPicker-kQKWf1hL.js → BrandFontPicker-BxPN0_Bo.js} +1 -1
  4. package/dist/{BrandKitView-RaUWE69b.js → BrandKitView-CGdw34dr.js} +2 -2
  5. package/dist/{ControlPlaneView-C9PhpGVm.js → ControlPlaneView-Bpj99Skz.js} +7367 -7099
  6. package/dist/{EcosystemView-DgAgcFmd.js → EcosystemView-ChcCixWy.js} +4 -4
  7. package/dist/MobileProjectsView-DU2qBDZy.js +371 -0
  8. package/dist/ModuleCenterView-DLrDO93Q.js +165 -0
  9. package/dist/{ModuleDetailView-CSfMF0Uo.js → ModuleDetailView-Da3qvz_8.js} +1 -1
  10. package/dist/{PagesView-B1uTuHsK.js → PagesView-B_86Haw-.js} +1 -1
  11. package/dist/{PortalSettingsView-CUOL2tdF.js → PortalSettingsView-CiHYX-tw.js} +2 -2
  12. package/dist/{TemplateCenterView-DqZLthqh.js → TemplateCenterView-C2N9ddWj.js} +2 -2
  13. package/dist/{WorkspaceEntryView-BNl0REzn.js → WorkspaceEntryView-BAxGOWe5.js} +1 -1
  14. package/dist/{adminAccess-oXC0xjvK.js → adminAccess-Bzpn1nIn.js} +2 -2
  15. package/dist/app.js +11 -11
  16. package/dist/{controlPlane-sXaC6pAh.js → controlPlane--Q2ulw38.js} +7 -7
  17. package/dist/package.json +1 -1
  18. package/dist/{portalContext-DV-6uUwp.js → portalContext-Bx02hCyg.js} +2 -2
  19. package/dist/{routes-CeuodIgg.js → routes-CTQTYdcO.js} +33 -27
  20. package/dist/style.css +1 -1
  21. package/dist/{useBrandKit-CkdPQRE-.js → useBrandKit-tjDGJeZ6.js} +1 -1
  22. package/dist/{useModuleCatalog-Cep-pzWO.js → useModuleCatalog-DRtQzNvy.js} +2 -2
  23. package/package.json +1 -1
  24. package/dist/AppTemplatePicker-CNJ6kIJk.js +0 -237
  25. package/dist/MobileProjectsView-D-tXKwr7.js +0 -313
  26. package/dist/ModuleCenterView-C6mCPATr.js +0 -147
  27. package/dist/templatePickerFlag-CosY_15R.js +0 -13
@@ -0,0 +1,165 @@
1
+ import { defineComponent as N, openBlock as o, createElementBlock as l, createElementVNode as s, toDisplayString as u, createCommentVNode as q, ref as V, watch as R, computed as h, onMounted as z, resolveComponent as x, createVNode as v, unref as c, Fragment as C, renderList as $, normalizeClass as D, createBlock as k, withCtx as G } from "vue";
2
+ import { useRoute as K, useRouter as O } from "vue-router";
3
+ import { _ as B } from "./_plugin-vue_export-helper-CHgC5LLL.js";
4
+ import { u as P, c as U, f as j, _ as b, t as H } from "./useModuleCatalog-DRtQzNvy.js";
5
+ const J = { class: "card" }, Q = { class: "card__head" }, W = { class: "card__name fm-typo-en-body-md-600 text-portal-text-primary" }, X = { class: "card__version fm-typo-en-body-sm-400 text-portal-text-muted" }, Y = { class: "card__description fm-typo-en-body-sm-400 text-portal-text-muted" }, Z = { class: "card__tags" }, ee = { class: "card__tag card__tag--tier fm-typo-en-body-sm-600" }, te = {
6
+ key: 0,
7
+ class: "card__tag card__tag--slot fm-typo-en-body-sm-400"
8
+ }, oe = /* @__PURE__ */ N({
9
+ __name: "ModuleCard",
10
+ props: {
11
+ entry: {}
12
+ },
13
+ setup(i) {
14
+ return (r, m) => (o(), l("article", J, [
15
+ s("header", Q, [
16
+ s("h3", W, u(i.entry.name), 1),
17
+ s("span", X, u(i.entry.version), 1)
18
+ ]),
19
+ s("p", Y, u(i.entry.description || i.entry.id), 1),
20
+ s("footer", Z, [
21
+ s("span", ee, u(i.entry.category), 1),
22
+ i.entry.slot ? (o(), l("span", te, u(i.entry.slot), 1)) : q("", !0)
23
+ ])
24
+ ]));
25
+ }
26
+ }), ne = /* @__PURE__ */ B(oe, [["__scopeId", "data-v-2fbfd7b3"]]), se = { class: "shell" }, le = { class: "centre" }, re = { class: "centre__inner" }, ae = { class: "centre__head" }, ie = {
27
+ key: 0,
28
+ class: "centre__filters"
29
+ }, de = { class: "centre__facet-label fm-typo-en-body-sm-600 text-portal-text-muted" }, ce = { class: "centre__chips" }, ue = ["aria-pressed", "onClick"], me = {
30
+ key: 1,
31
+ class: "centre__note fm-typo-en-body-md-400"
32
+ }, _e = {
33
+ key: 6,
34
+ class: "centre__grid"
35
+ }, pe = /* @__PURE__ */ N({
36
+ __name: "ModuleCenterView",
37
+ setup(i) {
38
+ const r = P(), m = K(), L = O();
39
+ function g(t) {
40
+ return t == null ? [] : (Array.isArray(t) ? t : [t]).filter((n) => n != null);
41
+ }
42
+ const _ = V(g(m.query.q)[0] ?? ""), d = V([
43
+ ...g(m.query.tier).map((t) => ({ kind: "tier", value: t })),
44
+ ...g(m.query.slot).map((t) => ({ kind: "slot", value: t }))
45
+ ]);
46
+ R(
47
+ [_, d],
48
+ ([t, n]) => {
49
+ const a = { ...m.query };
50
+ t.trim() ? a.q = t : delete a.q;
51
+ const y = n.filter((e) => e.kind === "tier").map((e) => e.value), f = n.filter((e) => e.kind === "slot").map((e) => e.value);
52
+ y.length ? a.tier = y : delete a.tier, f.length ? a.slot = f : delete a.slot, L.replace({ query: a });
53
+ },
54
+ { deep: !0 }
55
+ );
56
+ const S = h(() => U(r.entries.value ?? [])), M = h(() => j(r.entries.value ?? [], _.value, d.value)), A = h(() => _.value.trim().length > 0 || d.value.length > 0), w = h(() => {
57
+ var t;
58
+ return (((t = r.entries.value) == null ? void 0 : t.length) ?? 0) > 0;
59
+ }), E = {
60
+ tier: "Type",
61
+ slot: "Slot"
62
+ };
63
+ function F(t) {
64
+ return d.value.some((n) => n.kind === t.kind && n.value === t.value);
65
+ }
66
+ function I(t) {
67
+ d.value = H(d.value, t);
68
+ }
69
+ function T() {
70
+ _.value = "", d.value = [];
71
+ }
72
+ return z(() => r.load()), (t, n) => {
73
+ const a = x("FmButton"), y = x("FmTextField"), f = x("RouterLink");
74
+ return o(), l("div", se, [
75
+ s("div", le, [
76
+ s("div", re, [
77
+ s("header", ae, [
78
+ n[3] || (n[3] = s("div", null, [
79
+ s("h2", { class: "centre__title fm-typo-en-title-sm-600 text-portal-text-primary" }, "Module library"),
80
+ s("p", { class: "centre__subtitle fm-typo-en-body-md-400 text-portal-text-muted" }, " Modules the agent can put on a page. Published from the platform, not from your app. ")
81
+ ], -1)),
82
+ v(a, {
83
+ size: "md",
84
+ variant: "tertiary",
85
+ icon: "refresh",
86
+ onClick: n[0] || (n[0] = (e) => c(r).load(!0))
87
+ })
88
+ ]),
89
+ w.value ? (o(), l("div", ie, [
90
+ v(y, {
91
+ modelValue: _.value,
92
+ "onUpdate:modelValue": n[1] || (n[1] = (e) => _.value = e),
93
+ label: "Search",
94
+ placeholder: "name, slot, or label"
95
+ }, null, 8, ["modelValue"]),
96
+ (o(!0), l(C, null, $(S.value, (e) => (o(), l("div", {
97
+ key: e.kind,
98
+ class: "centre__facet"
99
+ }, [
100
+ s("span", de, u(E[e.kind]), 1),
101
+ s("div", ce, [
102
+ (o(!0), l(C, null, $(e.values, (p) => (o(), l("button", {
103
+ key: p,
104
+ type: "button",
105
+ class: D(["centre__chip fm-typo-en-body-sm-400", { "centre__chip--on": F({ kind: e.kind, value: p }) }]),
106
+ "aria-pressed": F({ kind: e.kind, value: p }),
107
+ onClick: (ye) => I({ kind: e.kind, value: p })
108
+ }, u(p), 11, ue))), 128))
109
+ ])
110
+ ]))), 128)),
111
+ A.value ? (o(), l("button", {
112
+ key: 0,
113
+ type: "button",
114
+ class: "centre__clear fm-typo-en-body-sm-600",
115
+ onClick: T
116
+ }, " Clear filters ")) : q("", !0)
117
+ ])) : q("", !0),
118
+ c(r).entries.value === null ? (o(), l("p", me, "Loading…")) : c(r).loadError.value ? (o(), k(b, {
119
+ key: 2,
120
+ icon: "error_outline",
121
+ tone: "error",
122
+ title: "Could not load the module library",
123
+ message: c(r).loadError.value,
124
+ "action-label": "Try again",
125
+ onAction: n[2] || (n[2] = (e) => c(r).load(!0))
126
+ }, null, 8, ["message"])) : c(r).unpublished.value ? (o(), k(b, {
127
+ key: 3,
128
+ icon: "widgets",
129
+ title: "No module library has been published yet",
130
+ message: "Modules are published from the platform, separately from merging them. Once one is published it appears here, and every workspace started afterwards receives it."
131
+ })) : w.value ? M.value.length ? (o(), l("ul", _e, [
132
+ (o(!0), l(C, null, $(M.value, (e) => (o(), l("li", {
133
+ key: e.id
134
+ }, [
135
+ v(f, {
136
+ class: "centre__link",
137
+ to: { name: "miniprogram-v2-module-detail", params: { name: e.name }, query: c(m).query }
138
+ }, {
139
+ default: G(() => [
140
+ v(ne, { entry: e }, null, 8, ["entry"])
141
+ ]),
142
+ _: 2
143
+ }, 1032, ["to"])
144
+ ]))), 128))
145
+ ])) : (o(), k(b, {
146
+ key: 5,
147
+ icon: "search_off",
148
+ title: "No module matches these filters",
149
+ "action-label": "Clear filters",
150
+ onAction: T
151
+ })) : (o(), k(b, {
152
+ key: 4,
153
+ icon: "widgets",
154
+ title: "The module library is empty",
155
+ message: "It has been published, but holds no modules. Nothing here is available to put on a page yet."
156
+ }))
157
+ ])
158
+ ])
159
+ ]);
160
+ };
161
+ }
162
+ }), be = /* @__PURE__ */ B(pe, [["__scopeId", "data-v-c2239a32"]]);
163
+ export {
164
+ be as default
165
+ };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as C, ref as M, computed as u, watch as T, resolveComponent as g, openBlock as n, createElementBlock as l, createElementVNode as e, toDisplayString as i, createCommentVNode as _, Fragment as I, renderList as S, createVNode as k, onMounted as B, unref as d, withCtx as L, createBlock as v } from "vue";
2
2
  import { useRoute as N, useRouter as P } from "vue-router";
3
- import { m as q, i as A, u as F, _ as w } from "./useModuleCatalog-Cep-pzWO.js";
3
+ import { m as q, i as A, u as F, _ as w } from "./useModuleCatalog-DRtQzNvy.js";
4
4
  import { useDialog as V } from "@feedmepos/ui-library";
5
5
  import { _ as E } from "./_plugin-vue_export-helper-CHgC5LLL.js";
6
6
  const R = { class: "detail" }, j = { class: "detail__head" }, z = { class: "detail__name fm-typo-en-title-sm-600 text-portal-text-primary" }, K = { class: "detail__version fm-typo-en-body-md-400 text-portal-text-muted" }, O = {
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as p, resolveComponent as i, openBlock as l, createElementBlock as m, createElementVNode as o, createVNode as r, unref as t, withCtx as u, createTextVNode as c } from "vue";
2
2
  import { useRoute as d } from "vue-router";
3
- import { u as g } from "./portalContext-DV-6uUwp.js";
3
+ import { u as g } from "./portalContext-Bx02hCyg.js";
4
4
  import { w as f } from "./portalNavigation-DKCfwTH8.js";
5
5
  import { P as k } from "./PortalIcon-DO0VrIoY.js";
6
6
  const w = { class: "portal-page" }, y = { class: "portal-page-inner" }, b = { class: "portal-section portal-empty" }, E = /* @__PURE__ */ p({
@@ -1,9 +1,9 @@
1
1
  import { defineComponent as k, computed as p, ref as l, onMounted as P, onScopeDispose as S, resolveComponent as x, openBlock as o, createElementBlock as n, createElementVNode as s, toDisplayString as d, createCommentVNode as h, Fragment as I, createVNode as A, unref as M } from "vue";
2
2
  import { useRoute as N } from "vue-router";
3
3
  import { e as _, a as $ } from "./index-CIJWcl_6.js";
4
- import { l as B, e as E } from "./controlPlane-sXaC6pAh.js";
4
+ import { m as B, e as E } from "./controlPlane--Q2ulw38.js";
5
5
  import { useCoreStore as F } from "@feedmepos/mf-common";
6
- import { u as U } from "./portalContext-DV-6uUwp.js";
6
+ import { u as U } from "./portalContext-Bx02hCyg.js";
7
7
  import { l as V } from "./portalNavigation-DKCfwTH8.js";
8
8
  import { _ as q } from "./_plugin-vue_export-helper-CHgC5LLL.js";
9
9
  const L = { class: "portal-page" }, R = { class: "portal-page-inner settings-page" }, T = { class: "portal-page-heading" }, D = ["href"], H = {
@@ -1,8 +1,8 @@
1
1
  import { defineComponent as B, ref as o, computed as K, resolveComponent as F, openBlock as s, createBlock as V, withCtx as Q, createElementVNode as a, createElementBlock as i, Fragment as x, createTextVNode as R, toDisplayString as u, createVNode as c, createCommentVNode as v, onMounted as X, renderList as M, normalizeClass as Y } from "vue";
2
- import { a as k } from "./routes-CeuodIgg.js";
2
+ import { a as k } from "./routes-CTQTYdcO.js";
3
3
  import { useDialog as Z } from "@feedmepos/ui-library";
4
4
  import { useRouter as ee } from "vue-router";
5
- import { c as C, e as T } from "./controlPlane-sXaC6pAh.js";
5
+ import { c as C, e as T } from "./controlPlane--Q2ulw38.js";
6
6
  import { _ as L } from "./_plugin-vue_export-helper-CHgC5LLL.js";
7
7
  const te = ["href"], ae = {
8
8
  key: 0,
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as s, watchEffect as a, openBlock as n, createElementBlock as p } from "vue";
2
2
  import { useRoute as u, useRouter as i } from "vue-router";
3
- import { u as l } from "./portalContext-DV-6uUwp.js";
3
+ import { u as l } from "./portalContext-Bx02hCyg.js";
4
4
  import { w as m, a as f } from "./portalNavigation-DKCfwTH8.js";
5
5
  const _ = {
6
6
  class: "portal-loading",
@@ -1,6 +1,6 @@
1
- import { a as o } from "./routes-CeuodIgg.js";
1
+ import { a as o } from "./routes-CTQTYdcO.js";
2
2
  import { ref as i } from "vue";
3
- import { c as u } from "./controlPlane-sXaC6pAh.js";
3
+ import { c as u } from "./controlPlane--Q2ulw38.js";
4
4
  function s(t, e) {
5
5
  if (typeof window > "u") return e;
6
6
  try {
package/dist/app.js CHANGED
@@ -4,42 +4,42 @@ const o = [
4
4
  path: "/platforms/mobile",
5
5
  name: "miniprogram-v2-mobile-projects",
6
6
  meta: { title: "Mobile" },
7
- component: () => import("./MobileProjectsView-D-tXKwr7.js")
7
+ component: () => import("./MobileProjectsView-DU2qBDZy.js")
8
8
  },
9
9
  {
10
10
  path: "/",
11
11
  name: "miniprogram-v2-ecosystem",
12
12
  meta: { title: "Ecosystem" },
13
13
  beforeEnter: (e) => ["workspace", "releases", "sessions"].includes(String(e.query.view)) ? { name: "miniprogram-v2-control", query: e.query } : !0,
14
- component: () => import("./EcosystemView-DgAgcFmd.js")
14
+ component: () => import("./EcosystemView-ChcCixWy.js")
15
15
  },
16
16
  {
17
17
  path: "/workspace",
18
18
  name: "miniprogram-v2-control",
19
- component: () => import("./WorkspaceEntryView-BNl0REzn.js")
19
+ component: () => import("./WorkspaceEntryView-BAxGOWe5.js")
20
20
  },
21
21
  {
22
22
  path: "/p/:projectId/:view(workspace|releases|sessions)?",
23
23
  name: "miniprogram-v2-project",
24
- component: () => import("./ControlPlaneView-C9PhpGVm.js")
24
+ component: () => import("./ControlPlaneView-Bpj99Skz.js")
25
25
  },
26
26
  {
27
27
  path: "/brand-kit",
28
28
  name: "miniprogram-v2-brand-kit",
29
29
  meta: { title: "Brand Kit" },
30
- component: () => import("./BrandKitView-RaUWE69b.js")
30
+ component: () => import("./BrandKitView-CGdw34dr.js")
31
31
  },
32
32
  {
33
33
  path: "/pages",
34
34
  name: "miniprogram-v2-pages",
35
35
  meta: { title: "Pages" },
36
- component: () => import("./PagesView-B1uTuHsK.js")
36
+ component: () => import("./PagesView-B_86Haw-.js")
37
37
  },
38
38
  {
39
39
  path: "/settings",
40
40
  name: "miniprogram-v2-settings",
41
41
  meta: { title: "Settings" },
42
- component: () => import("./PortalSettingsView-CUOL2tdF.js")
42
+ component: () => import("./PortalSettingsView-CiHYX-tw.js")
43
43
  },
44
44
  ...["tablet", "kiosk"].map((e) => ({
45
45
  path: `/platforms/${e}`,
@@ -53,7 +53,7 @@ const o = [
53
53
  path: "/modules",
54
54
  name: "miniprogram-v2-module-center",
55
55
  meta: { title: "Module library" },
56
- component: () => import("./ModuleCenterView-C6mCPATr.js")
56
+ component: () => import("./ModuleCenterView-DLrDO93Q.js")
57
57
  },
58
58
  {
59
59
  // Keyed by the module's directory name, which is what the catalog, the
@@ -61,7 +61,7 @@ const o = [
61
61
  path: "/modules/:name",
62
62
  name: "miniprogram-v2-module-detail",
63
63
  meta: { title: "Module library" },
64
- component: () => import("./ModuleDetailView-CSfMF0Uo.js")
64
+ component: () => import("./ModuleDetailView-Da3qvz_8.js")
65
65
  },
66
66
  {
67
67
  // Internal-only: linked from the main nav (App.vue), but only once
@@ -72,13 +72,13 @@ const o = [
72
72
  path: "/internal/template-center",
73
73
  name: "miniprogram-v2-template-center",
74
74
  meta: { title: "Template library", requiresAdmin: !0 },
75
- component: () => import("./TemplateCenterView-DqZLthqh.js")
75
+ component: () => import("./TemplateCenterView-C2N9ddWj.js")
76
76
  },
77
77
  {
78
78
  path: "/:pathMatch(.*)*",
79
79
  redirect: (e) => ({ name: "miniprogram-v2-ecosystem", query: e.query, params: {} })
80
80
  }
81
- ], r = {}, a = t(() => import("./App-CfZCp6Re.js")), i = t(() => import("./LegacyWorkspaceEntry-lEMtmdIe.js"));
81
+ ], r = {}, a = t(() => import("./App-DHpF0JMk.js")), i = t(() => import("./LegacyWorkspaceEntry-lEMtmdIe.js"));
82
82
  export {
83
83
  a as FmApp,
84
84
  i as MiniprogramWorkspace,
@@ -132,13 +132,13 @@ export {
132
132
  P as d,
133
133
  F as e,
134
134
  y as f,
135
- E as g,
136
- u as h,
137
- C as i,
138
- D as j,
139
- k,
140
- i as l,
141
- I as m,
135
+ I as g,
136
+ E as h,
137
+ u as i,
138
+ C as j,
139
+ D as k,
140
+ k as l,
141
+ i as m,
142
142
  g as n,
143
143
  S as s
144
144
  };
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@feedmepos/mf-miniprogram-v2",
3
- "version": "0.2.2-dev.25",
3
+ "version": "0.2.2-dev.27",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -1,6 +1,6 @@
1
- import { a as b } from "./routes-CeuodIgg.js";
1
+ import { a as b } from "./routes-CTQTYdcO.js";
2
2
  import { useCoreStore as d } from "@feedmepos/mf-common";
3
- import { c as g, e as h } from "./controlPlane-sXaC6pAh.js";
3
+ import { c as g, e as h } from "./controlPlane--Q2ulw38.js";
4
4
  import { provide as y, computed as f, ref as c, watch as C, onScopeDispose as w, inject as x } from "vue";
5
5
  function P() {
6
6
  const e = d(), r = f(() => {
@@ -1,4 +1,4 @@
1
- const t = (e, s) => `/api/businesses/${e}/projects/${s}`, p = {
1
+ const t = (e, s) => `/api/businesses/${e}/projects/${s}`, i = {
2
2
  projects: (e) => `/api/businesses/${e}/projects`,
3
3
  portalContext: (e) => `/api/businesses/${e}/portal-context`,
4
4
  project: (e, s) => t(e, s),
@@ -6,35 +6,40 @@ const t = (e, s) => `/api/businesses/${e}/projects/${s}`, p = {
6
6
  refreshSlug: (e, s) => `${t(e, s)}/refresh-slug`,
7
7
  sessions: (e, s) => `${t(e, s)}/sessions`,
8
8
  session: (e, s, a) => `${t(e, s)}/sessions/${a}`,
9
- messages: (e, s, a) => `${p.session(e, s, a)}/messages`,
10
- startStatus: (e, s, a) => `${p.session(e, s, a)}/start-status`,
11
- changes: (e, s, a, i = !1) => `${p.session(e, s, a)}/changes${i ? "?refresh=1" : ""}`,
12
- checkpoints: (e, s, a) => `${p.session(e, s, a)}/checkpoints`,
13
- aiBillingPreflight: (e, s, a) => `${p.session(e, s, a)}/ai-billing/preflight`,
14
- restoreCheckpoint: (e, s, a, i) => `${p.checkpoints(e, s, a)}/${i}/restore`,
15
- previewBridgeTicket: (e, s, a) => `${p.session(e, s, a)}/preview-bridge/ticket`,
16
- previewBridgeSocket: (e, s, a) => `${p.session(e, s, a)}/preview-bridge/socket`,
17
- uploads: (e, s, a, i = "") => `${p.session(e, s, a)}/uploads${i ? `?${i}` : ""}`,
18
- archive: (e, s, a) => `${p.session(e, s, a)}/archive`,
19
- commit: (e, s, a) => `${p.session(e, s, a)}/commit`,
20
- resume: (e, s, a) => `${p.session(e, s, a)}/resume`,
21
- restartPreview: (e, s, a) => `${p.session(e, s, a)}/restart-preview`,
22
- fork: (e, s, a) => `${p.session(e, s, a)}/fork`,
23
- flushEvents: (e, s, a) => `${p.session(e, s, a)}/events/flush`,
24
- revertTurn: (e, s, a) => `${p.session(e, s, a)}/turns/revert`,
25
- unrevertTurn: (e, s, a) => `${p.session(e, s, a)}/turns/unrevert`,
9
+ messages: (e, s, a) => `${i.session(e, s, a)}/messages`,
10
+ startStatus: (e, s, a) => `${i.session(e, s, a)}/start-status`,
11
+ /** Server-side render of one library module, proxied to the session's own
12
+ * sandbox — what the swap panel's candidate cards fetch instead of the
13
+ * browser reaching the public preview host directly (see
14
+ * BlockLibraryPanel.vue's `ModuleLibraryCard`). */
15
+ libraryRender: (e, s, a) => `${i.session(e, s, a)}/library-render`,
16
+ changes: (e, s, a, p = !1) => `${i.session(e, s, a)}/changes${p ? "?refresh=1" : ""}`,
17
+ checkpoints: (e, s, a) => `${i.session(e, s, a)}/checkpoints`,
18
+ aiBillingPreflight: (e, s, a) => `${i.session(e, s, a)}/ai-billing/preflight`,
19
+ restoreCheckpoint: (e, s, a, p) => `${i.checkpoints(e, s, a)}/${p}/restore`,
20
+ previewBridgeTicket: (e, s, a) => `${i.session(e, s, a)}/preview-bridge/ticket`,
21
+ previewBridgeSocket: (e, s, a) => `${i.session(e, s, a)}/preview-bridge/socket`,
22
+ uploads: (e, s, a, p = "") => `${i.session(e, s, a)}/uploads${p ? `?${p}` : ""}`,
23
+ archive: (e, s, a) => `${i.session(e, s, a)}/archive`,
24
+ commit: (e, s, a) => `${i.session(e, s, a)}/commit`,
25
+ resume: (e, s, a) => `${i.session(e, s, a)}/resume`,
26
+ restartPreview: (e, s, a) => `${i.session(e, s, a)}/restart-preview`,
27
+ fork: (e, s, a) => `${i.session(e, s, a)}/fork`,
28
+ flushEvents: (e, s, a) => `${i.session(e, s, a)}/events/flush`,
29
+ revertTurn: (e, s, a) => `${i.session(e, s, a)}/turns/revert`,
30
+ unrevertTurn: (e, s, a) => `${i.session(e, s, a)}/turns/unrevert`,
26
31
  releases: (e, s) => `${t(e, s)}/releases`,
27
32
  /** Internal-admin only. Extracts a new restaurant style out of a session's
28
33
  * verified checkpoint and, once confirmed, opens a PR against this repo. */
29
34
  publishAsTemplate: (e, s) => `${t(e, s)}/publish-as-template`,
30
- publishRelease: (e, s, a) => `${p.releases(e, s)}/${a}/publish`,
31
- releasePreviewUrl: (e, s, a) => `${p.releases(e, s)}/${a}/preview-url`,
35
+ publishRelease: (e, s, a) => `${i.releases(e, s)}/${a}/publish`,
36
+ releasePreviewUrl: (e, s, a) => `${i.releases(e, s)}/${a}/preview-url`,
32
37
  rollbackToRelease: (e, s, a) => `${t(e, s)}/rollback-to-release/${a}`,
33
38
  rollbackToV1: (e, s) => `${t(e, s)}/rollback-to-v1`,
34
39
  start: (e, s, a) => {
35
- const i = new URLSearchParams();
36
- e && i.set("businessId", e), s && i.set("projectId", s), a && i.set("sessionId", a);
37
- const r = i.toString();
40
+ const p = new URLSearchParams();
41
+ e && p.set("businessId", e), s && p.set("projectId", s), a && p.set("sessionId", a);
42
+ const r = p.toString();
38
43
  return `/api/start${r ? `?${r}` : ""}`;
39
44
  },
40
45
  opencode: (e = "") => `/api/opencode${e ? `/${e.replace(/^\/+/, "")}` : ""}`,
@@ -60,9 +65,10 @@ const t = (e, s) => `/api/businesses/${e}/projects/${s}`, p = {
60
65
  * project-scoped — a physical template belongs to no business. */
61
66
  forkAppTemplate: () => "/api/admin/app-templates/fork",
62
67
  /** Template Center: delete an existing physical template directory, as a PR
63
- * against this repo. Refused for the default template or one any project
64
- * still references — see the endpoint's own doc comment. */
65
- deleteAppTemplate: (e) => `/api/admin/app-templates/${e}/delete`,
68
+ * against this repo. Refused for the default template (never bypassable)
69
+ * or, absent `force`, for one any project still references — see the
70
+ * endpoint's own doc comment for what `force` skips and what it does not. */
71
+ deleteAppTemplate: (e, s) => `/api/admin/app-templates/${e}/delete${s ? "?force=1" : ""}`,
66
72
  /** Template Center admin list: every physical template's live registry
67
73
  * row, drafts included — unlike `appTemplates()` (merchant-facing,
68
74
  * published + environment-filtered only). */
@@ -91,5 +97,5 @@ const t = (e, s) => `/api/businesses/${e}/projects/${s}`, p = {
91
97
  appTemplateEditingProject: (e) => `/api/admin/app-templates/${e}/editing-project`
92
98
  };
93
99
  export {
94
- p as a
100
+ i as a
95
101
  };