@prenta/core 5.9.0 → 6.0.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.
Files changed (157) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/actions.d.ts +5 -0
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +40 -18
  5. package/dist/actions.js.map +1 -1
  6. package/dist/ai/brand-voice-alignment.d.ts.map +1 -1
  7. package/dist/ai/brand-voice-alignment.js +2 -0
  8. package/dist/ai/brand-voice-alignment.js.map +1 -1
  9. package/dist/ai/brand-voice-analyze.d.ts.map +1 -1
  10. package/dist/ai/brand-voice-analyze.js +1 -0
  11. package/dist/ai/brand-voice-analyze.js.map +1 -1
  12. package/dist/ai/content-writing-generate.d.ts.map +1 -1
  13. package/dist/ai/content-writing-generate.js +2 -5
  14. package/dist/ai/content-writing-generate.js.map +1 -1
  15. package/dist/ai/index.d.ts +1 -1
  16. package/dist/ai/index.d.ts.map +1 -1
  17. package/dist/ai/index.js +1 -1
  18. package/dist/ai/index.js.map +1 -1
  19. package/dist/ai/plugin-import.d.ts +12 -0
  20. package/dist/ai/plugin-import.d.ts.map +1 -0
  21. package/dist/ai/plugin-import.js +16 -0
  22. package/dist/ai/plugin-import.js.map +1 -0
  23. package/dist/ai/runtime.d.ts +40 -2
  24. package/dist/ai/runtime.d.ts.map +1 -1
  25. package/dist/ai/runtime.js +60 -0
  26. package/dist/ai/runtime.js.map +1 -1
  27. package/dist/api/route-helpers.d.ts +9 -14
  28. package/dist/api/route-helpers.d.ts.map +1 -1
  29. package/dist/api/route-helpers.js +20 -43
  30. package/dist/api/route-helpers.js.map +1 -1
  31. package/dist/api/routes/seo.d.ts.map +1 -1
  32. package/dist/api/routes/seo.js +59 -42
  33. package/dist/api/routes/seo.js.map +1 -1
  34. package/dist/config/collection-lookup.d.ts +21 -0
  35. package/dist/config/collection-lookup.d.ts.map +1 -0
  36. package/dist/config/collection-lookup.js +44 -0
  37. package/dist/config/collection-lookup.js.map +1 -0
  38. package/dist/content/index.d.ts +0 -2
  39. package/dist/content/index.d.ts.map +1 -1
  40. package/dist/content/index.js +0 -1
  41. package/dist/content/index.js.map +1 -1
  42. package/dist/db/model-types.d.ts +0 -1
  43. package/dist/db/model-types.d.ts.map +1 -1
  44. package/dist/generated/internal/class.js +4 -4
  45. package/dist/generated/internal/prismaNamespace.d.ts +0 -1
  46. package/dist/generated/internal/prismaNamespace.js +0 -1
  47. package/dist/generated/internal/prismaNamespaceBrowser.d.ts +0 -1
  48. package/dist/generated/internal/prismaNamespaceBrowser.js +0 -1
  49. package/dist/generated/models/Document.d.ts +1 -58
  50. package/dist/index.d.ts +2 -2
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +1 -1
  53. package/dist/index.js.map +1 -1
  54. package/dist/security/access.d.ts.map +1 -1
  55. package/dist/security/access.js +0 -2
  56. package/dist/security/access.js.map +1 -1
  57. package/dist/security/internal-keys.d.ts +5 -7
  58. package/dist/security/internal-keys.d.ts.map +1 -1
  59. package/dist/security/internal-keys.js +8 -10
  60. package/dist/security/internal-keys.js.map +1 -1
  61. package/dist/seo/audit-engine.d.ts +5 -0
  62. package/dist/seo/audit-engine.d.ts.map +1 -1
  63. package/dist/seo/audit-engine.js +63 -0
  64. package/dist/seo/audit-engine.js.map +1 -1
  65. package/dist/seo/audit-runner.d.ts.map +1 -1
  66. package/dist/seo/audit-runner.js +23 -1
  67. package/dist/seo/audit-runner.js.map +1 -1
  68. package/dist/seo/autopilot-gate.d.ts.map +1 -1
  69. package/dist/seo/autopilot-gate.js +30 -2
  70. package/dist/seo/autopilot-gate.js.map +1 -1
  71. package/dist/seo/autopilot-policy.d.ts +2 -2
  72. package/dist/seo/autopilot-policy.d.ts.map +1 -1
  73. package/dist/seo/autopilot-policy.js +1 -0
  74. package/dist/seo/autopilot-policy.js.map +1 -1
  75. package/dist/seo/autopilot-revert.d.ts.map +1 -1
  76. package/dist/seo/autopilot-revert.js +5 -2
  77. package/dist/seo/autopilot-revert.js.map +1 -1
  78. package/dist/seo/autopilot.d.ts.map +1 -1
  79. package/dist/seo/autopilot.js +18 -11
  80. package/dist/seo/autopilot.js.map +1 -1
  81. package/dist/seo/faq-eligibility.d.ts +32 -0
  82. package/dist/seo/faq-eligibility.d.ts.map +1 -0
  83. package/dist/seo/faq-eligibility.js +61 -0
  84. package/dist/seo/faq-eligibility.js.map +1 -0
  85. package/dist/seo/faq-schema.d.ts +13 -0
  86. package/dist/seo/faq-schema.d.ts.map +1 -0
  87. package/dist/seo/faq-schema.js +41 -0
  88. package/dist/seo/faq-schema.js.map +1 -0
  89. package/dist/seo/faq-signals.d.ts +54 -0
  90. package/dist/seo/faq-signals.d.ts.map +1 -0
  91. package/dist/seo/faq-signals.js +176 -0
  92. package/dist/seo/faq-signals.js.map +1 -0
  93. package/dist/seo/index.d.ts +1 -1
  94. package/dist/seo/index.d.ts.map +1 -1
  95. package/dist/seo/index.js.map +1 -1
  96. package/dist/seo/issue-fix-ai.d.ts +34 -5
  97. package/dist/seo/issue-fix-ai.d.ts.map +1 -1
  98. package/dist/seo/issue-fix-ai.js +59 -23
  99. package/dist/seo/issue-fix-ai.js.map +1 -1
  100. package/dist/seo/issue-fix-apply.d.ts +32 -2
  101. package/dist/seo/issue-fix-apply.d.ts.map +1 -1
  102. package/dist/seo/issue-fix-apply.js +231 -3
  103. package/dist/seo/issue-fix-apply.js.map +1 -1
  104. package/dist/seo/issue-fix-faq.d.ts +131 -0
  105. package/dist/seo/issue-fix-faq.d.ts.map +1 -0
  106. package/dist/seo/issue-fix-faq.js +455 -0
  107. package/dist/seo/issue-fix-faq.js.map +1 -0
  108. package/dist/seo/issue-fix-verify.d.ts +9 -0
  109. package/dist/seo/issue-fix-verify.d.ts.map +1 -1
  110. package/dist/seo/issue-fix-verify.js +61 -0
  111. package/dist/seo/issue-fix-verify.js.map +1 -1
  112. package/dist/seo/issue-fix.d.ts +5 -2
  113. package/dist/seo/issue-fix.d.ts.map +1 -1
  114. package/dist/seo/issue-fix.js +35 -0
  115. package/dist/seo/issue-fix.js.map +1 -1
  116. package/dist/seo/link-suggest.d.ts.map +1 -1
  117. package/dist/seo/link-suggest.js +1 -4
  118. package/dist/seo/link-suggest.js.map +1 -1
  119. package/dist/seo/page-meta.d.ts +8 -0
  120. package/dist/seo/page-meta.d.ts.map +1 -1
  121. package/dist/seo/page-meta.js +85 -12
  122. package/dist/seo/page-meta.js.map +1 -1
  123. package/dist/seo/proposals-bulk-apply.d.ts +6 -3
  124. package/dist/seo/proposals-bulk-apply.d.ts.map +1 -1
  125. package/dist/seo/proposals-bulk-apply.js +1 -0
  126. package/dist/seo/proposals-bulk-apply.js.map +1 -1
  127. package/dist/seo/proposals.d.ts +24 -0
  128. package/dist/seo/proposals.d.ts.map +1 -1
  129. package/dist/seo/proposals.js +35 -4
  130. package/dist/seo/proposals.js.map +1 -1
  131. package/dist/seo/seo-field-values.d.ts +18 -0
  132. package/dist/seo/seo-field-values.d.ts.map +1 -0
  133. package/dist/seo/seo-field-values.js +25 -0
  134. package/dist/seo/seo-field-values.js.map +1 -0
  135. package/package.json +1 -1
  136. package/prisma/migrations/0019_drop_content_graph/migration.sql +4 -0
  137. package/prisma/schema.prisma +0 -1
  138. package/dist/api/auth-context.d.ts +0 -3
  139. package/dist/api/auth-context.d.ts.map +0 -1
  140. package/dist/api/auth-context.js +0 -3
  141. package/dist/api/auth-context.js.map +0 -1
  142. package/dist/api/limiters.d.ts +0 -3
  143. package/dist/api/limiters.d.ts.map +0 -1
  144. package/dist/api/limiters.js +0 -3
  145. package/dist/api/limiters.js.map +0 -1
  146. package/dist/content/content-graph.d.ts +0 -25
  147. package/dist/content/content-graph.d.ts.map +0 -1
  148. package/dist/content/content-graph.js +0 -40
  149. package/dist/content/content-graph.js.map +0 -1
  150. package/dist/db/index.d.ts +0 -9
  151. package/dist/db/index.d.ts.map +0 -1
  152. package/dist/db/index.js +0 -5
  153. package/dist/db/index.js.map +0 -1
  154. package/dist/next/preview.d.ts +0 -10
  155. package/dist/next/preview.d.ts.map +0 -1
  156. package/dist/next/preview.js +0 -17
  157. package/dist/next/preview.js.map +0 -1
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Lazily load the optional `@prenta/plugin-ai` peer.
3
+ *
4
+ * The specifier is assembled at runtime so bundlers (webpack / turbopack /
5
+ * vite) do not try to resolve a package the host may not have installed.
6
+ * Callers assert the shape they need at the call site; the module is typed
7
+ * `any` because it is an optional peer whose exports Spec B is retiring.
8
+ *
9
+ * One definition: `api/route-helpers.ts` re-exports this for the route files.
10
+ */
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- optional peer, shape asserted by callers
12
+ export async function importAIPlugin() {
13
+ const mod = '@prenta/' + 'plugin-ai';
14
+ return import(/* webpackIgnore: true */ /* turbopackIgnore: true */ /* @vite-ignore */ mod);
15
+ }
16
+ //# sourceMappingURL=plugin-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-import.js","sourceRoot":"","sources":["../../src/ai/plugin-import.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,0GAA0G;AAC1G,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,GAAG,GAAG,UAAU,GAAG,WAAW,CAAA;IACpC,OAAO,MAAM,CAAC,yBAAyB,CAAC,2BAA2B,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAA;AAC7F,CAAC"}
@@ -14,9 +14,17 @@
14
14
  * (`./providers/*`) speak HTTP, this module decides *whether* and *with what*
15
15
  * to call them.
16
16
  */
17
+ import type { ZodType } from 'zod';
18
+ import { stripJsonFences } from './brand-voice-analyze.js';
17
19
  import type { AIProviderKey } from './types.js';
18
- /** Why a feature could not run. Distinct codes let callers map to HTTP status. */
19
- export type RuntimeErrorCode = 'feature_disabled' | 'no_provider' | 'no_model' | 'no_key' | 'budget_exceeded' | 'rate_limited' | 'provider_error';
20
+ /** Re-exported so JSON callers get the fence stripper from the same module as the helper. */
21
+ export { stripJsonFences };
22
+ /**
23
+ * Why a feature could not run. Distinct codes let callers map to HTTP status.
24
+ * `invalid_output` is specific to {@link generateJsonForFeature}: the model
25
+ * answered, but the reply never matched the requested schema.
26
+ */
27
+ export type RuntimeErrorCode = 'feature_disabled' | 'no_provider' | 'no_model' | 'no_key' | 'budget_exceeded' | 'rate_limited' | 'provider_error' | 'invalid_output';
20
28
  export interface RuntimeError {
21
29
  ok: false;
22
30
  code: RuntimeErrorCode;
@@ -85,6 +93,36 @@ export interface GenerateForFeatureSuccess {
85
93
  * `provider_error` RuntimeError too, so callers have a single shape to handle.
86
94
  */
87
95
  export declare function generateTextForFeature(db: unknown, featureKey: string, input: GenerateForFeatureInput): Promise<GenerateForFeatureSuccess | RuntimeError>;
96
+ export interface GenerateJsonForFeatureInput<T> extends GenerateForFeatureInput {
97
+ /** Shape the parsed reply must satisfy; `value` is the parsed output. */
98
+ schema: ZodType<T>;
99
+ /** Total attempts including the first (default 2 = one retry). */
100
+ maxAttempts?: number;
101
+ /** Seam for tests; defaults to {@link generateTextForFeature}. */
102
+ generate?: (db: unknown, featureKey: string, input: GenerateForFeatureInput) => Promise<GenerateForFeatureSuccess | RuntimeError>;
103
+ }
104
+ export interface GenerateJsonForFeatureSuccess<T> {
105
+ ok: true;
106
+ value: T;
107
+ /** Fence-stripped raw text that parsed successfully. */
108
+ text: string;
109
+ /** How many model calls it took (1 = first try). */
110
+ attempts: number;
111
+ usage: GenerateForFeatureSuccess['usage'];
112
+ modelId: string;
113
+ providerModelId: string;
114
+ }
115
+ /**
116
+ * Generate text, parse it as JSON, and validate it against a Zod schema.
117
+ * Retries with the validation error appended to the prompt until
118
+ * `maxAttempts` is exhausted (default: one retry); the final failure returns
119
+ * `invalid_output`. Runtime errors (disabled, budget, provider…) pass through
120
+ * untouched and are never retried.
121
+ *
122
+ * Cost: each validation retry is a second fully governed call — it counts
123
+ * against `maxRequestsPerDay` and records usage a second time.
124
+ */
125
+ export declare function generateJsonForFeature<T>(db: unknown, featureKey: string, input: GenerateJsonForFeatureInput<T>): Promise<GenerateJsonForFeatureSuccess<T> | RuntimeError>;
88
126
  export interface EmbedForFeatureInput {
89
127
  /** Recorded on the usage audit entry so spend is attributable. */
90
128
  userId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAGlC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAW1D,OAAO,KAAK,EAAwB,aAAa,EAAE,MAAM,YAAY,CAAA;AAGrE,6FAA6F;AAC7F,OAAO,EAAE,eAAe,EAAE,CAAA;AAE1B;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GACxB,kBAAkB,GAClB,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,cAAc,GACd,gBAAgB,GAChB,gBAAgB,CAAA;AAEpB,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,KAAK,CAAA;IACT,IAAI,EAAE,gBAAgB,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,6DAA6D;AAC7D,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,IAAI,CAAA;IACR,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,aAAa,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAA;IACvB,2EAA2E;IAC3E,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAMD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI1F;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,OAAO,EACX,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,GAAG,YAAY,CAAC,CAsEhD;AAQD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,IAAI,CAAA;IACR,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9E,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,OAAO,EACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,yBAAyB,GAAG,YAAY,CAAC,CA4DnD;AAED,MAAM,WAAW,2BAA2B,CAAC,CAAC,CAAE,SAAQ,uBAAuB;IAC7E,yEAAyE;IACzE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IAClB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,CACT,EAAE,EAAE,OAAO,EACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,uBAAuB,KAC3B,OAAO,CAAC,yBAAyB,GAAG,YAAY,CAAC,CAAA;CACvD;AAED,MAAM,WAAW,6BAA6B,CAAC,CAAC;IAC9C,EAAE,EAAE,IAAI,CAAA;IACR,KAAK,EAAE,CAAC,CAAA;IACR,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAA;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;CACxB;AASD;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,EAAE,EAAE,OAAO,EACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,2BAA2B,CAAC,CAAC,CAAC,GACpC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CA+C1D;AAYD,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,IAAI,CAAA;IACR,iDAAiD;IACjD,OAAO,EAAE,MAAM,EAAE,EAAE,CAAA;IACnB,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9E,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,OAAO,EACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,GAAE,oBAAyB,GAC/B,OAAO,CAAC,sBAAsB,GAAG,YAAY,CAAC,CAsDhD"}
@@ -15,6 +15,7 @@
15
15
  * to call them.
16
16
  */
17
17
  import { applyBrandVoice } from './brand-voice.js';
18
+ import { stripJsonFences } from './brand-voice-analyze.js';
18
19
  import { resolveWireModelId } from './catalog.js';
19
20
  import { getAIConfig, resolveProviderKey } from './config-store.js';
20
21
  import { getModels } from './models.js';
@@ -23,6 +24,8 @@ import { AdapterHttpError } from './providers/http.js';
23
24
  import { resolveFeatureModel } from './resolve.js';
24
25
  import { modelDisallowsSampling, samplingParamProviderMessage } from './sampling.js';
25
26
  import { countFeatureRunsToday, getUsageSummary } from './usage.js';
27
+ /** Re-exported so JSON callers get the fence stripper from the same module as the helper. */
28
+ export { stripJsonFences };
26
29
  function err(code, message) {
27
30
  return { ok: false, code, message };
28
31
  }
@@ -159,6 +162,63 @@ export async function generateTextForFeature(db, featureKey, input) {
159
162
  return err('provider_error', message);
160
163
  }
161
164
  }
165
+ const DEFAULT_JSON_ATTEMPTS = 2;
166
+ const VALIDATION_ERROR_MAX_CHARS = 600;
167
+ function retryPrompt(basePrompt, lastError) {
168
+ return `${basePrompt}\n\nYour previous reply was not valid: ${lastError}. Reply with ONLY the JSON object.`;
169
+ }
170
+ /**
171
+ * Generate text, parse it as JSON, and validate it against a Zod schema.
172
+ * Retries with the validation error appended to the prompt until
173
+ * `maxAttempts` is exhausted (default: one retry); the final failure returns
174
+ * `invalid_output`. Runtime errors (disabled, budget, provider…) pass through
175
+ * untouched and are never retried.
176
+ *
177
+ * Cost: each validation retry is a second fully governed call — it counts
178
+ * against `maxRequestsPerDay` and records usage a second time.
179
+ */
180
+ export async function generateJsonForFeature(db, featureKey, input) {
181
+ const { schema, maxAttempts = DEFAULT_JSON_ATTEMPTS, generate = generateTextForFeature, ...base } = input;
182
+ const attempts = Math.max(1, Math.floor(maxAttempts));
183
+ let prompt = base.prompt;
184
+ let lastError = '';
185
+ for (let attempt = 1; attempt <= attempts; attempt++) {
186
+ const r = await generate(db, featureKey, { ...base, prompt });
187
+ if (!r.ok)
188
+ return r;
189
+ const text = stripJsonFences(r.text);
190
+ let parsed;
191
+ try {
192
+ parsed = JSON.parse(text);
193
+ }
194
+ catch {
195
+ // Static text on purpose: V8's SyntaxError message echoes a slice of the
196
+ // raw (untrusted) model output, which must not flow into the retry prompt
197
+ // or the surfaced error message.
198
+ lastError = 'Not valid JSON';
199
+ prompt = retryPrompt(base.prompt, lastError);
200
+ continue;
201
+ }
202
+ const result = schema.safeParse(parsed);
203
+ if (result.success) {
204
+ return {
205
+ ok: true,
206
+ value: result.data,
207
+ text,
208
+ attempts: attempt,
209
+ usage: r.usage,
210
+ modelId: r.modelId,
211
+ providerModelId: r.providerModelId,
212
+ };
213
+ }
214
+ lastError = result.error.issues
215
+ .map((i) => `${i.path.join('.') || '<root>'}: ${i.message}`)
216
+ .join('; ')
217
+ .slice(0, VALIDATION_ERROR_MAX_CHARS);
218
+ prompt = retryPrompt(base.prompt, lastError);
219
+ }
220
+ return err('invalid_output', `AI returned output that did not match the expected shape (${lastError}).`);
221
+ }
162
222
  /**
163
223
  * Default embedding model per provider. Providers absent from this map have no
164
224
  * embeddings API — `embedForFeature` returns a typed `no_model` error for them
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EACL,kBAAkB,IAAI,yBAAyB,EAC/C,YAAY,IAAI,mBAAmB,GACpC,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAA;AAEpF,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEnE,6FAA6F;AAC7F,OAAO,EAAE,eAAe,EAAE,CAAA;AAuC1B,SAAS,GAAG,CAAC,IAAsB,EAAE,OAAe;IAClD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAW,EAAE,UAAkB;IACtE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAA;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,CAAA;IAC1E,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,EAAW,EACX,UAAkB;IAElB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAA;IAEpC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,CAAA;IAC1E,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC,kBAAkB,EAAE,QAAQ,OAAO,CAAC,KAAK,6BAA6B,CAAC,CAAA;IACpF,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,CAAA;IACnC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IACjE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC,UAAU,EAAE,qEAAqE,CAAC,CAAA;IAC/F,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC,aAAa,EAAE,wDAAwD,CAAC,CAAA;IACrF,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAA;IAC7E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,GAAG,CAAC,aAAa,EAAE,yDAAyD,CAAC,CAAA;IACtF,CAAC;IACD,IAAI,UAAU,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACjC,OAAO,GAAG,CAAC,aAAa,EAAE,QAAQ,UAAU,CAAC,WAAW,yBAAyB,CAAC,CAAA;IACpF,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACnD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,GAAG,CAAC,QAAQ,EAAE,8BAA8B,UAAU,CAAC,WAAW,aAAa,CAAC,CAAA;IACzF,CAAC;IAED,0EAA0E;IAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA;IACrC,IAAI,MAAM,CAAC,mBAAmB,IAAI,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ,EAAE,CAAC;QAC/E,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAA;QACvC,IAAI,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAClD,OAAO,GAAG,CACR,iBAAiB,EACjB,iFAAiF,CAClF,CAAA;QACH,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,OAAO,EAAE,iBAAiB,CAAA;IAC3C,IAAI,OAAO,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;QAC7D,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC1B,OAAO,GAAG,CACR,cAAc,EACd,QAAQ,OAAO,CAAC,KAAK,wCAAwC,QAAQ,+CAA+C,CACrH,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,kBAAkB,CACxC,QAAQ,CAAC,KAAK,EAAE,eAAe,IAAI,mBAAmB,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CACrF,CAAA;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,UAAU;QACV,WAAW,EAAE,UAAU,CAAC,QAAQ;QAChC,YAAY,EAAE,UAAU,CAAC,EAAE;QAC3B,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,MAAM;QACN,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,eAAe;QACf,iBAAiB,EAAE,sBAAsB,CAAC,eAAe,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;KACzF,CAAA;AACH,CAAC;AAED,8DAA8D;AAC9D,SAAS,mBAAmB,CAAC,OAAe,EAAE,UAAgC;IAC5E,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,GAAG,CAAA;IACxC,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;AAC5E,CAAC;AA6BD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,EAAW,EACX,UAAkB,EAClB,KAA8B;IAE9B,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;IAC5D,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAA;IAEjC,4EAA4E;IAC5E,oEAAoE;IACpE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IACzB,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAA;QACpC,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IAC9D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GACf,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,iBAAiB;YAClE,CAAC,CAAC,KAAK,CAAC,WAAW;YACnB,CAAC,CAAC,SAAS,CAAA;QAEf,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACtC,QAAQ,CAAC,WAAW,EACpB;YACE,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,EACD;YACE,KAAK,EAAE,QAAQ,CAAC,eAAe;YAC/B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM;YACN,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,WAAW;SACZ,CACF,CAAA;QAED,MAAM,WAAW,CAAC,EAAE,EAAE;YACpB,UAAU;YACV,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAA;QAEF,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,eAAe,EAAE,QAAQ,CAAC,eAAe;SAC1C,CAAA;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GACP,CAAC,YAAY,gBAAgB;YAC3B,CAAC,CAAC,CAAC,CAAC,OAAO;YACX,CAAC,CAAC,CAAC,YAAY,KAAK;gBAClB,CAAC,CAAC,CAAC,CAAC,OAAO;gBACX,CAAC,CAAC,iCAAiC,CAAA;QACzC,MAAM,OAAO,GAAG,4BAA4B,CAAC,GAAG,CAAC,IAAI,GAAG,CAAA;QACxD,OAAO,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;IACvC,CAAC;AACH,CAAC;AA2BD,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAC/B,MAAM,0BAA0B,GAAG,GAAG,CAAA;AAEtC,SAAS,WAAW,CAAC,UAAkB,EAAE,SAAiB;IACxD,OAAO,GAAG,UAAU,0CAA0C,SAAS,oCAAoC,CAAA;AAC7G,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,EAAW,EACX,UAAkB,EAClB,KAAqC;IAErC,MAAM,EACJ,MAAM,EACN,WAAW,GAAG,qBAAqB,EACnC,QAAQ,GAAG,sBAAsB,EACjC,GAAG,IAAI,EACR,GAAG,KAAK,CAAA;IACT,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;IACrD,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IACxB,IAAI,SAAS,GAAG,EAAE,CAAA;IAClB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;QACrD,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QAC7D,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,CAAC,CAAA;QACnB,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,MAAe,CAAA;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,yEAAyE;YACzE,0EAA0E;YAC1E,iCAAiC;YACjC,SAAS,GAAG,gBAAgB,CAAA;YAC5B,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;YAC5C,SAAQ;QACV,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,KAAK,EAAE,MAAM,CAAC,IAAI;gBAClB,IAAI;gBACJ,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,eAAe,EAAE,CAAC,CAAC,eAAe;aACnC,CAAA;QACH,CAAC;QACD,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aAC3D,IAAI,CAAC,IAAI,CAAC;aACV,KAAK,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAA;QACvC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC9C,CAAC;IACD,OAAO,GAAG,CACR,gBAAgB,EAChB,6DAA6D,SAAS,IAAI,CAC3E,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,gBAAgB,GAA2C;IAC/D,MAAM,EAAE,wBAAwB;IAChC,MAAM,EAAE,wBAAwB;CACjC,CAAA;AAoBD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAW,EACX,UAAkB,EAClB,KAAe,EACf,QAA8B,EAAE;IAEhC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,EAAE,EAAE,IAAI;YACR,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;YAC/D,OAAO,EAAE,EAAE;SACZ,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;IAC5D,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAA;IAEjC,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC7D,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,UAAU,EAAE,QAAQ,QAAQ,CAAC,WAAW,yCAAyC,CAAC,CAAA;IAC/F,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAC5C,QAAQ,CAAC,WAAW,EACpB;YACE,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,EACD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,CACxC,CAAA;QAED,MAAM,OAAO,GAAG,GAAG,QAAQ,CAAC,WAAW,IAAI,cAAc,EAAE,CAAA;QAC3D,MAAM,KAAK,GAAG;YACZ,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY;YACvC,gBAAgB,EAAE,CAAC;YACnB,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;SACtC,CAAA;QACD,MAAM,WAAW,CAAC,EAAE,EAAE;YACpB,UAAU;YACV,OAAO;YACP,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK;SACN,CAAC,CAAA;QAEF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;IAC9D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,OAAO,GACX,CAAC,YAAY,gBAAgB;YAC3B,CAAC,CAAC,CAAC,CAAC,OAAO;YACX,CAAC,CAAC,CAAC,YAAY,KAAK;gBAClB,CAAC,CAAC,CAAC,CAAC,OAAO;gBACX,CAAC,CAAC,iCAAiC,CAAA;QACzC,OAAO,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;IACvC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,WAAW,CACxB,EAAW,EACX,KAMC;IAED,MAAM,CAAC,GAAG,EAET,CAAA;IACD,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM;QAAE,OAAM;IAChC,IAAI,CAAC;QACH,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE;gBACJ,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,QAAQ;gBAChC,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,OAAO,EAAE;oBACP,MAAM,EAAE,YAAY;oBACpB,OAAO,EAAE,KAAK,CAAC,UAAU;oBACzB,KAAK,EAAE,KAAK,CAAC,OAAO;oBACpB,QAAQ,EAAE,KAAK,CAAC,WAAW;oBAC3B,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;oBACxC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;oBACtC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB;iBAC/C;aACF;SACF,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;QAChE,OAAM;IACR,CAAC;IAED,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAA;IAC5E,qBAAqB,CAAC;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;KACrC,CAAC,CAAA;AACJ,CAAC"}
@@ -1,12 +1,11 @@
1
1
  import type { ActionContext } from '../actions.js';
2
2
  import { type TeamOptions } from '../auth/team.js';
3
- import type { CollectionDefinition } from '../config/types.js';
4
3
  import type { FetchFormEntriesParams, FetchFormsParams, FormDefinition } from '../forms/types.js';
5
4
  import { type IncomingFile } from '../forms/files.js';
6
5
  import { type ApiKeyScope } from '../security/api-key-enhanced.js';
7
6
  import type { PrentaDB } from '../db/client-types.js';
8
7
  export declare function importBlobStorage(): Promise<any>;
9
- export declare function importAIPlugin(): Promise<any>;
8
+ export { importAIPlugin } from '../ai/plugin-import.js';
10
9
  /**
11
10
  * Build the system/user prompt for an inline co-author action. Kept
12
11
  * deterministic and small so the governed runtime can route it to any
@@ -280,6 +279,13 @@ export declare function requireAuth(request: Request): Promise<{
280
279
  session?: never;
281
280
  error: Response;
282
281
  }>;
282
+ /**
283
+ * API-key collection-scope check as a plain denial reason (`null` = allowed).
284
+ * JWT sessions are never denied here — role checks are the route's job. Use
285
+ * this where the collection is only known deep inside a service (e.g. an SEO
286
+ * fix that writes a document) and a `Response` cannot be returned directly.
287
+ */
288
+ export declare function apiKeyCollectionScopeDenial(session: AuthSession, collection: string, action: 'read' | 'create' | 'update' | 'delete'): string | null;
283
289
  /**
284
290
  * Check that the request's auth context permits `action` on `collection`.
285
291
  * - Session-authenticated requests fall through to `requireRole` semantics:
@@ -360,18 +366,7 @@ export declare function enforceSessionLimitsForUser(d: any, userId: string): Pro
360
366
  /** Revoke every live API key for a user. Called with session revocation. */
361
367
  export declare function revokeUserApiKeys(d: any, userId: string): Promise<number>;
362
368
  export declare function getAdminPath(): string;
363
- /**
364
- * Resolve a collection definition from the runtime config, tolerating both
365
- * the array and the record (keyed-by-slug) shapes consumers use.
366
- */
367
- export declare function findCollectionDef(slug: string): CollectionDefinition | undefined;
368
- /**
369
- * True when `collection` declares a `sections` JSON field — the storage
370
- * contract the flat Page Editor + section endpoints rely on. Guards against
371
- * silently dropping section writes on a collection that never declared the
372
- * field (the field-access layer strips undeclared keys).
373
- */
374
- export declare function collectionSupportsSections(slug: string): boolean;
369
+ export { findCollectionDef, collectionSupportsSections } from '../config/collection-lookup.js';
375
370
  /**
376
371
  * Gate a per-document read for endpoints (e.g. SEO analysis) that fetch a
377
372
  * document directly rather than through the collection CRUD routes. Enforces
@@ -1 +1 @@
1
- {"version":3,"file":"route-helpers.d.ts","sourceRoot":"","sources":["../../src/api/route-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-helpers.d.ts","sourceRoot":"","sources":["../../src/api/route-helpers.ts"],"names":[],"mappings":"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"}
@@ -31,10 +31,7 @@ export async function importBlobStorage() {
31
31
  const mod = '@vercel/' + 'blob';
32
32
  return import(/* webpackIgnore: true */ /* turbopackIgnore: true */ /* @vite-ignore */ mod);
33
33
  }
34
- export async function importAIPlugin() {
35
- const mod = '@prenta/' + 'plugin-ai';
36
- return import(/* webpackIgnore: true */ /* turbopackIgnore: true */ /* @vite-ignore */ mod);
37
- }
34
+ export { importAIPlugin } from '../ai/plugin-import.js';
38
35
  /**
39
36
  * Build the system/user prompt for an inline co-author action. Kept
40
37
  * deterministic and small so the governed runtime can route it to any
@@ -1295,6 +1292,19 @@ export async function requireAuth(request) {
1295
1292
  }
1296
1293
  return { session };
1297
1294
  }
1295
+ /**
1296
+ * API-key collection-scope check as a plain denial reason (`null` = allowed).
1297
+ * JWT sessions are never denied here — role checks are the route's job. Use
1298
+ * this where the collection is only known deep inside a service (e.g. an SEO
1299
+ * fix that writes a document) and a `Response` cannot be returned directly.
1300
+ */
1301
+ export function apiKeyCollectionScopeDenial(session, collection, action) {
1302
+ if (!session.apiKey)
1303
+ return null;
1304
+ return validateApiKeyScope(session.apiKey.scopes, collection, action)
1305
+ ? null
1306
+ : `API key does not have permission to ${action} on collection "${collection}"`;
1307
+ }
1298
1308
  /**
1299
1309
  * Check that the request's auth context permits `action` on `collection`.
1300
1310
  * - Session-authenticated requests fall through to `requireRole` semantics:
@@ -1303,10 +1313,8 @@ export async function requireAuth(request) {
1303
1313
  */
1304
1314
  export function requireCollectionScope(session, collection, action) {
1305
1315
  if (session.apiKey) {
1306
- if (!validateApiKeyScope(session.apiKey.scopes, collection, action)) {
1307
- return errorResponse(`API key does not have permission to ${action} on collection "${collection}"`, 403);
1308
- }
1309
- return null;
1316
+ const denial = apiKeyCollectionScopeDenial(session, collection, action);
1317
+ return denial ? errorResponse(denial, 403) : null;
1310
1318
  }
1311
1319
  if (action === 'read')
1312
1320
  return null;
@@ -1572,41 +1580,10 @@ export async function revokeUserApiKeys(d, userId) {
1572
1580
  export function getAdminPath() {
1573
1581
  return process.env.PRENTA_ADMIN_PATH ?? getPrentaConfig()?.admin?.path ?? '/admin';
1574
1582
  }
1575
- /**
1576
- * Resolve a collection definition from the runtime config, tolerating both
1577
- * the array and the record (keyed-by-slug) shapes consumers use.
1578
- */
1579
- export function findCollectionDef(slug) {
1580
- const collections = getPrentaConfig()?.collections;
1581
- if (Array.isArray(collections)) {
1582
- return collections.find((c) => c?.slug === slug);
1583
- }
1584
- if (collections && typeof collections === 'object') {
1585
- const rec = collections;
1586
- return rec[slug] ?? Object.values(rec).find((c) => c?.slug === slug);
1587
- }
1588
- return undefined;
1589
- }
1590
- /**
1591
- * True when `collection` declares a `sections` JSON field — the storage
1592
- * contract the flat Page Editor + section endpoints rely on. Guards against
1593
- * silently dropping section writes on a collection that never declared the
1594
- * field (the field-access layer strips undeclared keys).
1595
- */
1596
- export function collectionSupportsSections(slug) {
1597
- const def = findCollectionDef(slug);
1598
- if (!def)
1599
- return false;
1600
- const fields = def.fields;
1601
- if (Array.isArray(fields)) {
1602
- return fields.some((f) => f?.name === 'sections' && f?.type === 'json');
1603
- }
1604
- if (fields && typeof fields === 'object') {
1605
- const f = fields.sections;
1606
- return f?.type === 'json';
1607
- }
1608
- return false;
1609
- }
1583
+ // Collection lookups live in the config layer so pure domain modules (SEO
1584
+ // scanner, section helpers) can use them without depending on `api/`.
1585
+ // Re-exported here for existing route callers.
1586
+ export { findCollectionDef, collectionSupportsSections } from '../config/collection-lookup.js';
1610
1587
  /**
1611
1588
  * Gate a per-document read for endpoints (e.g. SEO analysis) that fetch a
1612
1589
  * document directly rather than through the collection CRUD routes. Enforces