@intelligo-dev/core 1.0.0-beta.1 → 1.0.0-beta.13
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/NOTICE +6 -0
- package/README.md +102 -0
- package/dist/attachments/errors.d.ts +7 -0
- package/dist/attachments/errors.d.ts.map +1 -0
- package/dist/attachments/errors.js +11 -0
- package/dist/attachments/errors.js.map +1 -0
- package/dist/attachments/index.d.ts +8 -0
- package/dist/attachments/index.d.ts.map +1 -0
- package/dist/attachments/index.js +7 -0
- package/dist/attachments/index.js.map +1 -0
- package/dist/attachments/service.d.ts +45 -0
- package/dist/attachments/service.d.ts.map +1 -0
- package/dist/attachments/service.js +100 -0
- package/dist/attachments/service.js.map +1 -0
- package/dist/attachments/types.d.ts +6 -0
- package/dist/attachments/types.d.ts.map +1 -0
- package/dist/attachments/types.js +2 -0
- package/dist/attachments/types.js.map +1 -0
- package/dist/conversations/errors.d.ts +2 -8
- package/dist/conversations/errors.d.ts.map +1 -1
- package/dist/conversations/errors.js +2 -8
- package/dist/conversations/errors.js.map +1 -1
- package/dist/conversations/index.d.ts +4 -12
- package/dist/conversations/index.d.ts.map +1 -1
- package/dist/conversations/index.js +2 -11
- package/dist/conversations/index.js.map +1 -1
- package/dist/conversations/service.d.ts +49 -61
- package/dist/conversations/service.d.ts.map +1 -1
- package/dist/conversations/service.js +110 -83
- package/dist/conversations/service.js.map +1 -1
- package/dist/conversations/types.d.ts +1 -4
- package/dist/conversations/types.d.ts.map +1 -1
- package/dist/conversations/types.js +0 -3
- package/dist/conversations/types.js.map +1 -1
- package/dist/db/client.d.ts +21 -10
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +43 -18
- package/dist/db/client.js.map +1 -1
- package/dist/db/index.d.ts +3 -3
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +3 -7
- package/dist/db/index.js.map +1 -1
- package/dist/db/schema/agents.d.ts +14 -51
- package/dist/db/schema/agents.d.ts.map +1 -1
- package/dist/db/schema/agents.js +9 -21
- package/dist/db/schema/agents.js.map +1 -1
- package/dist/db/schema/ai.d.ts +86 -1556
- package/dist/db/schema/ai.d.ts.map +1 -1
- package/dist/db/schema/ai.js +32 -236
- package/dist/db/schema/ai.js.map +1 -1
- package/dist/db/schema/auth.d.ts +5 -34
- package/dist/db/schema/auth.d.ts.map +1 -1
- package/dist/db/schema/auth.js +25 -56
- package/dist/db/schema/auth.js.map +1 -1
- package/dist/db/schema/billing.d.ts +136 -107
- package/dist/db/schema/billing.d.ts.map +1 -1
- package/dist/db/schema/billing.js +72 -60
- package/dist/db/schema/billing.js.map +1 -1
- package/dist/db/schema/feature-flags.d.ts +3 -12
- package/dist/db/schema/feature-flags.d.ts.map +1 -1
- package/dist/db/schema/feature-flags.js +3 -12
- package/dist/db/schema/feature-flags.js.map +1 -1
- package/dist/db/schema/identity.d.ts +12 -274
- package/dist/db/schema/identity.d.ts.map +1 -1
- package/dist/db/schema/identity.js +19 -104
- package/dist/db/schema/identity.js.map +1 -1
- package/dist/db/schema/index.d.ts +8 -15
- package/dist/db/schema/index.d.ts.map +1 -1
- package/dist/db/schema/index.js +12 -42
- package/dist/db/schema/index.js.map +1 -1
- package/dist/db/schema/notifications.d.ts +3 -17
- package/dist/db/schema/notifications.d.ts.map +1 -1
- package/dist/db/schema/notifications.js +3 -17
- package/dist/db/schema/notifications.js.map +1 -1
- package/dist/db/schema/usage.d.ts +94 -77
- package/dist/db/schema/usage.d.ts.map +1 -1
- package/dist/db/schema/usage.js +59 -89
- package/dist/db/schema/usage.js.map +1 -1
- package/dist/db/validate.d.ts +2 -11
- package/dist/db/validate.d.ts.map +1 -1
- package/dist/db/validate.js +6 -17
- package/dist/db/validate.js.map +1 -1
- package/dist/db/workspace-queries.d.ts +5 -29
- package/dist/db/workspace-queries.d.ts.map +1 -1
- package/dist/db/workspace-queries.js +5 -29
- package/dist/db/workspace-queries.js.map +1 -1
- package/dist/documents/classifier.d.ts +5 -12
- package/dist/documents/classifier.d.ts.map +1 -1
- package/dist/documents/classifier.js +16 -16
- package/dist/documents/classifier.js.map +1 -1
- package/dist/documents/errors.d.ts +2 -10
- package/dist/documents/errors.d.ts.map +1 -1
- package/dist/documents/errors.js +2 -10
- package/dist/documents/errors.js.map +1 -1
- package/dist/documents/index.d.ts +4 -13
- package/dist/documents/index.d.ts.map +1 -1
- package/dist/documents/index.js +3 -12
- package/dist/documents/index.js.map +1 -1
- package/dist/documents/service.d.ts +19 -26
- package/dist/documents/service.d.ts.map +1 -1
- package/dist/documents/service.js +44 -38
- package/dist/documents/service.js.map +1 -1
- package/dist/documents/types.d.ts +6 -10
- package/dist/documents/types.d.ts.map +1 -1
- package/dist/documents/types.js +0 -3
- package/dist/documents/types.js.map +1 -1
- package/dist/email/brand.d.ts +17 -0
- package/dist/email/brand.d.ts.map +1 -0
- package/dist/email/brand.js +9 -0
- package/dist/email/brand.js.map +1 -0
- package/dist/email/index.d.ts +4 -4
- package/dist/email/index.js +4 -4
- package/dist/email/provider.d.ts +1 -7
- package/dist/email/provider.d.ts.map +1 -1
- package/dist/email/provider.js +10 -19
- package/dist/email/provider.js.map +1 -1
- package/dist/email/send.d.ts +12 -12
- package/dist/email/send.d.ts.map +1 -1
- package/dist/email/send.js +5 -19
- package/dist/email/send.js.map +1 -1
- package/dist/email/senders.d.ts +17 -30
- package/dist/email/senders.d.ts.map +1 -1
- package/dist/email/senders.js +33 -47
- package/dist/email/senders.js.map +1 -1
- package/dist/email/templates/base-layout.d.ts +1 -1
- package/dist/email/templates/base-layout.d.ts.map +1 -1
- package/dist/email/templates/base-layout.js +4 -6
- package/dist/email/templates/base-layout.js.map +1 -1
- package/dist/email/templates/index.d.ts +10 -10
- package/dist/email/templates/index.d.ts.map +1 -1
- package/dist/email/templates/index.js +10 -16
- package/dist/email/templates/index.js.map +1 -1
- package/dist/email/templates/password-reset.d.ts +2 -2
- package/dist/email/templates/password-reset.d.ts.map +1 -1
- package/dist/email/templates/password-reset.js +10 -22
- package/dist/email/templates/password-reset.js.map +1 -1
- package/dist/email/templates/payment-failed.d.ts +2 -2
- package/dist/email/templates/payment-failed.d.ts.map +1 -1
- package/dist/email/templates/payment-failed.js +11 -24
- package/dist/email/templates/payment-failed.js.map +1 -1
- package/dist/email/templates/quota-warning.d.ts +4 -4
- package/dist/email/templates/quota-warning.d.ts.map +1 -1
- package/dist/email/templates/quota-warning.js +19 -39
- package/dist/email/templates/quota-warning.js.map +1 -1
- package/dist/email/templates/subscription-confirmed.d.ts +2 -2
- package/dist/email/templates/subscription-confirmed.d.ts.map +1 -1
- package/dist/email/templates/subscription-confirmed.js +13 -28
- package/dist/email/templates/subscription-confirmed.js.map +1 -1
- package/dist/email/templates/trial-expiry.d.ts +2 -2
- package/dist/email/templates/trial-expiry.d.ts.map +1 -1
- package/dist/email/templates/trial-expiry.js +12 -36
- package/dist/email/templates/trial-expiry.js.map +1 -1
- package/dist/email/templates/trial-warning.d.ts +2 -2
- package/dist/email/templates/trial-warning.d.ts.map +1 -1
- package/dist/email/templates/trial-warning.js +15 -32
- package/dist/email/templates/trial-warning.js.map +1 -1
- package/dist/email/templates/verify-email.d.ts +2 -2
- package/dist/email/templates/verify-email.d.ts.map +1 -1
- package/dist/email/templates/verify-email.js +10 -22
- package/dist/email/templates/verify-email.js.map +1 -1
- package/dist/email/templates/welcome.d.ts +2 -2
- package/dist/email/templates/welcome.d.ts.map +1 -1
- package/dist/email/templates/welcome.js +13 -20
- package/dist/email/templates/welcome.js.map +1 -1
- package/dist/email/templates/workspace-invitation.d.ts +2 -2
- package/dist/email/templates/workspace-invitation.d.ts.map +1 -1
- package/dist/email/templates/workspace-invitation.js +12 -26
- package/dist/email/templates/workspace-invitation.js.map +1 -1
- package/dist/env.d.ts +5 -10
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +41 -31
- package/dist/env.js.map +1 -1
- package/dist/identity/audit.d.ts +11 -24
- package/dist/identity/audit.d.ts.map +1 -1
- package/dist/identity/audit.js +13 -27
- package/dist/identity/audit.js.map +1 -1
- package/dist/identity/errors.d.ts +4 -12
- package/dist/identity/errors.d.ts.map +1 -1
- package/dist/identity/errors.js +2 -8
- package/dist/identity/errors.js.map +1 -1
- package/dist/identity/index.d.ts +5 -13
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +4 -12
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/service.d.ts +13 -47
- package/dist/identity/service.d.ts.map +1 -1
- package/dist/identity/service.js +31 -78
- package/dist/identity/service.js.map +1 -1
- package/dist/identity/types.d.ts +1 -4
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/identity/types.js +0 -3
- package/dist/identity/types.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -10
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +7 -18
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +45 -49
- package/dist/logger.js.map +1 -1
- package/dist/money.d.ts +95 -0
- package/dist/money.d.ts.map +1 -0
- package/dist/money.js +208 -0
- package/dist/money.js.map +1 -0
- package/dist/notifications/index.d.ts +9 -43
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +9 -49
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/triggers.d.ts +9 -32
- package/dist/notifications/triggers.d.ts.map +1 -1
- package/dist/notifications/triggers.js +21 -58
- package/dist/notifications/triggers.js.map +1 -1
- package/dist/notifications/types.d.ts +1 -10
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/notifications/types.js +0 -9
- package/dist/notifications/types.js.map +1 -1
- package/dist/prompt.d.ts +38 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +118 -0
- package/dist/prompt.js.map +1 -0
- package/dist/registry.d.ts +32 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +60 -0
- package/dist/registry.js.map +1 -0
- package/dist/request-context.d.ts +49 -0
- package/dist/request-context.d.ts.map +1 -0
- package/dist/request-context.js +100 -0
- package/dist/request-context.js.map +1 -0
- package/dist/storage/index.d.ts +65 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +109 -0
- package/dist/storage/index.js.map +1 -0
- package/package.json +74 -24
- package/src/attachments/errors.ts +18 -0
- package/src/attachments/index.ts +22 -0
- package/src/attachments/service.ts +178 -0
- package/src/attachments/types.ts +6 -0
- package/src/conversations/errors.ts +45 -0
- package/src/conversations/index.ts +39 -0
- package/src/conversations/service.ts +594 -0
- package/src/conversations/types.ts +15 -0
- package/src/db/client.ts +91 -0
- package/src/db/index.ts +3 -0
- package/src/db/migrations/0000_baseline.sql +652 -0
- package/src/db/migrations/0001_reconcile_chain_built_databases.sql +53 -0
- package/src/db/migrations/0002_webhook_claim_lease.sql +1 -0
- package/src/db/migrations/README.md +74 -36
- package/src/db/migrations/legacy-chain.json +197 -0
- package/src/db/migrations/meta/0000_snapshot.json +4182 -157
- package/src/db/migrations/meta/0002_snapshot.json +2478 -368
- package/src/db/migrations/meta/_journal.json +6 -279
- package/src/db/schema/agents.ts +57 -0
- package/src/db/schema/ai.ts +174 -0
- package/src/db/schema/auth.ts +183 -0
- package/src/db/schema/billing.ts +209 -0
- package/src/db/schema/feature-flags.ts +20 -0
- package/src/db/schema/identity.ts +250 -0
- package/src/db/schema/index.ts +12 -0
- package/src/db/schema/notifications.ts +31 -0
- package/src/db/schema/usage.ts +269 -0
- package/src/db/validate.ts +63 -0
- package/src/db/workspace-queries.ts +64 -0
- package/src/documents/classifier.ts +61 -0
- package/src/documents/errors.ts +44 -0
- package/src/documents/index.ts +24 -0
- package/src/documents/service.ts +256 -0
- package/src/documents/types.ts +24 -0
- package/src/email/brand.ts +24 -0
- package/src/email/index.ts +19 -0
- package/src/email/provider.ts +278 -0
- package/src/email/send.ts +169 -0
- package/src/email/senders.ts +292 -0
- package/src/email/templates/base-layout.tsx +145 -0
- package/src/email/templates/index.ts +28 -0
- package/src/email/templates/password-reset.tsx +72 -0
- package/src/email/templates/payment-failed.tsx +77 -0
- package/src/email/templates/quota-warning.tsx +118 -0
- package/src/email/templates/subscription-confirmed.tsx +91 -0
- package/src/email/templates/trial-expiry.tsx +124 -0
- package/src/email/templates/trial-warning.tsx +104 -0
- package/src/email/templates/verify-email.tsx +72 -0
- package/src/email/templates/welcome.tsx +64 -0
- package/src/email/templates/workspace-invitation.tsx +105 -0
- package/src/env.ts +180 -0
- package/src/identity/audit.ts +65 -0
- package/src/identity/errors.ts +44 -0
- package/src/identity/index.ts +26 -0
- package/src/identity/service.ts +202 -0
- package/src/identity/types.ts +28 -0
- package/src/index.ts +4 -0
- package/src/logger.ts +198 -0
- package/src/money.ts +270 -0
- package/src/notifications/index.ts +108 -0
- package/src/notifications/triggers.ts +158 -0
- package/src/notifications/types.ts +18 -0
- package/src/prompt.ts +142 -0
- package/src/registry.ts +75 -0
- package/src/request-context.ts +137 -0
- package/src/storage/index.ts +153 -0
- package/dist/db/schema/rag.d.ts +0 -171
- package/dist/db/schema/rag.d.ts.map +0 -1
- package/dist/db/schema/rag.js +0 -42
- package/dist/db/schema/rag.js.map +0 -1
- package/src/db/migrations/0000_sharp_night_nurse.sql +0 -52
- package/src/db/migrations/0001_hesitant_vapor.sql +0 -40
- package/src/db/migrations/0002_numerous_lady_vermin.sql +0 -235
- package/src/db/migrations/0003_mighty_jean_grey.sql +0 -37
- package/src/db/migrations/0004_cynical_grandmaster.sql +0 -2
- package/src/db/migrations/0005_careful_switch.sql +0 -8
- package/src/db/migrations/0006_tense_blue_marvel.sql +0 -16
- package/src/db/migrations/0007_next_squadron_sinister.sql +0 -1
- package/src/db/migrations/0008_powerful_scream.sql +0 -39
- package/src/db/migrations/0009_sad_ink.sql +0 -1
- package/src/db/migrations/0010_shocking_omega_flight.sql +0 -2
- package/src/db/migrations/0011_ambiguous_otto_octavius.sql +0 -151
- package/src/db/migrations/0011_hnsw_vector_index.sql +0 -17
- package/src/db/migrations/0012_user_profiles.sql +0 -30
- package/src/db/migrations/0013_trending_seasonal_columns.sql +0 -9
- package/src/db/migrations/0014_add_product_type_to_agents.sql +0 -6
- package/src/db/migrations/0015_new_v1_tables.sql +0 -149
- package/src/db/migrations/0016_document_types.sql +0 -30
- package/src/db/migrations/0017_document_metadata.sql +0 -2
- package/src/db/migrations/0018_identity_graph.sql +0 -200
- package/src/db/migrations/0019_db_driven_prompts.sql +0 -20
- package/src/db/migrations/0020_pending_extractions.sql +0 -35
- package/src/db/migrations/0021_rag_documents.sql +0 -39
- package/src/db/migrations/0022_user_quotas_usage_jsonb.sql +0 -70
- package/src/db/migrations/0023_user_facts_user_scoped_unique.sql +0 -17
- package/src/db/migrations/0024_user_memories_hnsw.sql +0 -23
- package/src/db/migrations/0025_audit_trigger_errcode.sql +0 -21
- package/src/db/migrations/0026_user_profile_snapshots_composite_pk.sql +0 -17
- package/src/db/migrations/0027_billing_settings_mnt_columns.sql +0 -54
- package/src/db/migrations/0028_trial_credits_normalized_email.sql +0 -37
- package/src/db/migrations/0029_usage_records_conversation_idx.sql +0 -13
- package/src/db/migrations/0030_pending_extractions_composite_idx.sql +0 -11
- package/src/db/migrations/0031_rag_documents_hnsw.sql +0 -16
- package/src/db/migrations/0032_rate_limit_unique_idx.sql +0 -16
- package/src/db/migrations/0033_pending_extractions_partial_idx.sql +0 -18
- package/src/db/migrations/0034_rate_limit_count.sql +0 -9
- package/src/db/migrations/0035_credit_reservations.sql +0 -24
- package/src/db/migrations/0036_executions_audit_jobs.sql +0 -96
- package/src/db/migrations/0037_rate_limit_minute_bucket.sql +0 -46
- package/src/db/migrations/0038_user_quotas_generic_usage.sql +0 -25
- package/src/db/migrations/0039_platform_admin_impersonation.sql +0 -27
- package/src/db/migrations/0040_ee_audit_chain.sql +0 -23
- package/src/db/migrations/meta/0001_snapshot.json +0 -631
- package/src/db/migrations/meta/0003_snapshot.json +0 -2488
- package/src/db/migrations/meta/0004_snapshot.json +0 -2500
- package/src/db/migrations/meta/0005_snapshot.json +0 -2548
- package/src/db/migrations/meta/0006_snapshot.json +0 -2650
- package/src/db/migrations/meta/0007_snapshot.json +0 -2657
- package/src/db/migrations/meta/0008_snapshot.json +0 -2719
- package/src/db/migrations/meta/0009_snapshot.json +0 -2726
- package/src/db/migrations/meta/0010_snapshot.json +0 -2739
- package/src/db/migrations/meta/0011_snapshot.json +0 -3886
package/dist/documents/errors.js
CHANGED
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Mirrors `@intelligo-dev/auth`'s `WorkspaceServiceError` exactly (see that
|
|
5
|
-
* file's doc comment for the full rationale): the documents service
|
|
6
|
-
* (./service.ts) throws this for every failure it recognizes rather
|
|
7
|
-
* than returning an ad-hoc `{ success, error }` envelope — that
|
|
8
|
-
* shaping is a transport concern (a Server Action, a route handler)
|
|
9
|
-
* and belongs one layer up, alongside revalidatePath/Sentry/i18n, none
|
|
10
|
-
* of which this package may depend on (core's dependency allowlist is
|
|
11
|
-
* empty — see tests/architecture/dependency-direction.test.ts).
|
|
2
|
+
* Thrown by the documents service for every failure it recognizes. Shaping
|
|
3
|
+
* it into a transport envelope is the caller's job.
|
|
12
4
|
*/
|
|
13
5
|
export class DocumentServiceError extends Error {
|
|
14
6
|
constructor(code, message, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/documents/errors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/documents/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAM7C,YACE,IAA8B,EAC9B,OAAe,EACf,OAA6B;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,OAAO,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,IAA4B,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACtD,CAAC;QACD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAc;IAEd,OAAO,KAAK,YAAY,oBAAoB,CAAC;AAC/C,CAAC"}
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* ownership and workspace/user access checks. See ./service.ts for
|
|
6
|
-
* the full module doc comment.
|
|
7
|
-
*
|
|
8
|
-
* Use via subpath import: @intelligo-dev/core/documents
|
|
9
|
-
*/
|
|
10
|
-
export { getUserDocuments, getDocument, saveDocument, deleteDocumentVersions, } from "./service";
|
|
11
|
-
export { DocumentServiceError, isDocumentServiceError, type DocumentServiceErrorCode, } from "./errors";
|
|
12
|
-
export type { DocumentActor, DocumentFilter, DocumentListItem } from "./types";
|
|
13
|
-
export { registerDocumentPatterns, classifyDocumentTitle, isProductDocument, listRegisteredDocumentPatterns, clearDocumentPatternRegistry, type DocumentPatternEntry, } from "./classifier";
|
|
1
|
+
export { getUserDocuments, getDocument, getDocumentVersions, saveDocument, deleteDocumentVersions, } from "./service.js";
|
|
2
|
+
export { DocumentServiceError, isDocumentServiceError, type DocumentServiceErrorCode, } from "./errors.js";
|
|
3
|
+
export type { DocumentActor, DocumentFilter, DocumentListItem } from "./types.js";
|
|
4
|
+
export { registerDocumentPatterns, classifyDocumentTitle, isProductDocument, listRegisteredDocumentPatterns, clearDocumentPatternRegistry, type DocumentPatternEntry, } from "./classifier.js";
|
|
14
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/documents/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/documents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE/E,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,8BAA8B,EAC9B,4BAA4B,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAC"}
|
package/dist/documents/index.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* Document lifecycle: save, list, read, delete versions, plus
|
|
5
|
-
* ownership and workspace/user access checks. See ./service.ts for
|
|
6
|
-
* the full module doc comment.
|
|
7
|
-
*
|
|
8
|
-
* Use via subpath import: @intelligo-dev/core/documents
|
|
9
|
-
*/
|
|
10
|
-
export { getUserDocuments, getDocument, saveDocument, deleteDocumentVersions, } from "./service";
|
|
11
|
-
export { DocumentServiceError, isDocumentServiceError, } from "./errors";
|
|
12
|
-
export { registerDocumentPatterns, classifyDocumentTitle, isProductDocument, listRegisteredDocumentPatterns, clearDocumentPatternRegistry, } from "./classifier";
|
|
1
|
+
export { getUserDocuments, getDocument, getDocumentVersions, saveDocument, deleteDocumentVersions, } from "./service.js";
|
|
2
|
+
export { DocumentServiceError, isDocumentServiceError, } from "./errors.js";
|
|
3
|
+
export { registerDocumentPatterns, classifyDocumentTitle, isProductDocument, listRegisteredDocumentPatterns, clearDocumentPatternRegistry, } from "./classifier.js";
|
|
13
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/documents/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/documents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GAEvB,MAAM,UAAU,CAAC;AAIlB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,8BAA8B,EAC9B,4BAA4B,GAE7B,MAAM,cAAc,CAAC"}
|
|
@@ -1,40 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Server-only persistence for AI-generated documents.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* `document_types`) always lived in @intelligo-dev/core's schema, only the
|
|
8
|
-
* service layer sat in a dissolving package.
|
|
9
|
-
*
|
|
10
|
-
* Callers pass a resolved actor (workspaceId, userId) rather than this
|
|
11
|
-
* module resolving one itself — @intelligo-dev/core cannot depend on
|
|
12
|
-
* @intelligo-dev/auth (see tests/architecture/dependency-direction.test.ts),
|
|
13
|
-
* so `requireWorkspace()` moved to the caller. Every query still
|
|
14
|
-
* filters by workspaceId AND userId internally; the actor is never
|
|
15
|
-
* trusted to have done that itself.
|
|
16
|
-
*
|
|
17
|
-
* Failure is reported by throwing `DocumentServiceError` (a small,
|
|
18
|
-
* typed code set) rather than returning a `{ success, error }`
|
|
19
|
-
* envelope — that shaping, plus any error-reporting side effect
|
|
20
|
-
* (Sentry, logging), is a transport concern the caller applies at the
|
|
21
|
-
* Server Action / route boundary.
|
|
22
|
-
*
|
|
23
|
-
* This module is SERVER-ONLY. Do not import from client components.
|
|
4
|
+
* Callers pass a resolved actor (workspaceId, userId); core cannot depend on
|
|
5
|
+
* `@intelligo-dev/auth`. Every query filters by both ids — the caller is
|
|
6
|
+
* never trusted to have done it. Failures throw `DocumentServiceError`.
|
|
24
7
|
*/
|
|
25
|
-
import type { DocumentActor, DocumentFilter, DocumentListItem } from "./types";
|
|
8
|
+
import type { DocumentActor, DocumentFilter, DocumentListItem } from "./types.js";
|
|
26
9
|
/**
|
|
27
|
-
*
|
|
28
|
-
* first. Uses DISTINCT ON to get the latest version of each document.
|
|
10
|
+
* The latest version of each of the actor's documents, newest first.
|
|
29
11
|
*/
|
|
30
12
|
export declare function getUserDocuments(actor: DocumentActor, filter?: DocumentFilter): Promise<DocumentListItem[]>;
|
|
31
13
|
/**
|
|
32
|
-
*
|
|
14
|
+
* The latest version of one document, scoped to the actor.
|
|
33
15
|
* Throws DocumentServiceError("not_found") if no such document exists.
|
|
34
16
|
*/
|
|
35
17
|
export declare function getDocument(actor: DocumentActor, id: string): Promise<DocumentListItem>;
|
|
36
18
|
/**
|
|
37
|
-
*
|
|
19
|
+
* Every version of a document, newest first — what a canvas version
|
|
20
|
+
* picker walks. Throws ("not_found") when the actor has no such id.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getDocumentVersions(actor: DocumentActor, id: string): Promise<DocumentListItem[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Saves a document as a new version.
|
|
38
25
|
* Throws DocumentServiceError("forbidden") if a document with this id
|
|
39
26
|
* already exists in the workspace under a different user.
|
|
40
27
|
*/
|
|
@@ -43,6 +30,12 @@ export declare function saveDocument(actor: DocumentActor, params: {
|
|
|
43
30
|
title: string;
|
|
44
31
|
content: string;
|
|
45
32
|
kind: string;
|
|
33
|
+
/**
|
|
34
|
+
* The conversation this was written in, stored on `metadata` so
|
|
35
|
+
* the artifacts page can link back to it. Optional: a document
|
|
36
|
+
* saved by a job or an import belongs to no conversation.
|
|
37
|
+
*/
|
|
38
|
+
conversationId?: string;
|
|
46
39
|
}): Promise<DocumentListItem>;
|
|
47
40
|
/**
|
|
48
41
|
* Delete all versions of a document created after `timestamp`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/documents/service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/documents/service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAkC/E;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,aAAa,EACpB,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAuB7B;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,aAAa,EACpB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,gBAAgB,CAAC,CAkB3B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,aAAa,EACpB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAiB7B;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE;IACN,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GACA,OAAO,CAAC,gBAAgB,CAAC,CA+C3B;AAID;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,aAAa,EACpB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA4C7B"}
|
|
@@ -1,32 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Server-only persistence for AI-generated documents.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* `document_types`) always lived in @intelligo-dev/core's schema, only the
|
|
8
|
-
* service layer sat in a dissolving package.
|
|
9
|
-
*
|
|
10
|
-
* Callers pass a resolved actor (workspaceId, userId) rather than this
|
|
11
|
-
* module resolving one itself — @intelligo-dev/core cannot depend on
|
|
12
|
-
* @intelligo-dev/auth (see tests/architecture/dependency-direction.test.ts),
|
|
13
|
-
* so `requireWorkspace()` moved to the caller. Every query still
|
|
14
|
-
* filters by workspaceId AND userId internally; the actor is never
|
|
15
|
-
* trusted to have done that itself.
|
|
16
|
-
*
|
|
17
|
-
* Failure is reported by throwing `DocumentServiceError` (a small,
|
|
18
|
-
* typed code set) rather than returning a `{ success, error }`
|
|
19
|
-
* envelope — that shaping, plus any error-reporting side effect
|
|
20
|
-
* (Sentry, logging), is a transport concern the caller applies at the
|
|
21
|
-
* Server Action / route boundary.
|
|
22
|
-
*
|
|
23
|
-
* This module is SERVER-ONLY. Do not import from client components.
|
|
4
|
+
* Callers pass a resolved actor (workspaceId, userId); core cannot depend on
|
|
5
|
+
* `@intelligo-dev/auth`. Every query filters by both ids — the caller is
|
|
6
|
+
* never trusted to have done it. Failures throw `DocumentServiceError`.
|
|
24
7
|
*/
|
|
25
8
|
import { and, desc, eq, gt } from "drizzle-orm";
|
|
26
|
-
import { db } from "../db";
|
|
27
|
-
import { documents } from "../db/schema";
|
|
28
|
-
import { classifyDocumentTitle, isProductDocument } from "./classifier";
|
|
29
|
-
import { DocumentServiceError } from "./errors";
|
|
9
|
+
import { db } from "../db/index.js";
|
|
10
|
+
import { documents } from "../db/schema/index.js";
|
|
11
|
+
import { classifyDocumentTitle, isProductDocument } from "./classifier.js";
|
|
12
|
+
import { DocumentServiceError } from "./errors.js";
|
|
13
|
+
/**
|
|
14
|
+
* `metadata` is untyped `jsonb` written by whoever saved the document,
|
|
15
|
+
* so it is read defensively: anything that is not a non-empty string
|
|
16
|
+
* is no link at all.
|
|
17
|
+
*/
|
|
18
|
+
function conversationIdOf(metadata) {
|
|
19
|
+
if (!metadata || typeof metadata !== "object")
|
|
20
|
+
return null;
|
|
21
|
+
const value = metadata.conversationId;
|
|
22
|
+
return typeof value === "string" && value.length > 0 ? value : null;
|
|
23
|
+
}
|
|
30
24
|
function toListItem(doc) {
|
|
31
25
|
return {
|
|
32
26
|
id: doc.id,
|
|
@@ -35,14 +29,11 @@ function toListItem(doc) {
|
|
|
35
29
|
createdAt: doc.createdAt.toISOString(),
|
|
36
30
|
agentLabel: classifyDocumentTitle(doc.title).agentLabel,
|
|
37
31
|
content: doc.content,
|
|
32
|
+
conversationId: conversationIdOf(doc.metadata),
|
|
38
33
|
};
|
|
39
34
|
}
|
|
40
|
-
// ---------------------------------------------------------------------------
|
|
41
|
-
// Query Operations
|
|
42
|
-
// ---------------------------------------------------------------------------
|
|
43
35
|
/**
|
|
44
|
-
*
|
|
45
|
-
* first. Uses DISTINCT ON to get the latest version of each document.
|
|
36
|
+
* The latest version of each of the actor's documents, newest first.
|
|
46
37
|
*/
|
|
47
38
|
export async function getUserDocuments(actor, filter) {
|
|
48
39
|
const uniqueDocs = await db
|
|
@@ -61,7 +52,7 @@ export async function getUserDocuments(actor, filter) {
|
|
|
61
52
|
return result;
|
|
62
53
|
}
|
|
63
54
|
/**
|
|
64
|
-
*
|
|
55
|
+
* The latest version of one document, scoped to the actor.
|
|
65
56
|
* Throws DocumentServiceError("not_found") if no such document exists.
|
|
66
57
|
*/
|
|
67
58
|
export async function getDocument(actor, id) {
|
|
@@ -75,11 +66,23 @@ export async function getDocument(actor, id) {
|
|
|
75
66
|
}
|
|
76
67
|
return toListItem(doc);
|
|
77
68
|
}
|
|
78
|
-
// ---------------------------------------------------------------------------
|
|
79
|
-
// Mutation Operations
|
|
80
|
-
// ---------------------------------------------------------------------------
|
|
81
69
|
/**
|
|
82
|
-
*
|
|
70
|
+
* Every version of a document, newest first — what a canvas version
|
|
71
|
+
* picker walks. Throws ("not_found") when the actor has no such id.
|
|
72
|
+
*/
|
|
73
|
+
export async function getDocumentVersions(actor, id) {
|
|
74
|
+
const rows = await db
|
|
75
|
+
.select()
|
|
76
|
+
.from(documents)
|
|
77
|
+
.where(and(eq(documents.id, id), eq(documents.workspaceId, actor.workspaceId), eq(documents.userId, actor.userId)))
|
|
78
|
+
.orderBy(desc(documents.createdAt));
|
|
79
|
+
if (rows.length === 0) {
|
|
80
|
+
throw new DocumentServiceError("not_found", "Document not found");
|
|
81
|
+
}
|
|
82
|
+
return rows.map(toListItem);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Saves a document as a new version.
|
|
83
86
|
* Throws DocumentServiceError("forbidden") if a document with this id
|
|
84
87
|
* already exists in the workspace under a different user.
|
|
85
88
|
*/
|
|
@@ -94,6 +97,11 @@ export async function saveDocument(actor, params) {
|
|
|
94
97
|
throw new DocumentServiceError("forbidden", "Document belongs to a different user");
|
|
95
98
|
}
|
|
96
99
|
}
|
|
100
|
+
// Every save writes a new version row, so an edit that does not resend
|
|
101
|
+
// the conversation link would drop it. Carry the known one forward.
|
|
102
|
+
const conversationId = params.conversationId ??
|
|
103
|
+
existingDocs.map((doc) => conversationIdOf(doc.metadata)).find(Boolean) ??
|
|
104
|
+
null;
|
|
97
105
|
const [newDocument] = await db
|
|
98
106
|
.insert(documents)
|
|
99
107
|
.values({
|
|
@@ -104,6 +112,7 @@ export async function saveDocument(actor, params) {
|
|
|
104
112
|
content: params.content,
|
|
105
113
|
kind: params.kind,
|
|
106
114
|
createdAt: new Date(),
|
|
115
|
+
metadata: conversationId ? { conversationId } : null,
|
|
107
116
|
})
|
|
108
117
|
.returning();
|
|
109
118
|
if (!newDocument) {
|
|
@@ -111,9 +120,6 @@ export async function saveDocument(actor, params) {
|
|
|
111
120
|
}
|
|
112
121
|
return toListItem(newDocument);
|
|
113
122
|
}
|
|
114
|
-
// ---------------------------------------------------------------------------
|
|
115
|
-
// Delete Operations
|
|
116
|
-
// ---------------------------------------------------------------------------
|
|
117
123
|
const MAX_DELETE_WINDOW_DAYS = 30;
|
|
118
124
|
/**
|
|
119
125
|
* Delete all versions of a document created after `timestamp`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/documents/service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/documents/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared types for the documents service.
|
|
3
|
-
*/
|
|
4
1
|
/** Resolved actor identity — every query is scoped to this pair. */
|
|
5
2
|
export type DocumentActor = {
|
|
6
3
|
workspaceId: string;
|
|
7
4
|
userId: string;
|
|
8
5
|
};
|
|
9
|
-
/**
|
|
10
|
-
* Document filter type
|
|
11
|
-
*/
|
|
12
6
|
export type DocumentFilter = {
|
|
13
7
|
type?: "all" | "report" | "text" | "code" | "sheet" | "image";
|
|
14
8
|
};
|
|
15
|
-
/**
|
|
16
|
-
* Document list item returned by getUserDocuments / getDocument /
|
|
17
|
-
* saveDocument / deleteDocumentVersions.
|
|
18
|
-
*/
|
|
19
9
|
export type DocumentListItem = {
|
|
20
10
|
id: string;
|
|
21
11
|
title: string;
|
|
@@ -23,5 +13,11 @@ export type DocumentListItem = {
|
|
|
23
13
|
createdAt: string;
|
|
24
14
|
agentLabel: string;
|
|
25
15
|
content: string | null;
|
|
16
|
+
/**
|
|
17
|
+
* The conversation this document was written in, when known. Read from
|
|
18
|
+
* `metadata.conversationId` rather than a column: a document may also be
|
|
19
|
+
* written from a job or an import.
|
|
20
|
+
*/
|
|
21
|
+
conversationId: string | null;
|
|
26
22
|
};
|
|
27
23
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/documents/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/documents/types.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;;OAIG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC"}
|
package/dist/documents/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/documents/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/documents/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whose emails these are. Every deployment sends as itself, so the name
|
|
3
|
+
* and the support address come from its environment, never from the
|
|
4
|
+
* framework:
|
|
5
|
+
*
|
|
6
|
+
* - `APP_NAME` — the product's name. Falls back to the display name in
|
|
7
|
+
* `EMAIL_FROM` ("Acme <noreply@acme.com>" → "Acme").
|
|
8
|
+
* - `SUPPORT_EMAIL` — where a reader can write back. Without it the
|
|
9
|
+
* footer offers no address rather than someone else's.
|
|
10
|
+
*/
|
|
11
|
+
export type EmailBrand = {
|
|
12
|
+
/** Empty when neither variable names one. */
|
|
13
|
+
name: string;
|
|
14
|
+
supportEmail: string | null;
|
|
15
|
+
};
|
|
16
|
+
export declare function emailBrand(): EmailBrand;
|
|
17
|
+
//# sourceMappingURL=brand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/email/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,UAAU,IAAI,UAAU,CAOvC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function emailBrand() {
|
|
2
|
+
const from = process.env.EMAIL_FROM?.trim() ?? "";
|
|
3
|
+
const display = /^"?([^"<]+?)"?\s*</.exec(from)?.[1]?.trim() ?? "";
|
|
4
|
+
return {
|
|
5
|
+
name: process.env.APP_NAME?.trim() || display,
|
|
6
|
+
supportEmail: process.env.SUPPORT_EMAIL?.trim() || null,
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=brand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/email/brand.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAClD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnE,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,OAAO;QAC7C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI;KACxD,CAAC;AACJ,CAAC"}
|
package/dist/email/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { sendEmail, type SendEmailParams, type SendEmailWithComponentParams, type SendEmailResult, } from "./send";
|
|
2
|
-
export { getEmailProvider, resetEmailProviderCache, type EmailProvider, type EmailProviderName, type EmailSendParams, type EmailTemplateRef, ResendProvider, LoopsProvider, ConsoleProvider, } from "./provider";
|
|
3
|
-
export * from "./templates";
|
|
4
|
-
export * from "./senders";
|
|
1
|
+
export { sendEmail, type SendEmailParams, type SendEmailWithComponentParams, type SendEmailResult, } from "./send.js";
|
|
2
|
+
export { getEmailProvider, resetEmailProviderCache, type EmailProvider, type EmailProviderName, type EmailSendParams, type EmailTemplateRef, ResendProvider, LoopsProvider, ConsoleProvider, } from "./provider.js";
|
|
3
|
+
export * from "./templates/index.js";
|
|
4
|
+
export * from "./senders.js";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/email/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { sendEmail, } from "./send";
|
|
2
|
-
export { getEmailProvider, resetEmailProviderCache, ResendProvider, LoopsProvider, ConsoleProvider, } from "./provider";
|
|
3
|
-
export * from "./templates";
|
|
4
|
-
export * from "./senders";
|
|
1
|
+
export { sendEmail, } from "./send.js";
|
|
2
|
+
export { getEmailProvider, resetEmailProviderCache, ResendProvider, LoopsProvider, ConsoleProvider, } from "./provider.js";
|
|
3
|
+
export * from "./templates/index.js";
|
|
4
|
+
export * from "./senders.js";
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/email/provider.d.ts
CHANGED
|
@@ -18,9 +18,6 @@ export interface EmailSendParams {
|
|
|
18
18
|
replyTo?: string;
|
|
19
19
|
template?: EmailTemplateRef;
|
|
20
20
|
}
|
|
21
|
-
/**
|
|
22
|
-
* Common interface every email provider must implement.
|
|
23
|
-
*/
|
|
24
21
|
export interface EmailProvider {
|
|
25
22
|
send(params: EmailSendParams): Promise<{
|
|
26
23
|
id: string;
|
|
@@ -51,7 +48,7 @@ export type EmailProviderName = "resend" | "loops" | "console";
|
|
|
51
48
|
/** Test-only: clear the cached provider so env changes take effect. */
|
|
52
49
|
export declare function resetEmailProviderCache(): void;
|
|
53
50
|
/**
|
|
54
|
-
*
|
|
51
|
+
* The email provider for this environment, cached after the first call.
|
|
55
52
|
*
|
|
56
53
|
* Priority:
|
|
57
54
|
* 1. EMAIL_PROVIDER env var → explicit selection (with API key validation)
|
|
@@ -60,9 +57,6 @@ export declare function resetEmailProviderCache(): void;
|
|
|
60
57
|
* 3. LOOPS_API_KEY → LoopsProvider (auto-detect; needs
|
|
61
58
|
* LOOPS_TRANSACTIONAL_ID_* mappings for the templates you use)
|
|
62
59
|
* 4. (none) → ConsoleProvider
|
|
63
|
-
*
|
|
64
|
-
* The provider instance is cached (singleton) so a new client is NOT created
|
|
65
|
-
* on every call.
|
|
66
60
|
*/
|
|
67
61
|
export declare function getEmailProvider(): EmailProvider;
|
|
68
62
|
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/email/provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/email/provider.ts"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD;AASD,qBAAa,cAAe,YAAW,aAAa;IAClD,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAIpB,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CA+B7D;AAaD,qBAAa,aAAc,YAAW,aAAa;IAE/C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,gBAAgB,CAAC;gBADjB,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAA;IAGnD,OAAO,CAAC,sBAAsB;IAWxB,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CA6D7D;AAED,qBAAa,eAAgB,YAAW,aAAa;IAC7C,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAW7D;AAED,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAI/D,uEAAuE;AACvE,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAoChD"}
|
package/dist/email/provider.js
CHANGED
|
@@ -5,23 +5,24 @@ function statusError(message, statusCode) {
|
|
|
5
5
|
err.statusCode = statusCode;
|
|
6
6
|
return err;
|
|
7
7
|
}
|
|
8
|
-
// ---------------------------------------------------------------------------
|
|
9
|
-
// ResendProvider
|
|
10
|
-
// ---------------------------------------------------------------------------
|
|
11
8
|
export class ResendProvider {
|
|
12
9
|
constructor(apiKey) {
|
|
13
10
|
this.client = new Resend(apiKey);
|
|
14
11
|
}
|
|
15
12
|
async send(params) {
|
|
13
|
+
// A sender is an address on a domain the deployment verified with
|
|
14
|
+
// Resend, which only the deployment knows.
|
|
15
|
+
if (!params.from) {
|
|
16
|
+
throw statusError(`No sender for "${params.subject}" — set EMAIL_FROM to an address on a domain verified with Resend, e.g. "Acme <noreply@acme.com>"`, 400);
|
|
17
|
+
}
|
|
16
18
|
const { data, error } = await this.client.emails.send({
|
|
17
|
-
from: params.from
|
|
19
|
+
from: params.from,
|
|
18
20
|
to: Array.isArray(params.to) ? params.to : [params.to],
|
|
19
21
|
subject: params.subject,
|
|
20
22
|
html: params.html,
|
|
21
23
|
replyTo: params.replyTo,
|
|
22
24
|
});
|
|
23
25
|
if (error) {
|
|
24
|
-
// Resend returns an error object rather than throwing
|
|
25
26
|
const err = new Error(error.message);
|
|
26
27
|
// Resend error names map to HTTP status categories
|
|
27
28
|
if (error.name === "validation_error" ||
|
|
@@ -33,9 +34,6 @@ export class ResendProvider {
|
|
|
33
34
|
return { id: data?.id ?? "unknown" };
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
|
-
// ---------------------------------------------------------------------------
|
|
37
|
-
// LoopsProvider
|
|
38
|
-
// ---------------------------------------------------------------------------
|
|
39
37
|
// Loops transactional emails are designed in the Loops dashboard and sent by
|
|
40
38
|
// template id — the API accepts no raw HTML and exactly one recipient per
|
|
41
39
|
// call. Template keys resolve to ids through (in order):
|
|
@@ -44,7 +42,6 @@ export class ResendProvider {
|
|
|
44
42
|
// e.g. "verify-email" → LOOPS_TRANSACTIONAL_ID_VERIFY_EMAIL)
|
|
45
43
|
// `from`/`replyTo` are ignored — the sender is configured per template in
|
|
46
44
|
// Loops itself.
|
|
47
|
-
// ---------------------------------------------------------------------------
|
|
48
45
|
const LOOPS_API_URL = "https://app.loops.so/api/v1/transactional";
|
|
49
46
|
export class LoopsProvider {
|
|
50
47
|
constructor(apiKey, transactionalIds) {
|
|
@@ -73,8 +70,8 @@ export class LoopsProvider {
|
|
|
73
70
|
.replace(/-/g, "_")} or pass a transactionalIds map to LoopsProvider.`, 400);
|
|
74
71
|
}
|
|
75
72
|
const recipients = Array.isArray(params.to) ? params.to : [params.to];
|
|
76
|
-
// Loops accepts
|
|
77
|
-
//
|
|
73
|
+
// Loops accepts one recipient per request. Sequential, so a failure
|
|
74
|
+
// surfaces with normal retry semantics in send.ts.
|
|
78
75
|
for (const email of recipients) {
|
|
79
76
|
const response = await fetch(LOOPS_API_URL, {
|
|
80
77
|
method: "POST",
|
|
@@ -104,9 +101,6 @@ export class LoopsProvider {
|
|
|
104
101
|
return { id: `loops:${transactionalId}` };
|
|
105
102
|
}
|
|
106
103
|
}
|
|
107
|
-
// ---------------------------------------------------------------------------
|
|
108
|
-
// ConsoleProvider (development fallback)
|
|
109
|
-
// ---------------------------------------------------------------------------
|
|
110
104
|
export class ConsoleProvider {
|
|
111
105
|
async send(params) {
|
|
112
106
|
const recipient = Array.isArray(params.to)
|
|
@@ -122,7 +116,7 @@ export function resetEmailProviderCache() {
|
|
|
122
116
|
cachedProvider = null;
|
|
123
117
|
}
|
|
124
118
|
/**
|
|
125
|
-
*
|
|
119
|
+
* The email provider for this environment, cached after the first call.
|
|
126
120
|
*
|
|
127
121
|
* Priority:
|
|
128
122
|
* 1. EMAIL_PROVIDER env var → explicit selection (with API key validation)
|
|
@@ -131,9 +125,6 @@ export function resetEmailProviderCache() {
|
|
|
131
125
|
* 3. LOOPS_API_KEY → LoopsProvider (auto-detect; needs
|
|
132
126
|
* LOOPS_TRANSACTIONAL_ID_* mappings for the templates you use)
|
|
133
127
|
* 4. (none) → ConsoleProvider
|
|
134
|
-
*
|
|
135
|
-
* The provider instance is cached (singleton) so a new client is NOT created
|
|
136
|
-
* on every call.
|
|
137
128
|
*/
|
|
138
129
|
export function getEmailProvider() {
|
|
139
130
|
if (cachedProvider) {
|
|
@@ -148,7 +139,7 @@ export function getEmailProvider() {
|
|
|
148
139
|
// Unknown value — warn and fall through to auto-detect
|
|
149
140
|
console.warn(`[Email] Unknown EMAIL_PROVIDER="${process.env.EMAIL_PROVIDER}", falling back to auto-detect`);
|
|
150
141
|
}
|
|
151
|
-
// Auto-detect from
|
|
142
|
+
// Auto-detect from the API keys set
|
|
152
143
|
const resendKey = process.env.RESEND_API_KEY;
|
|
153
144
|
if (resendKey) {
|
|
154
145
|
console.log("[Email] Using Resend provider");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/email/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/email/provider.ts"],"names":[],"mappings":"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"}
|