@elevasis/core 0.12.0 → 0.14.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/dist/index.d.ts +1 -1
- package/dist/index.js +9 -2
- package/dist/organization-model/index.d.ts +1 -1
- package/dist/organization-model/index.js +9 -2
- package/dist/test-utils/index.d.ts +480 -389
- package/dist/test-utils/index.js +28 -2
- package/package.json +1 -1
- package/src/_gen/__tests__/__snapshots__/contracts.md.snap +2324 -0
- package/src/auth/multi-tenancy/credentials/__tests__/encryption.test.ts +217 -216
- package/src/auth/multi-tenancy/credentials/server/encryption.ts +5 -19
- package/src/auth/multi-tenancy/credentials/server/kek-loader.ts +3 -13
- package/src/auth/multi-tenancy/permissions.ts +12 -5
- package/src/business/acquisition/activity-events.test.ts +250 -0
- package/src/business/acquisition/activity-events.ts +84 -0
- package/src/business/acquisition/api-schemas.test.ts +1180 -0
- package/src/business/acquisition/api-schemas.ts +456 -235
- package/src/business/acquisition/crm-state-actions.test.ts +160 -0
- package/src/business/acquisition/derive-actions.test.ts +518 -0
- package/src/business/acquisition/derive-actions.ts +103 -0
- package/src/business/acquisition/index.ts +51 -11
- package/src/business/acquisition/stateful.ts +30 -0
- package/src/business/acquisition/types.ts +44 -77
- package/src/execution/engine/index.ts +4 -1
- package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +1 -2
- package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +363 -361
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.test.ts +162 -186
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.test.ts +316 -338
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +204 -210
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.test.ts +88 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +141 -134
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +76 -75
- package/src/execution/engine/tools/integration/service.test.ts +34 -9
- package/src/execution/engine/tools/integration/service.ts +6 -3
- package/src/execution/engine/tools/lead-service-types.ts +90 -30
- package/src/execution/engine/tools/platform/acquisition/types.ts +266 -260
- package/src/execution/engine/tools/registry.ts +5 -4
- package/src/execution/engine/tools/tool-maps.ts +43 -21
- package/src/execution/engine/workflow/types.ts +11 -0
- package/src/organization-model/contracts.ts +4 -4
- package/src/organization-model/domains/navigation.ts +62 -62
- package/src/organization-model/domains/sales.ts +272 -0
- package/src/organization-model/organization-graph.mdx +2 -2
- package/src/organization-model/published.ts +21 -21
- package/src/organization-model/resolve.ts +21 -8
- package/src/platform/constants/versions.ts +1 -1
- package/src/reference/_generated/contracts.md +2324 -0
- package/src/scaffold-registry/index.ts +10 -9
- package/src/scaffold-registry/schema.ts +68 -62
- package/src/supabase/database.types.ts +2958 -2884
- package/src/test-utils/rls/RLSTestContext.ts +585 -553
package/dist/test-utils/index.js
CHANGED
|
@@ -1991,6 +1991,7 @@ var RLSTestContext = class {
|
|
|
1991
1991
|
throw new Error(`Failed to create membership: ${error.message}`);
|
|
1992
1992
|
}
|
|
1993
1993
|
this.createdIds.memberships.push(data.id);
|
|
1994
|
+
await this.assignSystemRole(data.id, role);
|
|
1994
1995
|
return {
|
|
1995
1996
|
id: data.id,
|
|
1996
1997
|
user_id: data.user_id,
|
|
@@ -1998,6 +1999,23 @@ var RLSTestContext = class {
|
|
|
1998
1999
|
role_slug: data.role_slug
|
|
1999
2000
|
};
|
|
2000
2001
|
}
|
|
2002
|
+
/**
|
|
2003
|
+
* Assign a system role to a membership via org_rol_assignments.
|
|
2004
|
+
* After the 2026-04-25 auth refactor, RLS policies read `effective_permissions[]`
|
|
2005
|
+
* (materialized by trigger from org_rol_assignments → org_rol_grants).
|
|
2006
|
+
* Without this assignment, role_slug is informational only and the membership
|
|
2007
|
+
* has zero permissions, causing all has_org_permission() checks to deny.
|
|
2008
|
+
*/
|
|
2009
|
+
async assignSystemRole(membershipId, slug) {
|
|
2010
|
+
const { data: roleDef, error: roleErr } = await this.adminClient.from("org_rol_definitions").select("id").is("organization_id", null).eq("slug", slug).single();
|
|
2011
|
+
if (roleErr || !roleDef) {
|
|
2012
|
+
throw new Error(`Failed to look up system role '${slug}': ${roleErr?.message ?? "not found"}`);
|
|
2013
|
+
}
|
|
2014
|
+
const { error: assignErr } = await this.adminClient.from("org_rol_assignments").insert({ membership_id: membershipId, role_id: roleDef.id });
|
|
2015
|
+
if (assignErr) {
|
|
2016
|
+
throw new Error(`Failed to assign system role '${slug}' to membership: ${assignErr.message}`);
|
|
2017
|
+
}
|
|
2018
|
+
}
|
|
2001
2019
|
/**
|
|
2002
2020
|
* Create a pre-provisioned organization membership (without WorkOS membership ID)
|
|
2003
2021
|
* Used for testing invitation flows where memberships are created before user accepts
|
|
@@ -2016,6 +2034,7 @@ var RLSTestContext = class {
|
|
|
2016
2034
|
throw new Error(`Failed to create pre-provisioned membership: ${error.message}`);
|
|
2017
2035
|
}
|
|
2018
2036
|
this.createdIds.memberships.push(data.id);
|
|
2037
|
+
await this.assignSystemRole(data.id, role);
|
|
2019
2038
|
return {
|
|
2020
2039
|
id: data.id,
|
|
2021
2040
|
user_id: data.user_id,
|
|
@@ -20457,9 +20476,16 @@ function deepMerge2(base, override) {
|
|
|
20457
20476
|
}
|
|
20458
20477
|
return result;
|
|
20459
20478
|
}
|
|
20460
|
-
function resolveOrganizationModel(override) {
|
|
20479
|
+
function resolveOrganizationModel(override, organizationId) {
|
|
20461
20480
|
const merged = deepMerge2(DEFAULT_ORGANIZATION_MODEL, override);
|
|
20462
|
-
|
|
20481
|
+
const model = OrganizationModelSchema.parse(merged);
|
|
20482
|
+
if (!model.sales?.pipelines || model.sales.pipelines.length === 0) {
|
|
20483
|
+
const orgLabel = "Organization";
|
|
20484
|
+
throw new Error(
|
|
20485
|
+
`${orgLabel} has no sales pipeline configuration. This indicates an incomplete provisioning state. Run org provisioning to seed defaults.`
|
|
20486
|
+
);
|
|
20487
|
+
}
|
|
20488
|
+
return model;
|
|
20463
20489
|
}
|
|
20464
20490
|
|
|
20465
20491
|
// src/test-utils/organization-model.ts
|