@elevasis/sdk 1.26.1 → 1.27.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/cli.cjs CHANGED
@@ -40268,6 +40268,9 @@ function getRuntimeResources(resources) {
40268
40268
  }))
40269
40269
  ];
40270
40270
  }
40271
+ function isStaticPlatformAgentResource(resource) {
40272
+ return resource.kind === "agent" && resource.agentKind === "platform";
40273
+ }
40271
40274
  function hasOntologySources(organizationModel) {
40272
40275
  return organizationModel.ontology !== void 0 || organizationModel.entities !== void 0 || organizationModel.actions !== void 0 || Object.values(organizationModel.systems ?? {}).some(systemHasOntologySource);
40273
40276
  }
@@ -40421,6 +40424,9 @@ function validateResourceGovernance(orgName, deployment, organizationModel = dep
40421
40424
  }
40422
40425
  const runtimeResource = runtimeResourcesById.get(resource.id);
40423
40426
  if (!runtimeResource) {
40427
+ if (isStaticPlatformAgentResource(resource)) {
40428
+ continue;
40429
+ }
40424
40430
  addGovernanceIssue(
40425
40431
  issues,
40426
40432
  "missing-code-resource",
@@ -44124,7 +44130,7 @@ function wrapAction(commandName, fn) {
44124
44130
  // package.json
44125
44131
  var package_default = {
44126
44132
  name: "@elevasis/sdk",
44127
- version: "1.26.1",
44133
+ version: "1.27.0",
44128
44134
  description: "SDK for building Elevasis organization resources",
44129
44135
  type: "module",
44130
44136
  bin: {
@@ -44373,6 +44379,9 @@ function listOrganizationModelContractRefs(org) {
44373
44379
  });
44374
44380
  }
44375
44381
  function validateResourceGovernancePreflight(orgName, org, contractRegistry) {
44382
+ if (org.organizationModel !== void 0) {
44383
+ OrganizationModelSchema.parse(org.organizationModel);
44384
+ }
44376
44385
  if (process.env.ELEVASIS_RESOURCE_VALIDATOR === "warn-only") return;
44377
44386
  validateResourceGovernance(orgName, org, org.organizationModel, { mode: "strict" });
44378
44387
  const contractRefs = listOrganizationModelContractRefs(org);
package/dist/index.d.ts CHANGED
@@ -7694,7 +7694,7 @@ declare function compileBusinessOntologyValidationIndex(model: OrganizationModel
7694
7694
  * organization model's `sales.lead-gen` stage records). Hosts that own a
7695
7695
  * populated tenant model (e.g. `apps/api` with the Elevasis canonical model)
7696
7696
  * MUST build their own index via `compileBusinessOntologyValidationIndex(model)`
7697
- * and call `createLeadGenStageValidators(index)`. `@repo/core` stays generic
7697
+ * and call `createLeadGenStageValidators(index)`. The core package stays generic;
7698
7698
  * it must never import a tenant model.
7699
7699
  */
7700
7700
  type LeadGenStageValidators = {
@@ -11494,8 +11494,8 @@ interface SystemConfig {
11494
11494
  interface DeploymentSpec {
11495
11495
  /** Deployment version (semver) */
11496
11496
  version: string;
11497
- /** Optional Organization Model governance catalog used for OM-code validation */
11498
- organizationModel?: Partial<Pick<OrganizationModel$1, 'systems' | 'resources' | 'ontology' | 'topology' | 'roles' | 'policies' | 'entities' | 'actions'>>;
11497
+ /** Optional full Organization Model snapshot used for OM-code validation and deployment persistence */
11498
+ organizationModel?: OrganizationModel$1;
11499
11499
  /** Workflow definitions */
11500
11500
  workflows?: WorkflowDefinition[];
11501
11501
  /** Agent definitions */
@@ -11833,6 +11833,11 @@ interface ResourceGovernanceValidationOptions {
11833
11833
  /**
11834
11834
  * Validates runtime resource definitions against OM Resources and Systems.
11835
11835
  *
11836
+ * This is an overlay validator for code/resource bindings, ontology bindings,
11837
+ * and topology refs that need runtime manifest context. It does not validate
11838
+ * Organization Model shape; deploy/runtime structural gates use
11839
+ * OrganizationModelSchema.
11840
+ *
11836
11841
  * This is the shared core entry point for SDK, CI, deploy, and ResourceRegistry.
11837
11842
  * Default mode is strict. ELEVASIS_RESOURCE_VALIDATOR=warn-only remains a
11838
11843
  * permanent emergency escape hatch unless an explicit mode is passed.
package/dist/index.js CHANGED
@@ -1583,6 +1583,9 @@ function getRuntimeResources(resources) {
1583
1583
  }))
1584
1584
  ];
1585
1585
  }
1586
+ function isStaticPlatformAgentResource(resource) {
1587
+ return resource.kind === "agent" && resource.agentKind === "platform";
1588
+ }
1586
1589
  function hasOntologySources(organizationModel) {
1587
1590
  return organizationModel.ontology !== void 0 || organizationModel.entities !== void 0 || organizationModel.actions !== void 0 || Object.values(organizationModel.systems ?? {}).some(systemHasOntologySource);
1588
1591
  }
@@ -1735,6 +1738,9 @@ function validateResourceGovernance(orgName, deployment, organizationModel = dep
1735
1738
  }
1736
1739
  const runtimeResource = runtimeResourcesById.get(resource.id);
1737
1740
  if (!runtimeResource) {
1741
+ if (isStaticPlatformAgentResource(resource)) {
1742
+ continue;
1743
+ }
1738
1744
  addGovernanceIssue(
1739
1745
  issues,
1740
1746
  "missing-code-resource",
@@ -6325,20 +6331,9 @@ function projectDeploymentSpec(options) {
6325
6331
  options.getIntegrationResourceDescriptor,
6326
6332
  options.getResourceOntologyBinding
6327
6333
  );
6328
- const workflowResourceIds = new Set(workflows.map((workflow) => workflow.config.resourceId));
6329
- const integrationResourceIds = new Set(integrations.map((integration) => integration.resourceId));
6330
- const resources = projectDeploymentResources(
6331
- options.organizationModel.resources,
6332
- workflowResourceIds,
6333
- integrationResourceIds,
6334
- options.getResourceOntologyBinding
6335
- );
6336
6334
  return {
6337
6335
  version: options.version,
6338
- organizationModel: {
6339
- systems: projectDeploymentSystems(options.organizationModel),
6340
- resources
6341
- },
6336
+ organizationModel: options.organizationModel,
6342
6337
  workflows,
6343
6338
  agents: options.agents ?? [],
6344
6339
  triggers: options.triggers,
@@ -6348,38 +6343,6 @@ function projectDeploymentSpec(options) {
6348
6343
  ...options.externalResources ? { externalResources: options.externalResources } : {}
6349
6344
  };
6350
6345
  }
6351
- function projectDeploymentResources(resources, workflowResourceIds, integrationResourceIds, getResourceOntologyBinding) {
6352
- return Object.fromEntries(
6353
- Object.values(resources).filter((resource) => workflowResourceIds.has(resource.id) || integrationResourceIds.has(resource.id)).map((resource) => {
6354
- const sdkResource = toSdkResourceDescriptor(resource, getResourceOntologyBinding);
6355
- return [sdkResource.id, sdkResource];
6356
- })
6357
- );
6358
- }
6359
- function projectDeploymentSystems(model) {
6360
- return Object.fromEntries(
6361
- listAllSystems(model).map(({ path, system }, index) => {
6362
- const lifecycle = system.lifecycle === "archived" ? "archived" : system.lifecycle === "deprecated" ? "deprecated" : "active";
6363
- return [
6364
- system.id,
6365
- {
6366
- id: system.id,
6367
- order: system.order ?? (index + 1) * 10,
6368
- title: system.label ?? system.title ?? system.id,
6369
- description: system.description ?? "",
6370
- kind: system.kind ?? "product",
6371
- ...system.parentSystemId ? { parentSystemId: system.parentSystemId } : {},
6372
- ...path !== system.id ? { systemPath: path } : {},
6373
- governedByKnowledge: system.governedByKnowledge ?? [],
6374
- drivesGoals: system.drivesGoals ?? [],
6375
- lifecycle,
6376
- status: lifecycle,
6377
- ...system.responsibleRoleId ? { responsibleRoleId: system.responsibleRoleId } : {}
6378
- }
6379
- ];
6380
- })
6381
- );
6382
- }
6383
6346
  var ListBuilderStageKeySchema = z.string().min(1);
6384
6347
 
6385
6348
  export { ActivityEventSchema, BuildPlanSnapshotStepSchema, ProspectingBuildTemplateSchema as BuildTemplateSchema, ContractRefResolutionError, CrmStageKeySchema, CrmStateKeySchema, EmailSchema, ExecutionError, ListBuilderStageKeySchema, ProcessingStageStatusSchema, RegistryValidationError, ResourceRegistry, StepType, ToolingError, bindResourceDescriptor, compileBusinessOntologyValidationIndex, concurrentPool, createLeadGenStageValidators, defineContract, defineResource, defineResourceOntology, defineResources, defineStep, defineTopology, defineTopologyRelationship, defineWorkflow, deriveActions, diagnosticOutput, integrationInput, isZodType, parseTopologyNodeRef, projectDeploymentSpec, projectTopologyRelationships, resolveContractRef, runDiagnostic, splitName, toSdkResourceDescriptor, topologyRef, topologyRelationship, validateResourceGovernance, withPlatformIntegrationResourceDescriptor, withPlatformIntegrationResourceDescriptors, withPlatformResourceDescriptor, withPlatformResourceDescriptors };
@@ -3001,8 +3001,8 @@ type ResourceLink = Link;
3001
3001
  interface DeploymentSpec {
3002
3002
  /** Deployment version (semver) */
3003
3003
  version: string;
3004
- /** Optional Organization Model governance catalog used for OM-code validation */
3005
- organizationModel?: Partial<Pick<OrganizationModel$1, 'systems' | 'resources' | 'ontology' | 'topology' | 'roles' | 'policies' | 'entities' | 'actions'>>;
3004
+ /** Optional full Organization Model snapshot used for OM-code validation and deployment persistence */
3005
+ organizationModel?: OrganizationModel$1;
3006
3006
  /** Workflow definitions */
3007
3007
  workflows?: WorkflowDefinition[];
3008
3008
  /** Agent definitions */
@@ -511,26 +511,6 @@ async function runKnowledgeCodegen(layout) {
511
511
  );
512
512
  }
513
513
 
514
- // ../core/src/organization-model/helpers.ts
515
- function childSystemsOf(system) {
516
- return system.systems ?? system.subsystems ?? {};
517
- }
518
- function listAllSystems(model) {
519
- const results = [];
520
- function walk(map, prefix) {
521
- for (const [localId, system] of Object.entries(map)) {
522
- const fullPath = prefix ? `${prefix}.${localId}` : localId;
523
- results.push({ path: fullPath, system });
524
- const childSystems = childSystemsOf(system);
525
- if (Object.keys(childSystems).length > 0) {
526
- walk(childSystems, fullPath);
527
- }
528
- }
529
- }
530
- walk(model.systems, "");
531
- return results;
532
- }
533
-
534
514
  // src/project-deployment-spec.ts
535
515
  function toSdkResourceDescriptor(resource, getResourceOntologyBinding) {
536
516
  const ontologyBinding = getResourceOntologyBinding?.(resource.id);
@@ -617,20 +597,9 @@ function projectDeploymentSpec(options) {
617
597
  options.getIntegrationResourceDescriptor,
618
598
  options.getResourceOntologyBinding
619
599
  );
620
- const workflowResourceIds = new Set(workflows.map((workflow) => workflow.config.resourceId));
621
- const integrationResourceIds = new Set(integrations.map((integration) => integration.resourceId));
622
- const resources = projectDeploymentResources(
623
- options.organizationModel.resources,
624
- workflowResourceIds,
625
- integrationResourceIds,
626
- options.getResourceOntologyBinding
627
- );
628
600
  return {
629
601
  version: options.version,
630
- organizationModel: {
631
- systems: projectDeploymentSystems(options.organizationModel),
632
- resources
633
- },
602
+ organizationModel: options.organizationModel,
634
603
  workflows,
635
604
  agents: options.agents ?? [],
636
605
  triggers: options.triggers,
@@ -640,37 +609,5 @@ function projectDeploymentSpec(options) {
640
609
  ...options.externalResources ? { externalResources: options.externalResources } : {}
641
610
  };
642
611
  }
643
- function projectDeploymentResources(resources, workflowResourceIds, integrationResourceIds, getResourceOntologyBinding) {
644
- return Object.fromEntries(
645
- Object.values(resources).filter((resource) => workflowResourceIds.has(resource.id) || integrationResourceIds.has(resource.id)).map((resource) => {
646
- const sdkResource = toSdkResourceDescriptor(resource, getResourceOntologyBinding);
647
- return [sdkResource.id, sdkResource];
648
- })
649
- );
650
- }
651
- function projectDeploymentSystems(model) {
652
- return Object.fromEntries(
653
- listAllSystems(model).map(({ path, system }, index) => {
654
- const lifecycle = system.lifecycle === "archived" ? "archived" : system.lifecycle === "deprecated" ? "deprecated" : "active";
655
- return [
656
- system.id,
657
- {
658
- id: system.id,
659
- order: system.order ?? (index + 1) * 10,
660
- title: system.label ?? system.title ?? system.id,
661
- description: system.description ?? "",
662
- kind: system.kind ?? "product",
663
- ...system.parentSystemId ? { parentSystemId: system.parentSystemId } : {},
664
- ...path !== system.id ? { systemPath: path } : {},
665
- governedByKnowledge: system.governedByKnowledge ?? [],
666
- drivesGoals: system.drivesGoals ?? [],
667
- lifecycle,
668
- status: lifecycle,
669
- ...system.responsibleRoleId ? { responsibleRoleId: system.responsibleRoleId } : {}
670
- }
671
- ];
672
- })
673
- );
674
- }
675
612
 
676
613
  export { generateKnowledgeBodies, generateKnowledgeNodes, generateKnowledgeNodesTs, projectDeploymentSpec, projectTopologyRelationships, readKnowledgeNodeMdx, runKnowledgeCodegen, toSdkResourceDescriptor, withPlatformIntegrationResourceDescriptor, withPlatformIntegrationResourceDescriptors, withPlatformResourceDescriptor, withPlatformResourceDescriptors };
@@ -10471,8 +10471,8 @@ type ResourceLink = Link;
10471
10471
  interface DeploymentSpec {
10472
10472
  /** Deployment version (semver) */
10473
10473
  version: string;
10474
- /** Optional Organization Model governance catalog used for OM-code validation */
10475
- organizationModel?: Partial<Pick<OrganizationModel, 'systems' | 'resources' | 'ontology' | 'topology' | 'roles' | 'policies' | 'entities' | 'actions'>>;
10474
+ /** Optional full Organization Model snapshot used for OM-code validation and deployment persistence */
10475
+ organizationModel?: OrganizationModel;
10476
10476
  /** Workflow definitions */
10477
10477
  workflows?: WorkflowDefinition[];
10478
10478
  /** Agent definitions */
@@ -10547,8 +10547,8 @@ type TypedAdapter<TMap extends ToolMethodMap$1> = {
10547
10547
  * Message protocol:
10548
10548
  * Parent -> Worker: { type: 'manifest' }
10549
10549
  * Worker -> Parent: { type: 'manifest', workflows: [...], agents: [...],
10550
- * triggers?: [...], integrations?: [...], humanCheckpoints?: [...],
10551
- * relationships?: {...} }
10550
+ * organizationModel?: {...}, triggers?: [...], integrations?: [...],
10551
+ * humanCheckpoints?: [...], relationships?: {...} }
10552
10552
  *
10553
10553
  * Parent -> Worker: { type: 'execute', resourceId, executionId, input, organizationId?, organizationName?,
10554
10554
  * sessionId?, sessionTurnNumber?, parentExecutionId?, executionDepth }
@@ -8601,6 +8601,9 @@ function getRuntimeResources(resources) {
8601
8601
  }))
8602
8602
  ];
8603
8603
  }
8604
+ function isStaticPlatformAgentResource(resource) {
8605
+ return resource.kind === "agent" && resource.agentKind === "platform";
8606
+ }
8604
8607
  function hasOntologySources(organizationModel) {
8605
8608
  return organizationModel.ontology !== void 0 || organizationModel.entities !== void 0 || organizationModel.actions !== void 0 || Object.values(organizationModel.systems ?? {}).some(systemHasOntologySource);
8606
8609
  }
@@ -8753,6 +8756,9 @@ function validateResourceGovernance(orgName, deployment, organizationModel = dep
8753
8756
  }
8754
8757
  const runtimeResource = runtimeResourcesById.get(resource.id);
8755
8758
  if (!runtimeResource) {
8759
+ if (isStaticPlatformAgentResource(resource)) {
8760
+ continue;
8761
+ }
8756
8762
  addGovernanceIssue(
8757
8763
  issues,
8758
8764
  "missing-code-resource",
@@ -9284,6 +9290,7 @@ function startWorker(org) {
9284
9290
  if (msg.type === "manifest") {
9285
9291
  parentPort.postMessage({
9286
9292
  type: "manifest",
9293
+ organizationModel: org.organizationModel,
9287
9294
  workflows: (org.workflows ?? []).map((w2) => ({
9288
9295
  resourceId: w2.config.resourceId,
9289
9296
  name: w2.config.name,
@@ -21298,7 +21305,7 @@ function recordAsyncAnnotation(test5, promise) {
21298
21305
  return promise;
21299
21306
  }
21300
21307
 
21301
- // ../../node_modules/.pnpm/vitest@3.2.4_@edge-runtime+_655b5a9ef789d2c00bade142a29242c2/node_modules/vitest/dist/chunks/utils.XdZDrNZV.js
21308
+ // ../../node_modules/.pnpm/vitest@3.2.4_@edge-runtime+_d1cccf33043c821cd797d4ac11d33b3e/node_modules/vitest/dist/chunks/utils.XdZDrNZV.js
21302
21309
  var NAME_WORKER_STATE = "__vitest_worker__";
21303
21310
  function getWorkerState() {
21304
21311
  const workerState = globalThis[NAME_WORKER_STATE];
@@ -21346,7 +21353,7 @@ async function waitForImportsToResolve() {
21346
21353
  await waitForImportsToResolve();
21347
21354
  }
21348
21355
 
21349
- // ../../node_modules/.pnpm/vitest@3.2.4_@edge-runtime+_655b5a9ef789d2c00bade142a29242c2/node_modules/vitest/dist/chunks/_commonjsHelpers.BFTU3MAI.js
21356
+ // ../../node_modules/.pnpm/vitest@3.2.4_@edge-runtime+_d1cccf33043c821cd797d4ac11d33b3e/node_modules/vitest/dist/chunks/_commonjsHelpers.BFTU3MAI.js
21350
21357
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
21351
21358
  function getDefaultExportFromCjs3(x2) {
21352
21359
  return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2;
@@ -23379,7 +23386,7 @@ var SnapshotClient = class {
23379
23386
  }
23380
23387
  };
23381
23388
 
23382
- // ../../node_modules/.pnpm/vitest@3.2.4_@edge-runtime+_655b5a9ef789d2c00bade142a29242c2/node_modules/vitest/dist/chunks/date.Bq6ZW5rf.js
23389
+ // ../../node_modules/.pnpm/vitest@3.2.4_@edge-runtime+_d1cccf33043c821cd797d4ac11d33b3e/node_modules/vitest/dist/chunks/date.Bq6ZW5rf.js
23383
23390
  var RealDate = Date;
23384
23391
  var now2 = null;
23385
23392
  var MockDate = class _MockDate extends RealDate {
@@ -23427,7 +23434,7 @@ function resetDate() {
23427
23434
  globalThis.Date = RealDate;
23428
23435
  }
23429
23436
 
23430
- // ../../node_modules/.pnpm/vitest@3.2.4_@edge-runtime+_655b5a9ef789d2c00bade142a29242c2/node_modules/vitest/dist/chunks/vi.bdSIJ99Y.js
23437
+ // ../../node_modules/.pnpm/vitest@3.2.4_@edge-runtime+_d1cccf33043c821cd797d4ac11d33b3e/node_modules/vitest/dist/chunks/vi.bdSIJ99Y.js
23431
23438
  var unsupported = [
23432
23439
  "matchSnapshot",
23433
23440
  "toMatchSnapshot",
@@ -26108,7 +26115,7 @@ function getImporter(name) {
26108
26115
  return stack?.file || "";
26109
26116
  }
26110
26117
 
26111
- // ../../node_modules/.pnpm/vitest@3.2.4_@edge-runtime+_655b5a9ef789d2c00bade142a29242c2/node_modules/vitest/dist/index.js
26118
+ // ../../node_modules/.pnpm/vitest@3.2.4_@edge-runtime+_d1cccf33043c821cd797d4ac11d33b3e/node_modules/vitest/dist/index.js
26112
26119
  __toESM(require_dist());
26113
26120
 
26114
26121
  // src/test-utils/mock-adapters.ts
@@ -7,8 +7,8 @@
7
7
  * Message protocol:
8
8
  * Parent -> Worker: { type: 'manifest' }
9
9
  * Worker -> Parent: { type: 'manifest', workflows: [...], agents: [...],
10
- * triggers?: [...], integrations?: [...], humanCheckpoints?: [...],
11
- * relationships?: {...} }
10
+ * organizationModel?: {...}, triggers?: [...], integrations?: [...],
11
+ * humanCheckpoints?: [...], relationships?: {...} }
12
12
  *
13
13
  * Parent -> Worker: { type: 'execute', resourceId, executionId, input, organizationId?, organizationName?,
14
14
  * sessionId?, sessionTurnNumber?, parentExecutionId?, executionDepth }
@@ -6801,6 +6801,7 @@ function startWorker(org) {
6801
6801
  if (msg.type === "manifest") {
6802
6802
  parentPort.postMessage({
6803
6803
  type: "manifest",
6804
+ organizationModel: org.organizationModel,
6804
6805
  workflows: (org.workflows ?? []).map((w) => ({
6805
6806
  resourceId: w.config.resourceId,
6806
6807
  name: w.config.name,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elevasis/sdk",
3
- "version": "1.26.1",
3
+ "version": "1.27.0",
4
4
  "description": "SDK for building Elevasis organization resources",
5
5
  "type": "module",
6
6
  "bin": {
@@ -58,7 +58,7 @@
58
58
  "tsup": "^8.0.0",
59
59
  "typescript": "5.9.2",
60
60
  "zod": "^4.1.0",
61
- "@repo/core": "0.32.0",
61
+ "@repo/core": "0.34.2",
62
62
  "@repo/eslint-config": "0.0.0",
63
63
  "@repo/typescript-config": "0.0.0"
64
64
  },
@@ -0,0 +1,31 @@
1
+ # Lead Gen Manage Access Package Baseline
2
+
3
+ ## Why this note exists
4
+
5
+ This train adds `sales.lead-gen.manage` as the OM-aligned runtime permission for operating Lead Gen list-builder mutations. The implementation ships through `@elevasis/core` and `@elevasis/ui`; template projects need the package baseline update so derived apps receive the new access key and shared Lead Gen UI guards.
6
+
7
+ ## Applies to
8
+
9
+ - Template UI package baseline: `external/_template/ui/package.json`
10
+ - Template core package baseline: `external/_template/core/package.json`
11
+ - Template operations package baseline: `external/_template/operations/package.json`
12
+ - Derived projects that expose the shared Lead Gen list-builder UI
13
+
14
+ ## Required actions
15
+
16
+ 1. Publish the prepared `@elevasis/core` release containing `sales.lead-gen.manage` and `AccessKeys.leadGenManage`.
17
+ 2. Publish the prepared `@elevasis/ui` release containing the shared Lead Gen mutation affordance guards.
18
+ 3. Run the prepared external sync manifest so derived projects receive the updated package baselines.
19
+ 4. For client launches, verify Operator users receive `sales.lead-gen.manage` through platform role grants before list-builder smoke.
20
+
21
+ ## Verification
22
+
23
+ - `pnpm -C packages/core build:publish`
24
+ - `pnpm -C packages/ui build:publish`
25
+ - `pnpm -C external/_template/ui check-types`
26
+ - `pnpm -C external/_template/ui build`
27
+ - `pnpm sync:verify` after the manifest-scoped external sync stage
28
+
29
+ ## Not handled by /git-sync
30
+
31
+ Database permission rows and system role grants are environment state, not template files. Apply the SQL migration or equivalent environment change separately before inviting Operator users.
@@ -0,0 +1,33 @@
1
+ # Full Organization Model deploy contract
2
+
3
+ ## Why this note exists
4
+
5
+ The deployment contract now requires SDK projects to deploy the full canonical `organizationModel`, not the internal `resourceGovernanceModel` projection. The SDK and API now parse deployment snapshots with `OrganizationModelSchema` before overlay validation or persistence, so partial governance projections will fail before they can become active deployment snapshots.
6
+
7
+ This fixes the class of production failures where an active deployment persisted only `systems`, `resources`, `topology`, `entities`, and `actions`, then the runtime resolver failed because referenced `roles`, `goals`, and `navigation` were absent.
8
+
9
+ ## Applies to
10
+
11
+ All template-derived projects with an `operations/src/index.ts` deployment spec and a `core/config/organization-model.ts` canonical model.
12
+
13
+ ## Required actions
14
+
15
+ 1. Pull the new package baselines after the release train publishes:
16
+ - `@elevasis/core`
17
+ - `@elevasis/sdk`
18
+ 2. Ensure `operations/src/index.ts` imports and passes the canonical full `organizationModel` from `@core/config/organization-model`.
19
+ 3. Keep `resourceGovernanceModel` only for local compatibility assertions or profile assembly. Do not pass it as `DeploymentSpec.organizationModel`.
20
+ 4. Redeploy the operations bundle so the active platform deployment persists a full model snapshot:
21
+ - dev: `pnpm -C operations deploy`
22
+ - prod: `pnpm -C operations deploy:prod`
23
+
24
+ ## Verification
25
+
26
+ - `pnpm -C operations check`
27
+ - `pnpm -C core test -- organization-model`
28
+ - Confirm the active deployment Organization Model snapshot parses and includes full domains such as `roles`, `goals`, and `navigation`.
29
+ - Confirm acquisition/list or other OM-backed routes no longer fail with `MODEL_PARSE_FAILED`.
30
+
31
+ ## Not handled by /git-sync
32
+
33
+ `/git-sync` can propagate template guidance and package baselines, but it does not install dependencies, publish packages, deploy the operations bundle, or verify the active platform deployment snapshot. Each derived project must run install/deploy and production smoke checks after syncing.
@@ -0,0 +1,37 @@
1
+ # UI + SDK package fixes (lastVisitedOrg, worker-manifest organizationModel)
2
+
3
+ ## Why this note exists
4
+
5
+ `@elevasis/ui` and `@elevasis/sdk` were republished with two backward-compatible fixes:
6
+
7
+ - `@elevasis/ui`: `OrganizationProvider` now persists org preference as `lastVisitedOrg` (matching the `/api/users/me` schema), removing the noisy 400 on organization switching.
8
+ - `@elevasis/sdk`: the worker manifest now includes `organizationModel`, so platform deployment persistence receives your tenant Organization Model snapshot.
9
+
10
+ The SDK change requires a deploy, not just an install, to take effect on your active platform deployment.
11
+
12
+ ## Applies to
13
+
14
+ All template-derived projects that consume `@elevasis/ui` and `@elevasis/sdk` and run an `operations/` resources bundle on the Elevasis platform.
15
+
16
+ ## Required actions
17
+
18
+ 1. Pull and install so the new baselines land:
19
+ - `@elevasis/ui` baseline bump in `ui/package.json`
20
+ - `@elevasis/sdk` baseline bump in `operations/package.json`
21
+ 2. `pnpm -C ui install && pnpm -C operations install` (or a project-root install) to update lockfiles.
22
+ 3. Redeploy your operations bundle so the worker manifest publishes your Organization Model to the active deployment:
23
+ - dev: `pnpm -C operations deploy`
24
+ - prod: `pnpm -C operations deploy:prod`
25
+ 4. Redeploy the UI (your host, e.g. Vercel) so the `lastVisitedOrg` fix ships to the browser.
26
+
27
+ No source merges are required; both changes are internal to the published packages.
28
+
29
+ ## Verification
30
+
31
+ - `pnpm -C ui check-types && pnpm -C ui build`
32
+ - `pnpm -C operations check && pnpm -C operations check-types`
33
+ - After deploy, confirm the active deployment persists an Organization Model snapshot (Lead Gen / list surfaces resolve the tenant model rather than erroring), and that organization switching no longer emits a 400 against `/api/users/me`.
34
+
35
+ ## Not handled by /git-sync
36
+
37
+ `/git-sync` pulls the new baselines and surfaces this note, but it does NOT install dependencies, deploy your operations bundle, or redeploy your UI. Run the install + deploy steps above yourself; the worker-manifest fix only takes effect on your active deployment after an operations redeploy.
@@ -428,7 +428,7 @@ elevasis-sdk session:end <id>
428
428
 
429
429
  ## elevasis-sdk queue:\*
430
430
 
431
- Manage HITL command queue tasks. See the [Command Queue CLI Guide](/technical/development/agent-driven-development/command-cli-guide) for the full command reference.
431
+ Manage HITL command queue tasks. See the [Command Queue CLI Guide](/technical/development/agent-driven-development/cli-operations) for the full command reference.
432
432
 
433
433
  **Quick reference:**
434
434
 
@@ -446,7 +446,7 @@ elevasis-sdk queue:status --pretty
446
446
 
447
447
  ## elevasis-sdk schedule:\*
448
448
 
449
- Manage recurring, relative, and absolute task schedules. See the [Schedule CLI Guide](/technical/development/agent-driven-development/schedule-cli-guide) for the full command reference including schedule config JSON shapes.
449
+ Manage recurring, relative, and absolute task schedules. See the [Schedule CLI Guide](/technical/development/agent-driven-development/cli-operations) for the full command reference including schedule config JSON shapes.
450
450
 
451
451
  **Quick reference:**
452
452
 
@@ -468,7 +468,7 @@ elevasis-sdk schedule:cancel <id> --pretty
468
468
 
469
469
  Knowledge map inspection. The `om:*` (Organization Model) commands expose knowledge graph traversal via the CLI.
470
470
 
471
- For the full command reference, flag details, and graph architecture, see the [knowledge:\* CLI documentation](/technical/features/knowledge/knowledge-cli).
471
+ For the full command reference, flag details, and graph architecture, see the [knowledge:\* CLI documentation](/technical/features/knowledge/cli-and-skill).
472
472
 
473
473
  **Quick reference:**
474
474