@elevasis/sdk 1.26.2 → 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.2",
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
@@ -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 */
@@ -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",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elevasis/sdk",
3
- "version": "1.26.2",
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.33.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,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.
@@ -18,13 +18,13 @@ The registry entry point for your workspace. This file imports OM resource gover
18
18
 
19
19
  ```ts
20
20
  import type { DeploymentSpec } from '@elevasis/sdk'
21
- import { resourceGovernanceModel } from '@core/config/organization-model'
21
+ import { organizationModel } from '@core/config/organization-model'
22
22
  import * as example from './example/index.js'
23
23
  import * as emailNotification from './email-notification/exports.js'
24
24
 
25
25
  const org: DeploymentSpec = {
26
26
  version: '0.1.0',
27
- organizationModel: resourceGovernanceModel,
27
+ organizationModel,
28
28
  workflows: [...example.workflows, ...emailNotification.workflows],
29
29
  agents: [...example.agents, ...emailNotification.agents]
30
30
  }
@@ -301,11 +301,11 @@ All executable resources must be assembled through a `DeploymentSpec` default ex
301
301
 
302
302
  ```typescript
303
303
  import type { DeploymentSpec } from '@elevasis/sdk';
304
- import { resourceGovernanceModel } from '@core/config/organization-model';
304
+ import { organizationModel } from '@core/config/organization-model';
305
305
 
306
306
  const org: DeploymentSpec = {
307
307
  version: '0.1.0',
308
- organizationModel: resourceGovernanceModel,
308
+ organizationModel,
309
309
  workflows: [echoWorkflow, pipeline],
310
310
  agents: [
311
311
  // myAgent,
@@ -410,16 +410,16 @@ operations/src/
410
410
  Top-level registry (`operations/src/index.ts`):
411
411
 
412
412
  ```typescript
413
- import type { DeploymentSpec } from '@elevasis/sdk'
414
- import { resourceGovernanceModel } from '@core/config/organization-model'
415
- import * as example from './example/index.js'
416
- import * as emailNotification from './email-notification/exports.js'
417
-
418
- const org: DeploymentSpec = {
419
- version: '0.1.0',
420
- organizationModel: resourceGovernanceModel,
421
- workflows: [...example.workflows, ...emailNotification.workflows],
422
- agents: [...example.agents, ...emailNotification.agents]
413
+ import type { DeploymentSpec } from '@elevasis/sdk'
414
+ import { organizationModel } from '@core/config/organization-model'
415
+ import * as example from './example/index.js'
416
+ import * as emailNotification from './email-notification/exports.js'
417
+
418
+ const org: DeploymentSpec = {
419
+ version: '0.1.0',
420
+ organizationModel,
421
+ workflows: [...example.workflows, ...emailNotification.workflows],
422
+ agents: [...example.agents, ...emailNotification.agents]
423
423
  }
424
424
  export default org
425
425
  ```
@@ -218,8 +218,8 @@ Use `codeRefs` as repo-relative breadcrumbs for agents and operators. They point
218
218
  Workflow and agent code owns schemas, handlers, steps, and runtime behavior. It should import the descriptor and derive `resourceId`, `type`, and display metadata from it.
219
219
 
220
220
  ```ts
221
- import type { WorkflowDefinition } from '@elevasis/sdk'
222
- import { resourceDescriptors } from '@core/config/organization-model'
221
+ import type { WorkflowDefinition } from '@elevasis/sdk'
222
+ import { organizationModel, resourceDescriptors } from '@core/config/organization-model'
223
223
 
224
224
  export const approveReviewItemWorkflow: WorkflowDefinition = {
225
225
  config: {
@@ -244,11 +244,11 @@ export const approveReviewItemWorkflow: WorkflowDefinition = {
244
244
  Register runtime resources in the deployment assembly, usually `operations/src/index.ts`:
245
245
 
246
246
  ```ts
247
- export const org = {
248
- version: '0.1.0',
249
- organizationModel: resourceGovernanceModel,
250
- workflows: [approveReviewItemWorkflow],
251
- agents: [],
247
+ export const org = {
248
+ version: '0.1.0',
249
+ organizationModel,
250
+ workflows: [approveReviewItemWorkflow],
251
+ agents: [],
252
252
  relationships: {
253
253
  'approve-review-item-workflow': {
254
254
  uses: { integrations: ['email'] }
@@ -111,14 +111,14 @@ export const myWorkflow: WorkflowDefinition = {
111
111
  ## 3. Register in the deployment spec
112
112
 
113
113
  ```ts
114
- import { resourceGovernanceModel } from '@core/config/organization-model'
115
- import { myWorkflow } from './my-workflow/index.js'
116
-
117
- export const org = {
118
- version: '0.1.0',
119
- organizationModel: resourceGovernanceModel,
120
- workflows: [myWorkflow],
121
- agents: []
114
+ import { organizationModel } from '@core/config/organization-model'
115
+ import { myWorkflow } from './my-workflow/index.js'
116
+
117
+ export const org = {
118
+ version: '0.1.0',
119
+ organizationModel,
120
+ workflows: [myWorkflow],
121
+ agents: []
122
122
  }
123
123
  ```
124
124
 
@@ -1331,38 +1331,33 @@ export interface HumanCheckpointDefinition extends ResourceDefinition {
1331
1331
  ### `DeploymentSpec`
1332
1332
 
1333
1333
  ```typescript
1334
- /**
1335
- * Organization-specific resource collection
1336
- *
1337
- * Complete manifest of all automation resources for an organization.
1338
- * Used by ResourceRegistry for discovery and Command View for visualization.
1339
- */
1340
- export interface DeploymentSpec {
1334
+ /**
1335
+ * Organization-specific resource collection
1336
+ *
1337
+ * Complete manifest of all automation resources for an organization.
1338
+ * Used by ResourceRegistry for discovery and Command View for visualization.
1339
+ */
1340
+ export interface DeploymentSpec {
1341
1341
  /** Deployment version (semver) */
1342
1342
  version: string
1343
- /** Optional Organization Model governance catalog used for OM-code validation */
1344
- organizationModel?: Partial<
1345
- Pick<
1346
- OrganizationModel,
1347
- 'systems' | 'resources' | 'ontology' | 'topology' | 'roles' | 'policies' | 'entities' | 'actions'
1348
- >
1349
- >
1350
- /** Workflow definitions */
1351
- workflows?: WorkflowDefinition[]
1352
- /** Agent definitions */
1353
- agents?: AgentDefinition[]
1354
-
1355
- // Resource Manifest fields (optional for backwards compatibility)
1356
- /** Trigger definitions - entry points that initiate executions */
1357
- triggers?: TriggerDefinition[]
1358
- /** Integration definitions - external service connections */
1359
- integrations?: IntegrationDefinition[]
1360
- /** Explicit relationship declarations between resources */
1361
- relationships?: ResourceRelationships
1362
- /** External automation resources (n8n, Make, Zapier, etc.) */
1363
- externalResources?: ExternalResourceDefinition[]
1364
- /** Human checkpoint definitions - human decision points in automation */
1365
- humanCheckpoints?: HumanCheckpointDefinition[]
1343
+ /** Optional full Organization Model snapshot used for OM-code validation and deployment persistence */
1344
+ organizationModel?: OrganizationModel
1345
+ /** Workflow definitions */
1346
+ workflows?: WorkflowDefinition[]
1347
+ /** Agent definitions */
1348
+ agents?: AgentDefinition[]
1349
+
1350
+ // Resource Manifest fields (optional for backwards compatibility)
1351
+ /** Trigger definitions - entry points that initiate executions */
1352
+ triggers?: TriggerDefinition[]
1353
+ /** Integration definitions - external service connections */
1354
+ integrations?: IntegrationDefinition[]
1355
+ /** Explicit relationship declarations between resources */
1356
+ relationships?: ResourceRelationships
1357
+ /** External automation resources (n8n, Make, Zapier, etc.) */
1358
+ externalResources?: ExternalResourceDefinition[]
1359
+ /** Human checkpoint definitions - human decision points in automation */
1360
+ humanCheckpoints?: HumanCheckpointDefinition[]
1366
1361
  }
1367
1362
  ```
1368
1363