@agilesyndrome/cf-genai-base 5.0.2 → 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.
- package/CHANGELOG.md +99 -0
- package/CLI.md +9 -13
- package/CONTRACT.md +32 -15
- package/README.md +95 -28
- package/bin/cf-genai.js +24 -8
- package/dist/admin/auth.d.ts +12 -0
- package/dist/admin/auth.d.ts.map +1 -0
- package/dist/admin/auth.js +103 -0
- package/dist/admin/auth.js.map +1 -0
- package/dist/admin/index.d.ts +2 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +2 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/router.d.ts +4 -0
- package/dist/admin/router.d.ts.map +1 -0
- package/dist/admin/router.js +24 -0
- package/dist/admin/router.js.map +1 -0
- package/dist/admin/types.d.ts +43 -0
- package/dist/admin/types.d.ts.map +1 -0
- package/dist/admin/types.js +2 -0
- package/dist/admin/types.js.map +1 -0
- package/dist/api/client.d.ts +34 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +59 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/contracts.d.ts +31 -0
- package/dist/api/contracts.d.ts.map +1 -0
- package/dist/api/contracts.js +101 -0
- package/dist/api/contracts.js.map +1 -0
- package/dist/api/http.d.ts +12 -0
- package/dist/api/http.d.ts.map +1 -0
- package/dist/api/http.js +36 -0
- package/dist/api/http.js.map +1 -0
- package/dist/api/index.d.ts +14 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +11 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/testing.d.ts +10 -0
- package/dist/api/testing.d.ts.map +1 -0
- package/dist/api/testing.js +26 -0
- package/dist/api/testing.js.map +1 -0
- package/dist/app.d.ts +21 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +23 -0
- package/dist/app.js.map +1 -0
- package/dist/auth/constants.d.ts +9 -0
- package/dist/auth/constants.d.ts.map +1 -0
- package/{src → dist}/auth/constants.js +2 -2
- package/dist/auth/constants.js.map +1 -0
- package/dist/auth/domains.d.ts +3 -0
- package/dist/auth/domains.d.ts.map +1 -0
- package/dist/auth/domains.js +8 -0
- package/dist/auth/domains.js.map +1 -0
- package/dist/auth/encoding.d.ts +7 -0
- package/dist/auth/encoding.d.ts.map +1 -0
- package/dist/auth/encoding.js +41 -0
- package/dist/auth/encoding.js.map +1 -0
- package/dist/auth/groups/d1.d.ts +16 -0
- package/dist/auth/groups/d1.d.ts.map +1 -0
- package/dist/auth/groups/d1.js +66 -0
- package/dist/auth/groups/d1.js.map +1 -0
- package/dist/auth/groups/domain.d.ts +8 -0
- package/dist/auth/groups/domain.d.ts.map +1 -0
- package/dist/auth/groups/domain.js +99 -0
- package/dist/auth/groups/domain.js.map +1 -0
- package/dist/auth/groups/index.d.ts +7 -0
- package/dist/auth/groups/index.d.ts.map +1 -0
- package/dist/auth/groups/index.js +7 -0
- package/dist/auth/groups/index.js.map +1 -0
- package/dist/auth/groups/model.d.ts +38 -0
- package/dist/auth/groups/model.d.ts.map +1 -0
- package/dist/auth/groups/model.js +2 -0
- package/dist/auth/groups/model.js.map +1 -0
- package/dist/auth/groups/policy.d.ts +5 -0
- package/dist/auth/groups/policy.d.ts.map +1 -0
- package/dist/auth/groups/policy.js +8 -0
- package/dist/auth/groups/policy.js.map +1 -0
- package/dist/auth/groups/service.d.ts +20 -0
- package/dist/auth/groups/service.d.ts.map +1 -0
- package/dist/auth/groups/service.js +40 -0
- package/dist/auth/groups/service.js.map +1 -0
- package/dist/auth/groups/validation.d.ts +5 -0
- package/dist/auth/groups/validation.d.ts.map +1 -0
- package/dist/auth/groups/validation.js +22 -0
- package/dist/auth/groups/validation.js.map +1 -0
- package/dist/auth/groups/views/list.d.ts +10 -0
- package/dist/auth/groups/views/list.d.ts.map +1 -0
- package/dist/auth/groups/views/list.js +4 -0
- package/dist/auth/groups/views/list.js.map +1 -0
- package/dist/auth/identity/index.d.ts +58 -0
- package/dist/auth/identity/index.d.ts.map +1 -0
- package/dist/auth/identity/index.js +58 -0
- package/dist/auth/identity/index.js.map +1 -0
- package/dist/auth/impersonation/constants.d.ts +2 -0
- package/dist/auth/impersonation/constants.d.ts.map +1 -0
- package/dist/auth/impersonation/constants.js +2 -0
- package/dist/auth/impersonation/constants.js.map +1 -0
- package/dist/auth/impersonation/domain.d.ts +6 -0
- package/dist/auth/impersonation/domain.d.ts.map +1 -0
- package/dist/auth/impersonation/domain.js +16 -0
- package/dist/auth/impersonation/domain.js.map +1 -0
- package/dist/auth/impersonation/index.d.ts +6 -0
- package/dist/auth/impersonation/index.d.ts.map +1 -0
- package/dist/auth/impersonation/index.js +6 -0
- package/dist/auth/impersonation/index.js.map +1 -0
- package/dist/auth/impersonation/model.d.ts +12 -0
- package/dist/auth/impersonation/model.d.ts.map +1 -0
- package/dist/auth/impersonation/model.js +2 -0
- package/dist/auth/impersonation/model.js.map +1 -0
- package/dist/auth/impersonation/service.d.ts +4 -0
- package/dist/auth/impersonation/service.d.ts.map +1 -0
- package/dist/auth/impersonation/service.js +32 -0
- package/dist/auth/impersonation/service.js.map +1 -0
- package/dist/auth/impersonation/validation.d.ts +4 -0
- package/dist/auth/impersonation/validation.d.ts.map +1 -0
- package/dist/auth/impersonation/validation.js +14 -0
- package/dist/auth/impersonation/validation.js.map +1 -0
- package/dist/auth/index.d.ts +13 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +13 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/oauth-single/constants.d.ts +4 -0
- package/dist/auth/oauth-single/constants.d.ts.map +1 -0
- package/dist/auth/oauth-single/constants.js +5 -0
- package/dist/auth/oauth-single/constants.js.map +1 -0
- package/dist/auth/oauth-single/cookies.d.ts +10 -0
- package/dist/auth/oauth-single/cookies.d.ts.map +1 -0
- package/dist/auth/oauth-single/cookies.js +59 -0
- package/dist/auth/oauth-single/cookies.js.map +1 -0
- package/dist/auth/oauth-single/domain.d.ts +14 -0
- package/dist/auth/oauth-single/domain.d.ts.map +1 -0
- package/dist/auth/oauth-single/domain.js +12 -0
- package/dist/auth/oauth-single/domain.js.map +1 -0
- package/dist/auth/oauth-single/index.d.ts +31 -0
- package/dist/auth/oauth-single/index.d.ts.map +1 -0
- package/dist/auth/oauth-single/index.js +215 -0
- package/dist/auth/oauth-single/index.js.map +1 -0
- package/dist/auth/oauth-single/model.d.ts +75 -0
- package/dist/auth/oauth-single/model.d.ts.map +1 -0
- package/dist/auth/oauth-single/model.js +2 -0
- package/dist/auth/oauth-single/model.js.map +1 -0
- package/dist/auth/oauth-single/protocol.d.ts +9 -0
- package/dist/auth/oauth-single/protocol.d.ts.map +1 -0
- package/dist/auth/oauth-single/protocol.js +190 -0
- package/dist/auth/oauth-single/protocol.js.map +1 -0
- package/dist/auth/oauth-single/session.d.ts +7 -0
- package/dist/auth/oauth-single/session.d.ts.map +1 -0
- package/dist/auth/oauth-single/session.js +78 -0
- package/dist/auth/oauth-single/session.js.map +1 -0
- package/dist/auth/repositories.d.ts +58 -0
- package/dist/auth/repositories.d.ts.map +1 -0
- package/dist/auth/repositories.js +31 -0
- package/dist/auth/repositories.js.map +1 -0
- package/dist/auth/scopes/d1.d.ts +17 -0
- package/dist/auth/scopes/d1.d.ts.map +1 -0
- package/dist/auth/scopes/d1.js +54 -0
- package/dist/auth/scopes/d1.js.map +1 -0
- package/dist/auth/scopes/domain.d.ts +7 -0
- package/dist/auth/scopes/domain.d.ts.map +1 -0
- package/dist/auth/scopes/domain.js +25 -0
- package/dist/auth/scopes/domain.js.map +1 -0
- package/dist/auth/scopes/index.d.ts +4 -0
- package/dist/auth/scopes/index.d.ts.map +1 -0
- package/dist/auth/scopes/index.js +4 -0
- package/dist/auth/scopes/index.js.map +1 -0
- package/dist/auth/scopes/model.d.ts +26 -0
- package/dist/auth/scopes/model.d.ts.map +1 -0
- package/dist/auth/scopes/model.js +2 -0
- package/dist/auth/scopes/model.js.map +1 -0
- package/dist/auth/scopes/policy.d.ts +3 -0
- package/dist/auth/scopes/policy.d.ts.map +1 -0
- package/dist/auth/scopes/policy.js +4 -0
- package/dist/auth/scopes/policy.js.map +1 -0
- package/dist/auth/scopes/service.d.ts +4 -0
- package/dist/auth/scopes/service.d.ts.map +1 -0
- package/dist/auth/scopes/service.js +4 -0
- package/dist/auth/scopes/service.js.map +1 -0
- package/dist/auth/scopes/validation.d.ts +6 -0
- package/dist/auth/scopes/validation.d.ts.map +1 -0
- package/dist/auth/scopes/validation.js +33 -0
- package/dist/auth/scopes/validation.js.map +1 -0
- package/dist/auth/scopes/views/list.d.ts +9 -0
- package/dist/auth/scopes/views/list.d.ts.map +1 -0
- package/dist/auth/scopes/views/list.js +4 -0
- package/dist/auth/scopes/views/list.js.map +1 -0
- package/dist/auth/subscriptions/d1.d.ts +10 -0
- package/dist/auth/subscriptions/d1.d.ts.map +1 -0
- package/dist/auth/subscriptions/d1.js +86 -0
- package/dist/auth/subscriptions/d1.js.map +1 -0
- package/dist/auth/subscriptions/domain.d.ts +10 -0
- package/dist/auth/subscriptions/domain.d.ts.map +1 -0
- package/dist/auth/subscriptions/domain.js +33 -0
- package/dist/auth/subscriptions/domain.js.map +1 -0
- package/dist/auth/subscriptions/index.d.ts +6 -0
- package/dist/auth/subscriptions/index.d.ts.map +1 -0
- package/dist/auth/subscriptions/index.js +6 -0
- package/dist/auth/subscriptions/index.js.map +1 -0
- package/dist/auth/subscriptions/model.d.ts +20 -0
- package/dist/auth/subscriptions/model.d.ts.map +1 -0
- package/dist/auth/subscriptions/model.js +2 -0
- package/dist/auth/subscriptions/model.js.map +1 -0
- package/dist/auth/subscriptions/service.d.ts +12 -0
- package/dist/auth/subscriptions/service.d.ts.map +1 -0
- package/dist/auth/subscriptions/service.js +71 -0
- package/dist/auth/subscriptions/service.js.map +1 -0
- package/dist/auth/subscriptions/validation.d.ts +3 -0
- package/dist/auth/subscriptions/validation.d.ts.map +1 -0
- package/dist/auth/subscriptions/validation.js +21 -0
- package/dist/auth/subscriptions/validation.js.map +1 -0
- package/dist/auth/tenants/d1.d.ts +12 -0
- package/dist/auth/tenants/d1.d.ts.map +1 -0
- package/dist/auth/tenants/d1.js +40 -0
- package/dist/auth/tenants/d1.js.map +1 -0
- package/dist/auth/tenants/delete.d.ts +3 -0
- package/dist/auth/tenants/delete.d.ts.map +1 -0
- package/dist/auth/tenants/delete.js +28 -0
- package/dist/auth/tenants/delete.js.map +1 -0
- package/dist/auth/tenants/domain.d.ts +8 -0
- package/dist/auth/tenants/domain.d.ts.map +1 -0
- package/dist/auth/tenants/domain.js +64 -0
- package/dist/auth/tenants/domain.js.map +1 -0
- package/dist/auth/tenants/index.d.ts +7 -0
- package/dist/auth/tenants/index.d.ts.map +1 -0
- package/dist/auth/tenants/index.js +7 -0
- package/dist/auth/tenants/index.js.map +1 -0
- package/dist/auth/tenants/model.d.ts +28 -0
- package/dist/auth/tenants/model.d.ts.map +1 -0
- package/dist/auth/tenants/model.js +2 -0
- package/dist/auth/tenants/model.js.map +1 -0
- package/dist/auth/tenants/policy.d.ts +3 -0
- package/dist/auth/tenants/policy.d.ts.map +1 -0
- package/dist/auth/tenants/policy.js +4 -0
- package/dist/auth/tenants/policy.js.map +1 -0
- package/dist/auth/tenants/service.d.ts +14 -0
- package/dist/auth/tenants/service.d.ts.map +1 -0
- package/dist/auth/tenants/service.js +37 -0
- package/dist/auth/tenants/service.js.map +1 -0
- package/dist/auth/tenants/validation.d.ts +5 -0
- package/dist/auth/tenants/validation.d.ts.map +1 -0
- package/dist/auth/tenants/validation.js +21 -0
- package/dist/auth/tenants/validation.js.map +1 -0
- package/dist/auth/tenants/views/list.d.ts +8 -0
- package/dist/auth/tenants/views/list.d.ts.map +1 -0
- package/dist/auth/tenants/views/list.js +3 -0
- package/dist/auth/tenants/views/list.js.map +1 -0
- package/dist/auth/users/access.d.ts +9 -0
- package/dist/auth/users/access.d.ts.map +1 -0
- package/dist/auth/users/access.js +53 -0
- package/dist/auth/users/access.js.map +1 -0
- package/dist/auth/users/d1.d.ts +19 -0
- package/dist/auth/users/d1.d.ts.map +1 -0
- package/dist/auth/users/d1.js +68 -0
- package/dist/auth/users/d1.js.map +1 -0
- package/dist/auth/users/domain.d.ts +13 -0
- package/dist/auth/users/domain.d.ts.map +1 -0
- package/dist/auth/users/domain.js +129 -0
- package/dist/auth/users/domain.js.map +1 -0
- package/dist/auth/users/index.d.ts +7 -0
- package/dist/auth/users/index.d.ts.map +1 -0
- package/dist/auth/users/index.js +7 -0
- package/dist/auth/users/index.js.map +1 -0
- package/dist/auth/users/model.d.ts +44 -0
- package/dist/auth/users/model.d.ts.map +1 -0
- package/dist/auth/users/model.js +2 -0
- package/dist/auth/users/model.js.map +1 -0
- package/dist/auth/users/service.d.ts +8 -0
- package/dist/auth/users/service.d.ts.map +1 -0
- package/dist/auth/users/service.js +62 -0
- package/dist/auth/users/service.js.map +1 -0
- package/dist/auth/users/validation.d.ts +4 -0
- package/dist/auth/users/validation.d.ts.map +1 -0
- package/dist/auth/users/validation.js +23 -0
- package/dist/auth/users/validation.js.map +1 -0
- package/dist/cli/cli.d.ts +9 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +201 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/d1.d.ts +24 -0
- package/dist/cli/d1.d.ts.map +1 -0
- package/dist/cli/d1.js +175 -0
- package/dist/cli/d1.js.map +1 -0
- package/dist/cli/operations.d.ts +3 -0
- package/dist/cli/operations.d.ts.map +1 -0
- package/dist/cli/operations.js +63 -0
- package/dist/cli/operations.js.map +1 -0
- package/dist/cli/project.d.ts +136 -0
- package/dist/cli/project.d.ts.map +1 -0
- package/dist/cli/project.js +738 -0
- package/dist/cli/project.js.map +1 -0
- package/dist/cli/status.d.ts +24 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +55 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/tenants.d.ts +9 -0
- package/dist/cli/tenants.d.ts.map +1 -0
- package/dist/cli/tenants.js +32 -0
- package/dist/cli/tenants.js.map +1 -0
- package/dist/cli/types.d.ts +43 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/users.d.ts +8 -0
- package/dist/cli/users.d.ts.map +1 -0
- package/dist/cli/users.js +74 -0
- package/dist/cli/users.js.map +1 -0
- package/dist/cli/version.d.ts +12 -0
- package/dist/cli/version.d.ts.map +1 -0
- package/dist/cli/version.js +60 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/core/circuits/availability.d.ts +48 -0
- package/dist/core/circuits/availability.d.ts.map +1 -0
- package/dist/core/circuits/availability.js +87 -0
- package/dist/core/circuits/availability.js.map +1 -0
- package/dist/core/circuits/d1.d.ts +11 -0
- package/dist/core/circuits/d1.d.ts.map +1 -0
- package/dist/core/circuits/d1.js +83 -0
- package/dist/core/circuits/d1.js.map +1 -0
- package/dist/core/circuits/domain.d.ts +7 -0
- package/dist/core/circuits/domain.d.ts.map +1 -0
- package/dist/core/circuits/domain.js +36 -0
- package/dist/core/circuits/domain.js.map +1 -0
- package/dist/core/circuits/index.d.ts +6 -0
- package/dist/core/circuits/index.d.ts.map +1 -0
- package/dist/core/circuits/index.js +6 -0
- package/dist/core/circuits/index.js.map +1 -0
- package/dist/core/circuits/model.d.ts +50 -0
- package/dist/core/circuits/model.d.ts.map +1 -0
- package/dist/core/circuits/model.js +2 -0
- package/dist/core/circuits/model.js.map +1 -0
- package/dist/core/circuits/service.d.ts +9 -0
- package/dist/core/circuits/service.d.ts.map +1 -0
- package/dist/core/circuits/service.js +63 -0
- package/dist/core/circuits/service.js.map +1 -0
- package/dist/core/circuits/validation.d.ts +4 -0
- package/dist/core/circuits/validation.d.ts.map +1 -0
- package/dist/core/circuits/validation.js +35 -0
- package/dist/core/circuits/validation.js.map +1 -0
- package/dist/core/constants.d.ts +9 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/{src → dist}/core/constants.js +2 -1
- package/dist/core/constants.js.map +1 -0
- package/dist/core/database/index.d.ts +14 -0
- package/dist/core/database/index.d.ts.map +1 -0
- package/dist/core/database/index.js +65 -0
- package/dist/core/database/index.js.map +1 -0
- package/dist/core/domains.d.ts +2 -0
- package/dist/core/domains.d.ts.map +1 -0
- package/dist/core/domains.js +7 -0
- package/dist/core/domains.js.map +1 -0
- package/dist/core/events/audit.d.ts +8 -0
- package/dist/core/events/audit.d.ts.map +1 -0
- package/dist/core/events/audit.js +27 -0
- package/dist/core/events/audit.js.map +1 -0
- package/dist/core/events/domain.d.ts +19 -0
- package/dist/core/events/domain.d.ts.map +1 -0
- package/dist/core/events/domain.js +39 -0
- package/dist/core/events/domain.js.map +1 -0
- package/dist/core/events/hub.d.ts +10 -0
- package/dist/core/events/hub.d.ts.map +1 -0
- package/dist/core/events/hub.js +56 -0
- package/dist/core/events/hub.js.map +1 -0
- package/dist/core/events/index.d.ts +57 -0
- package/dist/core/events/index.d.ts.map +1 -0
- package/dist/core/events/index.js +170 -0
- package/dist/core/events/index.js.map +1 -0
- package/dist/core/healthchecks/d1.d.ts +7 -0
- package/dist/core/healthchecks/d1.d.ts.map +1 -0
- package/dist/core/healthchecks/d1.js +43 -0
- package/dist/core/healthchecks/d1.js.map +1 -0
- package/dist/core/healthchecks/domain.d.ts +7 -0
- package/dist/core/healthchecks/domain.d.ts.map +1 -0
- package/dist/core/healthchecks/domain.js +51 -0
- package/dist/core/healthchecks/domain.js.map +1 -0
- package/dist/core/healthchecks/features.d.ts +19 -0
- package/dist/core/healthchecks/features.d.ts.map +1 -0
- package/dist/core/healthchecks/features.js +100 -0
- package/dist/core/healthchecks/features.js.map +1 -0
- package/dist/core/healthchecks/index.d.ts +6 -0
- package/dist/core/healthchecks/index.d.ts.map +1 -0
- package/dist/core/healthchecks/index.js +6 -0
- package/dist/core/healthchecks/index.js.map +1 -0
- package/dist/core/healthchecks/model.d.ts +64 -0
- package/dist/core/healthchecks/model.d.ts.map +1 -0
- package/dist/core/healthchecks/model.js +2 -0
- package/dist/core/healthchecks/model.js.map +1 -0
- package/dist/core/healthchecks/service.d.ts +8 -0
- package/dist/core/healthchecks/service.d.ts.map +1 -0
- package/dist/core/healthchecks/service.js +29 -0
- package/dist/core/healthchecks/service.js.map +1 -0
- package/dist/core/healthchecks/validation.d.ts +5 -0
- package/dist/core/healthchecks/validation.d.ts.map +1 -0
- package/dist/core/healthchecks/validation.js +51 -0
- package/dist/core/healthchecks/validation.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +9 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/jobs/d1.d.ts +19 -0
- package/dist/core/jobs/d1.d.ts.map +1 -0
- package/dist/core/jobs/d1.js +139 -0
- package/dist/core/jobs/d1.js.map +1 -0
- package/dist/core/jobs/domain.d.ts +8 -0
- package/dist/core/jobs/domain.d.ts.map +1 -0
- package/dist/core/jobs/domain.js +59 -0
- package/dist/core/jobs/domain.js.map +1 -0
- package/dist/core/jobs/events.d.ts +3 -0
- package/dist/core/jobs/events.d.ts.map +1 -0
- package/dist/core/jobs/events.js +25 -0
- package/dist/core/jobs/events.js.map +1 -0
- package/dist/core/jobs/index.d.ts +7 -0
- package/dist/core/jobs/index.d.ts.map +1 -0
- package/dist/core/jobs/index.js +7 -0
- package/dist/core/jobs/index.js.map +1 -0
- package/dist/core/jobs/model.d.ts +86 -0
- package/dist/core/jobs/model.d.ts.map +1 -0
- package/dist/core/jobs/model.js +2 -0
- package/dist/core/jobs/model.js.map +1 -0
- package/dist/core/jobs/service.d.ts +39 -0
- package/dist/core/jobs/service.d.ts.map +1 -0
- package/dist/core/jobs/service.js +84 -0
- package/dist/core/jobs/service.js.map +1 -0
- package/dist/core/jobs/validation.d.ts +8 -0
- package/dist/core/jobs/validation.d.ts.map +1 -0
- package/dist/core/jobs/validation.js +39 -0
- package/dist/core/jobs/validation.js.map +1 -0
- package/dist/core/security/index.d.ts +30 -0
- package/dist/core/security/index.d.ts.map +1 -0
- package/dist/core/security/index.js +138 -0
- package/dist/core/security/index.js.map +1 -0
- package/dist/data/context.d.ts +20 -0
- package/dist/data/context.d.ts.map +1 -0
- package/dist/data/context.js +65 -0
- package/dist/data/context.js.map +1 -0
- package/dist/data/index.d.ts +5 -0
- package/dist/data/index.d.ts.map +1 -0
- package/{src → dist}/data/index.js +2 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/json.d.ts +3 -0
- package/dist/data/json.d.ts.map +1 -0
- package/dist/data/json.js +14 -0
- package/dist/data/json.js.map +1 -0
- package/dist/data/model.d.ts +96 -0
- package/dist/data/model.d.ts.map +1 -0
- package/dist/data/model.js +3 -0
- package/dist/data/model.js.map +1 -0
- package/dist/data/policy.d.ts +14 -0
- package/dist/data/policy.d.ts.map +1 -0
- package/dist/data/policy.js +89 -0
- package/dist/data/policy.js.map +1 -0
- package/dist/data/reader.d.ts +9 -0
- package/dist/data/reader.d.ts.map +1 -0
- package/dist/data/reader.js +203 -0
- package/dist/data/reader.js.map +1 -0
- package/dist/data/resources.d.ts +9 -0
- package/dist/data/resources.d.ts.map +1 -0
- package/dist/data/resources.js +129 -0
- package/dist/data/resources.js.map +1 -0
- package/dist/domain/app-domain.d.ts +36 -0
- package/dist/domain/app-domain.d.ts.map +1 -0
- package/dist/domain/app-domain.js +79 -0
- package/dist/domain/app-domain.js.map +1 -0
- package/dist/domain/index.d.ts +3 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +3 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/model.d.ts +37 -0
- package/dist/domain/model.d.ts.map +1 -0
- package/dist/domain/model.js +2 -0
- package/dist/domain/model.js.map +1 -0
- package/dist/features/index.d.ts +25 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +61 -0
- package/dist/features/index.js.map +1 -0
- package/dist/features/llm/client.d.ts +3 -0
- package/dist/features/llm/client.d.ts.map +1 -0
- package/dist/features/llm/client.js +327 -0
- package/dist/features/llm/client.js.map +1 -0
- package/dist/features/llm/config.d.ts +7 -0
- package/dist/features/llm/config.d.ts.map +1 -0
- package/dist/features/llm/config.js +93 -0
- package/dist/features/llm/config.js.map +1 -0
- package/dist/features/llm/constants.d.ts +5 -0
- package/dist/features/llm/constants.d.ts.map +1 -0
- package/dist/features/llm/constants.js +6 -0
- package/dist/features/llm/constants.js.map +1 -0
- package/dist/features/llm/errors.d.ts +12 -0
- package/dist/features/llm/errors.d.ts.map +1 -0
- package/dist/features/llm/errors.js +19 -0
- package/dist/features/llm/errors.js.map +1 -0
- package/dist/features/llm/feature.d.ts +6 -0
- package/dist/features/llm/feature.d.ts.map +1 -0
- package/dist/features/llm/feature.js +37 -0
- package/dist/features/llm/feature.js.map +1 -0
- package/dist/features/llm/index.d.ts +9 -0
- package/dist/features/llm/index.d.ts.map +1 -0
- package/dist/features/llm/index.js +6 -0
- package/dist/features/llm/index.js.map +1 -0
- package/dist/features/llm/model.d.ts +171 -0
- package/dist/features/llm/model.d.ts.map +1 -0
- package/dist/features/llm/model.js +2 -0
- package/dist/features/llm/model.js.map +1 -0
- package/dist/features/llm/schema.d.ts +4 -0
- package/dist/features/llm/schema.d.ts.map +1 -0
- package/dist/features/llm/schema.js +82 -0
- package/dist/features/llm/schema.js.map +1 -0
- package/dist/features/llm/service.d.ts +29 -0
- package/dist/features/llm/service.d.ts.map +1 -0
- package/dist/features/llm/service.js +55 -0
- package/dist/features/llm/service.js.map +1 -0
- package/dist/features/messaging/constants.d.ts +3 -0
- package/dist/features/messaging/constants.d.ts.map +1 -0
- package/dist/features/messaging/constants.js +4 -0
- package/dist/features/messaging/constants.js.map +1 -0
- package/dist/features/messaging/domain.d.ts +9 -0
- package/dist/features/messaging/domain.d.ts.map +1 -0
- package/dist/features/messaging/domain.js +14 -0
- package/dist/features/messaging/domain.js.map +1 -0
- package/dist/features/messaging/feature.d.ts +7 -0
- package/dist/features/messaging/feature.d.ts.map +1 -0
- package/dist/features/messaging/feature.js +23 -0
- package/dist/features/messaging/feature.js.map +1 -0
- package/dist/features/messaging/index.d.ts +12 -0
- package/dist/features/messaging/index.d.ts.map +1 -0
- package/dist/features/messaging/index.js +8 -0
- package/dist/features/messaging/index.js.map +1 -0
- package/dist/features/messaging/jobs.d.ts +38 -0
- package/dist/features/messaging/jobs.d.ts.map +1 -0
- package/dist/features/messaging/jobs.js +40 -0
- package/dist/features/messaging/jobs.js.map +1 -0
- package/dist/features/messaging/models.d.ts +65 -0
- package/dist/features/messaging/models.d.ts.map +1 -0
- package/dist/features/messaging/models.js +97 -0
- package/dist/features/messaging/models.js.map +1 -0
- package/dist/features/messaging/resources.d.ts +8 -0
- package/dist/features/messaging/resources.d.ts.map +1 -0
- package/dist/features/messaging/resources.js +11 -0
- package/dist/features/messaging/resources.js.map +1 -0
- package/dist/features/messaging/store.d.ts +46 -0
- package/dist/features/messaging/store.d.ts.map +1 -0
- package/dist/features/messaging/store.js +208 -0
- package/dist/features/messaging/store.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/{src → dist}/index.js +7 -2
- package/dist/index.js.map +1 -0
- package/dist/input.d.ts +18 -0
- package/dist/input.d.ts.map +1 -0
- package/dist/input.js +49 -0
- package/dist/input.js.map +1 -0
- package/dist/repository/model.d.ts +61 -0
- package/dist/repository/model.d.ts.map +1 -0
- package/dist/repository/model.js +2 -0
- package/dist/repository/model.js.map +1 -0
- package/dist/repository.d.ts +11 -0
- package/dist/repository.d.ts.map +1 -0
- package/dist/repository.js +118 -0
- package/dist/repository.js.map +1 -0
- package/dist/runtime/domains.d.ts +14 -0
- package/dist/runtime/domains.d.ts.map +1 -0
- package/dist/runtime/domains.js +42 -0
- package/dist/runtime/domains.js.map +1 -0
- package/dist/runtime/features.d.ts +10 -0
- package/dist/runtime/features.d.ts.map +1 -0
- package/dist/runtime/features.js +37 -0
- package/dist/runtime/features.js.map +1 -0
- package/dist/runtime/health.d.ts +6 -0
- package/dist/runtime/health.d.ts.map +1 -0
- package/dist/runtime/health.js +28 -0
- package/dist/runtime/health.js.map +1 -0
- package/dist/runtime/hono.d.ts +30 -0
- package/dist/runtime/hono.d.ts.map +1 -0
- package/dist/runtime/hono.js +50 -0
- package/dist/runtime/hono.js.map +1 -0
- package/dist/runtime/model.d.ts +133 -0
- package/dist/runtime/model.d.ts.map +1 -0
- package/dist/runtime/model.js +2 -0
- package/dist/runtime/model.js.map +1 -0
- package/dist/runtime/responses.d.ts +9 -0
- package/dist/runtime/responses.d.ts.map +1 -0
- package/dist/runtime/responses.js +14 -0
- package/dist/runtime/responses.js.map +1 -0
- package/dist/runtime/worker.d.ts +10 -0
- package/dist/runtime/worker.d.ts.map +1 -0
- package/dist/runtime/worker.js +216 -0
- package/dist/runtime/worker.js.map +1 -0
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/react/admin-access.d.ts +2 -0
- package/dist/ui/react/admin-access.d.ts.map +1 -0
- package/dist/ui/react/admin-access.js +47 -0
- package/dist/ui/react/admin-access.js.map +1 -0
- package/dist/ui/react/admin-audit.d.ts +2 -0
- package/dist/ui/react/admin-audit.d.ts.map +1 -0
- package/dist/ui/react/admin-audit.js +13 -0
- package/dist/ui/react/admin-audit.js.map +1 -0
- package/dist/ui/react/admin-catalogs.d.ts +6 -0
- package/dist/ui/react/admin-catalogs.d.ts.map +1 -0
- package/dist/ui/react/admin-catalogs.js +37 -0
- package/dist/ui/react/admin-catalogs.js.map +1 -0
- package/dist/ui/react/admin-dashboard.d.ts +39 -0
- package/dist/ui/react/admin-dashboard.d.ts.map +1 -0
- package/dist/ui/react/admin-dashboard.js +135 -0
- package/dist/ui/react/admin-dashboard.js.map +1 -0
- package/dist/ui/react/admin-details.d.ts +27 -0
- package/dist/ui/react/admin-details.d.ts.map +1 -0
- package/dist/ui/react/admin-details.js +82 -0
- package/dist/ui/react/admin-details.js.map +1 -0
- package/dist/ui/react/admin-shell.d.ts +20 -0
- package/dist/ui/react/admin-shell.d.ts.map +1 -0
- package/dist/ui/react/admin-shell.js +24 -0
- package/dist/ui/react/admin-shell.js.map +1 -0
- package/dist/ui/react/bootstrap.d.ts +9 -0
- package/dist/ui/react/bootstrap.d.ts.map +1 -0
- package/dist/ui/react/bootstrap.js +45 -0
- package/dist/ui/react/bootstrap.js.map +1 -0
- package/dist/ui/react/foundation.d.ts +35 -0
- package/dist/ui/react/foundation.d.ts.map +1 -0
- package/dist/ui/react/foundation.js +62 -0
- package/dist/ui/react/foundation.js.map +1 -0
- package/dist/ui/react/index.d.ts +12 -0
- package/dist/ui/react/index.d.ts.map +1 -0
- package/dist/ui/react/index.js +12 -0
- package/dist/ui/react/index.js.map +1 -0
- package/dist/ui/react/jobs.d.ts +62 -0
- package/dist/ui/react/jobs.d.ts.map +1 -0
- package/dist/ui/react/jobs.js +114 -0
- package/dist/ui/react/jobs.js.map +1 -0
- package/dist/ui/react/live-events.d.ts +18 -0
- package/dist/ui/react/live-events.d.ts.map +1 -0
- package/dist/ui/react/live-events.js +94 -0
- package/dist/ui/react/live-events.js.map +1 -0
- package/dist/ui/react/types.d.ts +79 -0
- package/dist/ui/react/types.d.ts.map +1 -0
- package/dist/ui/react/types.js +32 -0
- package/dist/ui/react/types.js.map +1 -0
- package/dist/ui/ssr.d.ts +55 -0
- package/dist/ui/ssr.d.ts.map +1 -0
- package/dist/ui/ssr.js +30 -0
- package/dist/ui/ssr.js.map +1 -0
- package/{src → dist}/ui/styles.css +22 -1
- package/migrations/0007_messaging.sql +52 -0
- package/migrations/0008_messaging_tenant_integrity.sql +44 -0
- package/migrations/0009_healthcheck_measurements.sql +3 -0
- package/migrations/0010_admin_dashboard_refinements.sql +24 -0
- package/package.json +162 -21
- package/changelog.md +0 -25
- package/src/admin/index.js +0 -1
- package/src/admin/routes.js +0 -64
- package/src/api/client.js +0 -8
- package/src/api/contracts.js +0 -24
- package/src/api/index.js +0 -7
- package/src/api/jobs.js +0 -37
- package/src/api/testing.js +0 -13
- package/src/app.js +0 -5
- package/src/auth/encoding.js +0 -6
- package/src/auth/groups.js +0 -5
- package/src/auth/impersonation.js +0 -15
- package/src/auth/index.js +0 -8
- package/src/auth/oauth-single.js +0 -204
- package/src/auth/scopes.js +0 -32
- package/src/auth/subscriptions.js +0 -42
- package/src/auth/tenants.js +0 -34
- package/src/auth/users.js +0 -40
- package/src/cli/cli.js +0 -133
- package/src/cli/d1.js +0 -165
- package/src/cli/operations.js +0 -34
- package/src/cli/project.js +0 -560
- package/src/cli/status.js +0 -46
- package/src/cli/tenants.js +0 -16
- package/src/cli/users.js +0 -34
- package/src/cli/version.js +0 -54
- package/src/core/circuits.js +0 -134
- package/src/core/d1.js +0 -54
- package/src/core/event-hub.js +0 -29
- package/src/core/events.js +0 -63
- package/src/core/identity.js +0 -39
- package/src/core/index.js +0 -7
- package/src/core/jobs.js +0 -185
- package/src/core/security.js +0 -88
- package/src/data/context.js +0 -16
- package/src/data/reader.js +0 -63
- package/src/data/resources.js +0 -42
- package/src/repository.js +0 -63
- package/src/runtime/features.js +0 -17
- package/src/runtime/health.js +0 -17
- package/src/runtime/worker.js +0 -58
- package/src/ui/index.js +0 -1
- package/src/ui/react/admin-access.jsx +0 -29
- package/src/ui/react/admin-catalogs.jsx +0 -39
- package/src/ui/react/admin-shell.jsx +0 -17
- package/src/ui/react/foundation.jsx +0 -40
- package/src/ui/react/index.jsx +0 -6
- package/src/ui/react/jobs.jsx +0 -63
- package/src/ui/react/live-events.jsx +0 -55
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
import { getCircuitBreaker, registerCircuitBreaker, setCircuitBreaker } from "../../core/circuits/index.js";
|
|
2
|
+
import { registerHealthcheck } from "../../core/healthchecks/index.js";
|
|
3
|
+
import { executeJob } from "../../core/jobs/index.js";
|
|
4
|
+
import { resolveConfig, resolveModel, validateModelList } from "./config.js";
|
|
5
|
+
import { LLMCircuitBreakerError, LLMResponseError } from "./errors.js";
|
|
6
|
+
import { parseBestEffort, validateAndReturn } from "./schema.js";
|
|
7
|
+
export function createLLM(options = {}) {
|
|
8
|
+
for (const removed of ["feature", "apiKey"]) {
|
|
9
|
+
if (Object.hasOwn(options, removed))
|
|
10
|
+
throw new TypeError(`createLLM.${removed} was removed in v5.0.3`);
|
|
11
|
+
}
|
|
12
|
+
const fetcher = options.fetch || globalThis.fetch;
|
|
13
|
+
const logger = options.logger || console;
|
|
14
|
+
const defaults = options.metadata || {};
|
|
15
|
+
const debugLogging = options.debugLogging === true;
|
|
16
|
+
const featureName = options.featureName || "llm";
|
|
17
|
+
const breakerId = options.breakerId || featureName + ":llm-models";
|
|
18
|
+
const healthcheckId = options.healthcheckId || featureName + ":llm-models";
|
|
19
|
+
if (typeof fetcher !== "function")
|
|
20
|
+
throw new TypeError("createLLM requires fetch");
|
|
21
|
+
const log = (level, event) => {
|
|
22
|
+
if (level === "debug" && !debugLogging)
|
|
23
|
+
return;
|
|
24
|
+
try {
|
|
25
|
+
const writer = logger[level] || logger.info || (() => { });
|
|
26
|
+
writer.call(logger, JSON.stringify({ source: "cf-genai-base/llm", ...event }));
|
|
27
|
+
}
|
|
28
|
+
catch { /* logging cannot break a request */ }
|
|
29
|
+
};
|
|
30
|
+
async function assertAvailable(requestOptions = {}) {
|
|
31
|
+
const env = requestOptions.env || options.env;
|
|
32
|
+
if (!env?.DB || requestOptions.allowWhenCircuitTripped)
|
|
33
|
+
return;
|
|
34
|
+
const breaker = await getCircuitBreaker(env, breakerId, { who: requestOptions.who || "system:read" }).catch(() => null);
|
|
35
|
+
if (breaker && breaker.state !== "on")
|
|
36
|
+
throw new LLMCircuitBreakerError();
|
|
37
|
+
}
|
|
38
|
+
async function listModels(requestOptions = {}) {
|
|
39
|
+
const env = requestOptions.env || options.env;
|
|
40
|
+
const config = resolveConfig(options, requestOptions, env);
|
|
41
|
+
try {
|
|
42
|
+
const response = await fetcher(config.modelsEndpoint, {
|
|
43
|
+
method: "GET",
|
|
44
|
+
headers: config.headers,
|
|
45
|
+
signal: requestOptions.signal,
|
|
46
|
+
});
|
|
47
|
+
const payload = await response.json();
|
|
48
|
+
if (!response.ok)
|
|
49
|
+
throw new LLMResponseError("LLM model list failed (" + response.status + ")", payload);
|
|
50
|
+
const models = validateModelList(payload, "LLM model list returned a malformed response");
|
|
51
|
+
if (env?.DB) {
|
|
52
|
+
await registerHealthcheck(env, {
|
|
53
|
+
id: healthcheckId,
|
|
54
|
+
feature: featureName,
|
|
55
|
+
component: "llm-models",
|
|
56
|
+
displayName: "LLM model availability",
|
|
57
|
+
state: "green",
|
|
58
|
+
metadata: { provider: config.provider, gateway: config.gateway, count: models.length },
|
|
59
|
+
}, { who: requestOptions.who || "system:update" });
|
|
60
|
+
await registerCircuitBreaker(env, {
|
|
61
|
+
id: breakerId,
|
|
62
|
+
feature: featureName,
|
|
63
|
+
name: "llm-models",
|
|
64
|
+
displayName: "LLM model access",
|
|
65
|
+
state: "on",
|
|
66
|
+
allowSelfHealing: true,
|
|
67
|
+
healthchecks: [healthcheckId],
|
|
68
|
+
}, { who: requestOptions.who || "system:update" });
|
|
69
|
+
await setCircuitBreaker(env, breakerId, "on", {
|
|
70
|
+
who: requestOptions.who || "system:update",
|
|
71
|
+
automated: true,
|
|
72
|
+
}).catch(() => { });
|
|
73
|
+
}
|
|
74
|
+
return models;
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
if (env?.DB) {
|
|
78
|
+
await registerHealthcheck(env, {
|
|
79
|
+
id: healthcheckId,
|
|
80
|
+
feature: featureName,
|
|
81
|
+
component: "llm-models",
|
|
82
|
+
displayName: "LLM model availability",
|
|
83
|
+
state: "red",
|
|
84
|
+
metadata: { provider: config.provider, gateway: config.gateway, error: errorMessage(error) },
|
|
85
|
+
}, { who: requestOptions.who || "system:update" }).catch(() => { });
|
|
86
|
+
await registerCircuitBreaker(env, {
|
|
87
|
+
id: breakerId,
|
|
88
|
+
feature: featureName,
|
|
89
|
+
name: "llm-models",
|
|
90
|
+
displayName: "LLM model access",
|
|
91
|
+
state: "on",
|
|
92
|
+
allowSelfHealing: true,
|
|
93
|
+
healthchecks: [healthcheckId],
|
|
94
|
+
}, { who: requestOptions.who || "system:update" })
|
|
95
|
+
.then(() => setCircuitBreaker(env, breakerId, "tripped", {
|
|
96
|
+
who: requestOptions.who || "system:update",
|
|
97
|
+
automated: true,
|
|
98
|
+
}))
|
|
99
|
+
.catch(() => { });
|
|
100
|
+
}
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async function request(prompt, schema, requestOptions = {}) {
|
|
105
|
+
await assertAvailable(requestOptions);
|
|
106
|
+
const started = Date.now();
|
|
107
|
+
const requestId = requestOptions.requestId || crypto.randomUUID();
|
|
108
|
+
const env = requestOptions.env || options.env;
|
|
109
|
+
const config = resolveConfig(options, requestOptions, env);
|
|
110
|
+
const metadata = { ...defaults, ...(requestOptions.metadata || {}) };
|
|
111
|
+
const model = await resolveModel(config, fetcher, requestOptions);
|
|
112
|
+
const body = { model, input: prompt, store: false };
|
|
113
|
+
if (Object.keys(metadata).length)
|
|
114
|
+
body.metadata = metadata;
|
|
115
|
+
if (schema) {
|
|
116
|
+
body.text = {
|
|
117
|
+
format: {
|
|
118
|
+
type: "json_schema",
|
|
119
|
+
name: requestOptions.schemaName || "response",
|
|
120
|
+
strict: true,
|
|
121
|
+
schema,
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
log("debug", {
|
|
126
|
+
event: "llm.request",
|
|
127
|
+
requestId,
|
|
128
|
+
metadata,
|
|
129
|
+
provider: config.provider,
|
|
130
|
+
gateway: config.gateway,
|
|
131
|
+
model: body.model,
|
|
132
|
+
hasSchema: Boolean(schema),
|
|
133
|
+
});
|
|
134
|
+
let response;
|
|
135
|
+
let payload;
|
|
136
|
+
try {
|
|
137
|
+
response = await fetcher(config.endpoint, {
|
|
138
|
+
method: "POST",
|
|
139
|
+
headers: config.headers,
|
|
140
|
+
body: JSON.stringify(body),
|
|
141
|
+
signal: requestOptions.signal,
|
|
142
|
+
});
|
|
143
|
+
payload = await response.json();
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
log("error", {
|
|
147
|
+
event: "llm.error",
|
|
148
|
+
requestId,
|
|
149
|
+
durationMs: Date.now() - started,
|
|
150
|
+
error: errorMessage(error),
|
|
151
|
+
provider: config.provider,
|
|
152
|
+
gateway: config.gateway,
|
|
153
|
+
model: body.model,
|
|
154
|
+
});
|
|
155
|
+
throw error;
|
|
156
|
+
}
|
|
157
|
+
const usage = normalizeUsageFromPayload(payload);
|
|
158
|
+
if (requestOptions.onUsage)
|
|
159
|
+
await requestOptions.onUsage(usage);
|
|
160
|
+
log(response.ok ? "info" : "error", {
|
|
161
|
+
event: "llm.response",
|
|
162
|
+
requestId,
|
|
163
|
+
status: response.status,
|
|
164
|
+
durationMs: Date.now() - started,
|
|
165
|
+
usage,
|
|
166
|
+
metadata,
|
|
167
|
+
provider: config.provider,
|
|
168
|
+
gateway: config.gateway,
|
|
169
|
+
model: body.model,
|
|
170
|
+
});
|
|
171
|
+
if (!response.ok)
|
|
172
|
+
throw new LLMResponseError(`LLM request failed (${response.status})`, payload);
|
|
173
|
+
const providerPayload = validateProviderResponse(payload);
|
|
174
|
+
const text = extractText(providerPayload);
|
|
175
|
+
if (!text)
|
|
176
|
+
throw new LLMResponseError("LLM returned no text", payload);
|
|
177
|
+
if (requestOptions.onText)
|
|
178
|
+
await requestOptions.onText(text);
|
|
179
|
+
return { text, payload: providerPayload, usage, requestId, metadata };
|
|
180
|
+
}
|
|
181
|
+
async function generate(prompt, schema, requestOptions = {}) {
|
|
182
|
+
if (typeof prompt !== "string")
|
|
183
|
+
throw new TypeError("generate prompt must be a string");
|
|
184
|
+
if (Object.hasOwn(requestOptions, "apiKey"))
|
|
185
|
+
throw new TypeError("generate apiKey was removed in v5.0.3");
|
|
186
|
+
const first = await request(prompt, schema, requestOptions);
|
|
187
|
+
if (!schema)
|
|
188
|
+
return parseBestEffort(first.text);
|
|
189
|
+
try {
|
|
190
|
+
return validateAndReturn(first.text, schema);
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
const repairPrompt = `${prompt}\n\nYour previous response was invalid for the required schema. Return only corrected JSON matching this schema exactly.\nSchema: ${JSON.stringify(schema)}\nPrevious response: ${first.text}\nValidation error: ${errorMessage(error)}`;
|
|
194
|
+
let repairedResponse;
|
|
195
|
+
try {
|
|
196
|
+
repairedResponse = await request(repairPrompt, schema, {
|
|
197
|
+
...requestOptions,
|
|
198
|
+
schemaName: `${requestOptions.schemaName || "response"}_repair`,
|
|
199
|
+
});
|
|
200
|
+
return validateAndReturn(repairedResponse.text, schema);
|
|
201
|
+
}
|
|
202
|
+
catch (repairError) {
|
|
203
|
+
if (repairError instanceof LLMResponseError)
|
|
204
|
+
throw repairError;
|
|
205
|
+
throw new LLMResponseError(`LLM response did not match the requested schema after one repair attempt: ${errorMessage(repairError)}`, repairedResponse?.payload || first.payload, repairError);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
async function generateMulti(requests, schema, requestOptions = {}) {
|
|
210
|
+
if (!Array.isArray(requests))
|
|
211
|
+
throw new TypeError("generateMulti requires an array of requests");
|
|
212
|
+
return Promise.all(requests.map((item) => typeof item === "string"
|
|
213
|
+
? generate(item, schema, requestOptions)
|
|
214
|
+
: generate(item.prompt, item.schema || schema, { ...requestOptions, ...(item.options || {}) })));
|
|
215
|
+
}
|
|
216
|
+
async function generateJob(jobId, prompt, schema, requestOptions = {}) {
|
|
217
|
+
const { job: jobOptions = {}, ...generationOptions } = requestOptions;
|
|
218
|
+
const env = generationOptions.env || options.env;
|
|
219
|
+
if (!env?.DB)
|
|
220
|
+
throw new TypeError("generateJob requires an environment with DB");
|
|
221
|
+
const onText = generationOptions.onText;
|
|
222
|
+
const onUsage = generationOptions.onUsage;
|
|
223
|
+
return executeJob(env, jobId, async ({ report }) => {
|
|
224
|
+
await report({ phase: "generating" });
|
|
225
|
+
const value = await generate(prompt, schema, {
|
|
226
|
+
...generationOptions,
|
|
227
|
+
onText: async (text) => {
|
|
228
|
+
if (onText)
|
|
229
|
+
await onText(text);
|
|
230
|
+
await report({ phase: "generated" });
|
|
231
|
+
},
|
|
232
|
+
onUsage: async (usage) => {
|
|
233
|
+
if (onUsage)
|
|
234
|
+
await onUsage(usage);
|
|
235
|
+
await report({ phase: "generating", usage });
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
return value;
|
|
239
|
+
}, {
|
|
240
|
+
who: jobOptions.who || generationOptions.who || "system:update",
|
|
241
|
+
ctx: jobOptions.ctx || generationOptions.ctx,
|
|
242
|
+
toJobResult: jobOptions.toJobResult || emptyJobResult,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
async function review(originalText, reviewPrompt, schema, requestOptions = {}) {
|
|
246
|
+
if (typeof originalText !== "string" || typeof reviewPrompt !== "string") {
|
|
247
|
+
throw new TypeError("review text and prompt must be strings");
|
|
248
|
+
}
|
|
249
|
+
return generate(`${reviewPrompt}\n\nOriginal output to review:\n${originalText}`, schema, requestOptions);
|
|
250
|
+
}
|
|
251
|
+
async function reviewMulti(originalText, reviewPrompts, schema, requestOptions = {}) {
|
|
252
|
+
if (!Array.isArray(reviewPrompts))
|
|
253
|
+
throw new TypeError("reviewMulti requires an array of review prompts");
|
|
254
|
+
return Promise.all(reviewPrompts.map((item) => {
|
|
255
|
+
const prompt = typeof item === "string" ? item : item.prompt;
|
|
256
|
+
const name = typeof item === "string" ? undefined : item.name;
|
|
257
|
+
return review(originalText, prompt, schema, {
|
|
258
|
+
...requestOptions,
|
|
259
|
+
...(typeof item === "object" ? item.options : {}),
|
|
260
|
+
metadata: { ...requestOptions.metadata, ...(name ? { reviewer: name } : {}) },
|
|
261
|
+
});
|
|
262
|
+
}));
|
|
263
|
+
}
|
|
264
|
+
return { listModels, generate, generateJob, generateMulti, review, reviewMulti };
|
|
265
|
+
}
|
|
266
|
+
function validateProviderResponse(payload) {
|
|
267
|
+
if (!isRecord(payload))
|
|
268
|
+
throw new LLMResponseError("LLM returned a malformed response", payload);
|
|
269
|
+
if (payload.output_text !== undefined && typeof payload.output_text !== "string") {
|
|
270
|
+
throw new LLMResponseError("LLM returned a malformed response", payload);
|
|
271
|
+
}
|
|
272
|
+
if (payload.usage !== undefined && !isProviderUsage(payload.usage)) {
|
|
273
|
+
throw new LLMResponseError("LLM returned a malformed response", payload);
|
|
274
|
+
}
|
|
275
|
+
if (payload.output !== undefined && !isProviderOutput(payload.output)) {
|
|
276
|
+
throw new LLMResponseError("LLM returned a malformed response", payload);
|
|
277
|
+
}
|
|
278
|
+
return payload;
|
|
279
|
+
}
|
|
280
|
+
function isProviderUsage(value) {
|
|
281
|
+
if (!isRecord(value))
|
|
282
|
+
return false;
|
|
283
|
+
return ["input_tokens", "prompt_tokens", "output_tokens", "completion_tokens", "total_tokens"]
|
|
284
|
+
.every((key) => value[key] === undefined || isFiniteNonNegativeNumber(value[key]));
|
|
285
|
+
}
|
|
286
|
+
function isProviderOutput(value) {
|
|
287
|
+
return Array.isArray(value) && value.every((item) => isRecord(item)
|
|
288
|
+
&& (item.content === undefined || (Array.isArray(item.content) && item.content.every((content) => isRecord(content)
|
|
289
|
+
&& (content.type === undefined || typeof content.type === "string")
|
|
290
|
+
&& (content.text === undefined || typeof content.text === "string")))));
|
|
291
|
+
}
|
|
292
|
+
function extractText(payload) {
|
|
293
|
+
if (payload.output_text)
|
|
294
|
+
return payload.output_text;
|
|
295
|
+
for (const item of payload.output || []) {
|
|
296
|
+
for (const content of item.content || []) {
|
|
297
|
+
if (content.type === "output_text" && content.text)
|
|
298
|
+
return content.text;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return "";
|
|
302
|
+
}
|
|
303
|
+
function normalizeUsage(usage) {
|
|
304
|
+
return {
|
|
305
|
+
inputTokens: usage?.input_tokens ?? usage?.prompt_tokens ?? 0,
|
|
306
|
+
outputTokens: usage?.output_tokens ?? usage?.completion_tokens ?? 0,
|
|
307
|
+
totalTokens: usage?.total_tokens ?? 0,
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
function normalizeUsageFromPayload(payload) {
|
|
311
|
+
if (!isRecord(payload) || payload.usage === undefined)
|
|
312
|
+
return normalizeUsage();
|
|
313
|
+
if (!isProviderUsage(payload.usage))
|
|
314
|
+
throw new LLMResponseError("LLM returned a malformed response", payload);
|
|
315
|
+
return normalizeUsage(payload.usage);
|
|
316
|
+
}
|
|
317
|
+
function isFiniteNonNegativeNumber(value) {
|
|
318
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
319
|
+
}
|
|
320
|
+
function isRecord(value) {
|
|
321
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
322
|
+
}
|
|
323
|
+
function errorMessage(error) {
|
|
324
|
+
return error instanceof Error ? error.message : String(error);
|
|
325
|
+
}
|
|
326
|
+
function emptyJobResult() { return {}; }
|
|
327
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/features/llm/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { LLMClientOptions, LLMEnvironment, LLMRequestOptions, LLMResolvedProviderConfig } from "./model.js";
|
|
2
|
+
export declare function resolveConfig<Env extends LLMEnvironment>(options: LLMClientOptions<Env>, requestOptions: LLMRequestOptions<Env>, env: Env | undefined): LLMResolvedProviderConfig;
|
|
3
|
+
export declare function resolveModel(config: LLMResolvedProviderConfig, fetcher: typeof fetch, requestOptions: Pick<LLMRequestOptions, "signal">): Promise<string>;
|
|
4
|
+
export declare function validateModelList(payload: unknown, message: string): Array<Record<string, unknown> & {
|
|
5
|
+
id: string;
|
|
6
|
+
}>;
|
|
7
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/features/llm/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAEhB,cAAc,EAEd,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAEpB,wBAAgB,aAAa,CAAC,GAAG,SAAS,cAAc,EACtD,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAC9B,cAAc,EAAE,iBAAiB,CAAC,GAAG,CAAC,EACtC,GAAG,EAAE,GAAG,GAAG,SAAS,GACnB,yBAAyB,CAgC3B;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,yBAAyB,EACjC,OAAO,EAAE,OAAO,KAAK,EACrB,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,GAChD,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAUpH"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { DEFAULT_ENDPOINT, DEFAULT_MODEL } from "./constants.js";
|
|
2
|
+
import { LLMResponseError } from "./errors.js";
|
|
3
|
+
export function resolveConfig(options, requestOptions, env) {
|
|
4
|
+
if (requestOptions.apiUrl !== undefined && options.allowDynamicApiUrl !== true) {
|
|
5
|
+
throw new Error("Per-request LLM API URLs are disabled; configure apiUrl at client creation time.");
|
|
6
|
+
}
|
|
7
|
+
const apiUrl = (options.allowDynamicApiUrl === true ? requestOptions.apiUrl : undefined)
|
|
8
|
+
|| resolveValue(options.apiUrl, env)
|
|
9
|
+
|| env?.LLM_API_URL
|
|
10
|
+
|| DEFAULT_ENDPOINT;
|
|
11
|
+
const url = parseApiUrl(apiUrl);
|
|
12
|
+
if (url.protocol !== "https:")
|
|
13
|
+
throw new Error("LLM_API_URL must use HTTPS");
|
|
14
|
+
const token = requestOptions.apiToken || resolveValue(options.apiToken, env) || env?.LLM_API_TOKEN;
|
|
15
|
+
if (typeof token !== "string" || token.length === 0)
|
|
16
|
+
throw new Error("LLM_API_TOKEN is not configured");
|
|
17
|
+
const model = requestOptions.model || resolveValue(options.model, env) || env?.LLM_MODEL || DEFAULT_MODEL;
|
|
18
|
+
if (typeof model !== "string" || model.length === 0)
|
|
19
|
+
throw new Error("LLM_MODEL must be a non-empty string");
|
|
20
|
+
const endpoint = endpointFor(apiUrl, "responses");
|
|
21
|
+
const modelsEndpoint = endpointFor(apiUrl, "models");
|
|
22
|
+
const gateway = isCloudflareGateway(url);
|
|
23
|
+
const headers = {
|
|
24
|
+
"Content-Type": "application/json",
|
|
25
|
+
...resolveValue(options.headers, env),
|
|
26
|
+
...requestOptions.headers,
|
|
27
|
+
};
|
|
28
|
+
if (gateway)
|
|
29
|
+
headers["cf-aig-authorization"] = `Bearer ${token}`;
|
|
30
|
+
else
|
|
31
|
+
headers.Authorization = `Bearer ${token}`;
|
|
32
|
+
return {
|
|
33
|
+
provider: gateway ? "cloudflare-ai-gateway" : "openai-compatible",
|
|
34
|
+
gateway,
|
|
35
|
+
endpoint,
|
|
36
|
+
modelsEndpoint,
|
|
37
|
+
model,
|
|
38
|
+
headers,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export async function resolveModel(config, fetcher, requestOptions) {
|
|
42
|
+
if (config.model !== "auto")
|
|
43
|
+
return config.model;
|
|
44
|
+
const response = await fetcher(config.modelsEndpoint, {
|
|
45
|
+
method: "GET",
|
|
46
|
+
headers: config.headers,
|
|
47
|
+
signal: requestOptions.signal,
|
|
48
|
+
});
|
|
49
|
+
const payload = await response.json();
|
|
50
|
+
if (!response.ok)
|
|
51
|
+
throw new LLMResponseError("Automatic model selection failed", payload);
|
|
52
|
+
const models = validateModelList(payload, "Automatic model selection failed");
|
|
53
|
+
if (!models[0])
|
|
54
|
+
throw new LLMResponseError("Automatic model selection failed", payload);
|
|
55
|
+
return models[0].id;
|
|
56
|
+
}
|
|
57
|
+
export function validateModelList(payload, message) {
|
|
58
|
+
if (!isRecord(payload) || !Array.isArray(payload.data))
|
|
59
|
+
throw new LLMResponseError(message, payload);
|
|
60
|
+
const models = [];
|
|
61
|
+
for (const model of payload.data) {
|
|
62
|
+
if (!isRecord(model) || typeof model.id !== "string" || model.id.length === 0) {
|
|
63
|
+
throw new LLMResponseError(message, payload);
|
|
64
|
+
}
|
|
65
|
+
models.push({ ...model, id: model.id });
|
|
66
|
+
}
|
|
67
|
+
return models;
|
|
68
|
+
}
|
|
69
|
+
function resolveValue(value, env) {
|
|
70
|
+
if (typeof value === "function") {
|
|
71
|
+
const resolver = value;
|
|
72
|
+
return resolver(env);
|
|
73
|
+
}
|
|
74
|
+
return value;
|
|
75
|
+
}
|
|
76
|
+
function parseApiUrl(apiUrl) {
|
|
77
|
+
try {
|
|
78
|
+
return new URL(apiUrl);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
throw new Error("LLM_API_URL must be a valid URL");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function endpointFor(baseUrl, resource) {
|
|
85
|
+
return String(baseUrl).replace(/\/+$/, "").replace(/\/(responses|models)$/, "") + "/" + resource;
|
|
86
|
+
}
|
|
87
|
+
function isCloudflareGateway(url) {
|
|
88
|
+
return url.hostname === "gateway.ai.cloudflare.com";
|
|
89
|
+
}
|
|
90
|
+
function isRecord(value) {
|
|
91
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/features/llm/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const PACKAGE_NAME = "@agilesyndrome/cf-genai-base";
|
|
2
|
+
export declare const VERSION = "5.0.3";
|
|
3
|
+
export declare const DEFAULT_ENDPOINT = "https://api.openai.com/v1/responses";
|
|
4
|
+
export declare const DEFAULT_MODEL = "gpt-5.4";
|
|
5
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/features/llm/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,iCAAoB,CAAC;AAC9C,eAAO,MAAM,OAAO,UAAe,CAAC;AACpC,eAAO,MAAM,gBAAgB,wCAAwC,CAAC;AACtE,eAAO,MAAM,aAAa,YAAY,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BASE_PACKAGE_NAME, BASE_VERSION } from "../../core/constants.js";
|
|
2
|
+
export const PACKAGE_NAME = BASE_PACKAGE_NAME;
|
|
3
|
+
export const VERSION = BASE_VERSION;
|
|
4
|
+
export const DEFAULT_ENDPOINT = "https://api.openai.com/v1/responses";
|
|
5
|
+
export const DEFAULT_MODEL = "gpt-5.4";
|
|
6
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/features/llm/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE1E,MAAM,CAAC,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAC9C,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,qCAAqC,CAAC;AACtE,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class LLMCircuitBreakerError extends Error {
|
|
2
|
+
readonly code = "circuit_breaker_open";
|
|
3
|
+
readonly circuitBreakerOpen = true;
|
|
4
|
+
constructor(message?: string);
|
|
5
|
+
}
|
|
6
|
+
export declare class LLMResponseError<ResponsePayload = unknown> extends Error {
|
|
7
|
+
readonly code = "response_failed";
|
|
8
|
+
readonly responseFailed = true;
|
|
9
|
+
readonly llmResponse: ResponsePayload;
|
|
10
|
+
constructor(message: string, llmResponse: ResponsePayload, cause?: unknown);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/features/llm/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,0BAA0B;IACvC,QAAQ,CAAC,kBAAkB,QAAQ;IAEnC,YAAY,OAAO,GAAE,MAAoD,EAGxE;CACF;AAED,qBAAa,gBAAgB,CAAC,eAAe,GAAG,OAAO,CAAE,SAAQ,KAAK;IACpE,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,cAAc,QAAQ;IAC/B,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAEtC,YAAY,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAIzE;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export class LLMCircuitBreakerError extends Error {
|
|
2
|
+
code = "circuit_breaker_open";
|
|
3
|
+
circuitBreakerOpen = true;
|
|
4
|
+
constructor(message = "LLM generation is temporarily unavailable") {
|
|
5
|
+
super(message);
|
|
6
|
+
this.name = "LLMCircuitBreakerError";
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class LLMResponseError extends Error {
|
|
10
|
+
code = "response_failed";
|
|
11
|
+
responseFailed = true;
|
|
12
|
+
llmResponse;
|
|
13
|
+
constructor(message, llmResponse, cause) {
|
|
14
|
+
super(message, { cause });
|
|
15
|
+
this.name = "LLMResponseError";
|
|
16
|
+
this.llmResponse = llmResponse;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/features/llm/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACtC,IAAI,GAAG,sBAAsB,CAAC;IAC9B,kBAAkB,GAAG,IAAI,CAAC;IAEnC,YAAY,OAAO,GAAW,2CAA2C;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,gBAA4C,SAAQ,KAAK;IAC3D,IAAI,GAAG,iBAAiB,CAAC;IACzB,cAAc,GAAG,IAAI,CAAC;IACtB,WAAW,CAAkB;IAEtC,YAAY,OAAe,EAAE,WAA4B,EAAE,KAAe;QACxE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { RuntimeBindings, RuntimeFeature, RuntimeFeatureOptions, RuntimeState } from "../../runtime/model.js";
|
|
2
|
+
import type { LLMClientOptions } from "./model.js";
|
|
3
|
+
export interface LLMFeatureOptions<Env extends RuntimeBindings = RuntimeBindings, State extends RuntimeState = RuntimeState> extends RuntimeFeatureOptions<Env, State>, LLMClientOptions<Env> {
|
|
4
|
+
}
|
|
5
|
+
export declare function createLLMFeature<Env extends RuntimeBindings = RuntimeBindings, State extends RuntimeState = RuntimeState>(options?: LLMFeatureOptions<Env, State>): RuntimeFeature<Env, State>;
|
|
6
|
+
//# sourceMappingURL=feature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../src/features/llm/feature.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,YAAY,EACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,WAAW,iBAAiB,CAChC,GAAG,SAAS,eAAe,GAAG,eAAe,EAC7C,KAAK,SAAS,YAAY,GAAG,YAAY,CACzC,SAAQ,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC;CAAG;AAErE,wBAAgB,gBAAgB,CAC9B,GAAG,SAAS,eAAe,GAAG,eAAe,EAC7C,KAAK,SAAS,YAAY,GAAG,YAAY,EACzC,OAAO,GAAE,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAM,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAyBzE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { resolveConfig } from "./config.js";
|
|
2
|
+
import { PACKAGE_NAME, VERSION } from "./constants.js";
|
|
3
|
+
import { createLLM } from "./client.js";
|
|
4
|
+
export function createLLMFeature(options = {}) {
|
|
5
|
+
const name = options.name || "llm";
|
|
6
|
+
const client = createLLM({ ...options, featureName: name });
|
|
7
|
+
return {
|
|
8
|
+
name,
|
|
9
|
+
displayName: options.displayName || "Language models",
|
|
10
|
+
packageName: PACKAGE_NAME,
|
|
11
|
+
version: VERSION,
|
|
12
|
+
domains: options.domains || [],
|
|
13
|
+
healthcheck: async (env) => {
|
|
14
|
+
try {
|
|
15
|
+
resolveConfig(options, {}, env);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return [{ feature: name, component: "configuration", displayName: "LLM configuration", state: "red" }];
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
await client.listModels({ env, who: "system:update" });
|
|
22
|
+
return [{ feature: name, component: "configuration", displayName: "LLM configuration", state: "green" }];
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return [{ feature: name, component: "configuration", displayName: "LLM configuration", state: "yellow" }];
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
healthchecks: options.healthchecks || [{ feature: name, component: "llm-models", displayName: "LLM model availability", state: "yellow" }],
|
|
29
|
+
circuitBreakers: options.circuitBreakers || [{ id: name + ":llm-models", feature: name, name: "llm-models", displayName: "LLM model access", state: "on", allowSelfHealing: true, healthchecks: [name + ":llm-models"] }],
|
|
30
|
+
middleware: async (request, env, ctx, next, state) => {
|
|
31
|
+
if (options.boot)
|
|
32
|
+
await options.boot(env, { request, ctx, state });
|
|
33
|
+
return options.middleware ? options.middleware(request, env, ctx, next, state) : next();
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../../src/features/llm/feature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAcxC,MAAM,UAAU,gBAAgB,CAG9B,OAAO,GAAkC,EAAE;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;IACnC,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,iBAAiB;QACrD,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;QAC9B,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACzB,IAAI,CAAC;gBAAC,aAAa,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAAC,CAAC;YAC1J,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC;gBACvD,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAC3G,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5G,CAAC;QACH,CAAC;QACD,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,wBAAwB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC1I,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,GAAG,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC;QACzN,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YACnD,IAAI,OAAO,CAAC,IAAI;gBAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YACnE,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1F,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { createLLM } from "./client.js";
|
|
2
|
+
export { PACKAGE_NAME, VERSION } from "./constants.js";
|
|
3
|
+
export { LLMCircuitBreakerError, LLMResponseError } from "./errors.js";
|
|
4
|
+
export { createLLMFeature } from "./feature.js";
|
|
5
|
+
export { createLLMService } from "./service.js";
|
|
6
|
+
export type { LLMFeatureOptions } from "./feature.js";
|
|
7
|
+
export type { LLMServiceOptions } from "./service.js";
|
|
8
|
+
export type * from "./model.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/llm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,mBAAmB,YAAY,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { createLLM } from "./client.js";
|
|
2
|
+
export { PACKAGE_NAME, VERSION } from "./constants.js";
|
|
3
|
+
export { LLMCircuitBreakerError, LLMResponseError } from "./errors.js";
|
|
4
|
+
export { createLLMFeature } from "./feature.js";
|
|
5
|
+
export { createLLMService } from "./service.js";
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/llm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
|