@elevasis/core 0.21.0 → 0.23.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/index.d.ts +2518 -2169
- package/dist/index.js +2495 -1095
- package/dist/knowledge/index.d.ts +706 -1044
- package/dist/knowledge/index.js +9 -9
- package/dist/organization-model/index.d.ts +2518 -2169
- package/dist/organization-model/index.js +2495 -1095
- package/dist/test-utils/index.d.ts +826 -1014
- package/dist/test-utils/index.js +1894 -1032
- package/package.json +3 -3
- package/src/__tests__/template-core-compatibility.test.ts +11 -79
- package/src/_gen/__tests__/__snapshots__/contracts.md.snap +852 -397
- package/src/auth/multi-tenancy/permissions.ts +20 -8
- package/src/business/README.md +2 -2
- package/src/business/acquisition/api-schemas.test.ts +175 -2
- package/src/business/acquisition/api-schemas.ts +132 -16
- package/src/business/acquisition/build-templates.test.ts +4 -4
- package/src/business/acquisition/build-templates.ts +72 -30
- package/src/business/acquisition/crm-state-actions.test.ts +13 -11
- package/src/business/acquisition/index.ts +12 -0
- package/src/business/acquisition/types.ts +7 -3
- package/src/business/clients/api-schemas.test.ts +115 -0
- package/src/business/clients/api-schemas.ts +158 -0
- package/src/business/clients/index.ts +1 -0
- package/src/business/deals/api-schemas.ts +8 -0
- package/src/business/index.ts +5 -2
- package/src/business/projects/types.ts +19 -0
- package/src/execution/engine/__tests__/fixtures/test-agents.ts +10 -8
- package/src/execution/engine/agent/core/__tests__/agent.test.ts +16 -12
- package/src/execution/engine/agent/core/__tests__/error-passthrough.test.ts +4 -3
- package/src/execution/engine/agent/core/types.ts +25 -15
- package/src/execution/engine/agent/index.ts +6 -4
- package/src/execution/engine/agent/reasoning/__tests__/request-builder.test.ts +24 -18
- package/src/execution/engine/index.ts +3 -0
- package/src/execution/engine/workflow/types.ts +9 -2
- package/src/knowledge/README.md +8 -7
- package/src/knowledge/__tests__/queries.test.ts +74 -73
- package/src/knowledge/format.ts +10 -9
- package/src/knowledge/index.ts +1 -1
- package/src/knowledge/published.ts +1 -1
- package/src/knowledge/queries.ts +26 -25
- package/src/organization-model/README.md +73 -26
- package/src/organization-model/__tests__/content-kinds-registry.test.ts +210 -0
- package/src/organization-model/__tests__/defaults.test.ts +76 -96
- package/src/organization-model/__tests__/domains/actions.test.ts +56 -0
- package/src/organization-model/__tests__/domains/customers.test.ts +299 -295
- package/src/organization-model/__tests__/domains/entities.test.ts +56 -0
- package/src/organization-model/__tests__/domains/goals.test.ts +493 -479
- package/src/organization-model/__tests__/domains/identity.test.ts +280 -279
- package/src/organization-model/__tests__/domains/navigation.test.ts +268 -212
- package/src/organization-model/__tests__/domains/offerings.test.ts +414 -419
- package/src/organization-model/__tests__/domains/policies.test.ts +323 -0
- package/src/organization-model/__tests__/domains/resource-mappings.test.ts +271 -271
- package/src/organization-model/__tests__/domains/resources.test.ts +310 -0
- package/src/organization-model/__tests__/domains/roles.test.ts +463 -347
- package/src/organization-model/__tests__/domains/statuses.test.ts +246 -243
- package/src/organization-model/__tests__/domains/systems.test.ts +209 -0
- package/src/organization-model/__tests__/flatten-additive-merge.test.ts +361 -0
- package/src/organization-model/__tests__/foundation.test.ts +74 -102
- package/src/organization-model/__tests__/get-resources-for-system.test.ts +144 -0
- package/src/organization-model/__tests__/graph.test.ts +899 -71
- package/src/organization-model/__tests__/knowledge.test.ts +209 -49
- package/src/organization-model/__tests__/lookup-helpers.test.ts +438 -0
- package/src/organization-model/__tests__/migration-helpers.test.ts +591 -0
- package/src/organization-model/__tests__/prospecting-ssot.test.ts +36 -27
- package/src/organization-model/__tests__/recursive-system-schema.test.ts +520 -0
- package/src/organization-model/__tests__/resolve.test.ts +174 -23
- package/src/organization-model/__tests__/schema.test.ts +291 -114
- package/src/organization-model/__tests__/surface-projection.test.ts +207 -97
- package/src/organization-model/catalogs/lead-gen.ts +144 -0
- package/src/organization-model/content-kinds/config.ts +36 -0
- package/src/organization-model/content-kinds/index.ts +74 -0
- package/src/organization-model/content-kinds/pipeline.ts +68 -0
- package/src/organization-model/content-kinds/registry.ts +44 -0
- package/src/organization-model/content-kinds/status.ts +71 -0
- package/src/organization-model/content-kinds/template.ts +83 -0
- package/src/organization-model/content-kinds/types.ts +117 -0
- package/src/organization-model/contracts.ts +13 -3
- package/src/organization-model/defaults.ts +499 -86
- package/src/organization-model/domains/actions.ts +239 -0
- package/src/organization-model/domains/customers.ts +78 -75
- package/src/organization-model/domains/entities.ts +144 -0
- package/src/organization-model/domains/goals.ts +83 -80
- package/src/organization-model/domains/knowledge.ts +76 -17
- package/src/organization-model/domains/navigation.ts +107 -384
- package/src/organization-model/domains/offerings.ts +71 -66
- package/src/organization-model/domains/policies.ts +102 -0
- package/src/organization-model/domains/projects.ts +14 -48
- package/src/organization-model/domains/prospecting.ts +62 -181
- package/src/organization-model/domains/resources.ts +145 -0
- package/src/organization-model/domains/roles.ts +96 -55
- package/src/organization-model/domains/sales.ts +10 -219
- package/src/organization-model/domains/shared.ts +57 -57
- package/src/organization-model/domains/statuses.ts +339 -130
- package/src/organization-model/domains/systems.ts +203 -0
- package/src/organization-model/foundation.ts +54 -67
- package/src/organization-model/graph/build.ts +682 -54
- package/src/organization-model/graph/link.ts +1 -1
- package/src/organization-model/graph/schema.ts +24 -9
- package/src/organization-model/graph/types.ts +20 -7
- package/src/organization-model/helpers.ts +231 -26
- package/src/organization-model/icons.ts +1 -0
- package/src/organization-model/index.ts +118 -5
- package/src/organization-model/migration-helpers.ts +249 -0
- package/src/organization-model/organization-graph.mdx +16 -15
- package/src/organization-model/organization-model.mdx +111 -44
- package/src/organization-model/published.ts +172 -19
- package/src/organization-model/resolve.ts +117 -54
- package/src/organization-model/schema.ts +654 -112
- package/src/organization-model/surface-projection.ts +116 -122
- package/src/organization-model/types.ts +146 -20
- package/src/platform/api/types.ts +38 -35
- package/src/platform/constants/versions.ts +1 -1
- package/src/platform/registry/__tests__/command-view.test.ts +6 -8
- package/src/platform/registry/__tests__/resource-link.test.ts +13 -8
- package/src/platform/registry/__tests__/resource-registry.integration.test.ts +16 -31
- package/src/platform/registry/__tests__/resource-registry.nested-systems.test.ts +245 -0
- package/src/platform/registry/__tests__/resource-registry.test.ts +2053 -2005
- package/src/platform/registry/__tests__/validation.test.ts +1347 -1086
- package/src/platform/registry/index.ts +14 -0
- package/src/platform/registry/resource-registry.ts +52 -2
- package/src/platform/registry/serialization.ts +241 -202
- package/src/platform/registry/serialized-types.ts +1 -0
- package/src/platform/registry/types.ts +411 -361
- package/src/platform/registry/validation.ts +745 -513
- package/src/projects/api-schemas.ts +290 -267
- package/src/reference/_generated/contracts.md +853 -397
- package/src/reference/glossary.md +23 -18
- package/src/supabase/database.types.ts +181 -0
- package/src/test-utils/test-utils.test.ts +1 -6
- package/src/organization-model/__tests__/domains/operations.test.ts +0 -203
- package/src/organization-model/domains/features.ts +0 -31
- package/src/organization-model/domains/operations.ts +0 -85
|
@@ -1,80 +1,83 @@
|
|
|
1
|
-
import { z } from 'zod'
|
|
2
|
-
|
|
3
|
-
// ---------------------------------------------------------------------------
|
|
4
|
-
// Measurable outcome schema — one trackable result that supports a goal.
|
|
5
|
-
// The field name `keyResults` is used for compatibility with OKR tooling;
|
|
6
|
-
// user-facing surfaces and documentation MUST say "measurable outcomes",
|
|
7
|
-
// never "key results" or "OKR".
|
|
8
|
-
// ---------------------------------------------------------------------------
|
|
9
|
-
|
|
10
|
-
export const KeyResultSchema = z.object({
|
|
11
|
-
/** Stable unique identifier for the measurable outcome (e.g. "kr-revenue-q1"). */
|
|
12
|
-
id: z.string().trim().min(1).max(100),
|
|
13
|
-
/** Plain-language description of this measurable outcome (e.g. "Increase trial-to-paid conversion"). */
|
|
14
|
-
description: z.string().trim().min(1).max(500),
|
|
15
|
-
/**
|
|
16
|
-
* What is being measured — the metric name (e.g. "monthly revenue", "NPS score",
|
|
17
|
-
* "trial-to-paid conversion rate"). Free-form string.
|
|
18
|
-
*/
|
|
19
|
-
targetMetric: z.string().trim().min(1).max(200),
|
|
20
|
-
/** Current measured value. Defaults to 0 when not yet tracked. */
|
|
21
|
-
currentValue: z.number().default(0),
|
|
22
|
-
/**
|
|
23
|
-
* Target value to reach for this measurable outcome to be considered achieved.
|
|
24
|
-
* Optional — omit if the outcome is directional (e.g. "reduce churn") without
|
|
25
|
-
* a hard numeric target.
|
|
26
|
-
*/
|
|
27
|
-
targetValue: z.number().optional()
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
// ---------------------------------------------------------------------------
|
|
31
|
-
// Objective schema — one goal the organization is working toward.
|
|
32
|
-
// User-facing label is "goal"; this schema type is named Objective for
|
|
33
|
-
// structural continuity with OKR tooling. Do NOT expose "OKR", "objective",
|
|
34
|
-
// or "key result" in any user-facing label or documentation.
|
|
35
|
-
//
|
|
36
|
-
// Period fields use ISO 8601 date strings (YYYY-MM-DD). Cross-schema
|
|
37
|
-
// validation (periodEnd > periodStart) is enforced in
|
|
38
|
-
// `OrganizationModelSchema.superRefine()`.
|
|
39
|
-
// ---------------------------------------------------------------------------
|
|
40
|
-
|
|
41
|
-
const ISO_DATE_REGEX = /^\d{4}-\d{2}-\d{2}$/
|
|
42
|
-
|
|
43
|
-
export const ObjectiveSchema = z.object({
|
|
44
|
-
/** Stable unique identifier for the goal (e.g. "goal-grow-arr-q1-2026"). */
|
|
45
|
-
id: z.string().trim().min(1).max(100),
|
|
46
|
-
/**
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
*
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
// ---------------------------------------------------------------------------
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Measurable outcome schema — one trackable result that supports a goal.
|
|
5
|
+
// The field name `keyResults` is used for compatibility with OKR tooling;
|
|
6
|
+
// user-facing surfaces and documentation MUST say "measurable outcomes",
|
|
7
|
+
// never "key results" or "OKR".
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
|
|
10
|
+
export const KeyResultSchema = z.object({
|
|
11
|
+
/** Stable unique identifier for the measurable outcome (e.g. "kr-revenue-q1"). */
|
|
12
|
+
id: z.string().trim().min(1).max(100),
|
|
13
|
+
/** Plain-language description of this measurable outcome (e.g. "Increase trial-to-paid conversion"). */
|
|
14
|
+
description: z.string().trim().min(1).max(500),
|
|
15
|
+
/**
|
|
16
|
+
* What is being measured — the metric name (e.g. "monthly revenue", "NPS score",
|
|
17
|
+
* "trial-to-paid conversion rate"). Free-form string.
|
|
18
|
+
*/
|
|
19
|
+
targetMetric: z.string().trim().min(1).max(200),
|
|
20
|
+
/** Current measured value. Defaults to 0 when not yet tracked. */
|
|
21
|
+
currentValue: z.number().default(0),
|
|
22
|
+
/**
|
|
23
|
+
* Target value to reach for this measurable outcome to be considered achieved.
|
|
24
|
+
* Optional — omit if the outcome is directional (e.g. "reduce churn") without
|
|
25
|
+
* a hard numeric target.
|
|
26
|
+
*/
|
|
27
|
+
targetValue: z.number().optional()
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// Objective schema — one goal the organization is working toward.
|
|
32
|
+
// User-facing label is "goal"; this schema type is named Objective for
|
|
33
|
+
// structural continuity with OKR tooling. Do NOT expose "OKR", "objective",
|
|
34
|
+
// or "key result" in any user-facing label or documentation.
|
|
35
|
+
//
|
|
36
|
+
// Period fields use ISO 8601 date strings (YYYY-MM-DD). Cross-schema
|
|
37
|
+
// validation (periodEnd > periodStart) is enforced in
|
|
38
|
+
// `OrganizationModelSchema.superRefine()`.
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
|
|
41
|
+
const ISO_DATE_REGEX = /^\d{4}-\d{2}-\d{2}$/
|
|
42
|
+
|
|
43
|
+
export const ObjectiveSchema = z.object({
|
|
44
|
+
/** Stable unique identifier for the goal (e.g. "goal-grow-arr-q1-2026"). */
|
|
45
|
+
id: z.string().trim().min(1).max(100),
|
|
46
|
+
/** Domain-map iteration order. Convention: multiples of 10 (10, 20, 30, ...) to allow easy insertion. */
|
|
47
|
+
order: z.number(),
|
|
48
|
+
/** Plain-language description of what the organization wants to achieve. */
|
|
49
|
+
description: z.string().trim().min(1).max(1000),
|
|
50
|
+
/**
|
|
51
|
+
* Start of the period this goal is active for — ISO 8601 date string (YYYY-MM-DD).
|
|
52
|
+
* Must be strictly before `periodEnd`.
|
|
53
|
+
*/
|
|
54
|
+
periodStart: z.string().regex(ISO_DATE_REGEX, 'periodStart must be an ISO date string (YYYY-MM-DD)'),
|
|
55
|
+
/**
|
|
56
|
+
* End of the period this goal is active for — ISO 8601 date string (YYYY-MM-DD).
|
|
57
|
+
* Must be strictly after `periodStart`.
|
|
58
|
+
* Enforced via `OrganizationModelSchema.superRefine()`.
|
|
59
|
+
*/
|
|
60
|
+
periodEnd: z.string().regex(ISO_DATE_REGEX, 'periodEnd must be an ISO date string (YYYY-MM-DD)'),
|
|
61
|
+
/**
|
|
62
|
+
* List of measurable outcomes that define success for this goal.
|
|
63
|
+
* Defaults to empty array so goals can be declared before outcomes are defined.
|
|
64
|
+
*/
|
|
65
|
+
keyResults: z.array(KeyResultSchema).default([])
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
// Goals domain schema — a collection of goals the organization is pursuing.
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
|
|
72
|
+
export const GoalsDomainSchema = z
|
|
73
|
+
.record(z.string(), ObjectiveSchema)
|
|
74
|
+
.refine((record) => Object.entries(record).every(([key, entry]) => entry.id === key), {
|
|
75
|
+
message: 'Each objective entry id must match its map key'
|
|
76
|
+
})
|
|
77
|
+
.default({})
|
|
78
|
+
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
80
|
+
// Seed — empty by default; adapters populate with real goal definitions.
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
|
|
83
|
+
export const DEFAULT_ORGANIZATION_MODEL_GOALS: z.infer<typeof GoalsDomainSchema> = {}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod'
|
|
2
2
|
import { IconNameSchema, ModelIdSchema } from './shared'
|
|
3
|
-
import { NodeIdStringSchema } from './
|
|
3
|
+
import { NodeIdStringSchema } from './systems'
|
|
4
|
+
import { RoleIdSchema } from './roles'
|
|
4
5
|
|
|
5
6
|
// ---------------------------------------------------------------------------
|
|
6
7
|
// KnowledgeLink — a typed graph link pointing to another OM node.
|
|
@@ -8,12 +9,60 @@ import { NodeIdStringSchema } from './features'
|
|
|
8
9
|
// Phase 1 only emits 'governs' edges from knowledge nodes.
|
|
9
10
|
// ---------------------------------------------------------------------------
|
|
10
11
|
|
|
11
|
-
export const
|
|
12
|
+
export const KnowledgeTargetKindSchema = z
|
|
13
|
+
.enum([
|
|
14
|
+
'system',
|
|
15
|
+
'resource',
|
|
16
|
+
'knowledge',
|
|
17
|
+
'stage',
|
|
18
|
+
'action',
|
|
19
|
+
'role',
|
|
20
|
+
'goal',
|
|
21
|
+
'customer-segment',
|
|
22
|
+
'offering',
|
|
23
|
+
// D4: content nodes are a valid knowledge target after compound-domain data moved into system.content
|
|
24
|
+
'content-node'
|
|
25
|
+
])
|
|
26
|
+
.meta({ label: 'Target kind' })
|
|
27
|
+
|
|
28
|
+
export const KnowledgeTargetRefSchema = z.object({
|
|
29
|
+
kind: KnowledgeTargetKindSchema,
|
|
30
|
+
// D4: content-node targets use a qualified id format '<system-path>:<local-content-id>'
|
|
31
|
+
// which contains a colon separator and cannot satisfy ModelIdSchema. Use a permissive
|
|
32
|
+
// string schema here; business-logic validation of target existence is done in
|
|
33
|
+
// OrganizationModelSchema.superRefine (knowledgeTargetExists).
|
|
34
|
+
id: z.string().trim().min(1).max(300)
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
const LegacyKnowledgeLinkSchema = z.object({
|
|
12
38
|
nodeId: NodeIdStringSchema
|
|
13
39
|
})
|
|
14
40
|
|
|
15
|
-
|
|
16
|
-
|
|
41
|
+
const CanonicalKnowledgeLinkSchema = z.object({
|
|
42
|
+
target: KnowledgeTargetRefSchema
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
function nodeIdFromTarget(target: z.infer<typeof KnowledgeTargetRefSchema>): string {
|
|
46
|
+
return `${target.kind}:${target.id}`
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function targetFromNodeId(nodeId: string): z.infer<typeof KnowledgeTargetRefSchema> {
|
|
50
|
+
const [kind, ...idParts] = nodeId.split(':')
|
|
51
|
+
return {
|
|
52
|
+
kind: KnowledgeTargetKindSchema.parse(kind),
|
|
53
|
+
id: idParts.join(':')
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export const KnowledgeLinkSchema = z
|
|
58
|
+
.union([CanonicalKnowledgeLinkSchema, LegacyKnowledgeLinkSchema])
|
|
59
|
+
.transform((link) => {
|
|
60
|
+
const target = 'target' in link ? link.target : targetFromNodeId(link.nodeId)
|
|
61
|
+
return {
|
|
62
|
+
target,
|
|
63
|
+
nodeId: nodeIdFromTarget(target)
|
|
64
|
+
}
|
|
65
|
+
})
|
|
17
66
|
|
|
18
67
|
// ---------------------------------------------------------------------------
|
|
19
68
|
// OrgKnowledgeNode — single schema, `kind` discriminator drives presentation.
|
|
@@ -21,7 +70,9 @@ export const KnowledgeDomainBindingSchema = z.string().trim().min(1).max(80)
|
|
|
21
70
|
// Phase 2 (deferred): structured block format (Supabase-backed authoring).
|
|
22
71
|
// ---------------------------------------------------------------------------
|
|
23
72
|
|
|
24
|
-
export const OrgKnowledgeKindSchema = z
|
|
73
|
+
export const OrgKnowledgeKindSchema = z
|
|
74
|
+
.enum(['playbook', 'strategy', 'reference'])
|
|
75
|
+
.meta({ label: 'Knowledge kind', color: 'grape' })
|
|
25
76
|
|
|
26
77
|
export const OrgKnowledgeNodeSchema = z.object({
|
|
27
78
|
id: ModelIdSchema,
|
|
@@ -29,6 +80,8 @@ export const OrgKnowledgeNodeSchema = z.object({
|
|
|
29
80
|
title: z.string().trim().min(1).max(200),
|
|
30
81
|
summary: z.string().trim().min(1).max(1000),
|
|
31
82
|
icon: IconNameSchema.optional(),
|
|
83
|
+
/** Canonical documentation URL when body content is a local summary. */
|
|
84
|
+
externalUrl: z.string().trim().url().max(500).optional(),
|
|
32
85
|
/** Raw MDX string. Phase 2 will introduce a structured block format. */
|
|
33
86
|
body: z.string().trim().min(1),
|
|
34
87
|
/**
|
|
@@ -36,27 +89,33 @@ export const OrgKnowledgeNodeSchema = z.object({
|
|
|
36
89
|
* Each link emits a `governs` edge: knowledge-node -> target node.
|
|
37
90
|
*/
|
|
38
91
|
links: z.array(KnowledgeLinkSchema).default([]),
|
|
39
|
-
/**
|
|
40
|
-
|
|
41
|
-
/** Domain key used to derive fast graph->skill registries. */
|
|
42
|
-
domain: KnowledgeDomainBindingSchema.optional(),
|
|
43
|
-
/** Identifiers of the roles or members who own this knowledge node. */
|
|
44
|
-
ownerIds: z.array(ModelIdSchema).default([]),
|
|
92
|
+
/** Role identifiers that own this knowledge node. */
|
|
93
|
+
ownerIds: z.array(RoleIdSchema.meta({ ref: 'role' })).default([]),
|
|
45
94
|
/** ISO date string (YYYY-MM-DD or full ISO 8601) of last meaningful update. */
|
|
46
95
|
updatedAt: z.string().trim().min(1).max(50)
|
|
47
96
|
})
|
|
48
97
|
|
|
49
98
|
// ---------------------------------------------------------------------------
|
|
50
|
-
// Domain schema — flat
|
|
99
|
+
// Domain schema — flat Record<id, KnowledgeNode> (D3: flatten per Phase 4 cut)
|
|
100
|
+
//
|
|
101
|
+
// Wave 1 shape change: the old wrapper object { version, lastModified, nodes[] }
|
|
102
|
+
// is replaced by a plain id-keyed map. version/lastModified move to
|
|
103
|
+
// domainMetadata.knowledge (D7). The default is an empty map {}.
|
|
104
|
+
//
|
|
105
|
+
// Wave 2 (elevasis-core canonicalOrganizationModel) must produce a value of this
|
|
106
|
+
// shape: Record<KnowledgeId, OrgKnowledgeNode> — i.e., an object keyed by
|
|
107
|
+
// each node's id string, with OrgKnowledgeNode as the value. Example:
|
|
108
|
+
// knowledge: {
|
|
109
|
+
// 'playbook.crm.discovery': { id: 'playbook.crm.discovery', kind: 'playbook', ... },
|
|
110
|
+
// }
|
|
51
111
|
// ---------------------------------------------------------------------------
|
|
52
112
|
|
|
53
|
-
export const KnowledgeDomainSchema = z.
|
|
54
|
-
nodes: z.array(OrgKnowledgeNodeSchema).default([])
|
|
55
|
-
})
|
|
113
|
+
export const KnowledgeDomainSchema = z.record(ModelIdSchema, OrgKnowledgeNodeSchema).default({})
|
|
56
114
|
|
|
57
115
|
export type OrgKnowledgeNode = z.infer<typeof OrgKnowledgeNodeSchema>
|
|
116
|
+
export type OrgKnowledgeNodeInput = z.input<typeof OrgKnowledgeNodeSchema>
|
|
58
117
|
export type OrgKnowledgeKind = z.infer<typeof OrgKnowledgeKindSchema>
|
|
118
|
+
export type KnowledgeTargetKind = z.infer<typeof KnowledgeTargetKindSchema>
|
|
119
|
+
export type KnowledgeTargetRef = z.infer<typeof KnowledgeTargetRefSchema>
|
|
59
120
|
export type KnowledgeLink = z.infer<typeof KnowledgeLinkSchema>
|
|
60
|
-
export type KnowledgeSkillBinding = z.infer<typeof KnowledgeSkillBindingSchema>
|
|
61
|
-
export type KnowledgeDomainBinding = z.infer<typeof KnowledgeDomainBindingSchema>
|
|
62
121
|
export type KnowledgeDomain = z.infer<typeof KnowledgeDomainSchema>
|