@prenta/core 5.3.0 → 5.4.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.
- package/CHANGELOG.md +32 -0
- package/dist/ai/content-writing-generate.d.ts.map +1 -1
- package/dist/ai/content-writing-generate.js +3 -0
- package/dist/ai/content-writing-generate.js.map +1 -1
- package/dist/ai/feature-defaults.d.ts +1 -1
- package/dist/ai/feature-defaults.d.ts.map +1 -1
- package/dist/ai/feature-defaults.js +3 -13
- package/dist/ai/feature-defaults.js.map +1 -1
- package/dist/ai/governance.d.ts +31 -0
- package/dist/ai/governance.d.ts.map +1 -0
- package/dist/ai/governance.js +56 -0
- package/dist/ai/governance.js.map +1 -0
- package/dist/ai/index.d.ts +2 -1
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +2 -1
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/providers/custom.d.ts +2 -1
- package/dist/ai/providers/custom.d.ts.map +1 -1
- package/dist/ai/providers/custom.js +7 -1
- package/dist/ai/providers/custom.js.map +1 -1
- package/dist/ai/providers/http.d.ts +13 -0
- package/dist/ai/providers/http.d.ts.map +1 -1
- package/dist/ai/providers/http.js +33 -0
- package/dist/ai/providers/http.js.map +1 -1
- package/dist/ai/providers/index.d.ts +5 -2
- package/dist/ai/providers/index.d.ts.map +1 -1
- package/dist/ai/providers/index.js +10 -0
- package/dist/ai/providers/index.js.map +1 -1
- package/dist/ai/providers/openai.d.ts +2 -1
- package/dist/ai/providers/openai.d.ts.map +1 -1
- package/dist/ai/providers/openai.js +4 -1
- package/dist/ai/providers/openai.js.map +1 -1
- package/dist/ai/runtime.d.ts +28 -1
- package/dist/ai/runtime.d.ts.map +1 -1
- package/dist/ai/runtime.js +73 -2
- package/dist/ai/runtime.js.map +1 -1
- package/dist/ai/usage.d.ts +6 -0
- package/dist/ai/usage.d.ts.map +1 -1
- package/dist/ai/usage.js +29 -0
- package/dist/ai/usage.js.map +1 -1
- package/dist/api/route-helpers.d.ts +2 -0
- package/dist/api/route-helpers.d.ts.map +1 -1
- package/dist/api/route-helpers.js +14 -0
- package/dist/api/route-helpers.js.map +1 -1
- package/dist/api/routes/ai-authoring.js +1 -1
- package/dist/api/routes/ai-authoring.js.map +1 -1
- package/dist/api/routes/ai-seo.d.ts.map +1 -1
- package/dist/api/routes/ai-seo.js +13 -5
- package/dist/api/routes/ai-seo.js.map +1 -1
- package/dist/api/routes/ai-settings.d.ts.map +1 -1
- package/dist/api/routes/ai-settings.js +39 -1
- package/dist/api/routes/ai-settings.js.map +1 -1
- package/dist/api/routes/redirects.d.ts.map +1 -1
- package/dist/api/routes/redirects.js +3 -2
- package/dist/api/routes/redirects.js.map +1 -1
- package/dist/api/routes/scheduling.d.ts.map +1 -1
- package/dist/api/routes/scheduling.js +17 -0
- package/dist/api/routes/scheduling.js.map +1 -1
- package/dist/api/routes/sections.d.ts.map +1 -1
- package/dist/api/routes/sections.js +9 -40
- package/dist/api/routes/sections.js.map +1 -1
- package/dist/api/routes/seo-public.d.ts.map +1 -1
- package/dist/api/routes/seo-public.js +205 -1
- package/dist/api/routes/seo-public.js.map +1 -1
- package/dist/api/routes/seo.d.ts.map +1 -1
- package/dist/api/routes/seo.js +216 -16
- package/dist/api/routes/seo.js.map +1 -1
- package/dist/db/model-types.d.ts +32 -0
- package/dist/db/model-types.d.ts.map +1 -1
- package/dist/generated/browser.d.ts +17 -0
- package/dist/generated/client.d.ts +17 -0
- package/dist/generated/commonInputTypes.d.ts +30 -30
- package/dist/generated/internal/class.d.ts +22 -0
- package/dist/generated/internal/class.js +4 -4
- package/dist/generated/internal/prismaNamespace.d.ts +198 -1
- package/dist/generated/internal/prismaNamespace.js +43 -0
- package/dist/generated/internal/prismaNamespaceBrowser.d.ts +47 -0
- package/dist/generated/internal/prismaNamespaceBrowser.js +43 -0
- package/dist/generated/models/ApiRequestMetric.d.ts +0 -7
- package/dist/generated/models/SearchPageInsight.d.ts +1460 -0
- package/dist/generated/models/SearchPageInsight.js +1 -0
- package/dist/generated/models/SearchPerfDaily.d.ts +1167 -0
- package/dist/generated/models/SearchPerfDaily.js +1 -0
- package/dist/generated/models.d.ts +2 -0
- package/dist/redirects/recovery.d.ts +12 -0
- package/dist/redirects/recovery.d.ts.map +1 -1
- package/dist/redirects/recovery.js +42 -2
- package/dist/redirects/recovery.js.map +1 -1
- package/dist/redirects/rerank.d.ts +14 -1
- package/dist/redirects/rerank.d.ts.map +1 -1
- package/dist/redirects/rerank.js +66 -37
- package/dist/redirects/rerank.js.map +1 -1
- package/dist/seo/audit-engine.d.ts +21 -3
- package/dist/seo/audit-engine.d.ts.map +1 -1
- package/dist/seo/audit-engine.js +51 -6
- package/dist/seo/audit-engine.js.map +1 -1
- package/dist/seo/audit-runner.d.ts.map +1 -1
- package/dist/seo/audit-runner.js +18 -0
- package/dist/seo/audit-runner.js.map +1 -1
- package/dist/seo/config-store.d.ts +13 -0
- package/dist/seo/config-store.d.ts.map +1 -1
- package/dist/seo/config-store.js +6 -0
- package/dist/seo/config-store.js.map +1 -1
- package/dist/seo/crux.d.ts +58 -0
- package/dist/seo/crux.d.ts.map +1 -0
- package/dist/seo/crux.js +101 -0
- package/dist/seo/crux.js.map +1 -0
- package/dist/seo/issue-content-brief.d.ts.map +1 -1
- package/dist/seo/issue-content-brief.js +11 -0
- package/dist/seo/issue-content-brief.js.map +1 -1
- package/dist/seo/issue-content-research.d.ts.map +1 -1
- package/dist/seo/issue-content-research.js +3 -0
- package/dist/seo/issue-content-research.js.map +1 -1
- package/dist/seo/issue-fix-ai.d.ts.map +1 -1
- package/dist/seo/issue-fix-ai.js +3 -0
- package/dist/seo/issue-fix-ai.js.map +1 -1
- package/dist/seo/issue-fix-redirect.d.ts.map +1 -1
- package/dist/seo/issue-fix-redirect.js +1 -0
- package/dist/seo/issue-fix-redirect.js.map +1 -1
- package/dist/seo/search-console/client.d.ts +39 -0
- package/dist/seo/search-console/client.d.ts.map +1 -0
- package/dist/seo/search-console/client.js +226 -0
- package/dist/seo/search-console/client.js.map +1 -0
- package/dist/seo/search-console/prompt-context.d.ts +21 -0
- package/dist/seo/search-console/prompt-context.d.ts.map +1 -0
- package/dist/seo/search-console/prompt-context.js +93 -0
- package/dist/seo/search-console/prompt-context.js.map +1 -0
- package/dist/seo/search-console/sync.d.ts +67 -0
- package/dist/seo/search-console/sync.d.ts.map +1 -0
- package/dist/seo/search-console/sync.js +469 -0
- package/dist/seo/search-console/sync.js.map +1 -0
- package/dist/seo/search-console/types.d.ts +75 -0
- package/dist/seo/search-console/types.d.ts.map +1 -0
- package/dist/seo/search-console/types.js +16 -0
- package/dist/seo/search-console/types.js.map +1 -0
- package/dist/seo/search-insight-signals.d.ts +29 -0
- package/dist/seo/search-insight-signals.d.ts.map +1 -0
- package/dist/seo/search-insight-signals.js +103 -0
- package/dist/seo/search-insight-signals.js.map +1 -0
- package/package.json +1 -1
- package/prisma/migrations/0016_search_console_tables/migration.sql +56 -0
- package/prisma/schema.prisma +49 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# @actuate-media/cms-core
|
|
2
2
|
|
|
3
|
+
## 5.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- fda3a91: Enforce the per-feature AI governance flags (audit roadmap item 2). `maxRequestsPerDay` now rate-limits the governed runtime (new `rate_limited` error → HTTP 429); `approvalRequired` / `allowBulkApply` gate the 404-recovery auto-apply pipeline via a new `ai/governance` module (safe defaults: approval required, no bulk). New governed `embedForFeature` runtime path (toggle + budget + cap + metering) powers the 404 redirect rerank, replacing the ungoverned plugin-ai import; OpenAI-compatible providers gain an embeddings adapter. Fixed `mergeFeatures` silently resetting stored `approvalRequired`/`allowBulkApply`. Removed the misleading `redirectChainFlattening` AI flag (chain flattening is deterministic). `PUT /ai/settings` accepts and validates the three governance fields, and Settings → AI exposes per-feature approval, bulk-apply, and daily-cap controls. The admin surfaces governed refusals instead of swallowing them: rate-limit/budget/disabled messages appear verbatim in the SEO copilot surfaces, and the Redirects tab explains when governance skipped an auto-apply.
|
|
8
|
+
|
|
9
|
+
**UPGRADE NOTE — behavior change:** with the default flags (`approvalRequired: true`), the SEO module's "Auto-apply high-confidence redirects" setting no longer applies redirects on its own. Eligible redirects are stored as pending suggestions until you disable "Require approval" (and enable "Allow bulk apply" for multi-redirect runs) for **404 Recovery suggestions** under Settings → AI. Existing instances that relied on unattended auto-apply must flip those two switches once after upgrading.
|
|
10
|
+
|
|
11
|
+
- a112369: Google Search Console + CrUX integration: real search outcome data now feeds the SEO engine.
|
|
12
|
+
|
|
13
|
+
**@prenta/core**
|
|
14
|
+
- New `SearchPerfDaily` and `SearchPageInsight` tables (additive migration) storing daily GSC search analytics (90-day rolling window) and per-page 28-day totals, deltas, top-query snapshots, and CrUX p75 Core Web Vitals.
|
|
15
|
+
- Service-account GSC client (`jose` RS256 JWT, zero new dependencies) with typed error taxonomy, pagination, and injectable fetch; keyed CrUX client with p75 threshold classification (404 = no field data, never a failure).
|
|
16
|
+
- Nightly `/cron/search-sync` (chunked, resumable, rotating CrUX cap for serverless duration limits) plus admin endpoints: `GET/PUT /seo/search-console` (encrypted key storage, never echoed), `POST /seo/search-console/test`, `POST /seo/search-sync` (rate-limited), and `GET /seo/search-insights/:entityId`.
|
|
17
|
+
- Audit engine consumes synced data: poor CWV populates the `slowPages` performance signal, a new `declining-performance` issue fires on ≥40% 28-day click drops, and quick wins are impression-weighted. Sync writes data only — the audit engine stays the single issue writer.
|
|
18
|
+
- SEO overview serves real search performance, impressions, and average position (with real trends) when connected; demo data remains the fallback.
|
|
19
|
+
- AI content briefs and `/ai/seo/generate-field` prompts now include the page's real 28-day stats and top queries, clamped and fenced as untrusted data.
|
|
20
|
+
|
|
21
|
+
**@prenta/admin**
|
|
22
|
+
- New "Search data" card in Settings → SEO: paste a service-account JSON key and CrUX API key (write-only, masked), property input with suggestion, test connection, sync status, and manual "Sync now".
|
|
23
|
+
- New read-only "Search performance" section in the SEO editor pane: 28-day clicks/impressions/position with deltas, top queries, and real-user Core Web Vitals.
|
|
24
|
+
- Overview empty state now points at the Search data settings instead of the unrelated verification token.
|
|
25
|
+
|
|
26
|
+
**@prenta/mcp-server**
|
|
27
|
+
- New tools: `get_search_performance` (top pages, real data when connected) and `run_search_sync` (confirm-gated manual sync).
|
|
28
|
+
|
|
29
|
+
## 5.3.1
|
|
30
|
+
|
|
31
|
+
### Patch Changes
|
|
32
|
+
|
|
33
|
+
- 6db4f47: Retire the stale design-owned-era deprecation of structural section editing. ADR 0003 made the section endpoints the canonical programmatic authoring path (the visual stack), but `POST /page-sections` add/reorder and `DELETE` still returned RFC 8594 `Deprecation` headers, and the MCP `add_page_section` / `reorder_page_sections` / `remove_page_section` descriptions still opened with "DEPRECATED — removed in the next major" and pointed agents at the deleted page builder. The headers are removed, the tool descriptions now describe the visual-stack workflow, and the CLI's section-fit diagnostic links to the current Connecting Designed Frontends guide instead of the retired page-builder doc.
|
|
34
|
+
|
|
3
35
|
## 5.3.0
|
|
4
36
|
|
|
5
37
|
### Minor Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-writing-generate.d.ts","sourceRoot":"","sources":["../../src/ai/content-writing-generate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,cAAc,CAAA;AAErB,MAAM,MAAM,4BAA4B,GACpC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAkCtD,wBAAsB,kCAAkC,CACtD,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,4BAA4B,CAAC,
|
|
1
|
+
{"version":3,"file":"content-writing-generate.d.ts","sourceRoot":"","sources":["../../src/ai/content-writing-generate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,cAAc,CAAA;AAErB,MAAM,MAAM,4BAA4B,GACpC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAkCtD,wBAAsB,kCAAkC,CACtD,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,4BAA4B,CAAC,CAuCvC"}
|
|
@@ -39,6 +39,9 @@ export async function generateContentWritingWithFallback(db, input) {
|
|
|
39
39
|
if (result.code === 'budget_exceeded') {
|
|
40
40
|
return { ok: false, httpStatus: 429, message: result.message };
|
|
41
41
|
}
|
|
42
|
+
if (result.code === 'rate_limited') {
|
|
43
|
+
return { ok: false, httpStatus: 429, message: result.message };
|
|
44
|
+
}
|
|
42
45
|
if (result.code === 'provider_error') {
|
|
43
46
|
return { ok: false, httpStatus: 502, message: `AI provider error: ${result.message}` };
|
|
44
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-writing-generate.js","sourceRoot":"","sources":["../../src/ai/content-writing-generate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content-writing-generate.js","sourceRoot":"","sources":["../../src/ai/content-writing-generate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,sBAAsB,GAGvB,MAAM,cAAc,CAAA;AAMrB,KAAK,UAAU,cAAc;IAG3B,MAAM,GAAG,GAAG,UAAU,GAAG,WAAW,CAAA;IACpC,OAAO,MAAM,CAAC,yBAAyB,CAAC,2BAA2B,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAA;AAC7F,CAAC;AAED,SAAS,SAAS,CAAC,IAAsB;IACvC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU;YACb,OAAO,CACL,4EAA4E;gBAC5E,kDAAkD,CACnD,CAAA;QACH,KAAK,QAAQ;YACX,OAAO,CACL,sEAAsE;gBACtE,wEAAwE,CACzE,CAAA;QACH,KAAK,aAAa;YAChB,OAAO,CACL,2EAA2E;gBAC3E,8CAA8C,CAC/C,CAAA;QACH;YACE,OAAO,CACL,8EAA8E;gBAC9E,6DAA6D,CAC9D,CAAA;IACL,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,EAAW,EACX,KAA8B;IAE9B,MAAM,OAAO,GAAG,4BAA4B,CAAA;IAC5C,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IAE/D,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;IACxC,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACvC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAA;IAChE,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACtC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAA;IAChE,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAA;IAChE,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACrC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,sBAAsB,MAAM,CAAC,OAAO,EAAE,EAAE,CAAA;IACxF,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5F,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAA;YACvC,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC5C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAA;YACxE,CAAC;YACD,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACzE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;YACxD,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;gBAClB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAA;YAClF,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAA;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAA;QACxE,CAAC;IACH,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAA;AAChE,CAAC"}
|
|
@@ -14,7 +14,7 @@ export declare function cloneFeatureDefaults(): AIFeatureConfig[];
|
|
|
14
14
|
/**
|
|
15
15
|
* Merge stored feature toggles over the current defaults so newly-added features
|
|
16
16
|
* appear automatically and removed/renamed ones drop off, while preserving the
|
|
17
|
-
* admin's `enabled`/routing choices for features that still exist.
|
|
17
|
+
* admin's `enabled`/governance/routing choices for features that still exist.
|
|
18
18
|
*/
|
|
19
19
|
export declare function mergeFeatures(stored: AIFeatureConfig[] | undefined): AIFeatureConfig[];
|
|
20
20
|
//# sourceMappingURL=feature-defaults.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-defaults.d.ts","sourceRoot":"","sources":["../../src/ai/feature-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,mBAAmB,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"feature-defaults.d.ts","sourceRoot":"","sources":["../../src/ai/feature-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,mBAAmB,EAAE,eAAe,EAiDhD,CAAA;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,IAAI,eAAe,EAAE,CAQxD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,GAAG,eAAe,EAAE,CAmBtF"}
|
|
@@ -56,18 +56,6 @@ export const AI_FEATURE_DEFAULTS = [
|
|
|
56
56
|
rolesAllowed: ['ADMIN', 'EDITOR'],
|
|
57
57
|
permissionsRequired: ['ai.use'],
|
|
58
58
|
},
|
|
59
|
-
{
|
|
60
|
-
key: 'ai.features.redirectChainFlattening',
|
|
61
|
-
label: 'Redirect chain flattening',
|
|
62
|
-
description: 'Suggest direct single-hop redirects to collapse redirect chains.',
|
|
63
|
-
enabled: false,
|
|
64
|
-
category: 'seo',
|
|
65
|
-
requiredCapabilities: ['text', 'reasoning'],
|
|
66
|
-
approvalRequired: true,
|
|
67
|
-
allowBulkApply: false,
|
|
68
|
-
rolesAllowed: ['ADMIN'],
|
|
69
|
-
permissionsRequired: ['ai.use'],
|
|
70
|
-
},
|
|
71
59
|
];
|
|
72
60
|
/** Deep clone so callers can't mutate the shared default array. */
|
|
73
61
|
export function cloneFeatureDefaults() {
|
|
@@ -82,7 +70,7 @@ export function cloneFeatureDefaults() {
|
|
|
82
70
|
/**
|
|
83
71
|
* Merge stored feature toggles over the current defaults so newly-added features
|
|
84
72
|
* appear automatically and removed/renamed ones drop off, while preserving the
|
|
85
|
-
* admin's `enabled`/routing choices for features that still exist.
|
|
73
|
+
* admin's `enabled`/governance/routing choices for features that still exist.
|
|
86
74
|
*/
|
|
87
75
|
export function mergeFeatures(stored) {
|
|
88
76
|
const byKey = new Map((stored ?? []).map((f) => [f.key, f]));
|
|
@@ -93,6 +81,8 @@ export function mergeFeatures(stored) {
|
|
|
93
81
|
return {
|
|
94
82
|
...def,
|
|
95
83
|
enabled: typeof prev.enabled === 'boolean' ? prev.enabled : def.enabled,
|
|
84
|
+
approvalRequired: typeof prev.approvalRequired === 'boolean' ? prev.approvalRequired : def.approvalRequired,
|
|
85
|
+
allowBulkApply: typeof prev.allowBulkApply === 'boolean' ? prev.allowBulkApply : def.allowBulkApply,
|
|
96
86
|
providerId: prev.providerId ?? def.providerId,
|
|
97
87
|
modelId: prev.modelId ?? def.modelId,
|
|
98
88
|
fallbackModelIds: prev.fallbackModelIds ?? def.fallbackModelIds,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-defaults.js","sourceRoot":"","sources":["../../src/ai/feature-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD;QACE,GAAG,EAAE,4BAA4B;QACjC,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,wEAAwE;QACrF,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,KAAK;QACf,oBAAoB,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;QAC3C,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,KAAK;QACrB,YAAY,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;QACjC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;KAChC;IACD;QACE,GAAG,EAAE,4BAA4B;QACjC,KAAK,EAAE,6BAA6B;QACpC,WAAW,EAAE,+DAA+D;QAC5E,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,SAAS;QACnB,oBAAoB,EAAE,CAAC,MAAM,CAAC;QAC9B,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,KAAK;QACrB,YAAY,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;QACjC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;KAChC;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,0EAA0E;QACvF,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,OAAO;QACjB,oBAAoB,EAAE,CAAC,QAAQ,CAAC;QAChC,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,KAAK;QACrB,YAAY,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;QACjC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;KAChC;IACD;QACE,GAAG,EAAE,+BAA+B;QACpC,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,0EAA0E;QACvF,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,KAAK;QACf,oBAAoB,EAAE,CAAC,MAAM,CAAC;QAC9B,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,KAAK;QACrB,YAAY,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;QACjC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;KAChC;
|
|
1
|
+
{"version":3,"file":"feature-defaults.js","sourceRoot":"","sources":["../../src/ai/feature-defaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI governance decisions for machine-apply paths.
|
|
3
|
+
*
|
|
4
|
+
* The runtime (`runtime.ts`) enforces per-call gates (toggle, budget, daily
|
|
5
|
+
* cap). This module answers the workflow question: may this feature apply its
|
|
6
|
+
* output WITHOUT a human approving it, and may it apply many results at once?
|
|
7
|
+
* Auto-apply pipelines (404 recovery, future bulk fixers) consult it before
|
|
8
|
+
* writing anything. Read failures resolve to the safest answer.
|
|
9
|
+
*/
|
|
10
|
+
export interface FeatureGovernance {
|
|
11
|
+
approvalRequired: boolean;
|
|
12
|
+
allowBulkApply: boolean;
|
|
13
|
+
maxRequestsPerDay: number | undefined;
|
|
14
|
+
}
|
|
15
|
+
/** Resolve one feature's governance flags (safe defaults on any failure). */
|
|
16
|
+
export declare function getFeatureGovernance(db: unknown, featureKey: string): Promise<FeatureGovernance>;
|
|
17
|
+
export type AutoApplyDecision = {
|
|
18
|
+
ok: true;
|
|
19
|
+
} | {
|
|
20
|
+
ok: false;
|
|
21
|
+
reason: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* May a pipeline apply `count` AI-produced changes without human approval?
|
|
25
|
+
* Blocked when the feature requires approval; applying more than one change
|
|
26
|
+
* per run additionally requires `allowBulkApply`.
|
|
27
|
+
*/
|
|
28
|
+
export declare function assertAutoApplyAllowed(db: unknown, featureKey: string, opts: {
|
|
29
|
+
count: number;
|
|
30
|
+
}): Promise<AutoApplyDecision>;
|
|
31
|
+
//# sourceMappingURL=governance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/ai/governance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,OAAO,CAAA;IACzB,cAAc,EAAE,OAAO,CAAA;IACvB,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAA;CACtC;AAQD,6EAA6E;AAC7E,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,OAAO,EACX,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC,CAc5B;AAED,MAAM,MAAM,iBAAiB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5E;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,OAAO,EACX,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAgB5B"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI governance decisions for machine-apply paths.
|
|
3
|
+
*
|
|
4
|
+
* The runtime (`runtime.ts`) enforces per-call gates (toggle, budget, daily
|
|
5
|
+
* cap). This module answers the workflow question: may this feature apply its
|
|
6
|
+
* output WITHOUT a human approving it, and may it apply many results at once?
|
|
7
|
+
* Auto-apply pipelines (404 recovery, future bulk fixers) consult it before
|
|
8
|
+
* writing anything. Read failures resolve to the safest answer.
|
|
9
|
+
*/
|
|
10
|
+
import { getAIConfig } from './config-store.js';
|
|
11
|
+
const SAFE_DEFAULTS = {
|
|
12
|
+
approvalRequired: true,
|
|
13
|
+
allowBulkApply: false,
|
|
14
|
+
maxRequestsPerDay: undefined,
|
|
15
|
+
};
|
|
16
|
+
/** Resolve one feature's governance flags (safe defaults on any failure). */
|
|
17
|
+
export async function getFeatureGovernance(db, featureKey) {
|
|
18
|
+
try {
|
|
19
|
+
const config = await getAIConfig(db);
|
|
20
|
+
const feature = config.settings.features.find((f) => f.key === featureKey);
|
|
21
|
+
if (!feature)
|
|
22
|
+
return { ...SAFE_DEFAULTS };
|
|
23
|
+
return {
|
|
24
|
+
approvalRequired: feature.approvalRequired !== false,
|
|
25
|
+
allowBulkApply: feature.allowBulkApply === true,
|
|
26
|
+
maxRequestsPerDay: typeof feature.maxRequestsPerDay === 'number' ? feature.maxRequestsPerDay : undefined,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return { ...SAFE_DEFAULTS };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* May a pipeline apply `count` AI-produced changes without human approval?
|
|
35
|
+
* Blocked when the feature requires approval; applying more than one change
|
|
36
|
+
* per run additionally requires `allowBulkApply`.
|
|
37
|
+
*/
|
|
38
|
+
export async function assertAutoApplyAllowed(db, featureKey, opts) {
|
|
39
|
+
if (opts.count <= 0)
|
|
40
|
+
return { ok: true };
|
|
41
|
+
const gov = await getFeatureGovernance(db, featureKey);
|
|
42
|
+
if (gov.approvalRequired) {
|
|
43
|
+
return {
|
|
44
|
+
ok: false,
|
|
45
|
+
reason: `"${featureKey}" requires human approval. Auto-apply stays off until "Require approval" is disabled in Settings > AI.`,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (opts.count > 1 && !gov.allowBulkApply) {
|
|
49
|
+
return {
|
|
50
|
+
ok: false,
|
|
51
|
+
reason: `"${featureKey}" is limited to one applied change per run. Enable "Allow bulk apply" in Settings > AI to apply ${opts.count} at once.`,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return { ok: true };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=governance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/ai/governance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAQ/C,MAAM,aAAa,GAAsB;IACvC,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,KAAK;IACrB,iBAAiB,EAAE,SAAS;CAC7B,CAAA;AAED,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAW,EACX,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,CAAA;QAC1E,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAA;QACzC,OAAO;YACL,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,KAAK,KAAK;YACpD,cAAc,EAAE,OAAO,CAAC,cAAc,KAAK,IAAI;YAC/C,iBAAiB,EACf,OAAO,OAAO,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;SACxF,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,aAAa,EAAE,CAAA;IAC7B,CAAC;AACH,CAAC;AAID;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,EAAW,EACX,UAAkB,EAClB,IAAuB;IAEvB,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;IACxC,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;IACtD,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,IAAI,UAAU,wGAAwG;SAC/H,CAAA;IACH,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC1C,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,IAAI,UAAU,mGAAmG,IAAI,CAAC,KAAK,WAAW;SAC/I,CAAA;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AACrB,CAAC"}
|
package/dist/ai/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
export * from './types.js';
|
|
7
7
|
export { AI_CONFIG_COLLECTION, DEFAULT_AI_BUDGET, defaultAISettings, encryptProviderKey, getAIConfig, getEnvApiKey, last4, putAIConfig, resolveKeySource, resolveProviderKey, toPublicConfig, toPublicProvider, } from './config-store.js';
|
|
8
8
|
export { AI_FEATURE_DEFAULTS, cloneFeatureDefaults, mergeFeatures } from './feature-defaults.js';
|
|
9
|
+
export { assertAutoApplyAllowed, getFeatureGovernance, type AutoApplyDecision, type FeatureGovernance, } from './governance.js';
|
|
9
10
|
export { applyBrandVoice, buildBrandVoiceSystemPrompt, getActiveBrandVoice, normalizeBrandVoice, BRAND_VOICE_LIMITS, } from './brand-voice.js';
|
|
10
11
|
export { prepareBrandVoiceForSave, type PrepareBrandVoiceOptions } from './brand-voice-save.js';
|
|
11
12
|
export { applyParsedDocumentToProfile, BRAND_VOICE_DOCUMENT_MAX, BRAND_VOICE_EXPORT_FILENAME, deriveBrandVoiceFields, ensureBrandVoiceDocument, parseBrandVoiceDocument, serializeBrandVoiceDocument, splitBrandVoiceDocument, syncFieldsFromDocument, type BrandVoiceDocumentFields, type BrandVoiceDocumentMeta, type BrandVoiceDocumentStatus, type ParsedBrandVoiceDocument, type ParseBrandVoiceDocumentError, type ParseBrandVoiceDocumentResult, } from './brand-voice-document.js';
|
|
@@ -20,5 +21,5 @@ export { getModels, resolveModelOrUnavailable, syncModels, type SyncModelsResult
|
|
|
20
21
|
export { getUsageSummary } from './usage.js';
|
|
21
22
|
export { resolveFeatureModel, resolveAllFeatureModels, type FeatureModelSource, type ResolvedFeatureModel, } from './resolve.js';
|
|
22
23
|
export { getAdapter, generateText as adapterGenerateText, listModels as adapterListModels, testConnection as adapterTestConnection, type AdapterContext, type GenerateTextOptions, type GenerateTextResult, } from './providers/index.js';
|
|
23
|
-
export { generateTextForFeature, isAiFeatureEnabled, resolveFeatureRuntime, type GenerateForFeatureInput, type GenerateForFeatureSuccess, type ResolvedFeatureRuntime, type RuntimeError, type RuntimeErrorCode, } from './runtime.js';
|
|
24
|
+
export { embedForFeature, generateTextForFeature, isAiFeatureEnabled, resolveFeatureRuntime, type EmbedForFeatureInput, type EmbedForFeatureSuccess, type GenerateForFeatureInput, type GenerateForFeatureSuccess, type ResolvedFeatureRuntime, type RuntimeError, type RuntimeErrorCode, } from './runtime.js';
|
|
24
25
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/ai/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/index.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
export * from './types.js';
|
|
7
7
|
export { AI_CONFIG_COLLECTION, DEFAULT_AI_BUDGET, defaultAISettings, encryptProviderKey, getAIConfig, getEnvApiKey, last4, putAIConfig, resolveKeySource, resolveProviderKey, toPublicConfig, toPublicProvider, } from './config-store.js';
|
|
8
8
|
export { AI_FEATURE_DEFAULTS, cloneFeatureDefaults, mergeFeatures } from './feature-defaults.js';
|
|
9
|
+
export { assertAutoApplyAllowed, getFeatureGovernance, } from './governance.js';
|
|
9
10
|
export { applyBrandVoice, buildBrandVoiceSystemPrompt, getActiveBrandVoice, normalizeBrandVoice, BRAND_VOICE_LIMITS, } from './brand-voice.js';
|
|
10
11
|
export { prepareBrandVoiceForSave } from './brand-voice-save.js';
|
|
11
12
|
export { applyParsedDocumentToProfile, BRAND_VOICE_DOCUMENT_MAX, BRAND_VOICE_EXPORT_FILENAME, deriveBrandVoiceFields, ensureBrandVoiceDocument, parseBrandVoiceDocument, serializeBrandVoiceDocument, splitBrandVoiceDocument, syncFieldsFromDocument, } from './brand-voice-document.js';
|
|
@@ -20,5 +21,5 @@ export { getModels, resolveModelOrUnavailable, syncModels, } from './models.js';
|
|
|
20
21
|
export { getUsageSummary } from './usage.js';
|
|
21
22
|
export { resolveFeatureModel, resolveAllFeatureModels, } from './resolve.js';
|
|
22
23
|
export { getAdapter, generateText as adapterGenerateText, listModels as adapterListModels, testConnection as adapterTestConnection, } from './providers/index.js';
|
|
23
|
-
export { generateTextForFeature, isAiFeatureEnabled, resolveFeatureRuntime, } from './runtime.js';
|
|
24
|
+
export { embedForFeature, generateTextForFeature, isAiFeatureEnabled, resolveFeatureRuntime, } from './runtime.js';
|
|
24
25
|
//# sourceMappingURL=index.js.map
|
package/dist/ai/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAChG,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,wBAAwB,EAAiC,MAAM,uBAAuB,CAAA;AAC/F,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,GAOvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,gCAAgC,EAChC,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GAUpB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,uBAAuB,EACvB,+BAA+B,EAC/B,eAAe,EACf,yBAAyB,EACzB,mCAAmC,EACnC,+BAA+B,GAKhC,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,eAAe,EACf,wBAAwB,GAGzB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,kCAAkC,GAEnC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,EACL,SAAS,EACT,yBAAyB,EACzB,UAAU,GAEX,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAGxB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,UAAU,EACV,YAAY,IAAI,mBAAmB,EACnC,UAAU,IAAI,iBAAiB,EAC/B,cAAc,IAAI,qBAAqB,GAIxC,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAChG,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GAGrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,wBAAwB,EAAiC,MAAM,uBAAuB,CAAA;AAC/F,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,GAOvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,gCAAgC,EAChC,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GAUpB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,uBAAuB,EACvB,+BAA+B,EAC/B,eAAe,EACf,yBAAyB,EACzB,mCAAmC,EACnC,+BAA+B,GAKhC,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,eAAe,EACf,wBAAwB,GAGzB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,kCAAkC,GAEnC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,EACL,SAAS,EACT,yBAAyB,EACzB,UAAU,GAEX,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAGxB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,UAAU,EACV,YAAY,IAAI,mBAAmB,EACnC,UAAU,IAAI,iBAAiB,EAC/B,cAAc,IAAI,qBAAqB,GAIxC,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,GAQtB,MAAM,cAAc,CAAA"}
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
* `/models`.
|
|
6
6
|
*/
|
|
7
7
|
import type { AIConnectionTestResult } from '../types.js';
|
|
8
|
-
import { type AdapterContext, type GenerateTextOptions, type GenerateTextResult } from './http.js';
|
|
8
|
+
import { type AdapterContext, type GenerateEmbeddingsOptions, type GenerateEmbeddingsResult, type GenerateTextOptions, type GenerateTextResult } from './http.js';
|
|
9
9
|
export declare function testConnection(ctx: AdapterContext): Promise<AIConnectionTestResult>;
|
|
10
10
|
export declare function listModels(ctx: AdapterContext): Promise<string[]>;
|
|
11
11
|
export declare function generateText(ctx: AdapterContext, opts: GenerateTextOptions): Promise<GenerateTextResult>;
|
|
12
|
+
export declare function generateEmbeddings(ctx: AdapterContext, opts: GenerateEmbeddingsOptions): Promise<GenerateEmbeddingsResult>;
|
|
12
13
|
//# sourceMappingURL=custom.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/custom.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/custom.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EASxB,MAAM,WAAW,CAAA;AAMlB,wBAAsB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAiDzF;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWvE;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAI7B;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CAInC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* empty model list (manual entry in the UI) when the endpoint doesn't support
|
|
5
5
|
* `/models`.
|
|
6
6
|
*/
|
|
7
|
-
import { assertSafeBaseUrl, extractModelIds, messageFromStatus, openAiChat, statusFromHttp, timedFetch, trimTrailingSlash, } from './http.js';
|
|
7
|
+
import { assertSafeBaseUrl, extractModelIds, messageFromStatus, openAiChat, openAiEmbeddings, statusFromHttp, timedFetch, trimTrailingSlash, } from './http.js';
|
|
8
8
|
function headers(ctx) {
|
|
9
9
|
return { authorization: `Bearer ${ctx.apiKey}` };
|
|
10
10
|
}
|
|
@@ -73,4 +73,10 @@ export async function generateText(ctx, opts) {
|
|
|
73
73
|
await assertSafeBaseUrl(ctx.baseUrl);
|
|
74
74
|
return openAiChat(ctx.baseUrl, { authorization: `Bearer ${ctx.apiKey}` }, ctx, opts);
|
|
75
75
|
}
|
|
76
|
+
export async function generateEmbeddings(ctx, opts) {
|
|
77
|
+
if (!ctx.baseUrl)
|
|
78
|
+
throw new Error('A base URL is required for a custom provider.');
|
|
79
|
+
await assertSafeBaseUrl(ctx.baseUrl);
|
|
80
|
+
return openAiEmbeddings(trimTrailingSlash(ctx.baseUrl), headers(ctx), ctx, opts);
|
|
81
|
+
}
|
|
76
82
|
//# sourceMappingURL=custom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom.js","sourceRoot":"","sources":["../../../src/ai/providers/custom.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"custom.js","sourceRoot":"","sources":["../../../src/ai/providers/custom.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,19 @@ export declare function adapterHttpErrorFromResponse(res: Response): Promise<Ada
|
|
|
55
55
|
* be validated/SSRF-checked by the caller for admin-controlled endpoints.
|
|
56
56
|
*/
|
|
57
57
|
export declare function openAiChat(base: string, headers: Record<string, string>, ctx: AdapterContext, opts: GenerateTextOptions): Promise<GenerateTextResult>;
|
|
58
|
+
export interface GenerateEmbeddingsOptions {
|
|
59
|
+
model: string;
|
|
60
|
+
input: string[];
|
|
61
|
+
}
|
|
62
|
+
export interface GenerateEmbeddingsResult {
|
|
63
|
+
vectors: number[][];
|
|
64
|
+
usage: {
|
|
65
|
+
promptTokens: number;
|
|
66
|
+
totalTokens: number;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** POST an OpenAI-compatible `/embeddings` request and normalize the payload. */
|
|
70
|
+
export declare function openAiEmbeddings(base: string, headers: Record<string, string>, ctx: AdapterContext, opts: GenerateEmbeddingsOptions): Promise<GenerateEmbeddingsResult>;
|
|
58
71
|
/** Error carrying a mapped connection status so the runtime can react sensibly. */
|
|
59
72
|
export declare class AdapterHttpError extends Error {
|
|
60
73
|
readonly connectionStatus: AIConnectionStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/http.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAMjE;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBzF;AAED,iFAAiF;AACjF,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAchF;AAED,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,QAAQ,CAAC,CAYnB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAetE;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,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,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAA;CACd;AAMD,2FAA2F;AAC3F,wBAAsB,4BAA4B,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgB3F;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAsC7B;AAED,mFAAmF;AACnF,qBAAa,gBAAiB,SAAQ,KAAK;IAEvC,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM;gBADlB,gBAAgB,EAAE,kBAAkB,EACpC,UAAU,EAAE,MAAM,EAC3B,MAAM,CAAC,EAAE,MAAM;CAOlB;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAS1D"}
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -156,6 +156,39 @@ export async function openAiChat(base, headers, ctx, opts) {
|
|
|
156
156
|
model: opts.model,
|
|
157
157
|
};
|
|
158
158
|
}
|
|
159
|
+
/** POST an OpenAI-compatible `/embeddings` request and normalize the payload. */
|
|
160
|
+
export async function openAiEmbeddings(base, headers, ctx, opts) {
|
|
161
|
+
const res = await timedFetch(`${trimTrailingSlash(base)}/embeddings`, {
|
|
162
|
+
method: 'POST',
|
|
163
|
+
headers: { ...headers, 'content-type': 'application/json' },
|
|
164
|
+
body: JSON.stringify({ model: opts.model, input: opts.input }),
|
|
165
|
+
}, ctx);
|
|
166
|
+
if (!res.ok) {
|
|
167
|
+
throw await adapterHttpErrorFromResponse(res);
|
|
168
|
+
}
|
|
169
|
+
const payload = (await res.json());
|
|
170
|
+
const rows = Array.isArray(payload.data) ? payload.data : [];
|
|
171
|
+
// `.fill(undefined)` keeps the array dense so the `.some` check below visits
|
|
172
|
+
// every slot (`Array.prototype.some` skips holes in sparse arrays).
|
|
173
|
+
const vectors = new Array(opts.input.length).fill(undefined);
|
|
174
|
+
for (let i = 0; i < rows.length; i++) {
|
|
175
|
+
const row = rows[i];
|
|
176
|
+
const vector = Array.isArray(row?.embedding) ? row.embedding : null;
|
|
177
|
+
if (!vector)
|
|
178
|
+
continue;
|
|
179
|
+
const index = typeof row?.index === 'number' ? row.index : i;
|
|
180
|
+
if (index >= 0 && index < vectors.length)
|
|
181
|
+
vectors[index] = vector;
|
|
182
|
+
}
|
|
183
|
+
if (vectors.some((v) => !Array.isArray(v))) {
|
|
184
|
+
throw new AdapterHttpError('unknown', res.status, 'Embeddings response was missing vectors.');
|
|
185
|
+
}
|
|
186
|
+
const promptTokens = num(payload.usage?.prompt_tokens);
|
|
187
|
+
return {
|
|
188
|
+
vectors: vectors,
|
|
189
|
+
usage: { promptTokens, totalTokens: num(payload.usage?.total_tokens) || promptTokens },
|
|
190
|
+
};
|
|
191
|
+
}
|
|
159
192
|
/** Error carrying a mapped connection status so the runtime can react sensibly. */
|
|
160
193
|
export class AdapterHttpError extends Error {
|
|
161
194
|
connectionStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/ai/providers/http.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/ai/providers/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,15 +4,18 @@
|
|
|
4
4
|
* route layers.
|
|
5
5
|
*/
|
|
6
6
|
import type { AIConnectionTestResult, AIProviderKey } from '../types.js';
|
|
7
|
-
import type { AdapterContext, GenerateTextOptions, GenerateTextResult } from './http.js';
|
|
8
|
-
export type { AdapterContext, GenerateTextOptions, GenerateTextResult } from './http.js';
|
|
7
|
+
import type { AdapterContext, GenerateEmbeddingsOptions, GenerateEmbeddingsResult, GenerateTextOptions, GenerateTextResult } from './http.js';
|
|
8
|
+
export type { AdapterContext, GenerateEmbeddingsOptions, GenerateEmbeddingsResult, GenerateTextOptions, GenerateTextResult, } from './http.js';
|
|
9
9
|
interface ProviderAdapter {
|
|
10
10
|
testConnection(ctx: AdapterContext): Promise<AIConnectionTestResult>;
|
|
11
11
|
listModels(ctx: AdapterContext): Promise<string[]>;
|
|
12
12
|
generateText(ctx: AdapterContext, opts: GenerateTextOptions): Promise<GenerateTextResult>;
|
|
13
|
+
generateEmbeddings?(ctx: AdapterContext, opts: GenerateEmbeddingsOptions): Promise<GenerateEmbeddingsResult>;
|
|
13
14
|
}
|
|
14
15
|
export declare function getAdapter(provider: AIProviderKey): ProviderAdapter;
|
|
15
16
|
export declare function testConnection(provider: AIProviderKey, ctx: AdapterContext): Promise<AIConnectionTestResult>;
|
|
16
17
|
export declare function listModels(provider: AIProviderKey, ctx: AdapterContext): Promise<string[]>;
|
|
17
18
|
export declare function generateText(provider: AIProviderKey, ctx: AdapterContext, opts: GenerateTextOptions): Promise<GenerateTextResult>;
|
|
19
|
+
export declare function providerSupportsEmbeddings(provider: AIProviderKey): boolean;
|
|
20
|
+
export declare function generateEmbeddings(provider: AIProviderKey, ctx: AdapterContext, opts: GenerateEmbeddingsOptions): Promise<GenerateEmbeddingsResult>;
|
|
18
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGxE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGxE,OAAO,KAAK,EACV,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,WAAW,CAAA;AAIlB,YAAY,EACV,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,WAAW,CAAA;AAElB,UAAU,eAAe;IACvB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACpE,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAClD,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACzF,kBAAkB,CAAC,CACjB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CAAA;CACrC;AASD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,eAAe,CAEnE;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,sBAAsB,CAAC,CAEjC;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE1F;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAE3E;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CAMnC"}
|
|
@@ -25,4 +25,14 @@ export function listModels(provider, ctx) {
|
|
|
25
25
|
export function generateText(provider, ctx, opts) {
|
|
26
26
|
return getAdapter(provider).generateText(ctx, opts);
|
|
27
27
|
}
|
|
28
|
+
export function providerSupportsEmbeddings(provider) {
|
|
29
|
+
return typeof getAdapter(provider).generateEmbeddings === 'function';
|
|
30
|
+
}
|
|
31
|
+
export async function generateEmbeddings(provider, ctx, opts) {
|
|
32
|
+
const adapter = getAdapter(provider);
|
|
33
|
+
if (!adapter.generateEmbeddings) {
|
|
34
|
+
throw new Error(`The "${provider}" provider does not support embeddings.`);
|
|
35
|
+
}
|
|
36
|
+
return adapter.generateEmbeddings(ctx, opts);
|
|
37
|
+
}
|
|
28
38
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAQrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAoB/B,MAAM,QAAQ,GAA2C;IACvD,MAAM;IACN,SAAS;IACT,GAAG;IACH,MAAM;CACP,CAAA;AAED,MAAM,UAAU,UAAU,CAAC,QAAuB;IAChD,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,QAAuB,EACvB,GAAmB;IAEnB,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAuB,EAAE,GAAmB;IACrE,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,QAAuB,EACvB,GAAmB,EACnB,IAAyB;IAEzB,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAuB;IAChE,OAAO,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,kBAAkB,KAAK,UAAU,CAAA;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAuB,EACvB,GAAmB,EACnB,IAA+B;IAE/B,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IACpC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,yCAAyC,CAAC,CAAA;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AAC9C,CAAC"}
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
* validation is needed here.
|
|
5
5
|
*/
|
|
6
6
|
import type { AIConnectionTestResult } from '../types.js';
|
|
7
|
-
import { type AdapterContext, type GenerateTextOptions, type GenerateTextResult } from './http.js';
|
|
7
|
+
import { type AdapterContext, type GenerateEmbeddingsOptions, type GenerateEmbeddingsResult, type GenerateTextOptions, type GenerateTextResult } from './http.js';
|
|
8
8
|
export declare function testConnection(ctx: AdapterContext): Promise<AIConnectionTestResult>;
|
|
9
9
|
export declare function listModels(ctx: AdapterContext): Promise<string[]>;
|
|
10
10
|
export declare function generateText(ctx: AdapterContext, opts: GenerateTextOptions): Promise<GenerateTextResult>;
|
|
11
|
+
export declare function generateEmbeddings(ctx: AdapterContext, opts: GenerateEmbeddingsOptions): Promise<GenerateEmbeddingsResult>;
|
|
11
12
|
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/openai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/openai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EAOxB,MAAM,WAAW,CAAA;AAWlB,wBAAsB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAqBzF;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQvE;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CAEnC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* endpoint with Bearer auth. Hostname is fixed (api.openai.com) so no SSRF
|
|
4
4
|
* validation is needed here.
|
|
5
5
|
*/
|
|
6
|
-
import { extractModelIds, messageFromStatus, openAiChat, statusFromHttp, timedFetch, } from './http.js';
|
|
6
|
+
import { extractModelIds, messageFromStatus, openAiChat, openAiEmbeddings, statusFromHttp, timedFetch, } from './http.js';
|
|
7
7
|
const OPENAI_BASE = 'https://api.openai.com/v1';
|
|
8
8
|
function headers(ctx) {
|
|
9
9
|
const h = { authorization: `Bearer ${ctx.apiKey}` };
|
|
@@ -41,4 +41,7 @@ export async function listModels(ctx) {
|
|
|
41
41
|
export function generateText(ctx, opts) {
|
|
42
42
|
return openAiChat(OPENAI_BASE, headers(ctx), ctx, opts);
|
|
43
43
|
}
|
|
44
|
+
export function generateEmbeddings(ctx, opts) {
|
|
45
|
+
return openAiEmbeddings(OPENAI_BASE, headers(ctx), ctx, opts);
|
|
46
|
+
}
|
|
44
47
|
//# sourceMappingURL=openai.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/ai/providers/openai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/ai/providers/openai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAML,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,UAAU,GACX,MAAM,WAAW,CAAA;AAElB,MAAM,WAAW,GAAG,2BAA2B,CAAA;AAE/C,SAAS,OAAO,CAAC,GAAmB;IAClC,MAAM,CAAC,GAA2B,EAAE,aAAa,EAAE,UAAU,GAAG,CAAC,MAAM,EAAE,EAAE,CAAA;IAC3E,IAAI,GAAG,CAAC,cAAc;QAAE,CAAC,CAAC,qBAAqB,CAAC,GAAG,GAAG,CAAC,cAAc,CAAA;IACrE,IAAI,GAAG,CAAC,SAAS;QAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,SAAS,CAAA;IACtD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAmB;IACtD,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACzC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAA;IAClG,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,UAAU,CAC1B,GAAG,WAAW,SAAS,EACvB,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EACxC,GAAG,CACJ,CAAA;QACD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACzC,OAAO,EAAE,EAAE,EAAE,MAAM,KAAK,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAA;IAC7F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,eAAe;YACvB,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAAC;YAC3C,QAAQ;SACT,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAmB;IAClD,MAAM,GAAG,GAAG,MAAM,UAAU,CAC1B,GAAG,WAAW,SAAS,EACvB,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EACxC,GAAG,CACJ,CAAA;IACD,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;IAC3E,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,GAAmB,EACnB,IAAyB;IAEzB,OAAO,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,GAAmB,EACnB,IAA+B;IAE/B,OAAO,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;AAC/D,CAAC"}
|