@cosmicdrift/kumiko-bundled-features 0.236.1 → 0.237.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +9 -9
- package/src/admin-shell/feature.ts +4 -0
- package/src/agent-tools/__tests__/agent-doc-lint.test.ts +53 -1
- package/src/audit/feature.ts +4 -0
- package/src/audit/handlers/details.query.ts +2 -0
- package/src/audit/handlers/list.query.ts +2 -0
- package/src/auth-email-password/handlers/change-password.write.ts +2 -0
- package/src/auth-email-password/handlers/confirm-account-unlock.write.ts +1 -0
- package/src/auth-email-password/handlers/invite-accept-with-login.write.ts +1 -0
- package/src/auth-email-password/handlers/invite-accept.write.ts +1 -0
- package/src/auth-email-password/handlers/invite-create.write.ts +2 -0
- package/src/auth-email-password/handlers/invite-signup-complete.write.ts +1 -0
- package/src/auth-email-password/handlers/login.write.ts +2 -0
- package/src/auth-email-password/handlers/logout.write.ts +2 -0
- package/src/auth-email-password/handlers/request-account-unlock.write.ts +2 -0
- package/src/auth-email-password/handlers/request-email-verification.write.ts +2 -0
- package/src/auth-email-password/handlers/request-password-reset.write.ts +2 -0
- package/src/auth-email-password/handlers/reset-password.write.ts +1 -0
- package/src/auth-email-password/handlers/self-registration-status.query.ts +2 -0
- package/src/auth-email-password/handlers/signup-confirm.write.ts +1 -0
- package/src/auth-email-password/handlers/signup-request.write.ts +2 -0
- package/src/auth-email-password/handlers/token-request-handler.ts +4 -0
- package/src/auth-email-password/handlers/verify-email.write.ts +1 -0
- package/src/auth-mfa/feature.ts +2 -0
- package/src/auth-mfa/handlers/disable.write.ts +3 -0
- package/src/auth-mfa/handlers/enable-confirm-preauth.write.ts +2 -0
- package/src/auth-mfa/handlers/enable-confirm.write.ts +2 -0
- package/src/auth-mfa/handlers/enable-start-preauth.write.ts +2 -0
- package/src/auth-mfa/handlers/enable-start.write.ts +2 -0
- package/src/auth-mfa/handlers/regenerate-recovery.write.ts +3 -0
- package/src/auth-mfa/handlers/status.query.ts +2 -0
- package/src/auth-mfa/handlers/verify.write.ts +2 -0
- package/src/auth-mfa/schema/user-mfa.ts +2 -0
- package/src/billing-foundation/handlers/create-checkout-session.write.ts +2 -0
- package/src/billing-foundation/handlers/create-portal-session.write.ts +2 -0
- package/src/billing-foundation/handlers/list-subscriptions.query.ts +2 -0
- package/src/billing-foundation/handlers/process-event.write.ts +1 -0
- package/src/cap-counter/entity.ts +2 -0
- package/src/cap-counter/feature.ts +7 -1
- package/src/cap-counter/handlers/get-counter.query.ts +2 -0
- package/src/cap-counter/handlers/increment-rolling.write.ts +1 -0
- package/src/cap-counter/handlers/increment.write.ts +1 -0
- package/src/cap-counter/handlers/mark-soft-warned.write.ts +1 -0
- package/src/cap-overview/handlers/caps-usage.query.ts +2 -0
- package/src/cap-overview/handlers/tenant-caps-list.query.ts +2 -0
- package/src/cap-overview/handlers/tenant-options.query.ts +2 -0
- package/src/channel-in-app/handlers/inbox.query.ts +2 -0
- package/src/channel-in-app/handlers/mark-all-read.write.ts +2 -0
- package/src/channel-in-app/handlers/mark-read.write.ts +2 -0
- package/src/channel-in-app/handlers/unread-count.query.ts +2 -0
- package/src/compliance-profiles/handlers/for-tenant.query.ts +2 -0
- package/src/compliance-profiles/handlers/list-profiles.query.ts +2 -0
- package/src/compliance-profiles/handlers/needs-profile.query.ts +2 -0
- package/src/compliance-profiles/handlers/set-profile.write.ts +2 -0
- package/src/compliance-profiles/handlers/sub-processors.query.ts +2 -0
- package/src/compliance-profiles-ops/handlers/tenants-missing-profile.query.ts +2 -0
- package/src/config/handlers/cascade.query.ts +2 -0
- package/src/config/handlers/readiness.query.ts +2 -0
- package/src/config/handlers/reset.write.ts +3 -0
- package/src/config/handlers/schema.query.ts +2 -0
- package/src/config/handlers/set.write.ts +2 -0
- package/src/config/handlers/values.query.ts +2 -0
- package/src/crypto-shredding/handlers/forget-subject.write.ts +3 -0
- package/src/custom-fields/entity.ts +2 -0
- package/src/custom-fields/feature.ts +2 -0
- package/src/custom-fields/handlers/clear-custom-field.write.ts +2 -0
- package/src/custom-fields/handlers/define-system-field.write.ts +2 -0
- package/src/custom-fields/handlers/define-tenant-field.write.ts +2 -0
- package/src/custom-fields/handlers/delete-system-field.write.ts +3 -0
- package/src/custom-fields/handlers/delete-tenant-field.write.ts +3 -0
- package/src/custom-fields/handlers/set-custom-field.write.ts +2 -0
- package/src/custom-fields/handlers/update-tenant-field.write.ts +2 -0
- package/src/data-retention/handlers/policy-for.query.ts +2 -0
- package/src/delivery/handlers/log.query.ts +2 -0
- package/src/delivery/handlers/preferences.query.ts +2 -0
- package/src/delivery/handlers/set-preference.write.ts +2 -0
- package/src/feature-toggles/handlers/list.query.ts +2 -0
- package/src/feature-toggles/handlers/registered.query.ts +2 -0
- package/src/feature-toggles/handlers/set.write.ts +2 -0
- package/src/file-derivatives/handlers/public-variant.query.ts +1 -0
- package/src/folders/entity.ts +4 -0
- package/src/folders/feature.ts +35 -5
- package/src/folders/handlers/clear-folder.write.ts +2 -0
- package/src/folders/handlers/delete-folder.write.ts +3 -0
- package/src/folders/handlers/set-folder.write.ts +2 -0
- package/src/form-draft/handlers/discard.write.ts +3 -0
- package/src/form-draft/handlers/get.query.ts +2 -0
- package/src/form-draft/handlers/list.query.ts +2 -0
- package/src/form-draft/handlers/save.write.ts +2 -0
- package/src/inbound-mail-foundation/handlers/connect-account.write.ts +2 -0
- package/src/inbound-mail-foundation/handlers/disconnect-account.write.ts +3 -0
- package/src/inbound-mail-foundation/handlers/ingest-message.write.ts +1 -0
- package/src/inbound-mail-foundation/handlers/list-accounts.query.ts +2 -0
- package/src/inbound-mail-foundation/handlers/list-messages.query.ts +2 -0
- package/src/inbound-mail-foundation/handlers/update-account.write.ts +2 -0
- package/src/jobs/feature.ts +4 -0
- package/src/jobs/handlers/catalog.query.ts +2 -0
- package/src/jobs/handlers/detail.query.ts +2 -0
- package/src/jobs/handlers/list.query.ts +2 -0
- package/src/jobs/handlers/retry.write.ts +2 -0
- package/src/jobs/handlers/trigger.write.ts +2 -0
- package/src/ledger/entity.ts +6 -0
- package/src/ledger/feature.ts +70 -10
- package/src/ledger/handlers/confirm-schedule-period.write.ts +2 -0
- package/src/ledger/handlers/create-transaction.write.ts +2 -0
- package/src/ledger/handlers/reports.query.ts +6 -0
- package/src/ledger/handlers/reverse-transaction.write.ts +2 -0
- package/src/managed-pages/feature.ts +4 -23
- package/src/managed-pages/handlers/branding.query.ts +2 -0
- package/src/managed-pages/handlers/by-slug.query.ts +2 -0
- package/src/managed-pages/handlers/by-tenant-published.query.ts +2 -0
- package/src/managed-pages/handlers/page-crud.ts +49 -0
- package/src/managed-pages/handlers/set.write.ts +2 -0
- package/src/managed-pages/table.ts +2 -0
- package/src/notes-history/entity.ts +2 -0
- package/src/notes-history/feature.ts +7 -1
- package/src/notes-history/handlers/add-note.write.ts +2 -0
- package/src/personal-access-tokens/feature.ts +2 -0
- package/src/personal-access-tokens/handlers/available-scopes.query.ts +2 -0
- package/src/personal-access-tokens/handlers/create.write.ts +2 -0
- package/src/personal-access-tokens/handlers/list.query.ts +2 -0
- package/src/personal-access-tokens/handlers/revoke.write.ts +3 -0
- package/src/rate-limiting/handlers/status.query.ts +2 -0
- package/src/readiness/handlers/status.query.ts +2 -0
- package/src/secrets/handlers/delete.write.ts +3 -0
- package/src/secrets/handlers/list.query.ts +2 -0
- package/src/secrets/handlers/set.write.ts +2 -0
- package/src/secrets/table.ts +2 -0
- package/src/seo/handlers/seo-config.query.ts +2 -0
- package/src/sessions/handlers/detail.query.ts +2 -0
- package/src/sessions/handlers/list.query.ts +2 -0
- package/src/sessions/handlers/mine.query.ts +2 -0
- package/src/sessions/handlers/revoke-all-for-user.write.ts +3 -0
- package/src/sessions/handlers/revoke-all-others.write.ts +3 -0
- package/src/sessions/handlers/revoke.write.ts +3 -0
- package/src/tags/entity.ts +4 -0
- package/src/tags/feature.ts +39 -6
- package/src/tags/handlers/assign-tag.write.ts +2 -0
- package/src/tags/handlers/create-tag.write.ts +2 -0
- package/src/tags/handlers/delete-tag.write.ts +3 -0
- package/src/tags/handlers/remove-tag.write.ts +2 -0
- package/src/tags/handlers/update-tag.write.ts +2 -0
- package/src/template-resolver/handlers/by-slug.query.ts +2 -0
- package/src/template-resolver/handlers/by-tenant.query.ts +2 -0
- package/src/template-resolver/handlers/collection-item.query.ts +4 -0
- package/src/template-resolver/handlers/collection-list.query.ts +4 -0
- package/src/template-resolver/handlers/collection-set.write.ts +4 -0
- package/src/template-resolver/handlers/find-by-id.query.ts +2 -0
- package/src/template-resolver/handlers/list.query.ts +2 -0
- package/src/template-resolver/handlers/set.write.ts +2 -0
- package/src/template-resolver/handlers/toggle-status.write.ts +12 -3
- package/src/template-resolver/handlers/upsert-system.write.ts +2 -0
- package/src/template-resolver/handlers/upsert-tenant.write.ts +2 -0
- package/src/tenant/feature.ts +15 -3
- package/src/tenant/handlers/active-tenant-ids.query.ts +2 -0
- package/src/tenant/handlers/add-member.write.ts +2 -0
- package/src/tenant/handlers/cancel-invitation.write.ts +2 -0
- package/src/tenant/handlers/create.write.ts +2 -0
- package/src/tenant/handlers/invitations.query.ts +2 -0
- package/src/tenant/handlers/list.query.ts +2 -0
- package/src/tenant/handlers/me.query.ts +2 -0
- package/src/tenant/handlers/members.query.ts +2 -0
- package/src/tenant/handlers/memberships.query.ts +2 -0
- package/src/tenant/handlers/remove-member.write.ts +3 -0
- package/src/tenant/handlers/resolve-user-ids.query.ts +1 -0
- package/src/tenant/handlers/team-list.query.ts +2 -0
- package/src/tenant/handlers/toggle-enabled.write.ts +3 -0
- package/src/tenant/handlers/update-member-roles.write.ts +2 -0
- package/src/tenant/handlers/update.write.ts +2 -0
- package/src/tenant/schema/tenant.ts +2 -0
- package/src/tenant-lifecycle/handlers/cancel-destruction.write.ts +2 -0
- package/src/tenant-lifecycle/handlers/request-destruction.write.ts +3 -0
- package/src/tier-engine/entity.ts +2 -0
- package/src/tier-engine/feature.ts +25 -3
- package/src/tier-engine/handlers/active-tier.query.ts +2 -0
- package/src/tier-engine/handlers/get-tenant-tier.query.ts +2 -0
- package/src/tier-engine/handlers/set-tenant-tier.write.ts +2 -0
- package/src/user/handlers/create.write.ts +2 -0
- package/src/user/handlers/detail.query.ts +2 -0
- package/src/user/handlers/find-for-auth.query.ts +1 -0
- package/src/user/handlers/list.query.ts +2 -0
- package/src/user/handlers/me.query.ts +2 -0
- package/src/user/handlers/update.write.ts +2 -0
- package/src/user/schema/user.ts +2 -0
- package/src/user-data-rights/feature.ts +2 -0
- package/src/user-data-rights/handlers/cancel-deletion.write.ts +2 -0
- package/src/user-data-rights/handlers/confirm-deletion-by-token.write.ts +1 -0
- package/src/user-data-rights/handlers/download-attempt-list.query.ts +6 -1
- package/src/user-data-rights/handlers/download-by-job.query.ts +2 -0
- package/src/user-data-rights/handlers/download-by-token.query.ts +1 -0
- package/src/user-data-rights/handlers/export-job-detail.query.ts +2 -0
- package/src/user-data-rights/handlers/export-job-list.query.ts +2 -0
- package/src/user-data-rights/handlers/export-status.query.ts +2 -0
- package/src/user-data-rights/handlers/lift-restriction.write.ts +2 -0
- package/src/user-data-rights/handlers/list-download-attempts.query.ts +2 -0
- package/src/user-data-rights/handlers/my-audit-log.query.ts +2 -0
- package/src/user-data-rights/handlers/request-deletion-by-email.write.ts +2 -0
- package/src/user-data-rights/handlers/request-deletion.write.ts +3 -0
- package/src/user-data-rights/handlers/request-export.write.ts +2 -0
- package/src/user-data-rights/handlers/restrict-account.write.ts +3 -0
- package/src/user-data-rights/handlers/run-forget-cleanup.write.ts +1 -0
- package/src/user-data-rights/schema/download-attempt.ts +2 -0
- package/src/user-data-rights/schema/export-job.ts +2 -0
- package/src/user-profile/handlers/change-email.write.ts +2 -0
- package/src/workflow-runner/handlers/resume-run.write.ts +1 -0
|
@@ -5,4 +5,6 @@ import { exportJobEntity } from "../schema/export-job";
|
|
|
5
5
|
export const exportJobDetailQuery = defineEntityDetailHandler("export-job", exportJobEntity, {
|
|
6
6
|
access: { roles: access.systemAdmin },
|
|
7
7
|
crossTenant: true,
|
|
8
|
+
description:
|
|
9
|
+
"Read-only cross-tenant detail view of one GDPR data-export job for the system-admin inspector, showing its lifecycle timestamps, storage key, byte count and error message.",
|
|
8
10
|
});
|
|
@@ -6,4 +6,6 @@ import { exportJobEntity } from "../schema/export-job";
|
|
|
6
6
|
export const exportJobListQuery = defineEntityListHandler("export-job", exportJobEntity, {
|
|
7
7
|
access: { roles: access.systemAdmin },
|
|
8
8
|
crossTenant: true,
|
|
9
|
+
description:
|
|
10
|
+
"Read-only cross-tenant list of GDPR Art. 20 data-export jobs for the system-admin inspector; use export-status instead when a user asks about their own export.",
|
|
9
11
|
});
|
|
@@ -33,6 +33,8 @@ export const exportStatusQuery = defineQueryHandler({
|
|
|
33
33
|
name: "export-status",
|
|
34
34
|
schema: z.object({}),
|
|
35
35
|
access: { openToAll: true },
|
|
36
|
+
description:
|
|
37
|
+
"Returns the calling user's own most recent data-export job with its status, expiry and error, or hasJob false, for polling after a request-export while the job is still running.",
|
|
36
38
|
handler: async (query, ctx) => {
|
|
37
39
|
// ctx.db.raw weil tenant-agnostisch — ein User der aus Tenant B
|
|
38
40
|
// pollt, sieht den aus Tenant A erstellten Job.
|
|
@@ -33,6 +33,8 @@ export const liftRestrictionWrite = defineWriteHandler({
|
|
|
33
33
|
name: "lift-restriction",
|
|
34
34
|
schema: z.object({ userId: z.string().uuid() }),
|
|
35
35
|
access: { roles: access.admin },
|
|
36
|
+
description:
|
|
37
|
+
"Lifts a GDPR Art. 18 processing restriction on the named user and returns the account to active; operator-only, because a restricted user's own session is rejected and cannot reach this endpoint.",
|
|
36
38
|
handler: async (event, ctx) => {
|
|
37
39
|
const targetUserId = event.payload.userId;
|
|
38
40
|
|
|
@@ -23,6 +23,8 @@ export const listDownloadAttemptsQuery = defineQueryHandler({
|
|
|
23
23
|
message: "`from` must be less than or equal to `to`",
|
|
24
24
|
}),
|
|
25
25
|
access: { roles: ["Admin", "SystemAdmin"] },
|
|
26
|
+
description:
|
|
27
|
+
"Lists invalid export-download attempts inside the caller's own tenant, filterable by failure result, source IP and time range, for a data protection officer triaging brute-force probing of download links.",
|
|
26
28
|
handler: async (query, ctx) => {
|
|
27
29
|
const p = query.payload;
|
|
28
30
|
const where: WhereObject = { tenantId: query.user.tenantId };
|
|
@@ -26,6 +26,8 @@ export const myAuditLogQuery = defineQueryHandler({
|
|
|
26
26
|
path: ["from"],
|
|
27
27
|
}),
|
|
28
28
|
access: { openToAll: true },
|
|
29
|
+
description:
|
|
30
|
+
"Returns the calling user's own event-store entries across all their tenant memberships, paged and filterable by aggregate type, event type and time range, for the GDPR Art. 15 self-disclosure; it can never read another user's history.",
|
|
29
31
|
handler: async (query, ctx) => {
|
|
30
32
|
const p = query.payload;
|
|
31
33
|
|
|
@@ -60,6 +60,8 @@ export function createRequestDeletionByEmailHandler(opts: RequestDeletionByEmail
|
|
|
60
60
|
name: "request-deletion-by-email",
|
|
61
61
|
schema: z.object({ email: z.email() }),
|
|
62
62
|
access: { roles: ["anonymous", "Member", "User", "TenantAdmin", "SystemAdmin"] },
|
|
63
|
+
description:
|
|
64
|
+
"Mails an account-deletion verification link to the given address, for a user who wants to be erased but can no longer log in; it answers identically whether or not the address belongs to an active account and never returns the link.",
|
|
63
65
|
// Defense-in-depth gegen Email-Probing auf dem anonymen Endpoint.
|
|
64
66
|
rateLimit: { per: "ip", limit: 10, windowSeconds: 60 },
|
|
65
67
|
handler: async (event, ctx) => {
|
|
@@ -44,6 +44,9 @@ export function createRequestDeletionHandler(opts: RequestDeletionOptions = {})
|
|
|
44
44
|
name: "request-deletion",
|
|
45
45
|
schema: z.object({}),
|
|
46
46
|
access: { openToAll: true },
|
|
47
|
+
description:
|
|
48
|
+
"Starts the GDPR Art. 17 deletion of the calling user's own account by arming the grace period from the tenant compliance profile and mailing a confirmation, after which only cancel-deletion can stop the erasure.",
|
|
49
|
+
agent: { risk: "high" },
|
|
47
50
|
handler: async (event, ctx) => {
|
|
48
51
|
const res = await startDeletionGracePeriod(ctx, event.user.id, event.user.tenantId);
|
|
49
52
|
if (!res.ok) return writeFailure(res.error);
|
|
@@ -60,6 +60,8 @@ export const requestExportWrite = defineWriteHandler({
|
|
|
60
60
|
name: "request-export",
|
|
61
61
|
schema: z.object({}),
|
|
62
62
|
access: { openToAll: true },
|
|
63
|
+
description:
|
|
64
|
+
"Queues a GDPR Art. 15 and 20 data export for the calling user and returns its job id, handing back the running job with isExisting true instead of a second one when an export is already pending.",
|
|
63
65
|
handler: async (event, ctx) => {
|
|
64
66
|
const userId = event.user.id;
|
|
65
67
|
const T = getTemporal();
|
|
@@ -46,6 +46,9 @@ export const restrictAccountWrite = defineWriteHandler({
|
|
|
46
46
|
name: "restrict-account",
|
|
47
47
|
schema: z.object({ userId: z.string().uuid().optional() }),
|
|
48
48
|
access: { openToAll: true },
|
|
49
|
+
description:
|
|
50
|
+
"Freezes an account under GDPR Art. 18 by flipping it to restricted and revoking all of its live sessions, locking the user out until an admin calls lift-restriction; targets the caller by default, an admin may name another userId.",
|
|
51
|
+
agent: { risk: "high" },
|
|
49
52
|
handler: async (event, ctx) => {
|
|
50
53
|
const targetUserId = event.payload.userId ?? event.user.id;
|
|
51
54
|
if (targetUserId !== event.user.id) {
|
|
@@ -28,6 +28,7 @@ export function createRunForgetCleanupHandler(opts: RunForgetCleanupOptions = {}
|
|
|
28
28
|
name: "run-forget-cleanup",
|
|
29
29
|
schema: z.object({}),
|
|
30
30
|
access: { roles: access.privileged },
|
|
31
|
+
agent: { expose: false },
|
|
31
32
|
handler: async (_event, ctx) => {
|
|
32
33
|
if (!ctx.registry) {
|
|
33
34
|
return writeFailure(
|
|
@@ -12,6 +12,8 @@ import {
|
|
|
12
12
|
export const downloadAttemptEntity = createEntity({
|
|
13
13
|
table: "read_download_attempts",
|
|
14
14
|
idType: "uuid",
|
|
15
|
+
description:
|
|
16
|
+
"One rejected attempt to fetch a GDPR data-export download, recording the failure result, the path used (magic-link token or logged-in job id), the source IP, user agent and time, so brute-force probing of download links is visible.",
|
|
15
17
|
fields: {
|
|
16
18
|
// notFound | expired | failed | signedUrlNotSupported
|
|
17
19
|
result: createTextField({ required: true, maxLength: 32 }),
|
|
@@ -64,6 +64,8 @@ const EXPORT_JOB_STATUS_OPTIONS = [
|
|
|
64
64
|
export const exportJobEntity = createEntity({
|
|
65
65
|
table: "read_export_jobs",
|
|
66
66
|
idType: "uuid",
|
|
67
|
+
description:
|
|
68
|
+
"One user's GDPR Art. 20 data-export request and its lifecycle: who asked, from which tenant, the pending/running/done/failed status, the timestamps, the download storage key and expiry, and any error the export worker hit.",
|
|
67
69
|
|
|
68
70
|
fields: {
|
|
69
71
|
// Tenant-agnostisch: Wert wird beim Schreiben gesetzt (Framework
|
|
@@ -37,6 +37,8 @@ export const changeEmailWrite = defineWriteHandler({
|
|
|
37
37
|
newEmail: z.email(),
|
|
38
38
|
}),
|
|
39
39
|
access: { roles: access.authenticated },
|
|
40
|
+
description:
|
|
41
|
+
"Replaces the signed-in caller's own email address after re-checking their current password, refusing an unchanged or already-taken address and clearing the verified flag so the app can re-run email verification.",
|
|
40
42
|
handler: async (event, ctx) => {
|
|
41
43
|
const systemUser = createSystemUser(event.user.tenantId);
|
|
42
44
|
|