@elevasis/sdk 1.45.0 → 1.46.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 +36046 -31587
- package/dist/index.d.ts +833 -391
- package/dist/index.js +59 -59
- package/dist/node/index.d.ts +0 -84
- package/dist/node/index.js +2 -2
- package/dist/test-utils/index.d.ts +859 -331
- package/dist/test-utils/index.js +166 -134
- package/dist/worker/index.d.ts +897 -324
- package/dist/worker/index.js +68 -35
- package/package.json +4 -4
- package/reference/_navigation.md +11 -2
- package/reference/_reference-manifest.json +42 -0
- package/reference/core/exports.mdx +2 -0
- package/reference/packages/core/src/business/README.md +4 -1
- package/reference/packages/core/src/content/README.md +19 -0
- package/reference/packages/core/src/organization-model/README.md +148 -149
- package/reference/packages/core/src/organization-model/readiness/README.md +42 -0
- package/reference/packages/ui/src/features/README.md +28 -28
- package/reference/rules/shared-types.md +21 -0
- package/reference/scaffold/core/organization-graph.mdx +2 -3
- package/reference/scaffold/core/organization-model.mdx +2 -6
- package/reference/scaffold/operations/propagation-pipeline.md +15 -16
- package/reference/scaffold/operations/scaffold-maintenance.md +3 -2
- package/reference/scaffold/operations/workflow-recipes.md +2 -2
- package/reference/scaffold/recipes/customize-crm-actions.md +5 -5
- package/reference/scaffold/recipes/extend-content.md +265 -0
- package/reference/scaffold/recipes/extend-lead-gen.md +14 -16
- package/reference/scaffold/recipes/index.md +4 -1
- package/reference/scaffold/reference/contracts.md +18 -55
- package/reference/scaffold/reference/feature-registry.md +3 -0
- package/reference/scaffold/reference/glossary.md +1 -1
- package/reference/scaffold/ui/customization.md +2 -2
- package/reference/scaffold/ui/feature-shell.mdx +1 -3
- package/reference/sdk/cli-management.mdx +90 -5
- package/reference/sdk/cli.mdx +90 -13
- package/reference/sdk/framework/agent.mdx +6 -0
- package/reference/sdk/platform-tools/adapters-platform.mdx +3 -1
- package/reference/ui/exports.mdx +1 -0
package/dist/worker/index.js
CHANGED
|
@@ -3058,8 +3058,8 @@ function preview(text, n = 120) {
|
|
|
3058
3058
|
// ../core/src/platform/utils/token-counter.ts
|
|
3059
3059
|
var CHARS_PER_TOKEN = 3.5;
|
|
3060
3060
|
function estimateTokens(text) {
|
|
3061
|
-
const
|
|
3062
|
-
const chars =
|
|
3061
|
+
const content2 = typeof text === "string" ? text : JSON.stringify(text);
|
|
3062
|
+
const chars = content2.length;
|
|
3063
3063
|
return Math.ceil(chars / CHARS_PER_TOKEN);
|
|
3064
3064
|
}
|
|
3065
3065
|
function truncationCharBudget(maxTokens, noticeLength = 0) {
|
|
@@ -3099,7 +3099,7 @@ function buildUntrustedDataPolicy(securityLevel) {
|
|
|
3099
3099
|
}
|
|
3100
3100
|
function buildAgentMessages(systemPrompt, memory, currentInput, securityLevel, conversationHistory = []) {
|
|
3101
3101
|
const policy = buildUntrustedDataPolicy(securityLevel);
|
|
3102
|
-
const historyMessages = conversationHistory.map(({ role, content }) => ({ role, content }));
|
|
3102
|
+
const historyMessages = conversationHistory.map(({ role, content: content2 }) => ({ role, content: content2 }));
|
|
3103
3103
|
if (historyMessages.length > 0) {
|
|
3104
3104
|
historyMessages[historyMessages.length - 1].cacheBreakpoint = true;
|
|
3105
3105
|
}
|
|
@@ -3613,11 +3613,11 @@ function safeStructuralPrefix(raw, cutAt) {
|
|
|
3613
3613
|
const base = stripDanglingTail(raw.slice(0, cutPoint), stack[stack.length - 1] === "}");
|
|
3614
3614
|
return base + [...stack].reverse().join("");
|
|
3615
3615
|
}
|
|
3616
|
-
function truncateContent(
|
|
3617
|
-
const estimated = estimateTokens(
|
|
3618
|
-
if (estimated <= maxTokens) return { content };
|
|
3616
|
+
function truncateContent(content2, maxTokens) {
|
|
3617
|
+
const estimated = estimateTokens(content2);
|
|
3618
|
+
if (estimated <= maxTokens) return { content: content2 };
|
|
3619
3619
|
const cutAt = truncationCharBudget(maxTokens, CLOSING_BRACKET_RESERVE);
|
|
3620
|
-
const safeContent = safeStructuralPrefix(
|
|
3620
|
+
const safeContent = safeStructuralPrefix(content2, cutAt);
|
|
3621
3621
|
const omittedTokens = estimated - maxTokens;
|
|
3622
3622
|
return { content: safeContent, truncated: { omittedTokens } };
|
|
3623
3623
|
}
|
|
@@ -3713,9 +3713,9 @@ async function executeToolCall(iterationContext, action) {
|
|
|
3713
3713
|
const validatedResult = tool.outputSchema.parse(rawResult);
|
|
3714
3714
|
let boundedResult = validatedResult;
|
|
3715
3715
|
if (tool.maxOutputTokens !== void 0) {
|
|
3716
|
-
const { content, truncated } = truncateContent(JSON.stringify(validatedResult), tool.maxOutputTokens);
|
|
3716
|
+
const { content: content2, truncated } = truncateContent(JSON.stringify(validatedResult), tool.maxOutputTokens);
|
|
3717
3717
|
if (truncated) {
|
|
3718
|
-
boundedResult =
|
|
3718
|
+
boundedResult = content2;
|
|
3719
3719
|
}
|
|
3720
3720
|
}
|
|
3721
3721
|
const toolEndTime = Date.now();
|
|
@@ -4024,7 +4024,7 @@ async function processMemory(memoryManager, response, logger, iteration) {
|
|
|
4024
4024
|
if (!response.memoryOps) return;
|
|
4025
4025
|
const { memoryOps } = response;
|
|
4026
4026
|
if (memoryOps.set) {
|
|
4027
|
-
for (const [key,
|
|
4027
|
+
for (const [key, content2] of Object.entries(memoryOps.set)) {
|
|
4028
4028
|
if (!validateMemoryKeyOwnership(key, logger, iteration)) {
|
|
4029
4029
|
continue;
|
|
4030
4030
|
}
|
|
@@ -4032,7 +4032,7 @@ async function processMemory(memoryManager, response, logger, iteration) {
|
|
|
4032
4032
|
"memory-set",
|
|
4033
4033
|
iteration,
|
|
4034
4034
|
// Auto-stringify non-string values (arrays, objects, etc.)
|
|
4035
|
-
() => memoryManager.set(key, typeof
|
|
4035
|
+
() => memoryManager.set(key, typeof content2 === "string" ? content2 : JSON.stringify(content2)),
|
|
4036
4036
|
() => `Set: ${key}`
|
|
4037
4037
|
);
|
|
4038
4038
|
}
|
|
@@ -4152,13 +4152,13 @@ var MAX_TOOL_RESULT_TOKENS = 4e3;
|
|
|
4152
4152
|
|
|
4153
4153
|
// ../core/src/execution/engine/agent/memory/manager.ts
|
|
4154
4154
|
var ENVELOPE_FULL_RESULT_WINDOW = 3;
|
|
4155
|
-
function parseIfJson(
|
|
4156
|
-
const trimmed =
|
|
4157
|
-
if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) return
|
|
4155
|
+
function parseIfJson(content2) {
|
|
4156
|
+
const trimmed = content2.trim();
|
|
4157
|
+
if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) return content2;
|
|
4158
4158
|
try {
|
|
4159
|
-
return JSON.parse(
|
|
4159
|
+
return JSON.parse(content2);
|
|
4160
4160
|
} catch {
|
|
4161
|
-
return
|
|
4161
|
+
return content2;
|
|
4162
4162
|
}
|
|
4163
4163
|
}
|
|
4164
4164
|
function isInTurnScope(entry, currentTurn) {
|
|
@@ -4221,8 +4221,8 @@ var MemoryManager = class {
|
|
|
4221
4221
|
* @param key - Session memory key
|
|
4222
4222
|
* @param content - String content from agent
|
|
4223
4223
|
*/
|
|
4224
|
-
set(key,
|
|
4225
|
-
const entryTokens = estimateTokens(
|
|
4224
|
+
set(key, content2, source = "model") {
|
|
4225
|
+
const entryTokens = estimateTokens(content2);
|
|
4226
4226
|
let truncated;
|
|
4227
4227
|
if (entryTokens > MAX_SINGLE_ENTRY_TOKENS) {
|
|
4228
4228
|
const truncateTime = Date.now();
|
|
@@ -4234,13 +4234,13 @@ var MemoryManager = class {
|
|
|
4234
4234
|
truncateTime,
|
|
4235
4235
|
0
|
|
4236
4236
|
);
|
|
4237
|
-
const result = truncateContent(
|
|
4238
|
-
|
|
4237
|
+
const result = truncateContent(content2, MAX_SINGLE_ENTRY_TOKENS);
|
|
4238
|
+
content2 = result.content;
|
|
4239
4239
|
truncated = result.truncated;
|
|
4240
4240
|
}
|
|
4241
4241
|
this.memory.sessionMemory[key] = {
|
|
4242
4242
|
type: "context",
|
|
4243
|
-
content,
|
|
4243
|
+
content: content2,
|
|
4244
4244
|
timestamp: Date.now(),
|
|
4245
4245
|
turnNumber: null,
|
|
4246
4246
|
// Session memory entries are not turn-specific
|
|
@@ -4250,7 +4250,7 @@ var MemoryManager = class {
|
|
|
4250
4250
|
...truncated && { truncated },
|
|
4251
4251
|
// Screened once, here, instead of by re-scanning the whole envelope on every iteration this
|
|
4252
4252
|
// key gets re-sent for — see `MemoryEntry.warnings`.
|
|
4253
|
-
warnings: sanitizeUserInput(
|
|
4253
|
+
warnings: sanitizeUserInput(content2).warnings
|
|
4254
4254
|
};
|
|
4255
4255
|
}
|
|
4256
4256
|
/**
|
|
@@ -4288,14 +4288,14 @@ var MemoryManager = class {
|
|
|
4288
4288
|
iterationNumber: entry.iterationNumber
|
|
4289
4289
|
});
|
|
4290
4290
|
}
|
|
4291
|
-
let
|
|
4291
|
+
let content2 = entry.content;
|
|
4292
4292
|
let truncated;
|
|
4293
4293
|
if (entry.type === "tool-result" || entry.type === "error") {
|
|
4294
|
-
const before =
|
|
4295
|
-
const result = truncateContent(
|
|
4296
|
-
|
|
4294
|
+
const before = content2;
|
|
4295
|
+
const result = truncateContent(content2, MAX_TOOL_RESULT_TOKENS);
|
|
4296
|
+
content2 = result.content;
|
|
4297
4297
|
truncated = result.truncated;
|
|
4298
|
-
if (
|
|
4298
|
+
if (content2 !== before) {
|
|
4299
4299
|
const truncateTime = Date.now();
|
|
4300
4300
|
this.logger?.action(
|
|
4301
4301
|
"memory-tool-result-truncate",
|
|
@@ -4309,12 +4309,12 @@ var MemoryManager = class {
|
|
|
4309
4309
|
}
|
|
4310
4310
|
this.memory.history.push({
|
|
4311
4311
|
...entry,
|
|
4312
|
-
content,
|
|
4312
|
+
content: content2,
|
|
4313
4313
|
timestamp: Date.now(),
|
|
4314
4314
|
...truncated && { truncated },
|
|
4315
4315
|
// Screened once, here, instead of by re-scanning the whole accumulated envelope on every
|
|
4316
4316
|
// iteration this entry gets re-sent for — see `MemoryEntry.warnings`.
|
|
4317
|
-
warnings: sanitizeUserInput(
|
|
4317
|
+
warnings: sanitizeUserInput(content2).warnings
|
|
4318
4318
|
});
|
|
4319
4319
|
this.autoCompact();
|
|
4320
4320
|
}
|
|
@@ -6123,28 +6123,42 @@ z.object({
|
|
|
6123
6123
|
limit: z.number().int(),
|
|
6124
6124
|
offset: z.number().int()
|
|
6125
6125
|
});
|
|
6126
|
-
var AcqArtifactOwnerKindSchema = z.enum(["company", "contact", "deal", "list", "list_member"]);
|
|
6126
|
+
var AcqArtifactOwnerKindSchema = z.enum(["company", "contact", "deal", "list", "list_member", "organization"]);
|
|
6127
6127
|
z.object({
|
|
6128
6128
|
ownerKind: AcqArtifactOwnerKindSchema,
|
|
6129
|
-
ownerId: UuidSchema
|
|
6129
|
+
ownerId: UuidSchema.optional()
|
|
6130
6130
|
}).strict();
|
|
6131
|
+
var PipelineIdSchema = z.string().trim().min(1).max(255);
|
|
6131
6132
|
z.object({
|
|
6132
6133
|
ownerKind: AcqArtifactOwnerKindSchema,
|
|
6133
|
-
|
|
6134
|
+
// Nullable + optional: an org-owned artifact (ownerKind: 'organization') has no
|
|
6135
|
+
// single owning entity row. See the comment on AcqArtifactOwnerKindSchema above.
|
|
6136
|
+
ownerId: UuidSchema.nullable().optional(),
|
|
6134
6137
|
kind: z.string().trim().min(1).max(255),
|
|
6135
6138
|
content: z.record(z.string(), z.unknown()),
|
|
6136
|
-
sourceExecutionId: UuidSchema.optional()
|
|
6139
|
+
sourceExecutionId: UuidSchema.optional(),
|
|
6140
|
+
// Nullable + optional: acquisition's own artifacts (audits, proposals, ICP docs) predate the
|
|
6141
|
+
// pipeline concept and have none. `getActiveArtifact` filters on it, so any artifact meant to
|
|
6142
|
+
// be resolvable as "the active document for pipeline X" MUST supply it -- artifacts-platform-tool
|
|
6143
|
+
// .mdx Step 3 defect 1.
|
|
6144
|
+
pipelineId: PipelineIdSchema.nullable().optional()
|
|
6137
6145
|
}).strict();
|
|
6138
6146
|
var AcqArtifactResponseSchema = z.object({
|
|
6139
6147
|
id: z.string(),
|
|
6140
6148
|
organizationId: z.string(),
|
|
6141
6149
|
ownerKind: z.string(),
|
|
6142
|
-
|
|
6150
|
+
// Nullable as of content-pipeline-foundation D14: an org-owned artifact has no owning entity row.
|
|
6151
|
+
// CreateArtifactRequestSchema already accepted a null ownerId; this response schema not doing so
|
|
6152
|
+
// was Step 3 defect 2 -- an org-owned artifact inserted fine and then failed serialization.
|
|
6153
|
+
ownerId: z.string().nullable(),
|
|
6143
6154
|
kind: z.string(),
|
|
6155
|
+
pipelineId: z.string().nullable(),
|
|
6144
6156
|
content: z.record(z.string(), z.unknown()),
|
|
6145
6157
|
sourceExecutionId: z.string().nullable(),
|
|
6146
6158
|
createdBy: z.string().nullable(),
|
|
6147
6159
|
createdAt: z.string(),
|
|
6160
|
+
updatedAt: z.string(),
|
|
6161
|
+
isActive: z.boolean(),
|
|
6148
6162
|
version: z.number().int()
|
|
6149
6163
|
});
|
|
6150
6164
|
z.object({
|
|
@@ -6793,6 +6807,25 @@ var list = createAdapter("list", [
|
|
|
6793
6807
|
"listPendingContactIds"
|
|
6794
6808
|
]);
|
|
6795
6809
|
|
|
6810
|
+
// src/worker/adapters/artifacts.ts
|
|
6811
|
+
var artifacts = createAdapter("artifacts", [
|
|
6812
|
+
"listArtifacts",
|
|
6813
|
+
"createArtifact",
|
|
6814
|
+
"getActive"
|
|
6815
|
+
]);
|
|
6816
|
+
|
|
6817
|
+
// src/worker/adapters/content.ts
|
|
6818
|
+
var content = createAdapter("content", [
|
|
6819
|
+
"createItem",
|
|
6820
|
+
"getItem",
|
|
6821
|
+
"listItems",
|
|
6822
|
+
"updateItem",
|
|
6823
|
+
"createAttempt",
|
|
6824
|
+
"listAttempts",
|
|
6825
|
+
"createDistribution",
|
|
6826
|
+
"updateDistribution"
|
|
6827
|
+
]);
|
|
6828
|
+
|
|
6796
6829
|
// src/worker/adapters/pdf.ts
|
|
6797
6830
|
var pdf = createAdapter("pdf", ["render", "renderToBuffer"]);
|
|
6798
6831
|
|
|
@@ -7352,4 +7385,4 @@ if (workerData != null && workerData.kind === "static") {
|
|
|
7352
7385
|
})();
|
|
7353
7386
|
}
|
|
7354
7387
|
|
|
7355
|
-
export { ListBuilderResultSchema, ListBuilderResultsSchema, PlatformToolError, acqDb, approval, classifyPlatformToolError, createAdapter, createAnymailfinderAdapter, createApifyAdapter, createAttioAdapter, createClickUpAdapter, createDropboxAdapter, createGmailAdapter, createGoogleSheetsAdapter, createInstantlyAdapter, createMillionVerifierAdapter, createResendAdapter, createSignatureApiAdapter, createStripeAdapter, createTombaAdapter, crm, email, executeWorkflow, execution, generateHmacToken, list, listBuilderWorkflow, llm, notifications, pdf, platform, projects, scheduler, startWorker, storage };
|
|
7388
|
+
export { ListBuilderResultSchema, ListBuilderResultsSchema, PlatformToolError, acqDb, approval, artifacts, classifyPlatformToolError, content, createAdapter, createAnymailfinderAdapter, createApifyAdapter, createAttioAdapter, createClickUpAdapter, createDropboxAdapter, createGmailAdapter, createGoogleSheetsAdapter, createInstantlyAdapter, createMillionVerifierAdapter, createResendAdapter, createSignatureApiAdapter, createStripeAdapter, createTombaAdapter, crm, email, executeWorkflow, execution, generateHmacToken, list, listBuilderWorkflow, llm, notifications, pdf, platform, projects, scheduler, startWorker, storage };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elevasis/sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.46.0",
|
|
4
4
|
"description": "SDK for building Elevasis organization resources",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -55,9 +55,9 @@
|
|
|
55
55
|
"tsup": "^8.0.0",
|
|
56
56
|
"typescript": "5.9.2",
|
|
57
57
|
"zod": "^4.1.0",
|
|
58
|
-
"@repo/core": "0.
|
|
59
|
-
"@repo/
|
|
60
|
-
"@repo/
|
|
58
|
+
"@repo/core": "0.61.0",
|
|
59
|
+
"@repo/typescript-config": "0.0.0",
|
|
60
|
+
"@repo/eslint-config": "0.0.0"
|
|
61
61
|
},
|
|
62
62
|
"scripts": {
|
|
63
63
|
"lint": "eslint src --max-warnings 0",
|
package/reference/_navigation.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Auto-generated from the package reference manifests.
|
|
6
6
|
|
|
7
|
-
Package entries indexed:
|
|
7
|
+
Package entries indexed: 64.
|
|
8
8
|
|
|
9
9
|
## @elevasis/core / Auth
|
|
10
10
|
|
|
@@ -12,6 +12,12 @@ Package entries indexed: 61.
|
|
|
12
12
|
| --- | --- | --- | --- |
|
|
13
13
|
| Auth | `packages/core/src/README.md` | Published browser-safe auth contracts, AccessKeys, and Access Model primitives. | (not specified) |
|
|
14
14
|
|
|
15
|
+
## @elevasis/core / Content
|
|
16
|
+
|
|
17
|
+
| Resource | Location | Description | When to Load |
|
|
18
|
+
| --- | --- | --- | --- |
|
|
19
|
+
| Content | `packages/core/src/content/README.md` | Published content pipeline API schemas: content items, the payload envelope, a content-keyed processing state, attempts, review, and distributions, plus platform-content typed interfaces. | (not specified) |
|
|
20
|
+
|
|
15
21
|
## @elevasis/core / Core
|
|
16
22
|
|
|
17
23
|
| Resource | Location | Description | When to Load |
|
|
@@ -35,6 +41,7 @@ Package entries indexed: 61.
|
|
|
35
41
|
| Resource | Location | Description | When to Load |
|
|
36
42
|
| --- | --- | --- | --- |
|
|
37
43
|
| Organization Model | `packages/core/src/organization-model/README.md` | Published organization-model schema, defaults, resolver, and types. | (not specified) |
|
|
44
|
+
| System Interface Readiness | `packages/core/src/organization-model/readiness/README.md` | Generic System Interface readiness engine, plus registerBuiltInReadinessProfile — the extension point for registering a readiness profile that carries real structural validation. | (not specified) |
|
|
38
45
|
|
|
39
46
|
## @elevasis/core / Testing
|
|
40
47
|
|
|
@@ -102,6 +109,7 @@ Package entries indexed: 61.
|
|
|
102
109
|
| Features Notes | `packages/ui/src/features/README.md` | Published Notes panel view and supporting note components for shared right-panel integrations. | (not specified) |
|
|
103
110
|
| Features Right Panel Host | `packages/ui/src/features/README.md` | Published right-panel host provider, layer, trigger, keyboard shortcut, store, and view contract. | (not specified) |
|
|
104
111
|
| Features Public Agent Chat | `packages/ui/src/features/README.md` | Published public agent chat surface for downstream shells. | (not specified) |
|
|
112
|
+
| Features Content | `packages/ui/src/features/README.md` | Published, data-free content review card surface (ContentReviewCard and its sub-components) for downstream shells. | (not specified) |
|
|
105
113
|
|
|
106
114
|
## @elevasis/ui / Foundation
|
|
107
115
|
|
|
@@ -186,6 +194,7 @@ Universal scaffold documentation for all SDK projects. Source locations are co-l
|
|
|
186
194
|
| Gate by System or Admin | `scaffold/recipes/gate-by-feature-or-admin.md` | Decision table and recipes for gating routes, sidebar entries, and UI elements with AccessGuard and the unified Access Model. |
|
|
187
195
|
| Build and Extend CRM | `scaffold/recipes/extend-crm.md` | Map the CRM platform primitives available to SDK projects: shared UI pages, sidebar composition, data hooks, action definitions, workflow adapters, System Interfaces, and org-model extension boundaries. |
|
|
188
196
|
| Build and Extend Lead Gen | `scaffold/recipes/extend-lead-gen.md` | Map the lead-gen platform primitives available to SDK projects: shared UI pages, provider-injected Organization Model config, data hooks, list/member state, artifacts, workflow adapters, System Interfaces, and tenant-owned extension boundaries. |
|
|
197
|
+
| Build and Extend Content | `scaffold/recipes/extend-content.md` | Map the content platform primitives available to SDK projects: pipeline and step catalogs, shared review/pipeline/distribution pages, data hooks, the content workflow adapter, artifacts as rules documents, and org-model extension boundaries. |
|
|
189
198
|
| Customize CRM Actions | `scaffold/recipes/customize-crm-actions.md` | Add, hide, or replace CRM deal action buttons in a template-derived project, and override default platform action workflows with project-owned implementations. |
|
|
190
199
|
| Customize Knowledge Browser | `scaffold/recipes/customize-knowledge-browser.md` | Author knowledge nodes and customize the Knowledge Browser in a template-derived project -- from zero-config authoring through sidebar composition, custom dispatchers, and direct query access. |
|
|
191
200
|
| Query the Knowledge Graph | `scaffold/recipes/query-the-knowledge-graph.md` | Use the `knowledge:*` CLI subcommands on `elevasis-sdk` (external projects) and `elevasis` (monorepo) to browse, inspect, and traverse the OrganizationModel knowledge graph via six mount axes. |
|
|
@@ -287,7 +296,7 @@ Docs-site pages indexed: 38.
|
|
|
287
296
|
| Human-in-the-Loop (HITL) Workflows | `sdk/human-in-the-loop.mdx` | How a workflow step opens an approval task, how it reaches the command queue, and how selecting an action resumes work -- the story that connects the approval adapter, checkpoint metadata, and the queue CLI. |
|
|
288
297
|
| Elevasis SDK | `sdk/index.mdx` | Build and deploy workflows, agents, and resources with the Elevasis SDK |
|
|
289
298
|
| Integration Adapters | `sdk/platform-tools/adapters-integration.mdx` | Auto-generated table of all 13 integration (credential-bound) adapters exported from @elevasis/sdk/worker, derived from static analysis of the adapter source files. |
|
|
290
|
-
| Platform Adapters | `sdk/platform-tools/adapters-platform.mdx` | Auto-generated table of all
|
|
299
|
+
| Platform Adapters | `sdk/platform-tools/adapters-platform.mdx` | Auto-generated table of all 14 platform (singleton, no credential) adapters exported from @elevasis/sdk/worker, derived from static analysis of the adapter source files. |
|
|
291
300
|
| Platform Tools | `sdk/platform-tools/index.mdx` | Access 25 adapters (13 integration + 12 platform) from your SDK workflows -- typed adapters, credential security model, and working code examples |
|
|
292
301
|
| Adapter Type Safety | `sdk/platform-tools/type-safety.mdx` | SDK worker adapter type safety patterns - required fields, discriminated unions, and intentionally loose types |
|
|
293
302
|
| The Deployment Spec Pattern | `sdk/project-deployment-spec.mdx` | How projectDeploymentSpec and defineWorkflowConfig assemble the DeploymentSpec a scaffolded project actually ships, using operations/src/index.ts as the reference. |
|
|
@@ -15,6 +15,20 @@
|
|
|
15
15
|
"referencePath": "packages/core/src/README.md",
|
|
16
16
|
"publishedExportPath": "./dist/auth/index.js"
|
|
17
17
|
},
|
|
18
|
+
{
|
|
19
|
+
"packageName": "@elevasis/core",
|
|
20
|
+
"packageDir": "packages/core",
|
|
21
|
+
"subpath": "./content",
|
|
22
|
+
"kind": "subpath",
|
|
23
|
+
"title": "Content",
|
|
24
|
+
"description": "Published content pipeline API schemas: content items, the payload envelope, a content-keyed processing state, attempts, review, and distributions, plus platform-content typed interfaces.",
|
|
25
|
+
"group": "Content",
|
|
26
|
+
"order": 1,
|
|
27
|
+
"sourcePath": "packages/core/src/content/index.ts",
|
|
28
|
+
"docPath": "packages/core/src/content/README.md",
|
|
29
|
+
"referencePath": "packages/core/src/content/README.md",
|
|
30
|
+
"publishedExportPath": "./dist/content/index.js"
|
|
31
|
+
},
|
|
18
32
|
{
|
|
19
33
|
"packageName": "@elevasis/core",
|
|
20
34
|
"packageDir": "packages/core",
|
|
@@ -71,6 +85,20 @@
|
|
|
71
85
|
"referencePath": "packages/core/src/organization-model/README.md",
|
|
72
86
|
"publishedExportPath": "./dist/organization-model/index.js"
|
|
73
87
|
},
|
|
88
|
+
{
|
|
89
|
+
"packageName": "@elevasis/core",
|
|
90
|
+
"packageDir": "packages/core",
|
|
91
|
+
"subpath": "./organization-model/readiness",
|
|
92
|
+
"kind": "subpath",
|
|
93
|
+
"title": "System Interface Readiness",
|
|
94
|
+
"description": "Generic System Interface readiness engine, plus registerBuiltInReadinessProfile — the extension point for registering a readiness profile that carries real structural validation.",
|
|
95
|
+
"group": "Organization Model",
|
|
96
|
+
"order": 2,
|
|
97
|
+
"sourcePath": "packages/core/src/organization-model/readiness/index.ts",
|
|
98
|
+
"docPath": "packages/core/src/organization-model/readiness/README.md",
|
|
99
|
+
"referencePath": "packages/core/src/organization-model/readiness/README.md",
|
|
100
|
+
"publishedExportPath": "./dist/organization-model/readiness/index.js"
|
|
101
|
+
},
|
|
74
102
|
{
|
|
75
103
|
"packageName": "@elevasis/core",
|
|
76
104
|
"packageDir": "packages/core",
|
|
@@ -449,6 +477,20 @@
|
|
|
449
477
|
"referencePath": "packages/ui/src/features/README.md",
|
|
450
478
|
"publishedExportPath": "./dist/features/public-agent-chat/index.js"
|
|
451
479
|
},
|
|
480
|
+
{
|
|
481
|
+
"packageName": "@elevasis/ui",
|
|
482
|
+
"packageDir": "packages/ui",
|
|
483
|
+
"subpath": "./features/content",
|
|
484
|
+
"kind": "subpath",
|
|
485
|
+
"title": "Features Content",
|
|
486
|
+
"description": "Published, data-free content review card surface (ContentReviewCard and its sub-components) for downstream shells.",
|
|
487
|
+
"group": "Features",
|
|
488
|
+
"order": 16,
|
|
489
|
+
"sourcePath": "packages/ui/src/features/content/index.ts",
|
|
490
|
+
"docPath": "packages/ui/src/features/README.md",
|
|
491
|
+
"referencePath": "packages/ui/src/features/README.md",
|
|
492
|
+
"publishedExportPath": "./dist/features/content/index.js"
|
|
493
|
+
},
|
|
452
494
|
{
|
|
453
495
|
"packageName": "@elevasis/ui",
|
|
454
496
|
"packageDir": "packages/ui",
|
|
@@ -11,6 +11,8 @@ description: "Auto-generated catalog of all published @elevasis/core subpath exp
|
|
|
11
11
|
| `@elevasis/core` | Core | Core | Published core wrapper for the curated contract surface. |
|
|
12
12
|
| `@elevasis/core/auth` | Auth | Auth | Published browser-safe auth contracts, AccessKeys, and Access Model primitives. |
|
|
13
13
|
| `@elevasis/core/organization-model` | Organization Model | Organization Model | Published organization-model schema, defaults, resolver, and types. |
|
|
14
|
+
| `@elevasis/core/organization-model/readiness` | System Interface Readiness | Organization Model | Generic System Interface readiness engine, plus registerBuiltInReadinessProfile — the extension point for registering a readiness profile that carries real structural validation. |
|
|
14
15
|
| `@elevasis/core/knowledge` | Knowledge | Knowledge | Published knowledge query layer: bySystem/byKind/byOwner/governs/governedBy queries, parsePath, and output formatters. |
|
|
16
|
+
| `@elevasis/core/content` | Content | Content | Published content pipeline API schemas: content items, the payload envelope, a content-keyed processing state, attempts, review, and distributions, plus platform-content typed interfaces. |
|
|
15
17
|
| `@elevasis/core/entities` | Entities | Entities | Published base entity contracts (Project, Milestone, Task, Deal, Company, Contact) generic over a metadata extension slot. |
|
|
16
18
|
| `@elevasis/core/test-utils` | Test Utilities | Testing | Published test fixtures, mocks, and shared helpers for downstream automated tests. |
|
|
@@ -47,6 +47,9 @@ export type Deal = BaseDeal
|
|
|
47
47
|
|
|
48
48
|
## Recipe
|
|
49
49
|
|
|
50
|
-
The full pattern is documented in the SDK scaffold bundle
|
|
50
|
+
The full pattern is documented in the SDK scaffold bundle. Internally, read the workspace source at
|
|
51
|
+
`packages/sdk/docs/scaffold/recipes/extend-a-base-entity.md`; a tenant reads the published mirror at
|
|
52
|
+
`operations/node_modules/@elevasis/sdk/reference/scaffold/recipes/extend-a-base-entity.md`, which does
|
|
53
|
+
not resolve from the monorepo root.
|
|
51
54
|
|
|
52
55
|
The canonical template demo lives at `external/_template/core/types/entities.ts`.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# @elevasis/core/content
|
|
2
|
+
|
|
3
|
+
Content pipeline API schemas and platform-content typed interfaces. Browser-safe (no Node APIs).
|
|
4
|
+
|
|
5
|
+
## Surface
|
|
6
|
+
|
|
7
|
+
| Export | Purpose |
|
|
8
|
+
| ---------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
9
|
+
| `ContentItemResponseSchema`, `CreateContentItemRequestSchema`, `UpdateContentItemRequestSchema` | `content_items` transport shape. `processingState` is intentionally absent from create/update — factory-write-only. |
|
|
10
|
+
| `ContentProcessingStateSchema` | `{ stepKey: { status, data? } }`, keyed by `ContentStepKeySchema` — a content-specific key, not lead-gen's `LeadGenStageKeySchema`. |
|
|
11
|
+
| `ContentPayloadEnvelopeSchema` | The producer's immutable emission stored in `payload`. Never edited — `body` is the human's canonical text. |
|
|
12
|
+
| `ReviewContentItemRequestSchema` | Approve, or reject with a required `rejectReason`. Writes `reviewed_at` / `reviewed_by`. |
|
|
13
|
+
| `ContentItemAttemptResponseSchema`, `CreateContentItemAttemptRequestSchema` | `content_item_attempts` transport shape. No `attemptNumber` field on create — the API service assigns it inside the write. `stepKey` is producer-supplied and nullable. |
|
|
14
|
+
| `ContentDistributionResponseSchema`, `CreateContentDistributionRequestSchema`, `UpdateContentDistributionRequestSchema` | `content_distributions` transport shape, including the manual-publish fields (`publishMethod`, `platformPostId`, `platformUrl`). |
|
|
15
|
+
| `PlatformContent`, `YouTubeContent`, `LinkedInContent`, `InstagramContent`, `XContent`, `AnyPlatformContent`, `PlatformContentMap`, `Platform` | Typed interfaces for platform-specific content stored in `content_distributions.platform_content`. |
|
|
16
|
+
|
|
17
|
+
## Step catalog reconciliation
|
|
18
|
+
|
|
19
|
+
`ContentStepKeySchema` is free text today — the content System's step catalog (`content:catalog/<pipeline>-steps`) is authored separately in `packages/elevasis/core/config/organization-model`. Closed-catalog membership is enforced by the caller/API layer via model-injected validators once that catalog lands, mirroring how `LeadGenStageKeySchema` and `CrmStageKeySchema` are validated today.
|