@elevasis/sdk 1.25.0 → 1.26.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.
Files changed (64) hide show
  1. package/dist/cli.cjs +87 -120
  2. package/dist/index.d.ts +220 -50
  3. package/dist/index.js +4 -435
  4. package/dist/node/index.d.ts +46 -38
  5. package/dist/test-utils/index.d.ts +154 -40
  6. package/dist/test-utils/index.js +27 -355
  7. package/dist/types/worker/adapters/clickup.d.ts +22 -0
  8. package/dist/types/worker/adapters/index.d.ts +1 -0
  9. package/dist/worker/index.js +32 -354
  10. package/package.json +2 -2
  11. package/reference/_navigation.md +11 -1
  12. package/reference/_reference-manifest.json +70 -0
  13. package/reference/claude-config/rules/organization-model.md +12 -1
  14. package/reference/claude-config/rules/organization-os.md +12 -1
  15. package/reference/claude-config/skills/om/SKILL.md +13 -5
  16. package/reference/claude-config/skills/om/operations/codify-level-a.md +109 -100
  17. package/reference/claude-config/skills/om/operations/customers.md +10 -6
  18. package/reference/claude-config/skills/om/operations/features.md +7 -3
  19. package/reference/claude-config/skills/om/operations/goals.md +10 -6
  20. package/reference/claude-config/skills/om/operations/identity.md +8 -5
  21. package/reference/claude-config/skills/om/operations/labels.md +17 -1
  22. package/reference/claude-config/skills/om/operations/offerings.md +11 -7
  23. package/reference/claude-config/skills/om/operations/roles.md +11 -7
  24. package/reference/claude-config/skills/om/operations/techStack.md +10 -2
  25. package/reference/claude-config/skills/setup/SKILL.md +2 -2
  26. package/reference/claude-config/sync-notes/2026-05-20-om-define-helpers.md +32 -0
  27. package/reference/claude-config/sync-notes/2026-05-22-access-model-and-right-panel.md +43 -0
  28. package/reference/claude-config/sync-notes/2026-05-22-lead-gen-tenant-config.md +40 -0
  29. package/reference/claude-config/sync-notes/2026-05-22-org-model-multi-file-split.md +61 -0
  30. package/reference/claude-config/sync-notes/2026-05-23-branding-names-to-identity.md +49 -0
  31. package/reference/claude-config/sync-notes/2026-05-23-om-deployment-drift-detection.md +42 -0
  32. package/reference/cli-management.mdx +541 -0
  33. package/reference/cli.mdx +4 -532
  34. package/reference/concepts.mdx +134 -146
  35. package/reference/deployment/api.mdx +296 -297
  36. package/reference/deployment/command-center.mdx +208 -209
  37. package/reference/deployment/index.mdx +194 -195
  38. package/reference/deployment/provided-features.mdx +110 -107
  39. package/reference/deployment/ui-execution.mdx +249 -250
  40. package/reference/examples/organization-model.ts +14 -4
  41. package/reference/framework/index.mdx +111 -195
  42. package/reference/framework/resource-documentation.mdx +90 -0
  43. package/reference/framework/tutorial-system.mdx +135 -135
  44. package/reference/getting-started.mdx +141 -142
  45. package/reference/index.mdx +95 -106
  46. package/reference/packages/ui/src/auth/README.md +6 -6
  47. package/reference/platform-tools/adapters-integration.mdx +300 -301
  48. package/reference/platform-tools/adapters-platform.mdx +552 -553
  49. package/reference/platform-tools/index.mdx +216 -217
  50. package/reference/platform-tools/type-safety.mdx +82 -82
  51. package/reference/resources/index.mdx +348 -349
  52. package/reference/resources/patterns.mdx +446 -449
  53. package/reference/resources/types.mdx +115 -116
  54. package/reference/roadmap.mdx +164 -165
  55. package/reference/rules/organization-model.md +14 -0
  56. package/reference/runtime.mdx +172 -173
  57. package/reference/scaffold/operations/propagation-pipeline.md +1 -1
  58. package/reference/scaffold/recipes/extend-lead-gen.md +130 -77
  59. package/reference/scaffold/reference/contracts.md +376 -446
  60. package/reference/scaffold/reference/glossary.md +8 -6
  61. package/reference/scaffold/ui/feature-flags-and-gating.md +59 -46
  62. package/reference/scaffold/ui/feature-shell.mdx +11 -11
  63. package/reference/scaffold/ui/recipes.md +24 -24
  64. package/reference/troubleshooting.mdx +222 -223
package/dist/cli.cjs CHANGED
@@ -37181,15 +37181,55 @@ var ResourceMappingSchema = DisplayMetadataSchema.extend({
37181
37181
 
37182
37182
  // ../core/src/organization-model/domains/branding.ts
37183
37183
  var OrganizationModelBrandingSchema = external_exports.object({
37184
+ /**
37185
+ * @deprecated Prefer `identity.organizationName`; branding retains it for back-compat.
37186
+ * Legacy tenants that have not set `identity.organizationName` fall back to this field.
37187
+ */
37184
37188
  organizationName: LabelSchema,
37189
+ /**
37190
+ * @deprecated Prefer `identity.productName`; branding retains it for back-compat.
37191
+ * Legacy tenants that have not set `identity.productName` fall back to this field.
37192
+ */
37185
37193
  productName: LabelSchema,
37194
+ /**
37195
+ * @deprecated Prefer `identity.shortName`; branding retains it for back-compat.
37196
+ * Legacy tenants that have not set `identity.shortName` fall back to this field.
37197
+ */
37186
37198
  shortName: external_exports.string().trim().min(1).max(40),
37199
+ /**
37200
+ * @deprecated Prefer `identity.description`; branding retains it for back-compat.
37201
+ * Legacy tenants that have not set `identity.description` fall back to this field.
37202
+ */
37187
37203
  description: DescriptionSchema.optional(),
37188
37204
  logos: external_exports.object({
37189
37205
  light: external_exports.string().trim().min(1).max(2048).optional(),
37190
37206
  dark: external_exports.string().trim().min(1).max(2048).optional()
37191
- }).default({})
37192
- });
37207
+ }).default({}),
37208
+ /**
37209
+ * Brand voice — how the organization communicates. Plain-language description
37210
+ * of tone, register, and personality (e.g. "Direct and human — no jargon").
37211
+ * Max 280 characters.
37212
+ */
37213
+ voice: external_exports.string().trim().max(280).optional(),
37214
+ /**
37215
+ * Brand tagline or positioning statement — the memorable one-liner that
37216
+ * captures the brand's promise or differentiator. Max 200 characters.
37217
+ */
37218
+ tagline: external_exports.string().trim().max(200).optional(),
37219
+ /**
37220
+ * Core brand values — an ordered list of principles the organization stands
37221
+ * for (e.g. ["Transparency", "Craftsmanship", "Velocity"]). Each entry must
37222
+ * be a non-empty trimmed string.
37223
+ */
37224
+ values: external_exports.array(external_exports.string().trim().min(1)).optional(),
37225
+ /**
37226
+ * ID of the active UI theme preset from the UI theme-presets registry.
37227
+ * The UI layer resolves this to colors and typography via `usePresetsContext()`.
37228
+ * Free-form string — validation and fallback state are handled at the UI layer.
37229
+ * Min 1, max 64 characters.
37230
+ */
37231
+ themePresetId: external_exports.string().trim().min(1).max(64).optional()
37232
+ }).passthrough();
37193
37233
  var DEFAULT_ORGANIZATION_MODEL_BRANDING = {
37194
37234
  organizationName: "Default Organization",
37195
37235
  productName: "Organization OS",
@@ -37312,8 +37352,33 @@ var IdentityDomainSchema = external_exports.object({
37312
37352
  * background. Populated by /setup; surfaced to agents as organizational context.
37313
37353
  * Optional — many projects have no external client.
37314
37354
  */
37315
- clientBrief: external_exports.string().trim().default("")
37316
- });
37355
+ clientBrief: external_exports.string().trim().default(""),
37356
+ /**
37357
+ * Display name of the organization as shown to end users.
37358
+ * Recommended placement for display naming — prefer this over the deprecated
37359
+ * `branding.organizationName`. Falls back to `branding.organizationName` for
37360
+ * legacy tenants that have not yet migrated.
37361
+ */
37362
+ organizationName: LabelSchema.optional(),
37363
+ /**
37364
+ * Display name of the primary product or platform.
37365
+ * Recommended placement for display naming — prefer this over the deprecated
37366
+ * `branding.productName`. Falls back to `branding.productName` for legacy tenants.
37367
+ */
37368
+ productName: LabelSchema.optional(),
37369
+ /**
37370
+ * Short abbreviated name used in space-constrained UI surfaces (max 40 chars).
37371
+ * Recommended placement for display naming — prefer this over the deprecated
37372
+ * `branding.shortName`. Falls back to `branding.shortName` for legacy tenants.
37373
+ */
37374
+ shortName: external_exports.string().trim().min(1).max(40).optional(),
37375
+ /**
37376
+ * Plain-language description of the organization for display and discovery.
37377
+ * Recommended placement for display naming — prefer this over the deprecated
37378
+ * `branding.description`. Falls back to `branding.description` for legacy tenants.
37379
+ */
37380
+ description: DescriptionSchema.optional()
37381
+ }).passthrough();
37317
37382
  var DEFAULT_ORGANIZATION_MODEL_IDENTITY = {
37318
37383
  mission: "",
37319
37384
  vision: "",
@@ -37447,107 +37512,6 @@ var EntitySchema = external_exports.object({
37447
37512
  var EntitiesDomainSchema = external_exports.record(external_exports.string(), EntitySchema).refine((record2) => Object.entries(record2).every(([key, entry]) => entry.id === key), {
37448
37513
  message: "Each entity entry id must match its map key"
37449
37514
  }).default({});
37450
- var ENTITY_ENTRY_INPUTS = [
37451
- {
37452
- id: "crm.deal",
37453
- order: 10,
37454
- label: "Deal",
37455
- description: "A CRM opportunity or sales pipeline record.",
37456
- ownedBySystemId: "sales.crm",
37457
- table: "crm_deals",
37458
- stateCatalogId: "crm.pipeline",
37459
- links: [{ toEntity: "crm.contact", kind: "has-many", via: "deal_contacts", label: "contacts" }]
37460
- },
37461
- {
37462
- id: "crm.contact",
37463
- order: 20,
37464
- label: "CRM Contact",
37465
- description: "A person associated with a CRM relationship or deal.",
37466
- ownedBySystemId: "sales.crm",
37467
- table: "crm_contacts"
37468
- },
37469
- {
37470
- id: "leadgen.list",
37471
- order: 30,
37472
- label: "Lead List",
37473
- description: "A prospecting list that groups companies and contacts for acquisition workflows.",
37474
- ownedBySystemId: "sales.lead-gen",
37475
- table: "acq_lists",
37476
- links: [
37477
- { toEntity: "leadgen.company", kind: "has-many", via: "acq_list_companies", label: "companies" },
37478
- { toEntity: "leadgen.contact", kind: "has-many", via: "acq_list_members", label: "contacts" }
37479
- ]
37480
- },
37481
- {
37482
- id: "leadgen.company",
37483
- order: 40,
37484
- label: "Lead Company",
37485
- description: "A company record sourced, enriched, and qualified during prospecting.",
37486
- ownedBySystemId: "sales.lead-gen",
37487
- table: "acq_list_companies",
37488
- stateCatalogId: "lead-gen.company",
37489
- links: [
37490
- { toEntity: "leadgen.list", kind: "belongs-to", via: "list_id", label: "list" },
37491
- { toEntity: "leadgen.contact", kind: "has-many", via: "company_id", label: "contacts" }
37492
- ]
37493
- },
37494
- {
37495
- id: "leadgen.contact",
37496
- order: 50,
37497
- label: "Lead Contact",
37498
- description: "A prospect contact discovered or enriched during lead generation.",
37499
- ownedBySystemId: "sales.lead-gen",
37500
- table: "acq_list_members",
37501
- stateCatalogId: "lead-gen.contact",
37502
- links: [
37503
- { toEntity: "leadgen.list", kind: "belongs-to", via: "list_id", label: "list" },
37504
- { toEntity: "leadgen.company", kind: "belongs-to", via: "company_id", label: "company" }
37505
- ]
37506
- },
37507
- {
37508
- id: "delivery.project",
37509
- order: 60,
37510
- label: "Project",
37511
- description: "A client delivery project.",
37512
- ownedBySystemId: "projects",
37513
- table: "projects",
37514
- links: [
37515
- { toEntity: "delivery.milestone", kind: "has-many", via: "project_id", label: "milestones" },
37516
- { toEntity: "delivery.task", kind: "has-many", via: "project_id", label: "tasks" }
37517
- ]
37518
- },
37519
- {
37520
- id: "delivery.milestone",
37521
- order: 70,
37522
- label: "Milestone",
37523
- description: "A delivery checkpoint within a project.",
37524
- ownedBySystemId: "projects",
37525
- table: "project_milestones",
37526
- links: [
37527
- { toEntity: "delivery.project", kind: "belongs-to", via: "project_id", label: "project" },
37528
- { toEntity: "delivery.task", kind: "has-many", via: "milestone_id", label: "tasks" }
37529
- ]
37530
- },
37531
- {
37532
- id: "delivery.task",
37533
- order: 80,
37534
- label: "Task",
37535
- description: "A delivery task that can move through the task status catalog.",
37536
- ownedBySystemId: "projects",
37537
- table: "project_tasks",
37538
- stateCatalogId: "delivery.task",
37539
- links: [
37540
- { toEntity: "delivery.project", kind: "belongs-to", via: "project_id", label: "project" },
37541
- { toEntity: "delivery.milestone", kind: "belongs-to", via: "milestone_id", label: "milestone" }
37542
- ]
37543
- }
37544
- ];
37545
- var DEFAULT_ORGANIZATION_MODEL_ENTITIES = Object.fromEntries(
37546
- ENTITY_ENTRY_INPUTS.map((entity) => {
37547
- const parsed = EntitySchema.parse(entity);
37548
- return [parsed.id, parsed];
37549
- })
37550
- );
37551
37515
 
37552
37516
  // ../core/src/organization-model/domains/actions.ts
37553
37517
  var ActionResourceIdSchema = external_exports.string().trim().min(1).max(255).regex(/^[A-Za-z0-9]+(?:[-._][A-Za-z0-9]+)*$/, "Resource IDs must use letters, numbers, -, _, or . separators");
@@ -38798,7 +38762,7 @@ var OrganizationModelSchemaBase = external_exports.object({
38798
38762
  resources: ResourcesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_RESOURCES),
38799
38763
  topology: OmTopologyDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_TOPOLOGY),
38800
38764
  actions: ActionsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_ACTIONS),
38801
- entities: EntitiesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_ENTITIES),
38765
+ entities: EntitiesDomainSchema.default({}),
38802
38766
  policies: PoliciesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_POLICIES),
38803
38767
  // D3: flat Record<id, OrgKnowledgeNode> — no wrapper object
38804
38768
  knowledge: KnowledgeDomainSchema.default({})
@@ -38807,7 +38771,7 @@ var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine(refineOrga
38807
38771
 
38808
38772
  // ../core/src/organization-model/defaults.ts
38809
38773
  var DEFAULT_ORGANIZATION_MODEL_KNOWLEDGE = {};
38810
- var DEFAULT_ORGANIZATION_MODEL_ENTITIES2 = {};
38774
+ var DEFAULT_ORGANIZATION_MODEL_ENTITIES = {};
38811
38775
  var DEFAULT_ORGANIZATION_MODEL_NAVIGATION = {
38812
38776
  sidebar: {
38813
38777
  primary: {},
@@ -38835,7 +38799,7 @@ var DEFAULT_ORGANIZATION_MODEL = {
38835
38799
  // Generic empty actions map. Elevasis-specific action entries have been relocated to
38836
38800
  // `@repo/elevasis-core/src/organization-model/actions.ts`.
38837
38801
  actions: {},
38838
- entities: DEFAULT_ORGANIZATION_MODEL_ENTITIES2,
38802
+ entities: DEFAULT_ORGANIZATION_MODEL_ENTITIES,
38839
38803
  policies: DEFAULT_ORGANIZATION_MODEL_POLICIES,
38840
38804
  knowledge: DEFAULT_ORGANIZATION_MODEL_KNOWLEDGE
38841
38805
  };
@@ -38910,19 +38874,22 @@ function getAllBuildTemplates(model) {
38910
38874
  const stepCatalog = stepCatalogId !== void 0 ? stepCatalogs.get(stepCatalogId) : void 0;
38911
38875
  const steps = stepCatalog === void 0 ? [] : entriesOf(stepCatalog);
38912
38876
  return {
38913
- id: templateId,
38914
- label: stringValue(templateEntry.label) ?? templateId,
38915
- ...stringValue(templateEntry.description) ? { description: stringValue(templateEntry.description) } : {},
38916
- ...stringValue(templateEntry.color) ? { color: stringValue(templateEntry.color) } : {},
38917
- steps: steps.map(([stepId, step]) => ({
38918
- id: stepId,
38919
- label: stringValue(step.label) ?? stepId,
38920
- ...stringValue(step.description) ? { description: stringValue(step.description) } : {},
38921
- ...step
38922
- }))
38877
+ order: numberValue(templateEntry.order, Number.MAX_SAFE_INTEGER),
38878
+ template: {
38879
+ id: templateId,
38880
+ label: stringValue(templateEntry.label) ?? templateId,
38881
+ ...stringValue(templateEntry.description) ? { description: stringValue(templateEntry.description) } : {},
38882
+ ...stringValue(templateEntry.color) ? { color: stringValue(templateEntry.color) } : {},
38883
+ steps: steps.map(([stepId, step]) => ({
38884
+ id: stepId,
38885
+ label: stringValue(step.label) ?? stepId,
38886
+ ...stringValue(step.description) ? { description: stringValue(step.description) } : {},
38887
+ ...step
38888
+ }))
38889
+ }
38923
38890
  };
38924
38891
  })
38925
- ).sort((a, b) => a.id.localeCompare(b.id));
38892
+ ).sort((a, b) => a.order - b.order || a.template.id.localeCompare(b.template.id)).map(({ template }) => template);
38926
38893
  }
38927
38894
  function getAllProspectingStages(model, kind) {
38928
38895
  return catalogRecords(model).filter((catalog) => catalog.kind === "stage" && appliesToEntityKind(catalog) === kind).flatMap(
@@ -44157,7 +44124,7 @@ function wrapAction(commandName, fn) {
44157
44124
  // package.json
44158
44125
  var package_default = {
44159
44126
  name: "@elevasis/sdk",
44160
- version: "1.25.0",
44127
+ version: "1.26.1",
44161
44128
  description: "SDK for building Elevasis organization resources",
44162
44129
  type: "module",
44163
44130
  bin: {