clivly 0.9.5 → 0.9.6

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.
Files changed (62) hide show
  1. package/README.md +7 -0
  2. package/core-entity-config.cjs +1 -1
  3. package/core-entity-config.mjs +1 -1
  4. package/core-mappings-config.cjs +1 -1
  5. package/core-mappings-config.mjs +1 -1
  6. package/core-sync-engine.cjs +1 -1
  7. package/core-sync-engine.mjs +1 -1
  8. package/core-view-compiler.cjs +1 -1
  9. package/core-view-compiler.mjs +1 -1
  10. package/core.cjs +13 -7
  11. package/core.d.cts +2 -2
  12. package/core.d.mts +2 -2
  13. package/core.mjs +8 -8
  14. package/drizzle.cjs +19 -2
  15. package/drizzle.d.cts +1 -1
  16. package/drizzle.d.mts +1 -1
  17. package/drizzle.mjs +19 -2
  18. package/{entity-config-B74SPOUZ.mjs → entity-config-CusbTOJ1.mjs} +1 -1
  19. package/{entity-config-7sGCk_nw.cjs → entity-config-DE30_RpU.cjs} +1 -1
  20. package/index.cjs +9 -8
  21. package/index.mjs +9 -8
  22. package/internal-BQ47iN6f.cjs +259 -0
  23. package/internal-ChufvXE6.mjs +212 -0
  24. package/{internal-o2M7FGlR.d.mts → internal-CvlFk3KC.d.mts} +82 -2
  25. package/{internal-wCXSELDN.d.cts → internal-DGUOLQAq.d.cts} +82 -2
  26. package/internal-entity-config.cjs +1 -1
  27. package/internal-entity-config.mjs +1 -1
  28. package/internal-entity-heuristics.cjs +1 -1
  29. package/internal-entity-heuristics.mjs +1 -1
  30. package/internal-mappings-config.cjs +1 -1
  31. package/internal-mappings-config.mjs +1 -1
  32. package/internal-sync-engine.cjs +1 -1
  33. package/internal-sync-engine.mjs +1 -1
  34. package/internal-view-compiler.cjs +1 -1
  35. package/internal-view-compiler.mjs +1 -1
  36. package/internal.cjs +13 -7
  37. package/internal.d.cts +2 -2
  38. package/internal.d.mts +2 -2
  39. package/internal.mjs +8 -8
  40. package/{mappings-config-DQS_s4dg.mjs → mappings-config-7qQ47p9K.mjs} +1 -1
  41. package/{mappings-config-CLyEg0sf.cjs → mappings-config-CjCmT-aU.cjs} +1 -1
  42. package/{namespace-probe-Cn7voAd0.d.mts → namespace-probe-Ckn9yJ6F.d.mts} +45 -2
  43. package/{namespace-probe-BoGI18dQ.d.cts → namespace-probe-DaTJINS-.d.cts} +45 -2
  44. package/package.json +1 -1
  45. package/{projection-Dz6_i1-w.cjs → projection-DEwL-D8R.cjs} +6 -0
  46. package/{projection-CSGJbZlZ.mjs → projection-hnPSgH6G.mjs} +1 -1
  47. package/{projection-sql-BgnfiGqF.mjs → projection-sql-9zzTVGvf.mjs} +34 -2
  48. package/{projection-sql-Cl1qIn8m.cjs → projection-sql-iHy-Cx6V.cjs} +45 -1
  49. package/{sdk-DYBDR939.mjs → sdk-Dkq6ELkf.mjs} +32 -8
  50. package/{sdk-CM1UO-I7.cjs → sdk-w8Kv_XnW.cjs} +32 -8
  51. package/sdk.cjs +2 -2
  52. package/sdk.d.cts +2 -2
  53. package/sdk.d.mts +2 -2
  54. package/sdk.mjs +2 -2
  55. package/{sync-engine-C4A5jgA4.cjs → sync-engine-BLgwLpR6.cjs} +1 -1
  56. package/{sync-engine-Dt5QQSKO.mjs → sync-engine-B_IzoUSx.mjs} +1 -1
  57. package/{view-compiler-B5nDal14.cjs → view-compiler-BHI5E4QI.cjs} +2 -2
  58. package/{view-compiler-CSYwEWf5.mjs → view-compiler-D_6gfXFr.mjs} +2 -2
  59. package/vite.d.cts +1 -1
  60. package/vite.d.mts +1 -1
  61. package/internal-CykXpEGk.mjs +0 -68
  62. package/internal-DqduZU3l.cjs +0 -97
package/README.md CHANGED
@@ -298,6 +298,13 @@ above it fails to load. A framework the CLI does not recognise shows it as
298
298
  skipped rather than passed — there is nowhere known to look, and a green step
299
299
  for an unasked question is what made this worth adding.
300
300
 
301
+ **Sync trigger URL** distinguishes three states, which it previously could not:
302
+ a real URL passes, no URL at all warns, and the
303
+ `https://<yourDomain.com>/api/clivly/tick` template that `clivly login` writes
304
+ into `.env` reports as *still the scaffolded placeholder* — a value that is
305
+ present but cannot resolve. Reading that as "not set" sent people hunting for a
306
+ missing variable sitting in their own `.env`.
307
+
301
308
  If the Workspace section reads
302
309
  `⚠️ This Clivly server does not report setup progress`, or names a rejected key
303
310
  or an unreachable host, that means the question could not be asked — not that
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_entity_config = require("./entity-config-7sGCk_nw.cjs");
2
+ const require_entity_config = require("./entity-config-DE30_RpU.cjs");
3
3
  //#region src/core-entity-config.ts
4
4
  require("./deprecate-subpath-B9ngvizt.cjs").warnDeprecatedSubpath("clivly/core/entity-config", "clivly/internal/entity-config");
5
5
  //#endregion
@@ -1,4 +1,4 @@
1
- import { a as MATERIALIZING_CONCEPTS, c as entitiesConfigSchema, d as relationshipSchema, f as relationshipsSchema, i as ClivlyConfigError, l as filterSchema, n as CRM_CONCEPTS, o as customObjectDeclarations, p as validateEntitiesConfig, r as CUSTOM_CONCEPT, s as defineClivlyConfig, t as CANONICAL_FIELDS, u as projectionFields } from "./entity-config-B74SPOUZ.mjs";
1
+ import { a as MATERIALIZING_CONCEPTS, c as entitiesConfigSchema, d as relationshipSchema, f as relationshipsSchema, i as ClivlyConfigError, l as filterSchema, n as CRM_CONCEPTS, o as customObjectDeclarations, p as validateEntitiesConfig, r as CUSTOM_CONCEPT, s as defineClivlyConfig, t as CANONICAL_FIELDS, u as projectionFields } from "./entity-config-CusbTOJ1.mjs";
2
2
  import { t as warnDeprecatedSubpath } from "./deprecate-subpath-CmvZtCpE.mjs";
3
3
  //#region src/core-entity-config.ts
4
4
  warnDeprecatedSubpath("clivly/core/entity-config", "clivly/internal/entity-config");
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_mappings_config = require("./mappings-config-CLyEg0sf.cjs");
2
+ const require_mappings_config = require("./mappings-config-CjCmT-aU.cjs");
3
3
  const require_deprecate_subpath = require("./deprecate-subpath-B9ngvizt.cjs");
4
4
  require("./internal-mappings-config.cjs");
5
5
  //#region src/core-mappings-config.ts
@@ -1,4 +1,4 @@
1
- import { n as mappingsToEntitiesConfig, t as entitiesToMappings } from "./mappings-config-DQS_s4dg.mjs";
1
+ import { n as mappingsToEntitiesConfig, t as entitiesToMappings } from "./mappings-config-7qQ47p9K.mjs";
2
2
  import { t as warnDeprecatedSubpath } from "./deprecate-subpath-CmvZtCpE.mjs";
3
3
  import "./internal-mappings-config.mjs";
4
4
  //#region src/core-mappings-config.ts
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_deprecate_subpath = require("./deprecate-subpath-B9ngvizt.cjs");
3
- const require_sync_engine = require("./sync-engine-C4A5jgA4.cjs");
3
+ const require_sync_engine = require("./sync-engine-BLgwLpR6.cjs");
4
4
  require("./internal-sync-engine.cjs");
5
5
  //#region src/core-sync-engine.ts
6
6
  require_deprecate_subpath.warnDeprecatedSubpath("clivly/core/sync-engine", "clivly/internal/sync-engine");
@@ -1,5 +1,5 @@
1
1
  import { t as warnDeprecatedSubpath } from "./deprecate-subpath-CmvZtCpE.mjs";
2
- import { i as runSync, n as previewSync, r as reconcile, t as computeSampleWarnings } from "./sync-engine-Dt5QQSKO.mjs";
2
+ import { i as runSync, n as previewSync, r as reconcile, t as computeSampleWarnings } from "./sync-engine-B_IzoUSx.mjs";
3
3
  import "./internal-sync-engine.mjs";
4
4
  //#region src/core-sync-engine.ts
5
5
  warnDeprecatedSubpath("clivly/core/sync-engine", "clivly/internal/sync-engine");
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_deprecate_subpath = require("./deprecate-subpath-B9ngvizt.cjs");
3
- const require_view_compiler = require("./view-compiler-B5nDal14.cjs");
3
+ const require_view_compiler = require("./view-compiler-BHI5E4QI.cjs");
4
4
  require("./internal-view-compiler.cjs");
5
5
  //#region src/core-view-compiler.ts
6
6
  require_deprecate_subpath.warnDeprecatedSubpath("clivly/core/view-compiler", "clivly/internal/view-compiler");
@@ -1,5 +1,5 @@
1
1
  import { t as warnDeprecatedSubpath } from "./deprecate-subpath-CmvZtCpE.mjs";
2
- import { a as explainViewExecutionError, i as explainEntitiesConfig, n as compileEntityView, r as compileEntityViews, t as DEFAULT_VIEW_PREFIX } from "./view-compiler-CSYwEWf5.mjs";
2
+ import { a as explainViewExecutionError, i as explainEntitiesConfig, n as compileEntityView, r as compileEntityViews, t as DEFAULT_VIEW_PREFIX } from "./view-compiler-D_6gfXFr.mjs";
3
3
  import "./internal-view-compiler.mjs";
4
4
  //#region src/core-view-compiler.ts
5
5
  warnDeprecatedSubpath("clivly/core/view-compiler", "clivly/internal/view-compiler");
package/core.cjs CHANGED
@@ -1,14 +1,14 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_projection = require("./projection-Dz6_i1-w.cjs");
3
- const require_entity_config = require("./entity-config-7sGCk_nw.cjs");
4
- const require_mappings_config = require("./mappings-config-CLyEg0sf.cjs");
2
+ const require_projection = require("./projection-DEwL-D8R.cjs");
3
+ const require_entity_config = require("./entity-config-DE30_RpU.cjs");
4
+ const require_mappings_config = require("./mappings-config-CjCmT-aU.cjs");
5
5
  const require_deprecate_subpath = require("./deprecate-subpath-B9ngvizt.cjs");
6
6
  const require_auth_adapter = require("./auth-adapter-CiEXcweZ.cjs");
7
7
  const require_mapping_form = require("./mapping-form-BpfON_ME.cjs");
8
- const require_internal = require("./internal-DqduZU3l.cjs");
9
- const require_projection_sql = require("./projection-sql-Cl1qIn8m.cjs");
10
- const require_view_compiler = require("./view-compiler-B5nDal14.cjs");
11
- const require_sync_engine = require("./sync-engine-C4A5jgA4.cjs");
8
+ const require_internal = require("./internal-BQ47iN6f.cjs");
9
+ const require_projection_sql = require("./projection-sql-iHy-Cx6V.cjs");
10
+ const require_view_compiler = require("./view-compiler-BHI5E4QI.cjs");
11
+ const require_sync_engine = require("./sync-engine-BLgwLpR6.cjs");
12
12
  //#region src/core.ts
13
13
  require_deprecate_subpath.warnDeprecatedSubpath("clivly/core", "clivly/sdk", "Import \"defineClivlyConfig\" and its config types from \"clivly/sdk\"; import everything else from \"clivly/internal\" (no stability guarantee — see STABILITY.md).");
14
14
  //#endregion
@@ -18,6 +18,8 @@ exports.CRM_CONCEPTS = require_entity_config.CRM_CONCEPTS;
18
18
  exports.ClivlyConfigError = require_entity_config.ClivlyConfigError;
19
19
  exports.DEFAULT_VIEW_PREFIX = require_view_compiler.DEFAULT_VIEW_PREFIX;
20
20
  exports.MATERIALIZING_CONCEPTS = require_entity_config.MATERIALIZING_CONCEPTS;
21
+ exports.PREVIEW_MAX_ROWS = require_projection_sql.PREVIEW_MAX_ROWS;
22
+ exports.addDraftJoin = require_internal.addDraftJoin;
21
23
  exports.authCustom = require_auth_adapter.authCustom;
22
24
  exports.buildFilterFromDiscriminator = require_mapping_form.buildFilterFromDiscriminator;
23
25
  exports.buildRelationships = require_mapping_form.buildRelationships;
@@ -27,10 +29,13 @@ exports.compileEntityViews = require_view_compiler.compileEntityViews;
27
29
  exports.compileProjectionFrom = require_projection_sql.compileProjectionFrom;
28
30
  exports.compileProjectionIdentity = require_projection_sql.compileProjectionIdentity;
29
31
  exports.compileProjectionJoins = require_projection_sql.compileProjectionJoins;
32
+ exports.compileProjectionPreview = require_projection_sql.compileProjectionPreview;
33
+ exports.compileProjectionSelect = require_projection_sql.compileProjectionSelect;
30
34
  exports.coversUniqueKey = require_entity_config.coversUniqueKey;
31
35
  exports.defineClivlyConfig = require_entity_config.defineClivlyConfig;
32
36
  exports.describeCardinality = require_internal.describeCardinality;
33
37
  exports.draftErrors = require_internal.draftErrors;
38
+ exports.draftRefOptions = require_internal.draftRefOptions;
34
39
  exports.draftToProjection = require_internal.draftToProjection;
35
40
  exports.emptyProjectionDraft = require_internal.emptyProjectionDraft;
36
41
  exports.entitiesConfigSchema = require_entity_config.entitiesConfigSchema;
@@ -48,6 +53,7 @@ exports.reconcile = require_sync_engine.reconcile;
48
53
  exports.relationshipSchema = require_entity_config.relationshipSchema;
49
54
  exports.relationshipViaSignature = require_mapping_form.relationshipViaSignature;
50
55
  exports.relationshipsSchema = require_entity_config.relationshipsSchema;
56
+ exports.removeDraftJoin = require_internal.removeDraftJoin;
51
57
  exports.runSync = require_sync_engine.runSync;
52
58
  exports.suggestJoinConditions = require_internal.suggestJoinConditions;
53
59
  exports.validateEntitiesConfig = require_entity_config.validateEntitiesConfig;
package/core.d.cts CHANGED
@@ -7,5 +7,5 @@ import { i as mappingsToEntitiesConfig, t as EntityMappingRow } from "./mappings
7
7
  import { a as compileEntityView, i as ExplainResult, n as CompiledView, o as compileEntityViews, r as DEFAULT_VIEW_PREFIX, s as explainEntitiesConfig, t as CompileOptions } from "./view-compiler-CmEdAMwj.cjs";
8
8
  import { c as SyncResult, f as reconcile, l as SyncStore, n as MirrorRecord, o as SourceRow, p as runSync, r as PersistAction, s as SyncAction, t as EntitySyncResult } from "./sync-engine-BG2O1an2.cjs";
9
9
  import { a as IntegrationStep, c as StepProblem, i as IntegrationStatus, l as StepState, n as IntegrationFacts, o as NextAction, r as IntegrationState, s as StepId, t as ConnectionLiveness } from "./integration-state-BK-riZnm.cjs";
10
- import { _ as joinFansOut, a as validateProjection, c as compileProjectionJoins, d as describeCardinality, f as draftErrors, g as fanOutJoins, h as suggestJoinConditions, i as primaryKeyColumns, l as quoteIdent, m as emptyProjectionDraft, n as coversUniqueKey, o as compileProjectionFrom, p as draftToProjection, r as hasRichMeta, s as compileProjectionIdentity, t as columnMetaFor, u as ProjectionDraft } from "./internal-wCXSELDN.cjs";
11
- export { type Activity, type ActivityType, BASE_REF, CANONICAL_FIELDS, type CRMAdapter, CRM_CONCEPTS, type ClivlyAuthAdapter, ClivlyConfigError, type ClivlyEntitiesConfig, type ClivlyEntityConfig, type ClivlyUser, type Company, type CompileOptions, type CompiledView, type ConfigValidationError, type ConfigValidationResult, type ConnectionLiveness, type Contact, type ContactFilters, type ContactStatus, type CreateActivityInput, type CreateCompanyInput, type CreateContactInput, type CreateDealInput, type CreateTaskInput, type CrmConcept, type CrmMembership, type CrmRole, DEFAULT_VIEW_PREFIX, type Deal, type DealStage, type DiscoveredColumnMeta, type DiscoveredSchemaTable, type EntityMappingRow, type EntitySyncResult, type ExplainResult, type FilterExpr, type FilterValue, type IntegrationFacts, type IntegrationState, type IntegrationStatus, type IntegrationStep, MATERIALIZING_CONCEPTS, type MaterializingConcept, type MembershipResolver, type MirrorRecord, type NextAction, type Note, type PersistAction, type ProjectionDraft, type ProjectionFieldBinding, type ProjectionIdentity, type ProjectionJoin, type ProjectionMapping, type ProjectionRef, type RecordSource, type RelationshipCandidate, type RelationshipSpec, type RelationshipVia, type RelationshipsMap, type SourceRow, type StepId, type StepProblem, type StepState, type SyncAction, type SyncResult, type SyncStore, type Task, type TaskEntityType, type TaskFilters, type TaskPriority, type TaskStatus, type UpdateContactInput, type UpdateDealInput, type UpdateTaskInput, authCustom, buildFilterFromDiscriminator, buildRelationships, columnMetaFor, compileEntityView, compileEntityViews, compileProjectionFrom, compileProjectionIdentity, compileProjectionJoins, coversUniqueKey, defineClivlyConfig, describeCardinality, draftErrors, draftToProjection, emptyProjectionDraft, entitiesConfigSchema, explainEntitiesConfig, fanOutJoins, filterSchema, hasRichMeta, identityRefs, joinFansOut, mappingsToEntitiesConfig, primaryKeyColumns, projectionSchema, quoteIdent, reconcile, relationshipSchema, relationshipViaSignature, relationshipsSchema, runSync, suggestJoinConditions, validateEntitiesConfig, validateProjection };
10
+ import { C as fanOutJoins, S as suggestJoinConditions, _ as draftErrors, a as validateProjection, b as emptyProjectionDraft, c as compileProjectionIdentity, d as compileProjectionSelect, f as quoteIdent, g as describeCardinality, h as addDraftJoin, i as primaryKeyColumns, l as compileProjectionJoins, m as ProjectionDraft, n as coversUniqueKey, o as PREVIEW_MAX_ROWS, p as DraftRefOption, r as hasRichMeta, s as compileProjectionFrom, t as columnMetaFor, u as compileProjectionPreview, v as draftRefOptions, w as joinFansOut, x as removeDraftJoin, y as draftToProjection } from "./internal-DGUOLQAq.cjs";
11
+ export { type Activity, type ActivityType, BASE_REF, CANONICAL_FIELDS, type CRMAdapter, CRM_CONCEPTS, type ClivlyAuthAdapter, ClivlyConfigError, type ClivlyEntitiesConfig, type ClivlyEntityConfig, type ClivlyUser, type Company, type CompileOptions, type CompiledView, type ConfigValidationError, type ConfigValidationResult, type ConnectionLiveness, type Contact, type ContactFilters, type ContactStatus, type CreateActivityInput, type CreateCompanyInput, type CreateContactInput, type CreateDealInput, type CreateTaskInput, type CrmConcept, type CrmMembership, type CrmRole, DEFAULT_VIEW_PREFIX, type Deal, type DealStage, type DiscoveredColumnMeta, type DiscoveredSchemaTable, type DraftRefOption, type EntityMappingRow, type EntitySyncResult, type ExplainResult, type FilterExpr, type FilterValue, type IntegrationFacts, type IntegrationState, type IntegrationStatus, type IntegrationStep, MATERIALIZING_CONCEPTS, type MaterializingConcept, type MembershipResolver, type MirrorRecord, type NextAction, type Note, PREVIEW_MAX_ROWS, type PersistAction, type ProjectionDraft, type ProjectionFieldBinding, type ProjectionIdentity, type ProjectionJoin, type ProjectionMapping, type ProjectionRef, type RecordSource, type RelationshipCandidate, type RelationshipSpec, type RelationshipVia, type RelationshipsMap, type SourceRow, type StepId, type StepProblem, type StepState, type SyncAction, type SyncResult, type SyncStore, type Task, type TaskEntityType, type TaskFilters, type TaskPriority, type TaskStatus, type UpdateContactInput, type UpdateDealInput, type UpdateTaskInput, addDraftJoin, authCustom, buildFilterFromDiscriminator, buildRelationships, columnMetaFor, compileEntityView, compileEntityViews, compileProjectionFrom, compileProjectionIdentity, compileProjectionJoins, compileProjectionPreview, compileProjectionSelect, coversUniqueKey, defineClivlyConfig, describeCardinality, draftErrors, draftRefOptions, draftToProjection, emptyProjectionDraft, entitiesConfigSchema, explainEntitiesConfig, fanOutJoins, filterSchema, hasRichMeta, identityRefs, joinFansOut, mappingsToEntitiesConfig, primaryKeyColumns, projectionSchema, quoteIdent, reconcile, relationshipSchema, relationshipViaSignature, relationshipsSchema, removeDraftJoin, runSync, suggestJoinConditions, validateEntitiesConfig, validateProjection };
package/core.d.mts CHANGED
@@ -7,5 +7,5 @@ import { i as mappingsToEntitiesConfig, t as EntityMappingRow } from "./mappings
7
7
  import { a as compileEntityView, i as ExplainResult, n as CompiledView, o as compileEntityViews, r as DEFAULT_VIEW_PREFIX, s as explainEntitiesConfig, t as CompileOptions } from "./view-compiler-Bo7pqXW3.mjs";
8
8
  import { c as SyncResult, f as reconcile, l as SyncStore, n as MirrorRecord, o as SourceRow, p as runSync, r as PersistAction, s as SyncAction, t as EntitySyncResult } from "./sync-engine-DgQbrJON.mjs";
9
9
  import { a as IntegrationStep, c as StepProblem, i as IntegrationStatus, l as StepState, n as IntegrationFacts, o as NextAction, r as IntegrationState, s as StepId, t as ConnectionLiveness } from "./integration-state-BK-riZnm.mjs";
10
- import { _ as joinFansOut, a as validateProjection, c as compileProjectionJoins, d as describeCardinality, f as draftErrors, g as fanOutJoins, h as suggestJoinConditions, i as primaryKeyColumns, l as quoteIdent, m as emptyProjectionDraft, n as coversUniqueKey, o as compileProjectionFrom, p as draftToProjection, r as hasRichMeta, s as compileProjectionIdentity, t as columnMetaFor, u as ProjectionDraft } from "./internal-o2M7FGlR.mjs";
11
- export { type Activity, type ActivityType, BASE_REF, CANONICAL_FIELDS, type CRMAdapter, CRM_CONCEPTS, type ClivlyAuthAdapter, ClivlyConfigError, type ClivlyEntitiesConfig, type ClivlyEntityConfig, type ClivlyUser, type Company, type CompileOptions, type CompiledView, type ConfigValidationError, type ConfigValidationResult, type ConnectionLiveness, type Contact, type ContactFilters, type ContactStatus, type CreateActivityInput, type CreateCompanyInput, type CreateContactInput, type CreateDealInput, type CreateTaskInput, type CrmConcept, type CrmMembership, type CrmRole, DEFAULT_VIEW_PREFIX, type Deal, type DealStage, type DiscoveredColumnMeta, type DiscoveredSchemaTable, type EntityMappingRow, type EntitySyncResult, type ExplainResult, type FilterExpr, type FilterValue, type IntegrationFacts, type IntegrationState, type IntegrationStatus, type IntegrationStep, MATERIALIZING_CONCEPTS, type MaterializingConcept, type MembershipResolver, type MirrorRecord, type NextAction, type Note, type PersistAction, type ProjectionDraft, type ProjectionFieldBinding, type ProjectionIdentity, type ProjectionJoin, type ProjectionMapping, type ProjectionRef, type RecordSource, type RelationshipCandidate, type RelationshipSpec, type RelationshipVia, type RelationshipsMap, type SourceRow, type StepId, type StepProblem, type StepState, type SyncAction, type SyncResult, type SyncStore, type Task, type TaskEntityType, type TaskFilters, type TaskPriority, type TaskStatus, type UpdateContactInput, type UpdateDealInput, type UpdateTaskInput, authCustom, buildFilterFromDiscriminator, buildRelationships, columnMetaFor, compileEntityView, compileEntityViews, compileProjectionFrom, compileProjectionIdentity, compileProjectionJoins, coversUniqueKey, defineClivlyConfig, describeCardinality, draftErrors, draftToProjection, emptyProjectionDraft, entitiesConfigSchema, explainEntitiesConfig, fanOutJoins, filterSchema, hasRichMeta, identityRefs, joinFansOut, mappingsToEntitiesConfig, primaryKeyColumns, projectionSchema, quoteIdent, reconcile, relationshipSchema, relationshipViaSignature, relationshipsSchema, runSync, suggestJoinConditions, validateEntitiesConfig, validateProjection };
10
+ import { C as fanOutJoins, S as suggestJoinConditions, _ as draftErrors, a as validateProjection, b as emptyProjectionDraft, c as compileProjectionIdentity, d as compileProjectionSelect, f as quoteIdent, g as describeCardinality, h as addDraftJoin, i as primaryKeyColumns, l as compileProjectionJoins, m as ProjectionDraft, n as coversUniqueKey, o as PREVIEW_MAX_ROWS, p as DraftRefOption, r as hasRichMeta, s as compileProjectionFrom, t as columnMetaFor, u as compileProjectionPreview, v as draftRefOptions, w as joinFansOut, x as removeDraftJoin, y as draftToProjection } from "./internal-CvlFk3KC.mjs";
11
+ export { type Activity, type ActivityType, BASE_REF, CANONICAL_FIELDS, type CRMAdapter, CRM_CONCEPTS, type ClivlyAuthAdapter, ClivlyConfigError, type ClivlyEntitiesConfig, type ClivlyEntityConfig, type ClivlyUser, type Company, type CompileOptions, type CompiledView, type ConfigValidationError, type ConfigValidationResult, type ConnectionLiveness, type Contact, type ContactFilters, type ContactStatus, type CreateActivityInput, type CreateCompanyInput, type CreateContactInput, type CreateDealInput, type CreateTaskInput, type CrmConcept, type CrmMembership, type CrmRole, DEFAULT_VIEW_PREFIX, type Deal, type DealStage, type DiscoveredColumnMeta, type DiscoveredSchemaTable, type DraftRefOption, type EntityMappingRow, type EntitySyncResult, type ExplainResult, type FilterExpr, type FilterValue, type IntegrationFacts, type IntegrationState, type IntegrationStatus, type IntegrationStep, MATERIALIZING_CONCEPTS, type MaterializingConcept, type MembershipResolver, type MirrorRecord, type NextAction, type Note, PREVIEW_MAX_ROWS, type PersistAction, type ProjectionDraft, type ProjectionFieldBinding, type ProjectionIdentity, type ProjectionJoin, type ProjectionMapping, type ProjectionRef, type RecordSource, type RelationshipCandidate, type RelationshipSpec, type RelationshipVia, type RelationshipsMap, type SourceRow, type StepId, type StepProblem, type StepState, type SyncAction, type SyncResult, type SyncStore, type Task, type TaskEntityType, type TaskFilters, type TaskPriority, type TaskStatus, type UpdateContactInput, type UpdateDealInput, type UpdateTaskInput, addDraftJoin, authCustom, buildFilterFromDiscriminator, buildRelationships, columnMetaFor, compileEntityView, compileEntityViews, compileProjectionFrom, compileProjectionIdentity, compileProjectionJoins, compileProjectionPreview, compileProjectionSelect, coversUniqueKey, defineClivlyConfig, describeCardinality, draftErrors, draftRefOptions, draftToProjection, emptyProjectionDraft, entitiesConfigSchema, explainEntitiesConfig, fanOutJoins, filterSchema, hasRichMeta, identityRefs, joinFansOut, mappingsToEntitiesConfig, primaryKeyColumns, projectionSchema, quoteIdent, reconcile, relationshipSchema, relationshipViaSignature, relationshipsSchema, removeDraftJoin, runSync, suggestJoinConditions, validateEntitiesConfig, validateProjection };
package/core.mjs CHANGED
@@ -1,14 +1,14 @@
1
- import { i as projectionSchema, r as identityRefs, t as BASE_REF } from "./projection-CSGJbZlZ.mjs";
2
- import { _ as columnMetaFor, a as MATERIALIZING_CONCEPTS, b as primaryKeyColumns, c as entitiesConfigSchema, d as relationshipSchema, f as relationshipsSchema, g as joinFansOut, h as fanOutJoins, i as ClivlyConfigError, l as filterSchema, m as validateProjection, n as CRM_CONCEPTS, p as validateEntitiesConfig, s as defineClivlyConfig, t as CANONICAL_FIELDS, v as coversUniqueKey, y as hasRichMeta } from "./entity-config-B74SPOUZ.mjs";
3
- import { n as mappingsToEntitiesConfig } from "./mappings-config-DQS_s4dg.mjs";
1
+ import { a as projectionSchema, i as identityRefs, t as BASE_REF } from "./projection-hnPSgH6G.mjs";
2
+ import { _ as columnMetaFor, a as MATERIALIZING_CONCEPTS, b as primaryKeyColumns, c as entitiesConfigSchema, d as relationshipSchema, f as relationshipsSchema, g as joinFansOut, h as fanOutJoins, i as ClivlyConfigError, l as filterSchema, m as validateProjection, n as CRM_CONCEPTS, p as validateEntitiesConfig, s as defineClivlyConfig, t as CANONICAL_FIELDS, v as coversUniqueKey, y as hasRichMeta } from "./entity-config-CusbTOJ1.mjs";
3
+ import { n as mappingsToEntitiesConfig } from "./mappings-config-7qQ47p9K.mjs";
4
4
  import { t as warnDeprecatedSubpath } from "./deprecate-subpath-CmvZtCpE.mjs";
5
5
  import { t as authCustom } from "./auth-adapter-gfVDxf3d.mjs";
6
6
  import { n as buildRelationships, r as relationshipViaSignature, t as buildFilterFromDiscriminator } from "./mapping-form-DigkuvFc.mjs";
7
- import { a as suggestJoinConditions, i as emptyProjectionDraft, n as draftErrors, r as draftToProjection, t as describeCardinality } from "./internal-CykXpEGk.mjs";
8
- import { a as quoteIdent, n as compileProjectionIdentity, r as compileProjectionJoins, t as compileProjectionFrom } from "./projection-sql-BgnfiGqF.mjs";
9
- import { i as explainEntitiesConfig, n as compileEntityView, r as compileEntityViews, t as DEFAULT_VIEW_PREFIX } from "./view-compiler-CSYwEWf5.mjs";
10
- import { i as runSync, r as reconcile } from "./sync-engine-Dt5QQSKO.mjs";
7
+ import { a as draftToProjection, c as suggestJoinConditions, i as draftRefOptions, n as describeCardinality, o as emptyProjectionDraft, r as draftErrors, s as removeDraftJoin, t as addDraftJoin } from "./internal-ChufvXE6.mjs";
8
+ import { a as compileProjectionPreview, i as compileProjectionJoins, n as compileProjectionFrom, o as compileProjectionSelect, r as compileProjectionIdentity, s as quoteIdent, t as PREVIEW_MAX_ROWS } from "./projection-sql-9zzTVGvf.mjs";
9
+ import { i as explainEntitiesConfig, n as compileEntityView, r as compileEntityViews, t as DEFAULT_VIEW_PREFIX } from "./view-compiler-D_6gfXFr.mjs";
10
+ import { i as runSync, r as reconcile } from "./sync-engine-B_IzoUSx.mjs";
11
11
  //#region src/core.ts
12
12
  warnDeprecatedSubpath("clivly/core", "clivly/sdk", "Import \"defineClivlyConfig\" and its config types from \"clivly/sdk\"; import everything else from \"clivly/internal\" (no stability guarantee — see STABILITY.md).");
13
13
  //#endregion
14
- export { BASE_REF, CANONICAL_FIELDS, CRM_CONCEPTS, ClivlyConfigError, DEFAULT_VIEW_PREFIX, MATERIALIZING_CONCEPTS, authCustom, buildFilterFromDiscriminator, buildRelationships, columnMetaFor, compileEntityView, compileEntityViews, compileProjectionFrom, compileProjectionIdentity, compileProjectionJoins, coversUniqueKey, defineClivlyConfig, describeCardinality, draftErrors, draftToProjection, emptyProjectionDraft, entitiesConfigSchema, explainEntitiesConfig, fanOutJoins, filterSchema, hasRichMeta, identityRefs, joinFansOut, mappingsToEntitiesConfig, primaryKeyColumns, projectionSchema, quoteIdent, reconcile, relationshipSchema, relationshipViaSignature, relationshipsSchema, runSync, suggestJoinConditions, validateEntitiesConfig, validateProjection };
14
+ export { BASE_REF, CANONICAL_FIELDS, CRM_CONCEPTS, ClivlyConfigError, DEFAULT_VIEW_PREFIX, MATERIALIZING_CONCEPTS, PREVIEW_MAX_ROWS, addDraftJoin, authCustom, buildFilterFromDiscriminator, buildRelationships, columnMetaFor, compileEntityView, compileEntityViews, compileProjectionFrom, compileProjectionIdentity, compileProjectionJoins, compileProjectionPreview, compileProjectionSelect, coversUniqueKey, defineClivlyConfig, describeCardinality, draftErrors, draftRefOptions, draftToProjection, emptyProjectionDraft, entitiesConfigSchema, explainEntitiesConfig, fanOutJoins, filterSchema, hasRichMeta, identityRefs, joinFansOut, mappingsToEntitiesConfig, primaryKeyColumns, projectionSchema, quoteIdent, reconcile, relationshipSchema, relationshipViaSignature, relationshipsSchema, removeDraftJoin, runSync, suggestJoinConditions, validateEntitiesConfig, validateProjection };
package/drizzle.cjs CHANGED
@@ -1,9 +1,23 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_projection = require("./projection-Dz6_i1-w.cjs");
2
+ const require_projection = require("./projection-DEwL-D8R.cjs");
3
3
  const require_drizzle_meta = require("./drizzle-meta-Bb1JWYqf.cjs");
4
- const require_projection_sql = require("./projection-sql-Cl1qIn8m.cjs");
4
+ const require_projection_sql = require("./projection-sql-iHy-Cx6V.cjs");
5
5
  const require_drizzle = require("./drizzle-bfjVzYR6.cjs");
6
6
  let drizzle_orm = require("drizzle-orm");
7
+ //#region ../sdk/src/projection-preview.ts
8
+ /** `db.execute` returns either an array or `{ rows }`, depending on driver. */
9
+ function rowsOf(result) {
10
+ if (Array.isArray(result)) return result;
11
+ const rows = result.rows;
12
+ if (Array.isArray(rows)) return rows;
13
+ throw new Error("previewProjection: db.execute() returned neither an array of rows nor { rows }.");
14
+ }
15
+ async function previewProjection(db, projection, opts) {
16
+ const client = db;
17
+ const { sql } = await import("drizzle-orm");
18
+ return rowsOf(await client.execute(sql.raw(require_projection_sql.compileProjectionPreview(projection, opts.limit))));
19
+ }
20
+ //#endregion
7
21
  //#region ../sdk/src/drizzle-projection.ts
8
22
  /** `<ref>.<column>` — the token `fields` carries and cloud-ingest reads. */
9
23
  function refToken(ref) {
@@ -135,6 +149,9 @@ function drizzleIntrospector(db) {
135
149
  },
136
150
  async sampleSelect(table) {
137
151
  await client.execute(drizzle_orm.sql`select 1 from ${drizzle_orm.sql.identifier(table)} limit 1`);
152
+ },
153
+ runProjection(projection, opts) {
154
+ return previewProjection(db, projection, opts);
138
155
  }
139
156
  };
140
157
  }
package/drizzle.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { F as ProjectionRef, P as ProjectionMapping } from "./entity-config-B2RA53nw.cjs";
2
2
  import { n as buildUniqueConstraints, r as discoverFromDrizzle } from "./drizzle-DEtRrqtc.cjs";
3
- import { _ as SyncSource, t as NamespaceIntrospector } from "./namespace-probe-BoGI18dQ.cjs";
3
+ import { _ as SyncSource, t as NamespaceIntrospector } from "./namespace-probe-DaTJINS-.cjs";
4
4
  import { Table } from "drizzle-orm";
5
5
  //#region ../sdk/src/drizzle-projection.d.ts
6
6
  /**
package/drizzle.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { F as ProjectionRef, P as ProjectionMapping } from "./entity-config-B2RA53nw.mjs";
2
2
  import { n as buildUniqueConstraints, r as discoverFromDrizzle } from "./drizzle-CiK8MMEZ.mjs";
3
- import { _ as SyncSource, t as NamespaceIntrospector } from "./namespace-probe-Cn7voAd0.mjs";
3
+ import { _ as SyncSource, t as NamespaceIntrospector } from "./namespace-probe-Ckn9yJ6F.mjs";
4
4
  import { Table } from "drizzle-orm";
5
5
  //#region ../sdk/src/drizzle-projection.d.ts
6
6
  /**
package/drizzle.mjs CHANGED
@@ -1,8 +1,22 @@
1
- import { t as BASE_REF } from "./projection-CSGJbZlZ.mjs";
1
+ import { t as BASE_REF } from "./projection-hnPSgH6G.mjs";
2
2
  import { t as DRIZZLE_META } from "./drizzle-meta-D-5k3n0i.mjs";
3
- import { a as quoteIdent, n as compileProjectionIdentity, r as compileProjectionJoins, t as compileProjectionFrom } from "./projection-sql-BgnfiGqF.mjs";
3
+ import { a as compileProjectionPreview, i as compileProjectionJoins, n as compileProjectionFrom, r as compileProjectionIdentity, s as quoteIdent } from "./projection-sql-9zzTVGvf.mjs";
4
4
  import { n as buildUniqueConstraints, r as discoverFromDrizzle, t as buildColumnsMeta } from "./drizzle-3kvhkwO7.mjs";
5
5
  import { asc, getTableColumns, getTableName, sql } from "drizzle-orm";
6
+ //#region ../sdk/src/projection-preview.ts
7
+ /** `db.execute` returns either an array or `{ rows }`, depending on driver. */
8
+ function rowsOf(result) {
9
+ if (Array.isArray(result)) return result;
10
+ const rows = result.rows;
11
+ if (Array.isArray(rows)) return rows;
12
+ throw new Error("previewProjection: db.execute() returned neither an array of rows nor { rows }.");
13
+ }
14
+ async function previewProjection(db, projection, opts) {
15
+ const client = db;
16
+ const { sql } = await import("drizzle-orm");
17
+ return rowsOf(await client.execute(sql.raw(compileProjectionPreview(projection, opts.limit))));
18
+ }
19
+ //#endregion
6
20
  //#region ../sdk/src/drizzle-projection.ts
7
21
  /** `<ref>.<column>` — the token `fields` carries and cloud-ingest reads. */
8
22
  function refToken(ref) {
@@ -134,6 +148,9 @@ function drizzleIntrospector(db) {
134
148
  },
135
149
  async sampleSelect(table) {
136
150
  await client.execute(sql`select 1 from ${sql.identifier(table)} limit 1`);
151
+ },
152
+ runProjection(projection, opts) {
153
+ return previewProjection(db, projection, opts);
137
154
  }
138
155
  };
139
156
  }
@@ -1,4 +1,4 @@
1
- import { a as _enum, c as literal, d as strictObject, f as string, i as projectionSchema, l as number, o as array, p as union, r as identityRefs, s as boolean, t as BASE_REF, u as record } from "./projection-CSGJbZlZ.mjs";
1
+ import { a as projectionSchema, c as boolean, d as record, f as strictObject, i as identityRefs, l as literal, m as union, o as _enum, p as string, s as array, t as BASE_REF, u as number } from "./projection-hnPSgH6G.mjs";
2
2
  //#region ../core/src/schema-meta.ts
3
3
  /**
4
4
  * Accessors over a discovered table's schema-v2 metadata.
@@ -1,4 +1,4 @@
1
- const require_projection = require("./projection-Dz6_i1-w.cjs");
1
+ const require_projection = require("./projection-DEwL-D8R.cjs");
2
2
  //#region ../core/src/schema-meta.ts
3
3
  /**
4
4
  * Accessors over a discovered table's schema-v2 metadata.
package/index.cjs CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const require_entity_config = require("./entity-config-7sGCk_nw.cjs");
3
+ const require_entity_config = require("./entity-config-DE30_RpU.cjs");
4
4
  require("./mapping-score-CaB3F4Uu.cjs");
5
5
  const require_internal_entity_heuristics = require("./internal-entity-heuristics.cjs");
6
- const require_sdk = require("./sdk-CM1UO-I7.cjs");
6
+ const require_sdk = require("./sdk-w8Kv_XnW.cjs");
7
7
  let node_child_process = require("node:child_process");
8
8
  let node_fs = require("node:fs");
9
9
  let node_module = require("node:module");
@@ -1596,7 +1596,7 @@ function planInit(schema, overrides = {}) {
1596
1596
  todos.push(...candidateTodos);
1597
1597
  company = candidate;
1598
1598
  if (require_internal_entity_heuristics.matchesConcept(companyTable.tableName, "contact")) todos.push(`"${companyTable.tableName}" matches both contact and company naming — assigned to company. Swap it to your contact entity if that's wrong.`);
1599
- } else todos.push(`"${companyTable.tableName}" looked like a company but no fields could be mapped — left it out. Add it to \`entities\` once you know which columns map to name/domain.`);
1599
+ } else todos.push(`"${companyTable.tableName}" looked like a company but no fields could be mapped — left it out. Add it to \`entities\` once you know which columns map to name/domain, or build a derived object from it in Clivly (Integrations → Map as custom object) if the fields live in a joined table.`);
1600
1600
  }
1601
1601
  if (contactTable && contact) {
1602
1602
  const scored = require_internal_entity_heuristics.scoreRelationships(toScoredTable(contactTable), schema.tables.map(toScoredTable));
@@ -3124,15 +3124,16 @@ const triggerUrlStage = {
3124
3124
  label: "Sync trigger URL",
3125
3125
  needs: [configStage.id],
3126
3126
  run(ctx) {
3127
- const url = ctx.sdk?.syncTrigger?.url;
3128
- if (url && !require_sdk.isPlaceholderUrl(url)) return Promise.resolve({
3127
+ const trigger = ctx.sdk?.describeSyncTrigger?.();
3128
+ if (trigger?.resolved) return Promise.resolve({
3129
3129
  state: "pass",
3130
- detail: url
3130
+ detail: trigger.resolved
3131
3131
  });
3132
- const isPlaceholder = url !== void 0;
3132
+ const configured = trigger?.configured;
3133
+ const isPlaceholder = configured !== void 0 && require_sdk.isPlaceholderUrl(configured);
3133
3134
  return Promise.resolve({
3134
3135
  state: "warn",
3135
- detail: isPlaceholder ? `Still the placeholder (${url}) — remote sync cannot call back into this app.` : "Not set — remote sync cannot call back into this app.",
3136
+ detail: isPlaceholder ? `Still the scaffolded placeholder (${configured}) — remote sync cannot call back into this app.` : "Not set — remote sync cannot call back into this app.",
3136
3137
  hint: "Replace <yourDomain.com> with your deployed origin, or delete the line — on Vercel, Cloudflare Pages, Railway, Render and Fly the SDK derives the URL from the platform. For local development run `clivly dev`: it opens a tunnel and registers the URL for you, outranking whatever is in .env. Push-only setups can ignore this."
3137
3138
  });
3138
3139
  }
package/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import { t as CANONICAL_FIELDS } from "./entity-config-B74SPOUZ.mjs";
2
+ import { t as CANONICAL_FIELDS } from "./entity-config-CusbTOJ1.mjs";
3
3
  import "./mapping-score-C68uAqGB.mjs";
4
4
  import { matchesConcept, requiredFieldsFor, scoreFieldMap, scoreRelationships, suggestCursorField, toFieldMap } from "./internal-entity-heuristics.mjs";
5
- import { s as isPlaceholderUrl, t as createClivlySDK } from "./sdk-DYBDR939.mjs";
5
+ import { s as isPlaceholderUrl, t as createClivlySDK } from "./sdk-Dkq6ELkf.mjs";
6
6
  import { createRequire } from "node:module";
7
7
  import { spawn } from "node:child_process";
8
8
  import { accessSync, constants, existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, statSync, watch, writeFileSync } from "node:fs";
@@ -1595,7 +1595,7 @@ function planInit(schema, overrides = {}) {
1595
1595
  todos.push(...candidateTodos);
1596
1596
  company = candidate;
1597
1597
  if (matchesConcept(companyTable.tableName, "contact")) todos.push(`"${companyTable.tableName}" matches both contact and company naming — assigned to company. Swap it to your contact entity if that's wrong.`);
1598
- } else todos.push(`"${companyTable.tableName}" looked like a company but no fields could be mapped — left it out. Add it to \`entities\` once you know which columns map to name/domain.`);
1598
+ } else todos.push(`"${companyTable.tableName}" looked like a company but no fields could be mapped — left it out. Add it to \`entities\` once you know which columns map to name/domain, or build a derived object from it in Clivly (Integrations → Map as custom object) if the fields live in a joined table.`);
1599
1599
  }
1600
1600
  if (contactTable && contact) {
1601
1601
  const scored = scoreRelationships(toScoredTable(contactTable), schema.tables.map(toScoredTable));
@@ -3123,15 +3123,16 @@ const triggerUrlStage = {
3123
3123
  label: "Sync trigger URL",
3124
3124
  needs: [configStage.id],
3125
3125
  run(ctx) {
3126
- const url = ctx.sdk?.syncTrigger?.url;
3127
- if (url && !isPlaceholderUrl(url)) return Promise.resolve({
3126
+ const trigger = ctx.sdk?.describeSyncTrigger?.();
3127
+ if (trigger?.resolved) return Promise.resolve({
3128
3128
  state: "pass",
3129
- detail: url
3129
+ detail: trigger.resolved
3130
3130
  });
3131
- const isPlaceholder = url !== void 0;
3131
+ const configured = trigger?.configured;
3132
+ const isPlaceholder = configured !== void 0 && isPlaceholderUrl(configured);
3132
3133
  return Promise.resolve({
3133
3134
  state: "warn",
3134
- detail: isPlaceholder ? `Still the placeholder (${url}) — remote sync cannot call back into this app.` : "Not set — remote sync cannot call back into this app.",
3135
+ detail: isPlaceholder ? `Still the scaffolded placeholder (${configured}) — remote sync cannot call back into this app.` : "Not set — remote sync cannot call back into this app.",
3135
3136
  hint: "Replace <yourDomain.com> with your deployed origin, or delete the line — on Vercel, Cloudflare Pages, Railway, Render and Fly the SDK derives the URL from the platform. For local development run `clivly dev`: it opens a tunnel and registers the URL for you, outranking whatever is in .env. Push-only setups can ignore this."
3136
3137
  });
3137
3138
  }