@mano8/astro-prompt-m8 0.1.0-alpha.1

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 (163) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +116 -0
  3. package/dist/src/integration.d.ts +42 -0
  4. package/dist/src/integration.d.ts.map +1 -0
  5. package/dist/src/integration.js +86 -0
  6. package/dist/src/integration.js.map +1 -0
  7. package/dist/src/lib/csp.d.ts +25 -0
  8. package/dist/src/lib/csp.d.ts.map +1 -0
  9. package/dist/src/lib/csp.js +53 -0
  10. package/dist/src/lib/csp.js.map +1 -0
  11. package/dist/src/middleware.d.ts +4 -0
  12. package/dist/src/middleware.d.ts.map +1 -0
  13. package/dist/src/middleware.js +24 -0
  14. package/dist/src/middleware.js.map +1 -0
  15. package/dist/src/runtime/api/admin.d.ts +15 -0
  16. package/dist/src/runtime/api/admin.d.ts.map +1 -0
  17. package/dist/src/runtime/api/admin.js +39 -0
  18. package/dist/src/runtime/api/admin.js.map +1 -0
  19. package/dist/src/runtime/api/blocks.d.ts +24 -0
  20. package/dist/src/runtime/api/blocks.d.ts.map +1 -0
  21. package/dist/src/runtime/api/blocks.js +74 -0
  22. package/dist/src/runtime/api/blocks.js.map +1 -0
  23. package/dist/src/runtime/api/categories.d.ts +7 -0
  24. package/dist/src/runtime/api/categories.d.ts.map +1 -0
  25. package/dist/src/runtime/api/categories.js +49 -0
  26. package/dist/src/runtime/api/categories.js.map +1 -0
  27. package/dist/src/runtime/api/dashboard.d.ts +6 -0
  28. package/dist/src/runtime/api/dashboard.d.ts.map +1 -0
  29. package/dist/src/runtime/api/dashboard.js +21 -0
  30. package/dist/src/runtime/api/dashboard.js.map +1 -0
  31. package/dist/src/runtime/api/index.d.ts +46 -0
  32. package/dist/src/runtime/api/index.d.ts.map +1 -0
  33. package/dist/src/runtime/api/index.js +48 -0
  34. package/dist/src/runtime/api/index.js.map +1 -0
  35. package/dist/src/runtime/api/internal.server.d.ts +18 -0
  36. package/dist/src/runtime/api/internal.server.d.ts.map +1 -0
  37. package/dist/src/runtime/api/internal.server.js +43 -0
  38. package/dist/src/runtime/api/internal.server.js.map +1 -0
  39. package/dist/src/runtime/api/templates.d.ts +14 -0
  40. package/dist/src/runtime/api/templates.d.ts.map +1 -0
  41. package/dist/src/runtime/api/templates.js +108 -0
  42. package/dist/src/runtime/api/templates.js.map +1 -0
  43. package/dist/src/runtime/authAdapter.d.ts +48 -0
  44. package/dist/src/runtime/authAdapter.d.ts.map +1 -0
  45. package/dist/src/runtime/authAdapter.js +62 -0
  46. package/dist/src/runtime/authAdapter.js.map +1 -0
  47. package/dist/src/runtime/client.d.ts +24 -0
  48. package/dist/src/runtime/client.d.ts.map +1 -0
  49. package/dist/src/runtime/client.js +85 -0
  50. package/dist/src/runtime/client.js.map +1 -0
  51. package/dist/src/runtime/compatibility.d.ts +32 -0
  52. package/dist/src/runtime/compatibility.d.ts.map +1 -0
  53. package/dist/src/runtime/compatibility.js +97 -0
  54. package/dist/src/runtime/compatibility.js.map +1 -0
  55. package/dist/src/runtime/config.d.ts +16 -0
  56. package/dist/src/runtime/config.d.ts.map +1 -0
  57. package/dist/src/runtime/config.js +22 -0
  58. package/dist/src/runtime/config.js.map +1 -0
  59. package/dist/src/runtime/errors.d.ts +23 -0
  60. package/dist/src/runtime/errors.d.ts.map +1 -0
  61. package/dist/src/runtime/errors.js +50 -0
  62. package/dist/src/runtime/errors.js.map +1 -0
  63. package/dist/src/runtime/hooks/index.d.ts +9 -0
  64. package/dist/src/runtime/hooks/index.d.ts.map +1 -0
  65. package/dist/src/runtime/hooks/index.js +9 -0
  66. package/dist/src/runtime/hooks/index.js.map +1 -0
  67. package/dist/src/runtime/hooks/useComposePrompt.d.ts +13 -0
  68. package/dist/src/runtime/hooks/useComposePrompt.d.ts.map +1 -0
  69. package/dist/src/runtime/hooks/useComposePrompt.js +17 -0
  70. package/dist/src/runtime/hooks/useComposePrompt.js.map +1 -0
  71. package/dist/src/runtime/hooks/usePromptAdmin.d.ts +10 -0
  72. package/dist/src/runtime/hooks/usePromptAdmin.d.ts.map +1 -0
  73. package/dist/src/runtime/hooks/usePromptAdmin.js +33 -0
  74. package/dist/src/runtime/hooks/usePromptAdmin.js.map +1 -0
  75. package/dist/src/runtime/hooks/usePromptBlock.d.ts +18 -0
  76. package/dist/src/runtime/hooks/usePromptBlock.d.ts.map +1 -0
  77. package/dist/src/runtime/hooks/usePromptBlock.js +25 -0
  78. package/dist/src/runtime/hooks/usePromptBlock.js.map +1 -0
  79. package/dist/src/runtime/hooks/usePromptBlocks.d.ts +22 -0
  80. package/dist/src/runtime/hooks/usePromptBlocks.d.ts.map +1 -0
  81. package/dist/src/runtime/hooks/usePromptBlocks.js +53 -0
  82. package/dist/src/runtime/hooks/usePromptBlocks.js.map +1 -0
  83. package/dist/src/runtime/hooks/usePromptCategories.d.ts +20 -0
  84. package/dist/src/runtime/hooks/usePromptCategories.d.ts.map +1 -0
  85. package/dist/src/runtime/hooks/usePromptCategories.js +53 -0
  86. package/dist/src/runtime/hooks/usePromptCategories.js.map +1 -0
  87. package/dist/src/runtime/hooks/usePromptDashboard.d.ts +13 -0
  88. package/dist/src/runtime/hooks/usePromptDashboard.d.ts.map +1 -0
  89. package/dist/src/runtime/hooks/usePromptDashboard.js +11 -0
  90. package/dist/src/runtime/hooks/usePromptDashboard.js.map +1 -0
  91. package/dist/src/runtime/hooks/usePromptTemplate.d.ts +33 -0
  92. package/dist/src/runtime/hooks/usePromptTemplate.d.ts.map +1 -0
  93. package/dist/src/runtime/hooks/usePromptTemplate.js +43 -0
  94. package/dist/src/runtime/hooks/usePromptTemplate.js.map +1 -0
  95. package/dist/src/runtime/hooks/usePromptTemplates.d.ts +37 -0
  96. package/dist/src/runtime/hooks/usePromptTemplates.d.ts.map +1 -0
  97. package/dist/src/runtime/hooks/usePromptTemplates.js +106 -0
  98. package/dist/src/runtime/hooks/usePromptTemplates.js.map +1 -0
  99. package/dist/src/runtime/listParams.d.ts +27 -0
  100. package/dist/src/runtime/listParams.d.ts.map +1 -0
  101. package/dist/src/runtime/listParams.js +67 -0
  102. package/dist/src/runtime/listParams.js.map +1 -0
  103. package/dist/src/runtime/queryKeys.d.ts +25 -0
  104. package/dist/src/runtime/queryKeys.d.ts.map +1 -0
  105. package/dist/src/runtime/queryKeys.js +29 -0
  106. package/dist/src/runtime/queryKeys.js.map +1 -0
  107. package/dist/src/runtime/react/AdminPromptPanel.d.ts +21 -0
  108. package/dist/src/runtime/react/AdminPromptPanel.d.ts.map +1 -0
  109. package/dist/src/runtime/react/AdminPromptPanel.js +53 -0
  110. package/dist/src/runtime/react/AdminPromptPanel.js.map +1 -0
  111. package/dist/src/runtime/react/PromptBlockLibrary.d.ts +36 -0
  112. package/dist/src/runtime/react/PromptBlockLibrary.d.ts.map +1 -0
  113. package/dist/src/runtime/react/PromptBlockLibrary.js +122 -0
  114. package/dist/src/runtime/react/PromptBlockLibrary.js.map +1 -0
  115. package/dist/src/runtime/react/PromptComposer.d.ts +24 -0
  116. package/dist/src/runtime/react/PromptComposer.d.ts.map +1 -0
  117. package/dist/src/runtime/react/PromptComposer.js +48 -0
  118. package/dist/src/runtime/react/PromptComposer.js.map +1 -0
  119. package/dist/src/runtime/react/PromptProvider.d.ts +16 -0
  120. package/dist/src/runtime/react/PromptProvider.d.ts.map +1 -0
  121. package/dist/src/runtime/react/PromptProvider.js +79 -0
  122. package/dist/src/runtime/react/PromptProvider.js.map +1 -0
  123. package/dist/src/runtime/react/PromptQueryProvider.d.ts +8 -0
  124. package/dist/src/runtime/react/PromptQueryProvider.d.ts.map +1 -0
  125. package/dist/src/runtime/react/PromptQueryProvider.js +11 -0
  126. package/dist/src/runtime/react/PromptQueryProvider.js.map +1 -0
  127. package/dist/src/runtime/react/PromptTemplateEditor.d.ts +36 -0
  128. package/dist/src/runtime/react/PromptTemplateEditor.d.ts.map +1 -0
  129. package/dist/src/runtime/react/PromptTemplateEditor.js +141 -0
  130. package/dist/src/runtime/react/PromptTemplateEditor.js.map +1 -0
  131. package/dist/src/runtime/react/RequireSuperuser.d.ts +7 -0
  132. package/dist/src/runtime/react/RequireSuperuser.d.ts.map +1 -0
  133. package/dist/src/runtime/react/RequireSuperuser.js +10 -0
  134. package/dist/src/runtime/react/RequireSuperuser.js.map +1 -0
  135. package/dist/src/runtime/react/default-ui/index.d.ts +17 -0
  136. package/dist/src/runtime/react/default-ui/index.d.ts.map +1 -0
  137. package/dist/src/runtime/react/default-ui/index.js +23 -0
  138. package/dist/src/runtime/react/default-ui/index.js.map +1 -0
  139. package/dist/src/runtime/react/index.d.ts +8 -0
  140. package/dist/src/runtime/react/index.d.ts.map +1 -0
  141. package/dist/src/runtime/react/index.js +8 -0
  142. package/dist/src/runtime/react/index.js.map +1 -0
  143. package/dist/src/runtime/routes.d.ts +17 -0
  144. package/dist/src/runtime/routes.d.ts.map +1 -0
  145. package/dist/src/runtime/routes.js +33 -0
  146. package/dist/src/runtime/routes.js.map +1 -0
  147. package/dist/src/runtime/schemas.d.ts +286 -0
  148. package/dist/src/runtime/schemas.d.ts.map +1 -0
  149. package/dist/src/runtime/schemas.js +172 -0
  150. package/dist/src/runtime/schemas.js.map +1 -0
  151. package/package.json +99 -0
  152. package/registry/r/admin-prompt-dashboard.json +23 -0
  153. package/registry/r/prompt-block-editor.json +20 -0
  154. package/registry/r/prompt-dashboard-overview.json +22 -0
  155. package/registry/r/prompt-maintenance-panel.json +23 -0
  156. package/registry/r/prompt-template-editor.json +20 -0
  157. package/registry/r/registry.json +37 -0
  158. package/registry.json +86 -0
  159. package/src/routes/admin/prompts.astro +11 -0
  160. package/src/routes/blocks.astro +11 -0
  161. package/src/routes/composer.astro +12 -0
  162. package/src/routes/templates.astro +11 -0
  163. package/src/scaffold/styles/prompt.css +9 -0
@@ -0,0 +1,62 @@
1
+ import { getPromptConfig } from "./config.js";
2
+ /**
3
+ * Best-effort superuser detection that does not depend on a specific user
4
+ * shape: honours an explicit `is_superuser` flag, the configured admin role,
5
+ * or a `roles` array containing it.
6
+ */
7
+ export function defaultIsSuperuser(user, adminRole = getPromptConfig().adminRole) {
8
+ if (!user || typeof user !== "object")
9
+ return false;
10
+ const record = user;
11
+ if (record.is_superuser === true)
12
+ return true;
13
+ if (adminRole !== "is_superuser" && typeof record.role === "string" && record.role === adminRole) {
14
+ return true;
15
+ }
16
+ return Array.isArray(record.roles) && record.roles.includes(adminRole);
17
+ }
18
+ /** A self-contained adapter that holds the token in memory only. */
19
+ export function createInMemoryAuthAdapter(initialToken = null) {
20
+ let token = initialToken;
21
+ return {
22
+ getAccessToken: () => token,
23
+ setAccessToken: (next) => {
24
+ token = next;
25
+ },
26
+ isSuperuser: (user) => defaultIsSuperuser(user)
27
+ };
28
+ }
29
+ /**
30
+ * Build the official adapter from `@mano8/astro-auth-m8` bindings. The bindings
31
+ * are injected by the consumer so the prompt plugin keeps the auth plugin as an
32
+ * optional peer and never statically imports it.
33
+ */
34
+ export function createFaAuthAdapter(bindings) {
35
+ return {
36
+ getAccessToken: () => bindings.getToken(),
37
+ refresh: async () => {
38
+ if (!bindings.refreshToken)
39
+ return null;
40
+ const result = await bindings.refreshToken();
41
+ if (!result)
42
+ return null;
43
+ return typeof result === "string" ? result : result.access_token ?? null;
44
+ },
45
+ getUser: bindings.getUser,
46
+ isSuperuser: (user) => bindings.isSuperuser ? bindings.isSuperuser(user) : defaultIsSuperuser(user),
47
+ hasRole: bindings.hasRole,
48
+ onUnauthenticated: bindings.onUnauthenticated
49
+ };
50
+ }
51
+ let adapter = createInMemoryAuthAdapter();
52
+ export function setPromptAuthAdapter(next) {
53
+ adapter = next;
54
+ return adapter;
55
+ }
56
+ export function getPromptAuthAdapter() {
57
+ return adapter;
58
+ }
59
+ export function resetPromptAuthAdapter() {
60
+ adapter = createInMemoryAuthAdapter();
61
+ }
62
+ //# sourceMappingURL=authAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authAdapter.js","sourceRoot":"","sources":["../../../src/runtime/authAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAwB9C;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAa,EACb,SAAS,GAAG,eAAe,EAAE,CAAC,SAAS;IAEvC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,MAAM,GAAG,IAA+B,CAAC;IAC/C,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,SAAS,KAAK,cAAc,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACjG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACzE,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,yBAAyB,CAAC,eAA8B,IAAI;IAC1E,IAAI,KAAK,GAAG,YAAY,CAAC;IACzB,OAAO;QACL,cAAc,EAAE,GAAG,EAAE,CAAC,KAAK;QAC3B,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;YACvB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QACD,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;KAChD,CAAC;AACJ,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAwB;IAC1D,OAAO;QACL,cAAc,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACzC,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YACzB,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC;QAC3E,CAAC;QACD,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CACpB,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAC9E,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;KAC9C,CAAC;AACJ,CAAC;AAED,IAAI,OAAO,GAAsB,yBAAyB,EAAE,CAAC;AAE7D,MAAM,UAAU,oBAAoB,CAAC,IAAuB;IAC1D,OAAO,GAAG,IAAI,CAAC;IACf,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,GAAG,yBAAyB,EAAE,CAAC;AACxC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { z } from "zod";
2
+ export * from "./api/index.js";
3
+ export type PromptRequestBase = "api" | "absolute";
4
+ export type PromptRequestOptions<T> = {
5
+ method: "GET" | "POST" | "PATCH" | "PUT" | "DELETE";
6
+ base?: PromptRequestBase;
7
+ path: string;
8
+ query?: Record<string, string | number | boolean | null | undefined>;
9
+ body?: unknown;
10
+ headers?: Record<string, string>;
11
+ schema?: z.ZodType<T>;
12
+ auth?: boolean;
13
+ admin?: boolean;
14
+ skipRefresh?: boolean;
15
+ };
16
+ /**
17
+ * Resolve a request path against the configured base. `api` resolves to
18
+ * `apiBase + apiPrefix` (e.g. `/prompt/fastapi/...`); `absolute` is for
19
+ * already-fully-qualified URLs. The protocol is pinned to http(s) so a crafted
20
+ * `path` can never smuggle in `javascript:`/`data:`.
21
+ */
22
+ export declare function promptUrl(base: PromptRequestBase, path: string): string;
23
+ export declare function request<T>(options: PromptRequestOptions<T>): Promise<T>;
24
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/runtime/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAW7B,cAAc,gBAAgB,CAAC;AAE/B,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,UAAU,CAAC;AAEnD,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI;IACpC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACpD,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACrE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CASvE;AAED,wBAAsB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAmE7E"}
@@ -0,0 +1,85 @@
1
+ import { getPromptConfig } from "./config.js";
2
+ import { getPromptAuthAdapter } from "./authAdapter.js";
3
+ import { ApiError, ForbiddenError, messageFromDetail, normalizeFastApiError, UnauthenticatedError } from "./errors.js";
4
+ export * from "./api/index.js";
5
+ /**
6
+ * Resolve a request path against the configured base. `api` resolves to
7
+ * `apiBase + apiPrefix` (e.g. `/prompt/fastapi/...`); `absolute` is for
8
+ * already-fully-qualified URLs. The protocol is pinned to http(s) so a crafted
9
+ * `path` can never smuggle in `javascript:`/`data:`.
10
+ */
11
+ export function promptUrl(base, path) {
12
+ const config = getPromptConfig();
13
+ const origin = typeof window === "undefined" ? "http://localhost" : window.location.origin;
14
+ const full = base === "absolute" ? path : `${config.apiBase}${config.apiPrefix}${path}`;
15
+ const url = new URL(full, origin);
16
+ if (!["http:", "https:"].includes(url.protocol)) {
17
+ throw new Error("Unsupported prompt API protocol");
18
+ }
19
+ return url.toString();
20
+ }
21
+ export async function request(options) {
22
+ const config = getPromptConfig();
23
+ const adapter = getPromptAuthAdapter();
24
+ // Guard admin calls before they hit the network when the user is known, so a
25
+ // non-superuser never even emits the request.
26
+ if (options.admin && adapter.getUser && adapter.isSuperuser) {
27
+ const user = await adapter.getUser();
28
+ if (user != null && !adapter.isSuperuser(user)) {
29
+ throw new ForbiddenError();
30
+ }
31
+ }
32
+ const url = new URL(promptUrl(options.base ?? "api", options.path));
33
+ for (const [key, value] of Object.entries(options.query ?? {})) {
34
+ if (value != null)
35
+ url.searchParams.set(key, String(value));
36
+ }
37
+ const headers = new Headers({
38
+ [config.csrfHeader]: "XMLHttpRequest",
39
+ ...options.headers
40
+ });
41
+ if (options.auth) {
42
+ const token = await adapter.getAccessToken();
43
+ if (token)
44
+ headers.set("Authorization", `Bearer ${token}`);
45
+ }
46
+ let body;
47
+ if (options.body !== undefined) {
48
+ headers.set("Content-Type", "application/json");
49
+ body = JSON.stringify(options.body);
50
+ }
51
+ const execute = () => fetch(url.toString(), { method: options.method, headers, body, credentials: "include" });
52
+ let response = await execute();
53
+ if (response.status === 401 && !options.skipRefresh) {
54
+ const refreshed = adapter.refresh ? await adapter.refresh() : null;
55
+ if (refreshed) {
56
+ headers.set("Authorization", `Bearer ${refreshed}`);
57
+ response = await execute();
58
+ }
59
+ else {
60
+ adapter.onUnauthenticated?.("refresh-failed");
61
+ throw new UnauthenticatedError("Session expired. Please sign in again.");
62
+ }
63
+ }
64
+ if (!response.ok) {
65
+ if (response.status === 401) {
66
+ adapter.onUnauthenticated?.("unauthenticated");
67
+ throw new UnauthenticatedError();
68
+ }
69
+ let detail;
70
+ try {
71
+ detail = normalizeFastApiError(await response.clone().json());
72
+ }
73
+ catch {
74
+ detail = await response.text();
75
+ }
76
+ if (response.status === 403 && options.admin) {
77
+ throw new ForbiddenError(messageFromDetail(detail));
78
+ }
79
+ throw new ApiError(response.status, detail);
80
+ }
81
+ if (response.status === 204 || !options.schema)
82
+ return undefined;
83
+ return options.schema.parse(await response.json());
84
+ }
85
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/runtime/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export declare const PROMPT_ENGINE_M8_CONTRACT_ID = "prompt-engine-m8";
2
+ export declare const PROMPT_ENGINE_M8_CONTRACT_VERSION = "0.0";
3
+ export declare const PROMPT_ENGINE_M8_CONTRACT: "prompt-engine-m8@0.0";
4
+ export declare const PROMPT_ENGINE_M8_TESTED_SERVICE_VERSION = "0.0.1";
5
+ export declare const PROMPT_ENGINE_M8_MIN_SERVICE_VERSION = "0.0.1";
6
+ export declare const PROMPT_ENGINE_M8_MAX_SERVICE_VERSION_EXCLUSIVE = "0.1.0";
7
+ export declare const PROMPT_ENGINE_M8_SERVICE_VERSION_RANGE = ">=0.0.1 <0.1.0";
8
+ export type PromptEngineM8CompatibilityStatus = "compatible" | "incompatible" | "unknown";
9
+ export type PromptEngineM8VersionMetadata = {
10
+ contract?: unknown;
11
+ contract_version?: unknown;
12
+ prompt_contract?: unknown;
13
+ prompt_contract_version?: unknown;
14
+ prompt_engine_m8_contract?: unknown;
15
+ version?: unknown;
16
+ service_version?: unknown;
17
+ prompt_engine_m8_version?: unknown;
18
+ service?: unknown;
19
+ api_version?: unknown;
20
+ };
21
+ export type PromptEngineM8Compatibility = {
22
+ status: PromptEngineM8CompatibilityStatus;
23
+ expectedContract: typeof PROMPT_ENGINE_M8_CONTRACT;
24
+ expectedServiceVersionRange: typeof PROMPT_ENGINE_M8_SERVICE_VERSION_RANGE;
25
+ contractVersion?: string;
26
+ serviceVersion?: string;
27
+ reason?: string;
28
+ };
29
+ export declare function isPromptEngineM8ServiceVersionCompatible(version: string): boolean;
30
+ export declare function getPromptEngineM8Compatibility(metadata?: PromptEngineM8VersionMetadata): PromptEngineM8Compatibility;
31
+ export declare function assertPromptEngineM8Compatibility(metadata: PromptEngineM8VersionMetadata, requireKnown?: boolean): PromptEngineM8Compatibility;
32
+ //# sourceMappingURL=compatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../../src/runtime/compatibility.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAC/D,eAAO,MAAM,iCAAiC,QAAQ,CAAC;AACvD,eAAO,MAAM,yBAAyB,wBAAkF,CAAC;AACzH,eAAO,MAAM,uCAAuC,UAAU,CAAC;AAC/D,eAAO,MAAM,oCAAoC,UAAU,CAAC;AAC5D,eAAO,MAAM,8CAA8C,UAAU,CAAC;AACtE,eAAO,MAAM,sCAAsC,mBAAiG,CAAC;AAErJ,MAAM,MAAM,iCAAiC,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC;AAE1F,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,iCAAiC,CAAC;IAC1C,gBAAgB,EAAE,OAAO,yBAAyB,CAAC;IACnD,2BAA2B,EAAE,OAAO,sCAAsC,CAAC;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AA8BF,wBAAgB,wCAAwC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIjF;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,GAAE,6BAAkC,GAC3C,2BAA2B,CAuD7B;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,6BAA6B,EACvC,YAAY,UAAO,GAClB,2BAA2B,CAS7B"}
@@ -0,0 +1,97 @@
1
+ export const PROMPT_ENGINE_M8_CONTRACT_ID = "prompt-engine-m8";
2
+ export const PROMPT_ENGINE_M8_CONTRACT_VERSION = "0.0";
3
+ export const PROMPT_ENGINE_M8_CONTRACT = `${PROMPT_ENGINE_M8_CONTRACT_ID}@${PROMPT_ENGINE_M8_CONTRACT_VERSION}`;
4
+ export const PROMPT_ENGINE_M8_TESTED_SERVICE_VERSION = "0.0.1";
5
+ export const PROMPT_ENGINE_M8_MIN_SERVICE_VERSION = "0.0.1";
6
+ export const PROMPT_ENGINE_M8_MAX_SERVICE_VERSION_EXCLUSIVE = "0.1.0";
7
+ export const PROMPT_ENGINE_M8_SERVICE_VERSION_RANGE = `>=${PROMPT_ENGINE_M8_MIN_SERVICE_VERSION} <${PROMPT_ENGINE_M8_MAX_SERVICE_VERSION_EXCLUSIVE}`;
8
+ function stringValue(value) {
9
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
10
+ }
11
+ function contractObjectVersion(value) {
12
+ if (typeof value === "object" && value !== null) {
13
+ return stringValue(value.version);
14
+ }
15
+ return undefined;
16
+ }
17
+ function parseSemver(version) {
18
+ const match = /^(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/.exec(version);
19
+ if (!match)
20
+ return undefined;
21
+ return [Number(match[1]), Number(match[2]), Number(match[3])];
22
+ }
23
+ function compareSemver(left, right) {
24
+ const parsedLeft = parseSemver(left);
25
+ const parsedRight = parseSemver(right);
26
+ if (!parsedLeft || !parsedRight)
27
+ return undefined;
28
+ for (let index = 0; index < parsedLeft.length; index += 1) {
29
+ if (parsedLeft[index] > parsedRight[index])
30
+ return 1;
31
+ if (parsedLeft[index] < parsedRight[index])
32
+ return -1;
33
+ }
34
+ return 0;
35
+ }
36
+ export function isPromptEngineM8ServiceVersionCompatible(version) {
37
+ const aboveMin = compareSemver(version, PROMPT_ENGINE_M8_MIN_SERVICE_VERSION);
38
+ const belowMax = compareSemver(version, PROMPT_ENGINE_M8_MAX_SERVICE_VERSION_EXCLUSIVE);
39
+ return aboveMin !== undefined && belowMax !== undefined && aboveMin >= 0 && belowMax < 0;
40
+ }
41
+ export function getPromptEngineM8Compatibility(metadata = {}) {
42
+ const contractVersion = stringValue(metadata.prompt_contract_version) ??
43
+ stringValue(metadata.contract_version) ??
44
+ stringValue(metadata.prompt_engine_m8_contract) ??
45
+ stringValue(metadata.prompt_contract) ??
46
+ contractObjectVersion(metadata.contract) ??
47
+ stringValue(metadata.contract);
48
+ const serviceVersion = stringValue(metadata.prompt_engine_m8_version) ??
49
+ stringValue(metadata.service_version) ??
50
+ stringValue(metadata.version);
51
+ if (contractVersion &&
52
+ contractVersion !== PROMPT_ENGINE_M8_CONTRACT_VERSION &&
53
+ contractVersion !== PROMPT_ENGINE_M8_CONTRACT) {
54
+ return {
55
+ status: "incompatible",
56
+ expectedContract: PROMPT_ENGINE_M8_CONTRACT,
57
+ expectedServiceVersionRange: PROMPT_ENGINE_M8_SERVICE_VERSION_RANGE,
58
+ contractVersion,
59
+ serviceVersion,
60
+ reason: `Expected ${PROMPT_ENGINE_M8_CONTRACT}, received ${contractVersion}`
61
+ };
62
+ }
63
+ if (serviceVersion && !isPromptEngineM8ServiceVersionCompatible(serviceVersion)) {
64
+ return {
65
+ status: "incompatible",
66
+ expectedContract: PROMPT_ENGINE_M8_CONTRACT,
67
+ expectedServiceVersionRange: PROMPT_ENGINE_M8_SERVICE_VERSION_RANGE,
68
+ contractVersion,
69
+ serviceVersion,
70
+ reason: `Expected prompt-engine-m8 service version ${PROMPT_ENGINE_M8_SERVICE_VERSION_RANGE}, received ${serviceVersion}`
71
+ };
72
+ }
73
+ if (contractVersion || serviceVersion) {
74
+ return {
75
+ status: "compatible",
76
+ expectedContract: PROMPT_ENGINE_M8_CONTRACT,
77
+ expectedServiceVersionRange: PROMPT_ENGINE_M8_SERVICE_VERSION_RANGE,
78
+ contractVersion,
79
+ serviceVersion
80
+ };
81
+ }
82
+ return {
83
+ status: "unknown",
84
+ expectedContract: PROMPT_ENGINE_M8_CONTRACT,
85
+ expectedServiceVersionRange: PROMPT_ENGINE_M8_SERVICE_VERSION_RANGE,
86
+ reason: "No prompt-engine-m8 contract or service version metadata was provided"
87
+ };
88
+ }
89
+ export function assertPromptEngineM8Compatibility(metadata, requireKnown = true) {
90
+ const compatibility = getPromptEngineM8Compatibility(metadata);
91
+ if (compatibility.status === "incompatible" ||
92
+ (requireKnown && compatibility.status === "unknown")) {
93
+ throw new Error(compatibility.reason);
94
+ }
95
+ return compatibility;
96
+ }
97
+ //# sourceMappingURL=compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../../src/runtime/compatibility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export type PromptRuntimeConfig = {
2
+ /** Browser-facing base used by all requests. Mirror of `PUBLIC_PROMPT_API_BASE`. */
3
+ apiBase: string;
4
+ /** API prefix from the prompt-engine-m8 service contract. Default `/fastapi`. */
5
+ apiPrefix: string;
6
+ /** Header sent on every request so a same-origin stack can pin CSRF. */
7
+ csrfHeader: string;
8
+ /** Role string that grants admin access through the auth adapter. */
9
+ adminRole: string;
10
+ /** Compose / list hard timeout for client-side fetches, in milliseconds. */
11
+ requestTimeoutMs: number;
12
+ };
13
+ export declare function configurePrompt(config?: Partial<PromptRuntimeConfig>): PromptRuntimeConfig;
14
+ export declare function getPromptConfig(): PromptRuntimeConfig;
15
+ export declare function resetPromptConfig(): void;
16
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/runtime/config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG;IAChC,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAgBF,wBAAgB,eAAe,CAC7B,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM,GACxC,mBAAmB,CAGrB;AAED,wBAAgB,eAAe,IAAI,mBAAmB,CAErD;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
@@ -0,0 +1,22 @@
1
+ const DEFAULT_CONFIG = {
2
+ apiBase: "/prompt",
3
+ apiPrefix: "/fastapi",
4
+ csrfHeader: "X-Requested-With",
5
+ adminRole: "is_superuser",
6
+ requestTimeoutMs: 30_000
7
+ };
8
+ let runtimeConfig = cloneConfig(DEFAULT_CONFIG);
9
+ function cloneConfig(config) {
10
+ return { ...config };
11
+ }
12
+ export function configurePrompt(config = {}) {
13
+ runtimeConfig = { ...runtimeConfig, ...config };
14
+ return runtimeConfig;
15
+ }
16
+ export function getPromptConfig() {
17
+ return runtimeConfig;
18
+ }
19
+ export function resetPromptConfig() {
20
+ runtimeConfig = cloneConfig(DEFAULT_CONFIG);
21
+ }
22
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/runtime/config.ts"],"names":[],"mappings":"AAaA,MAAM,cAAc,GAAwB;IAC1C,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,UAAU;IACrB,UAAU,EAAE,kBAAkB;IAC9B,SAAS,EAAE,cAAc;IACzB,gBAAgB,EAAE,MAAM;CACzB,CAAC;AAEF,IAAI,aAAa,GAAwB,WAAW,CAAC,cAAc,CAAC,CAAC;AAErE,SAAS,WAAW,CAAC,MAA2B;IAC9C,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,SAAuC,EAAE;IAEzC,aAAa,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;IAChD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,aAAa,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { z } from "zod";
2
+ export declare const ApiErrorBody: z.ZodObject<{
3
+ detail: z.ZodUnknown;
4
+ }, z.core.$strip>;
5
+ /**
6
+ * Derive a human-readable message from a normalized FastAPI error detail.
7
+ * Strings are surfaced as-is; validation arrays ({ msg }) are joined; anything
8
+ * else yields `undefined` so callers fall back to a generic message.
9
+ */
10
+ export declare function messageFromDetail(detail: unknown): string | undefined;
11
+ export declare class ApiError extends Error {
12
+ readonly status: number;
13
+ readonly detail: unknown;
14
+ constructor(status: number, detail: unknown, message?: string);
15
+ }
16
+ export declare class UnauthenticatedError extends ApiError {
17
+ constructor(message?: string);
18
+ }
19
+ export declare class ForbiddenError extends ApiError {
20
+ constructor(message?: string);
21
+ }
22
+ export declare function normalizeFastApiError(payload: unknown): unknown;
23
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/runtime/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;;iBAEvB,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAarE;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;gBAEb,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM;CAM9D;AAED,qBAAa,oBAAqB,SAAQ,QAAQ;gBACpC,OAAO,SAA4B;CAIhD;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,OAAO,SAAsD;CAI1E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAG/D"}
@@ -0,0 +1,50 @@
1
+ import { z } from "zod";
2
+ export const ApiErrorBody = z.object({
3
+ detail: z.unknown()
4
+ });
5
+ /**
6
+ * Derive a human-readable message from a normalized FastAPI error detail.
7
+ * Strings are surfaced as-is; validation arrays ({ msg }) are joined; anything
8
+ * else yields `undefined` so callers fall back to a generic message.
9
+ */
10
+ export function messageFromDetail(detail) {
11
+ if (typeof detail === "string" && detail.trim())
12
+ return detail;
13
+ if (Array.isArray(detail)) {
14
+ const parts = detail
15
+ .map((item) => item && typeof item === "object" && "msg" in item && item.msg
16
+ ? String(item.msg)
17
+ : null)
18
+ .filter((part) => part !== null);
19
+ if (parts.length)
20
+ return parts.join("; ");
21
+ }
22
+ return undefined;
23
+ }
24
+ export class ApiError extends Error {
25
+ status;
26
+ detail;
27
+ constructor(status, detail, message) {
28
+ super(message ?? messageFromDetail(detail) ?? "Prompt API request failed");
29
+ this.name = "ApiError";
30
+ this.status = status;
31
+ this.detail = detail;
32
+ }
33
+ }
34
+ export class UnauthenticatedError extends ApiError {
35
+ constructor(message = "Authentication required") {
36
+ super(401, message, message);
37
+ this.name = "UnauthenticatedError";
38
+ }
39
+ }
40
+ export class ForbiddenError extends ApiError {
41
+ constructor(message = "You do not have permission to perform this action") {
42
+ super(403, message, message);
43
+ this.name = "ForbiddenError";
44
+ }
45
+ }
46
+ export function normalizeFastApiError(payload) {
47
+ const parsed = ApiErrorBody.safeParse(payload);
48
+ return parsed.success ? parsed.data.detail : payload;
49
+ }
50
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/runtime/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACpB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAe;IAC/C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM;aACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAK,IAAyB,CAAC,GAAG;YACjF,CAAC,CAAC,MAAM,CAAE,IAAyB,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,IAAI,CACT;aACA,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACnD,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,MAAM,CAAS;IACf,MAAM,CAAU;IAEzB,YAAY,MAAc,EAAE,MAAe,EAAE,OAAgB;QAC3D,KAAK,CAAC,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,2BAA2B,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,QAAQ;IAChD,YAAY,OAAO,GAAG,yBAAyB;QAC7C,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,YAAY,OAAO,GAAG,mDAAmD;QACvE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACvD,CAAC"}
@@ -0,0 +1,9 @@
1
+ export * from "./usePromptBlocks.js";
2
+ export * from "./usePromptBlock.js";
3
+ export * from "./usePromptTemplates.js";
4
+ export * from "./usePromptTemplate.js";
5
+ export * from "./usePromptCategories.js";
6
+ export * from "./useComposePrompt.js";
7
+ export * from "./usePromptAdmin.js";
8
+ export * from "./usePromptDashboard.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export * from "./usePromptBlocks.js";
2
+ export * from "./usePromptBlock.js";
3
+ export * from "./usePromptTemplates.js";
4
+ export * from "./usePromptTemplate.js";
5
+ export * from "./usePromptCategories.js";
6
+ export * from "./useComposePrompt.js";
7
+ export * from "./usePromptAdmin.js";
8
+ export * from "./usePromptDashboard.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/runtime/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type UseMutationResult } from "@tanstack/react-query";
2
+ import type { ComposedPrompt, DynamicBlock } from "../schemas.js";
3
+ type ComposeMutation = UseMutationResult<ComposedPrompt, unknown, {
4
+ templateId: number;
5
+ dynamicContent?: DynamicBlock[];
6
+ }>;
7
+ export type UseComposePrompt = {
8
+ compose: (templateId: number, dynamicContent?: DynamicBlock[]) => Promise<ComposedPrompt>;
9
+ composeMutation: ComposeMutation;
10
+ };
11
+ export declare function useComposePrompt(): UseComposePrompt;
12
+ export {};
13
+ //# sourceMappingURL=useComposePrompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useComposePrompt.d.ts","sourceRoot":"","sources":["../../../../src/runtime/hooks/useComposePrompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI5F,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElE,KAAK,eAAe,GAAG,iBAAiB,CACtC,cAAc,EACd,OAAO,EACP;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,CACxD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,YAAY,EAAE,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1F,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,gBAAgB,CAuBnD"}
@@ -0,0 +1,17 @@
1
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
2
+ import { useCallback } from "react";
3
+ import { composeTemplate } from "../api/templates.js";
4
+ import { promptKeys } from "../queryKeys.js";
5
+ export function useComposePrompt() {
6
+ const queryClient = useQueryClient();
7
+ const composeMutation = useMutation({
8
+ mutationFn: ({ templateId, dynamicContent }) => composeTemplate(templateId, dynamicContent ?? []),
9
+ onSuccess: async (data, variables) => {
10
+ queryClient.setQueryData(promptKeys.compose(variables.templateId), data);
11
+ }
12
+ });
13
+ const { mutateAsync } = composeMutation;
14
+ const compose = useCallback((templateId, dynamicContent) => mutateAsync({ templateId, dynamicContent }), [mutateAsync]);
15
+ return { compose, composeMutation };
16
+ }
17
+ //# sourceMappingURL=useComposePrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useComposePrompt.js","sourceRoot":"","sources":["../../../../src/runtime/hooks/useComposePrompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAA0B,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAc7C,MAAM,UAAU,gBAAgB;IAC9B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,MAAM,eAAe,GAAG,WAAW,CAIjC;QACA,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,EAAE,CAC7C,eAAe,CAAC,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC;QACnD,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;YACnC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3E,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC;IACxC,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,UAAkB,EAAE,cAA+B,EAAE,EAAE,CACtD,WAAW,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,EAC7C,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AACtC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { PromptAdminOverview } from "../api/admin.js";
2
+ export type UsePromptAdmin = {
3
+ allowed: boolean;
4
+ overview: PromptAdminOverview | null;
5
+ loading: boolean;
6
+ error: unknown;
7
+ load: () => Promise<void>;
8
+ };
9
+ export declare function usePromptAdmin(): UsePromptAdmin;
10
+ //# sourceMappingURL=usePromptAdmin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePromptAdmin.d.ts","sourceRoot":"","sources":["../../../../src/runtime/hooks/usePromptAdmin.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,CAAC;AAOF,wBAAgB,cAAc,IAAI,cAAc,CAoB/C"}
@@ -0,0 +1,33 @@
1
+ import { useCallback } from "react";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { getAdminOverview } from "../api/admin.js";
4
+ import { ForbiddenError } from "../errors.js";
5
+ import { promptKeys } from "../queryKeys.js";
6
+ import { usePromptContext } from "../react/PromptProvider.js";
7
+ async function guardAdmin(allowed, task) {
8
+ if (!allowed)
9
+ throw new ForbiddenError();
10
+ return task();
11
+ }
12
+ export function usePromptAdmin() {
13
+ const { isSuperuser } = usePromptContext();
14
+ const query = useQuery({
15
+ queryKey: promptKeys.adminOverview(),
16
+ queryFn: () => guardAdmin(isSuperuser, getAdminOverview),
17
+ enabled: false
18
+ });
19
+ const { refetch } = query;
20
+ const load = useCallback(async () => {
21
+ const result = await refetch();
22
+ if (result.error)
23
+ throw result.error;
24
+ }, [refetch]);
25
+ return {
26
+ allowed: isSuperuser,
27
+ overview: query.data ?? null,
28
+ loading: query.isFetching,
29
+ error: query.error ?? null,
30
+ load
31
+ };
32
+ }
33
+ //# sourceMappingURL=usePromptAdmin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePromptAdmin.js","sourceRoot":"","sources":["../../../../src/runtime/hooks/usePromptAdmin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAW9D,KAAK,UAAU,UAAU,CAAI,OAAgB,EAAE,IAAsB;IACnE,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,cAAc,EAAE,CAAC;IACzC,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,QAAQ,CAA+B;QACnD,QAAQ,EAAE,UAAU,CAAC,aAAa,EAAE;QACpC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,gBAAgB,CAAC;QACxD,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC1B,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClC,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,KAAK;YAAE,MAAM,MAAM,CAAC,KAAK,CAAC;IACvC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QAC5B,OAAO,EAAE,KAAK,CAAC,UAAU;QACzB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;QAC1B,IAAI;KACL,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ type UsePromptBlockParams = {
2
+ blockId?: number;
3
+ } | {
4
+ slug?: string;
5
+ };
6
+ export declare function usePromptBlock(params: UsePromptBlockParams): import("@tanstack/react-query").UseQueryResult<NoInfer<{
7
+ id: number;
8
+ name: string;
9
+ slug: string;
10
+ description: string | null;
11
+ content: string;
12
+ type: "format" | "role" | "task" | "context" | "instruction" | "example";
13
+ is_dynamic: boolean;
14
+ is_public: boolean;
15
+ owner_id: string;
16
+ } | null>, unknown>;
17
+ export {};
18
+ //# sourceMappingURL=usePromptBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePromptBlock.d.ts","sourceRoot":"","sources":["../../../../src/runtime/hooks/usePromptBlock.ts"],"names":[],"mappings":"AAKA,KAAK,oBAAoB,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB;;;;;;;;;;oBAuB1D"}