@elevasis/sdk 1.52.1 → 1.53.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/{chunk-XC57JNMA.js → chunk-B2KAVPNB.js} +12 -6
- package/dist/{chunk-T6DTAP2U.js → chunk-FUOIYRIZ.js} +1 -1
- package/dist/{chunk-VYWGWJRW.js → chunk-HB7DC5LT.js} +18 -0
- package/dist/cli.cjs +97 -10
- package/dist/index.js +2 -2
- package/dist/node/index.js +1 -1
- package/dist/test-utils/index.js +3 -3
- package/dist/worker/index.js +3 -3
- package/package.json +1 -1
- package/reference/rules/deployment.md +12 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __require } from './chunk-
|
|
1
|
+
import { __require } from './chunk-HB7DC5LT.js';
|
|
2
2
|
import { z, ZodError } from 'zod';
|
|
3
3
|
|
|
4
4
|
// src/define-contract.ts
|
|
@@ -7787,6 +7787,9 @@ function getLeadGenCrmHandoffResourceIds(model) {
|
|
|
7787
7787
|
(resource) => resource.systemPath === LEAD_GEN_CRM_HANDOFF_INTERFACE.systemPath && resource.ontology?.usesCatalogs?.includes(CRM_PIPELINE_CATALOG_ONTOLOGY_ID) === true
|
|
7788
7788
|
).map((resource) => resource.id);
|
|
7789
7789
|
}
|
|
7790
|
+
function isLeadGenCrmHandoffAdopted(model) {
|
|
7791
|
+
return getSystem(model, LEAD_GEN_API_INTERFACE.systemPath)?.apiInterface !== void 0 && getSystem(model, CRM_API_INTERFACE.systemPath)?.apiInterface !== void 0;
|
|
7792
|
+
}
|
|
7790
7793
|
function mergeLeadGenDerivedCatalogs(model) {
|
|
7791
7794
|
const baseCatalogTypes = model.ontology?.catalogTypes ?? {};
|
|
7792
7795
|
const derivedCatalogTypes = {};
|
|
@@ -7835,11 +7838,14 @@ registerBuiltInReadinessProfile(LEAD_GEN_CRM_HANDOFF_INTERFACE.readinessProfile,
|
|
|
7835
7838
|
registerReadinessInterfaceMarker(
|
|
7836
7839
|
LEAD_GEN_CRM_HANDOFF_INTERFACE.systemPath,
|
|
7837
7840
|
LEAD_GEN_CRM_HANDOFF_INTERFACE.interfaceKey,
|
|
7838
|
-
(model) =>
|
|
7839
|
-
|
|
7840
|
-
|
|
7841
|
-
|
|
7842
|
-
|
|
7841
|
+
(model) => {
|
|
7842
|
+
if (!isLeadGenCrmHandoffAdopted(model)) return void 0;
|
|
7843
|
+
return {
|
|
7844
|
+
lifecycle: "active",
|
|
7845
|
+
readinessProfile: LEAD_GEN_CRM_HANDOFF_INTERFACE.readinessProfile,
|
|
7846
|
+
resourceIds: getLeadGenCrmHandoffResourceIds(model)
|
|
7847
|
+
};
|
|
7848
|
+
}
|
|
7843
7849
|
);
|
|
7844
7850
|
function findLeadGenTemplateStepCatalog(index) {
|
|
7845
7851
|
return Object.values(index.ontology.catalogTypes).find(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProcessingStageStatusSchema, ListBuilderStageKeySchema, zodToJsonSchema, LLMResponseParseError, errorToString, getErrorDetails, ExecutionError2, validateEntryPoint, validateTerminalSteps, validateStepReferences, WorkflowTimeoutError, WorkflowStalledError, WorkflowCancellationError, logWorkflowStart, detectCycle, WorkflowStepError, logStepStart, validateTerminalOutput, logStepSuccess, determineNextStep, logStepFailure, logExecutionPath, logWorkflowSuccess, logWorkflowFailure, estimateTokens, truncationCharBudget, buildIterationResponseSchema } from './chunk-
|
|
1
|
+
import { ProcessingStageStatusSchema, ListBuilderStageKeySchema, zodToJsonSchema, LLMResponseParseError, errorToString, getErrorDetails, ExecutionError2, validateEntryPoint, validateTerminalSteps, validateStepReferences, WorkflowTimeoutError, WorkflowStalledError, WorkflowCancellationError, logWorkflowStart, detectCycle, WorkflowStepError, logStepStart, validateTerminalOutput, logStepSuccess, determineNextStep, logStepFailure, logExecutionPath, logWorkflowSuccess, logWorkflowFailure, estimateTokens, truncationCharBudget, buildIterationResponseSchema } from './chunk-B2KAVPNB.js';
|
|
2
2
|
import { workerData, parentPort } from 'worker_threads';
|
|
3
3
|
import { z, ZodError } from 'zod';
|
|
4
4
|
import { createHmac } from 'crypto';
|
|
@@ -14,6 +14,22 @@ function toSdkResourceDescriptor(resource, getResourceOntologyBinding) {
|
|
|
14
14
|
systemId: resource.systemPath
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
+
function projectDisplayIdentity(resourceId, local, descriptor) {
|
|
18
|
+
if (descriptor.title !== void 0 && descriptor.title !== local.name) {
|
|
19
|
+
console.warn(
|
|
20
|
+
`[deployment-spec] "${resourceId}" name disagrees with its OM descriptor \u2014 using the OM title. config.name: "${local.name}", OM title: "${descriptor.title}"`
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
if (descriptor.description !== void 0 && descriptor.description !== local.description) {
|
|
24
|
+
console.warn(
|
|
25
|
+
`[deployment-spec] "${resourceId}" description disagrees with its OM descriptor \u2014 using the OM description.`
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
name: descriptor.title ?? local.name,
|
|
30
|
+
description: descriptor.description ?? local.description
|
|
31
|
+
};
|
|
32
|
+
}
|
|
17
33
|
function withPlatformResourceDescriptor(workflow, getWorkflowResourceDescriptor, getResourceOntologyBinding) {
|
|
18
34
|
const resource = getWorkflowResourceDescriptor(workflow.config.resourceId);
|
|
19
35
|
const sdkResource = toSdkResourceDescriptor(resource, getResourceOntologyBinding);
|
|
@@ -21,6 +37,7 @@ function withPlatformResourceDescriptor(workflow, getWorkflowResourceDescriptor,
|
|
|
21
37
|
...workflow,
|
|
22
38
|
config: {
|
|
23
39
|
...workflow.config,
|
|
40
|
+
...projectDisplayIdentity(sdkResource.id, workflow.config, sdkResource),
|
|
24
41
|
resource: sdkResource,
|
|
25
42
|
resourceId: sdkResource.id,
|
|
26
43
|
type: sdkResource.kind
|
|
@@ -39,6 +56,7 @@ function withPlatformAgentResourceDescriptor(agent, getAgentResourceDescriptor,
|
|
|
39
56
|
...agent,
|
|
40
57
|
config: {
|
|
41
58
|
...agent.config,
|
|
59
|
+
...projectDisplayIdentity(sdkResource.id, agent.config, sdkResource),
|
|
42
60
|
resource: sdkResource,
|
|
43
61
|
resourceId: sdkResource.id,
|
|
44
62
|
type: sdkResource.kind
|
package/dist/cli.cjs
CHANGED
|
@@ -46947,10 +46947,64 @@ var init_sse = __esm({
|
|
|
46947
46947
|
}
|
|
46948
46948
|
});
|
|
46949
46949
|
|
|
46950
|
+
// ../core/src/platform/api/describe-error.ts
|
|
46951
|
+
function parseAPIErrorEnvelope(body) {
|
|
46952
|
+
try {
|
|
46953
|
+
const parsed = JSON.parse(body);
|
|
46954
|
+
if (parsed && typeof parsed === "object" && typeof parsed.error === "string") {
|
|
46955
|
+
return parsed;
|
|
46956
|
+
}
|
|
46957
|
+
} catch {
|
|
46958
|
+
}
|
|
46959
|
+
return null;
|
|
46960
|
+
}
|
|
46961
|
+
function describeAPIError(status, envelope, options = {}) {
|
|
46962
|
+
const trailer = [];
|
|
46963
|
+
if (options.endpoint) trailer.push(` Endpoint: ${options.endpoint}`);
|
|
46964
|
+
if (envelope.requestId) trailer.push(` Request ID: ${envelope.requestId}`);
|
|
46965
|
+
if (envelope.fields) {
|
|
46966
|
+
for (const [field2, messages] of Object.entries(envelope.fields)) {
|
|
46967
|
+
trailer.push(` ${field2}: ${messages.join("; ")}`);
|
|
46968
|
+
}
|
|
46969
|
+
}
|
|
46970
|
+
const suffix = trailer.length > 0 ? `
|
|
46971
|
+
${trailer.join("\n")}` : "";
|
|
46972
|
+
if (status === 403) {
|
|
46973
|
+
return `403 Access denied: ${envelope.error}
|
|
46974
|
+
The API refused this deliberately -- the request reached the handler and was rejected,
|
|
46975
|
+
so nothing was written. Usual causes, in order of likelihood:
|
|
46976
|
+
- the role on this organization membership lacks the required permission
|
|
46977
|
+
- a row-level security policy refused the row
|
|
46978
|
+
- the credential is scoped to a different organization than the one addressed` + suffix;
|
|
46979
|
+
}
|
|
46980
|
+
if (status === 401) {
|
|
46981
|
+
return `401 Unauthorized: ${envelope.error}
|
|
46982
|
+
The credential was missing, malformed, or not accepted. This is authentication,
|
|
46983
|
+
not permission -- a valid credential that lacks access returns 403 instead.` + suffix;
|
|
46984
|
+
}
|
|
46985
|
+
if (status === 404) {
|
|
46986
|
+
return `404 Not found: ${envelope.error}
|
|
46987
|
+
Check the identifier. Deployed resources carry a suffix (e.g. '-workflow'), and a
|
|
46988
|
+
resource in another organization reads as absent rather than forbidden.` + suffix;
|
|
46989
|
+
}
|
|
46990
|
+
if (status === 429) {
|
|
46991
|
+
const retry = envelope.retryAfter ? ` Retry in ${envelope.retryAfter}s.` : "";
|
|
46992
|
+
return `429 Rate limited: ${envelope.error}${retry}${suffix}`;
|
|
46993
|
+
}
|
|
46994
|
+
const label = envelope.code ? `${status} ${envelope.code}` : String(status);
|
|
46995
|
+
return `API request failed (${label}): ${envelope.error}${suffix}`;
|
|
46996
|
+
}
|
|
46997
|
+
var init_describe_error = __esm({
|
|
46998
|
+
"../core/src/platform/api/describe-error.ts"() {
|
|
46999
|
+
"use strict";
|
|
47000
|
+
}
|
|
47001
|
+
});
|
|
47002
|
+
|
|
46950
47003
|
// ../core/src/platform/api/index.ts
|
|
46951
47004
|
var init_api2 = __esm({
|
|
46952
47005
|
"../core/src/platform/api/index.ts"() {
|
|
46953
47006
|
"use strict";
|
|
47007
|
+
init_describe_error();
|
|
46954
47008
|
}
|
|
46955
47009
|
});
|
|
46956
47010
|
|
|
@@ -48452,6 +48506,9 @@ function getLeadGenCrmHandoffResourceIds(model) {
|
|
|
48452
48506
|
(resource) => resource.systemPath === LEAD_GEN_CRM_HANDOFF_INTERFACE.systemPath && resource.ontology?.usesCatalogs?.includes(CRM_PIPELINE_CATALOG_ONTOLOGY_ID) === true
|
|
48453
48507
|
).map((resource) => resource.id);
|
|
48454
48508
|
}
|
|
48509
|
+
function isLeadGenCrmHandoffAdopted(model) {
|
|
48510
|
+
return getSystem(model, LEAD_GEN_API_INTERFACE.systemPath)?.apiInterface !== void 0 && getSystem(model, CRM_API_INTERFACE.systemPath)?.apiInterface !== void 0;
|
|
48511
|
+
}
|
|
48455
48512
|
function mergeLeadGenDerivedCatalogs(model) {
|
|
48456
48513
|
const baseCatalogTypes = model.ontology?.catalogTypes ?? {};
|
|
48457
48514
|
const derivedCatalogTypes = {};
|
|
@@ -48482,6 +48539,7 @@ var init_ontology_validation = __esm({
|
|
|
48482
48539
|
init_ontology();
|
|
48483
48540
|
init_systems();
|
|
48484
48541
|
init_migration_helpers();
|
|
48542
|
+
init_helpers();
|
|
48485
48543
|
init_engine();
|
|
48486
48544
|
LEAD_GEN_API_INTERFACE = SYSTEM_INTERFACE_PROFILES[0];
|
|
48487
48545
|
CRM_API_INTERFACE = SYSTEM_INTERFACE_PROFILES[1];
|
|
@@ -48563,11 +48621,14 @@ var init_ontology_validation = __esm({
|
|
|
48563
48621
|
registerReadinessInterfaceMarker(
|
|
48564
48622
|
LEAD_GEN_CRM_HANDOFF_INTERFACE.systemPath,
|
|
48565
48623
|
LEAD_GEN_CRM_HANDOFF_INTERFACE.interfaceKey,
|
|
48566
|
-
(model) =>
|
|
48567
|
-
|
|
48568
|
-
|
|
48569
|
-
|
|
48570
|
-
|
|
48624
|
+
(model) => {
|
|
48625
|
+
if (!isLeadGenCrmHandoffAdopted(model)) return void 0;
|
|
48626
|
+
return {
|
|
48627
|
+
lifecycle: "active",
|
|
48628
|
+
readinessProfile: LEAD_GEN_CRM_HANDOFF_INTERFACE.readinessProfile,
|
|
48629
|
+
resourceIds: getLeadGenCrmHandoffResourceIds(model)
|
|
48630
|
+
};
|
|
48631
|
+
}
|
|
48571
48632
|
);
|
|
48572
48633
|
}
|
|
48573
48634
|
});
|
|
@@ -49273,7 +49334,12 @@ async function request(method, endpoint, apiUrl, body) {
|
|
|
49273
49334
|
if (GATEWAY_STATUSES.has(response.status)) {
|
|
49274
49335
|
throw new Error(describeGatewayFailure(response.status, endpoint, elapsedMs));
|
|
49275
49336
|
}
|
|
49276
|
-
|
|
49337
|
+
const envelope = parseAPIErrorEnvelope(errorText);
|
|
49338
|
+
if (envelope) {
|
|
49339
|
+
throw new Error(describeAPIError(response.status, envelope, { endpoint }));
|
|
49340
|
+
}
|
|
49341
|
+
throw new Error(`API request failed (${response.status}): ${errorText}
|
|
49342
|
+
Endpoint: ${endpoint}`);
|
|
49277
49343
|
}
|
|
49278
49344
|
if (response.status === 204) {
|
|
49279
49345
|
return {};
|
|
@@ -49296,6 +49362,7 @@ var DEFAULT_TIMEOUT_MS, GATEWAY_STATUSES;
|
|
|
49296
49362
|
var init_api_client = __esm({
|
|
49297
49363
|
"src/cli/api-client.ts"() {
|
|
49298
49364
|
"use strict";
|
|
49365
|
+
init_src();
|
|
49299
49366
|
init_config2();
|
|
49300
49367
|
init_readiness_failure();
|
|
49301
49368
|
DEFAULT_TIMEOUT_MS = 2 * 60 * 60 * 1e3;
|
|
@@ -49308,7 +49375,7 @@ function wrapAction(commandName, fn) {
|
|
|
49308
49375
|
return async (...args) => {
|
|
49309
49376
|
try {
|
|
49310
49377
|
await fn(...args);
|
|
49311
|
-
process.exitCode
|
|
49378
|
+
process.exitCode ??= 0;
|
|
49312
49379
|
} catch (error46) {
|
|
49313
49380
|
const errorMessage = error46 instanceof Error ? error46.message : String(error46);
|
|
49314
49381
|
console.error(source_default.red("\nError:"), errorMessage);
|
|
@@ -49330,7 +49397,7 @@ var init_package = __esm({
|
|
|
49330
49397
|
"package.json"() {
|
|
49331
49398
|
package_default = {
|
|
49332
49399
|
name: "@elevasis/sdk",
|
|
49333
|
-
version: "1.
|
|
49400
|
+
version: "1.53.0",
|
|
49334
49401
|
description: "SDK for building Elevasis organization resources",
|
|
49335
49402
|
type: "module",
|
|
49336
49403
|
bin: {
|
|
@@ -58735,6 +58802,13 @@ function mergeOmDoctorDiagnostics(report, extra, options = {}) {
|
|
|
58735
58802
|
const summary = summarize(merged);
|
|
58736
58803
|
return { ...report, ok: summary.error === 0, summary, diagnostics: merged };
|
|
58737
58804
|
}
|
|
58805
|
+
function requireDeployedUnavailableDiagnostic(unavailableReason) {
|
|
58806
|
+
return {
|
|
58807
|
+
severity: "error",
|
|
58808
|
+
code: "deployed-readiness-unavailable",
|
|
58809
|
+
message: `--require-deployed was set but the deployed-snapshot readiness check did not run: ${unavailableReason}`
|
|
58810
|
+
};
|
|
58811
|
+
}
|
|
58738
58812
|
function formatDiagnostic(diagnostic) {
|
|
58739
58813
|
const target = diagnostic.targetId ? ` (${diagnostic.targetId})` : "";
|
|
58740
58814
|
const source = diagnostic.source ? ` [${diagnostic.source}]` : "";
|
|
@@ -58769,9 +58843,15 @@ function formatOmDoctorReport(report) {
|
|
|
58769
58843
|
// src/cli/commands/om/doctor.ts
|
|
58770
58844
|
function registerOmDoctorCommand(program3) {
|
|
58771
58845
|
program3.command("om:doctor").description(
|
|
58772
|
-
"Reduced model doctor \u2014 runs 3 of the platform's 5 checks, plus deployed readiness\n Checks: ontology references, knowledge links, rename-orphan hints\n NOT run (monorepo-only): UI-manifest consistency, contract-ref resolution\n Readiness is read from the deployed snapshot; it reports NOT RUN when offline\n Example: elevasis-sdk om:doctor\n Example: elevasis-sdk om:doctor --scope sales.crm\n Example: elevasis-sdk om:doctor --skip-deployed\n Example: elevasis-sdk om:doctor --json"
|
|
58773
|
-
).option("--json", "Output as grouped JSON envelope").option("--scope <systemPath>", "Limit diagnostics to a system path and descendants").option("--skip-deployed", "Structural checks only \u2014 do not ask the API about readiness").option(
|
|
58846
|
+
"Reduced model doctor \u2014 runs 3 of the platform's 5 checks, plus deployed readiness\n Checks: ontology references, knowledge links, rename-orphan hints\n NOT run (monorepo-only): UI-manifest consistency, contract-ref resolution\n Readiness is read from the deployed snapshot; it reports NOT RUN when offline\n Example: elevasis-sdk om:doctor\n Example: elevasis-sdk om:doctor --scope sales.crm\n Example: elevasis-sdk om:doctor --skip-deployed\n Example: elevasis-sdk om:doctor --require-deployed\n Example: elevasis-sdk om:doctor --json"
|
|
58847
|
+
).option("--json", "Output as grouped JSON envelope").option("--scope <systemPath>", "Limit diagnostics to a system path and descendants").option("--skip-deployed", "Structural checks only \u2014 do not ask the API about readiness").option(
|
|
58848
|
+
"--require-deployed",
|
|
58849
|
+
"Fail (non-zero exit) if the deployed-snapshot readiness check is unavailable \u2014 API unreachable or no platform key \u2014 instead of the default degraded pass. Opt-in: default behavior is unchanged, and this is rejected together with --skip-deployed."
|
|
58850
|
+
).option("--prod", "Target production (overrides NODE_ENV=development)").option("--api-url <url>", "API URL").action(
|
|
58774
58851
|
wrapAction("om:doctor", async (options) => {
|
|
58852
|
+
if (options.requireDeployed && options.skipDeployed) {
|
|
58853
|
+
throw new Error("--require-deployed and --skip-deployed are mutually exclusive");
|
|
58854
|
+
}
|
|
58775
58855
|
let report;
|
|
58776
58856
|
try {
|
|
58777
58857
|
const projectRoot = getProjectRoot();
|
|
@@ -58786,6 +58866,13 @@ function registerOmDoctorCommand(program3) {
|
|
|
58786
58866
|
});
|
|
58787
58867
|
if (readiness.unavailableReason !== void 0) {
|
|
58788
58868
|
report.sources.readinessUnavailableReason = readiness.unavailableReason;
|
|
58869
|
+
if (options.requireDeployed) {
|
|
58870
|
+
report = mergeOmDoctorDiagnostics(
|
|
58871
|
+
report,
|
|
58872
|
+
[requireDeployedUnavailableDiagnostic(readiness.unavailableReason)],
|
|
58873
|
+
{ scope: options.scope }
|
|
58874
|
+
);
|
|
58875
|
+
}
|
|
58789
58876
|
} else {
|
|
58790
58877
|
report.sources.readiness = {
|
|
58791
58878
|
activeDeploymentId: readiness.activeDeploymentId,
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
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, defineWorkflowConfig, deriveActions, diagnosticOutput, integrationInput, isBuiltInReadinessProfile, isZodType, lookupReadinessProfile, parseTopologyNodeRef, registerReadinessProfile, resolveContractRef, runDiagnostic, splitName, topologyRef, topologyRelationship, validateDeclaredSystemInterfaceReadiness, validateResourceGovernance } from './chunk-
|
|
2
|
-
export { projectDeploymentSpec, projectTopologyRelationships, toSdkResourceDescriptor, withPlatformAgentResourceDescriptor, withPlatformAgentResourceDescriptors, withPlatformIntegrationResourceDescriptor, withPlatformIntegrationResourceDescriptors, withPlatformResourceDescriptor, withPlatformResourceDescriptors } from './chunk-
|
|
1
|
+
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, defineWorkflowConfig, deriveActions, diagnosticOutput, integrationInput, isBuiltInReadinessProfile, isZodType, lookupReadinessProfile, parseTopologyNodeRef, registerReadinessProfile, resolveContractRef, runDiagnostic, splitName, topologyRef, topologyRelationship, validateDeclaredSystemInterfaceReadiness, validateResourceGovernance } from './chunk-B2KAVPNB.js';
|
|
2
|
+
export { projectDeploymentSpec, projectTopologyRelationships, toSdkResourceDescriptor, withPlatformAgentResourceDescriptor, withPlatformAgentResourceDescriptors, withPlatformIntegrationResourceDescriptor, withPlatformIntegrationResourceDescriptors, withPlatformResourceDescriptor, withPlatformResourceDescriptors } from './chunk-HB7DC5LT.js';
|
package/dist/node/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { projectDeploymentSpec, projectTopologyRelationships, toSdkResourceDescriptor, withPlatformAgentResourceDescriptor, withPlatformAgentResourceDescriptors, withPlatformIntegrationResourceDescriptor, withPlatformIntegrationResourceDescriptors, withPlatformResourceDescriptor, withPlatformResourceDescriptors } from '../chunk-
|
|
1
|
+
export { projectDeploymentSpec, projectTopologyRelationships, toSdkResourceDescriptor, withPlatformAgentResourceDescriptor, withPlatformAgentResourceDescriptors, withPlatformIntegrationResourceDescriptor, withPlatformIntegrationResourceDescriptors, withPlatformResourceDescriptor, withPlatformResourceDescriptors } from '../chunk-HB7DC5LT.js';
|
|
2
2
|
import { readFileSync, mkdirSync, writeFileSync, readdirSync } from 'fs';
|
|
3
3
|
import { relative, dirname, resolve, join, extname } from 'path';
|
|
4
4
|
import { compile } from '@mdx-js/mdx';
|
package/dist/test-utils/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { executeWorkflow } from '../chunk-
|
|
2
|
-
import { validateDeploymentSpec, validateRelationships } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
import { executeWorkflow } from '../chunk-FUOIYRIZ.js';
|
|
2
|
+
import { validateDeploymentSpec, validateRelationships } from '../chunk-B2KAVPNB.js';
|
|
3
|
+
import '../chunk-HB7DC5LT.js';
|
|
4
4
|
import { vi } from 'vitest';
|
|
5
5
|
|
|
6
6
|
// src/test-utils/workflow.ts
|
package/dist/worker/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { ListBuilderResultSchema, ListBuilderResultsSchema, PlatformToolError, acqDb, approval, artifacts, classifyPlatformToolError, content, createAdapter, createAnymailfinderAdapter, createApifyAdapter, createAttioAdapter, createCaptionGenerationWorkflow, createCaptureInstagramMetricsWorkflow, createClickUpAdapter, createDropboxAdapter, createGmailAdapter, createGoogleSheetsAdapter, createImageAnalysisWorkflow, createInstagramAdapter, createInstantlyAdapter, createMillionVerifierAdapter, createPublishInstagramWorkflow, createResendAdapter, createSignatureApiAdapter, createStripeAdapter, createTombaAdapter, crm, email, executeWorkflow, execution, generateHmacToken, list, listBuilderWorkflow, llm, notifications, pdf, platform, projects, scheduler, startWorker, storage, toContentMetrics } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { ListBuilderResultSchema, ListBuilderResultsSchema, PlatformToolError, acqDb, approval, artifacts, classifyPlatformToolError, content, createAdapter, createAnymailfinderAdapter, createApifyAdapter, createAttioAdapter, createCaptionGenerationWorkflow, createCaptureInstagramMetricsWorkflow, createClickUpAdapter, createDropboxAdapter, createGmailAdapter, createGoogleSheetsAdapter, createImageAnalysisWorkflow, createInstagramAdapter, createInstantlyAdapter, createMillionVerifierAdapter, createPublishInstagramWorkflow, createResendAdapter, createSignatureApiAdapter, createStripeAdapter, createTombaAdapter, crm, email, executeWorkflow, execution, generateHmacToken, list, listBuilderWorkflow, llm, notifications, pdf, platform, projects, scheduler, startWorker, storage, toContentMetrics } from '../chunk-FUOIYRIZ.js';
|
|
2
|
+
import '../chunk-B2KAVPNB.js';
|
|
3
|
+
import '../chunk-HB7DC5LT.js';
|
package/package.json
CHANGED
|
@@ -56,6 +56,18 @@ Deploy accepts `--major`, `--minor`, `--patch` flags to bump the deployment vers
|
|
|
56
56
|
1. **Bundle:** esbuild compiles `operations/src/index.ts` + all dependencies into a single self-contained CJS file. No `node_modules` needed at runtime.
|
|
57
57
|
2. **Metadata:** Resource definitions, OM Resources descriptor bindings, Zod schemas (converted to JSON Schema), relationships, triggers.
|
|
58
58
|
|
|
59
|
+
## The OM Descriptor Owns Display Identity
|
|
60
|
+
|
|
61
|
+
A resource's `name` and `description` in its `operations/src/**` config are **not** what the platform shows. At deploy time the projected spec takes `title` and `description` from that resource's OM descriptor in `core/config/organization-model.ts` and overrides the locally declared strings, because the descriptor is what Command Center's action surfaces render and a config string only ever reached the execution log.
|
|
62
|
+
|
|
63
|
+
Deploy warns per resource when the two disagree:
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
[deployment-spec] "<resource-id>" name disagrees with its OM descriptor -- using the OM title.
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
That warning does not fail the deploy. Fix it by editing the OM descriptor when the descriptor is wrong, or the config when the config is. Editing only the config and redeploying changes nothing a user sees.
|
|
70
|
+
|
|
59
71
|
## Environment
|
|
60
72
|
|
|
61
73
|
- `ELEVASIS_PLATFORM_KEY` in `.env` is required for CLI auth (used for every deploy unless `NODE_ENV=development` with no `--prod`)
|