@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 +10 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.js +7 -44
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.js +1 -64
- package/dist/test-utils/index.d.ts +2 -2
- package/dist/test-utils/index.js +6 -0
- package/package.json +2 -2
- package/reference/claude-config/sync-notes/2026-05-23-om-full-model-deploy-contract.md +33 -0
- package/reference/framework/project-structure.mdx +2 -2
- package/reference/resources/index.mdx +2 -2
- package/reference/scaffold/operations/workflow-recipes.md +10 -10
- package/reference/scaffold/recipes/add-a-feature.md +7 -7
- package/reference/scaffold/recipes/add-a-resource.md +8 -8
- package/reference/scaffold/reference/contracts.md +25 -30
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.
|
|
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
|
|
11498
|
-
organizationModel?:
|
|
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 };
|
package/dist/node/index.d.ts
CHANGED
|
@@ -3001,8 +3001,8 @@ type ResourceLink = Link;
|
|
|
3001
3001
|
interface DeploymentSpec {
|
|
3002
3002
|
/** Deployment version (semver) */
|
|
3003
3003
|
version: string;
|
|
3004
|
-
/** Optional Organization Model
|
|
3005
|
-
organizationModel?:
|
|
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 */
|
package/dist/node/index.js
CHANGED
|
@@ -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
|
|
10475
|
-
organizationModel?:
|
|
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 */
|
package/dist/test-utils/index.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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 {
|
|
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
|
|
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 {
|
|
304
|
+
import { organizationModel } from '@core/config/organization-model';
|
|
305
305
|
|
|
306
306
|
const org: DeploymentSpec = {
|
|
307
307
|
version: '0.1.0',
|
|
308
|
-
organizationModel
|
|
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 {
|
|
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]
|
|
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
|
|
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 {
|
|
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: []
|
|
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
|
|
1344
|
-
organizationModel?:
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
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
|
|