@elevasis/ui 2.32.0 → 2.33.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/app/index.js +3 -3
- package/dist/{chunk-GCOQ3TBG.js → chunk-2GMF5IRF.js} +2 -2
- package/dist/{chunk-4MFNGNHF.js → chunk-52NLZN6Z.js} +2 -2
- package/dist/{chunk-5FJJ72HU.js → chunk-AHCKOU2M.js} +1 -1
- package/dist/chunk-CLDCYJQT.js +1 -0
- package/dist/chunk-DWXDNT7P.js +145 -0
- package/dist/{chunk-5J4PDX26.js → chunk-E4T2N7P7.js} +14 -2
- package/dist/{chunk-RQTWIXJ5.js → chunk-E7C4XEWH.js} +1 -1
- package/dist/{chunk-6DWD423K.js → chunk-FFPHJBJC.js} +1 -1
- package/dist/{chunk-T35FWDAB.js → chunk-GNRMB6DC.js} +940 -156
- package/dist/{chunk-LLRXA7D7.js → chunk-IUKFNASA.js} +1 -1
- package/dist/{chunk-QTI3KC7D.js → chunk-JHT5JIJ3.js} +106 -43
- package/dist/{chunk-IQHU7O5Y.js → chunk-MHLZ4F4N.js} +1 -1
- package/dist/{chunk-VRNMNB3O.js → chunk-NOIRGGW2.js} +1 -1
- package/dist/{chunk-MOY4VOHF.js → chunk-QNOVUCSV.js} +1 -1
- package/dist/{chunk-4QK76KIF.js → chunk-TKF5S4XP.js} +1 -1
- package/dist/{chunk-ZQOKIGZP.js → chunk-UVFOURXR.js} +4 -4
- package/dist/{chunk-YLQEVSOR.js → chunk-UW7IV2Y3.js} +202 -54
- package/dist/{chunk-IZWTVFJ2.js → chunk-V6SZ4ECN.js} +6 -3
- package/dist/{chunk-QQHOKTJA.js → chunk-XG57WXOL.js} +39 -2
- package/dist/{chunk-7KZINJLP.js → chunk-XOFSMJLF.js} +4 -4
- package/dist/{chunk-WQPX44YM.js → chunk-YAQ25UNM.js} +668 -168
- package/dist/{chunk-QXCDKE2O.js → chunk-ZGTDKH3P.js} +9 -28
- package/dist/components/index.d.ts +111 -2
- package/dist/components/index.js +24 -23
- package/dist/components/navigation/index.js +4 -3
- package/dist/execution/index.d.ts +5 -1
- package/dist/features/clients/index.js +8 -7
- package/dist/features/crm/index.js +10 -9
- package/dist/features/dashboard/index.d.ts +110 -1
- package/dist/features/dashboard/index.js +9 -8
- package/dist/features/delivery/index.js +9 -8
- package/dist/features/knowledge/index.js +8 -18
- package/dist/features/lead-gen/index.js +10 -9
- package/dist/features/monitoring/index.js +10 -9
- package/dist/features/monitoring/requests/index.d.ts +2 -2
- package/dist/features/monitoring/requests/index.js +8 -7
- package/dist/features/operations/index.d.ts +442 -73
- package/dist/features/operations/index.js +13 -12
- package/dist/features/settings/index.js +9 -8
- package/dist/hooks/index.d.ts +192 -3
- package/dist/hooks/index.js +8 -7
- package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +190 -1
- package/dist/hooks/published.d.ts +192 -3
- package/dist/hooks/published.js +8 -7
- package/dist/index.d.ts +444 -75
- package/dist/index.js +8 -7
- package/dist/knowledge/index.d.ts +490 -214
- package/dist/knowledge/index.js +1179 -687
- package/dist/knowledge-search-index-P7PR626V.js +1514 -0
- package/dist/layout/index.js +1 -1
- package/dist/provider/index.d.ts +357 -72
- package/dist/provider/index.js +7 -6
- package/dist/provider/published.d.ts +357 -72
- package/dist/provider/published.js +5 -4
- package/dist/types/index.d.ts +190 -1
- package/dist/utils/index.d.ts +110 -1
- package/package.json +39 -39
- package/src/README.md +29 -29
- package/src/api/README.md +18 -18
- package/src/app/README.md +24 -24
- package/src/auth/README.md +18 -18
- package/src/components/README.md +24 -24
- package/src/execution/README.md +16 -16
- package/src/features/README.md +28 -28
- package/src/graph/README.md +16 -16
- package/src/hooks/README.md +23 -23
- package/src/initialization/README.md +19 -19
- package/src/knowledge/README.md +31 -31
- package/src/organization/README.md +18 -18
- package/src/profile/README.md +19 -19
- package/src/provider/README.md +32 -32
- package/src/router/README.md +18 -18
- package/src/sse/README.md +13 -13
- package/src/test-utils/README.md +7 -7
- package/src/theme/README.md +23 -23
- package/src/theme/presets/README.md +19 -19
- package/src/types/README.md +16 -16
- package/src/utils/README.md +18 -18
- package/src/zustand/README.md +18 -18
- package/dist/chunk-UROTM5OR.js +0 -172
- package/dist/knowledge-search-index-5KYPO746.js +0 -1479
package/dist/knowledge/index.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { getKnowledgeIconToken, projectNavigationSurfaces, projectNavigationGroups, KNOWLEDGE_DOMAINS_WITH_PANELS } from '../chunk-
|
|
2
|
-
export { KNOWLEDGE_ICON_TOKEN_BY_KIND, KnowledgeSearchBar, KnowledgeTree, OM_TREE_GROUPS, getKnowledgeIconToken, getSharedOrganizationGraph } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
import { getKnowledgeIconToken, getKnowledgeGraphNodeCommand, getKnowledgeNodeReadCommand, getKnowledgeOntologyProjection, getPrimaryOntologyItemsForDomain, projectNavigationSurfaces, projectNavigationGroups, getOntologyDomainLabel, getKnowledgeDomainFolderCommand, getKnowledgeTreeFolderCommand, KNOWLEDGE_DOMAINS_WITH_PANELS } from '../chunk-YAQ25UNM.js';
|
|
2
|
+
export { KNOWLEDGE_ICON_TOKEN_BY_KIND, KnowledgeSearchBar, KnowledgeTree, OM_TREE_GROUPS, getKnowledgeIconToken, getSharedOrganizationGraph } from '../chunk-YAQ25UNM.js';
|
|
3
|
+
import '../chunk-V6SZ4ECN.js';
|
|
4
4
|
import '../chunk-N55DVMAG.js';
|
|
5
|
-
import
|
|
6
|
-
export { SemanticIcon, extendSemanticIconRegistry, getSemanticIconComponent, resolveSemanticIconComponent } from '../chunk-UROTM5OR.js';
|
|
5
|
+
import '../chunk-CLDCYJQT.js';
|
|
7
6
|
import '../chunk-X4WBGKJQ.js';
|
|
8
7
|
import '../chunk-IIMU5YAJ.js';
|
|
9
8
|
import '../chunk-RYTEQBAO.js';
|
|
@@ -11,14 +10,16 @@ import { PageContainer } from '../chunk-BZZCNLT6.js';
|
|
|
11
10
|
import '../chunk-WLOQ4IBG.js';
|
|
12
11
|
import '../chunk-TKAYX2SP.js';
|
|
13
12
|
import '../chunk-NYBEU5TE.js';
|
|
14
|
-
import {
|
|
13
|
+
import { SemanticIcon } from '../chunk-DWXDNT7P.js';
|
|
14
|
+
export { SemanticIcon, extendSemanticIconRegistry, getSemanticIconComponent, resolveSemanticIconComponent } from '../chunk-DWXDNT7P.js';
|
|
15
|
+
import { getSystem, SystemEntrySchema, IdentityDomainSchema, WorkflowResourceEntrySchema, AgentResourceEntrySchema, IntegrationResourceEntrySchema, ScriptResourceEntrySchema, getContent, lookupContentType, SurfaceDefinitionSchema, RoleSchema, PolicySchema, EntitySchema, ActionSchema, listAllSystems, SalesStageSchema, OntologyIdSchema, ontologyGraphNodeId } from '../chunk-GNRMB6DC.js';
|
|
15
16
|
import '../chunk-2IFYDILW.js';
|
|
16
17
|
import '../chunk-Q7DJKLEN.js';
|
|
17
18
|
import '../chunk-E565XMTQ.js';
|
|
18
19
|
import '../chunk-DT3QYZVU.js';
|
|
19
20
|
import '../chunk-I2KLQ2HA.js';
|
|
20
21
|
import { createContext, Children, isValidElement, cloneElement, useMemo, useContext, useRef, useState, useEffect } from 'react';
|
|
21
|
-
import { Card, Text, SimpleGrid, Group, Stack, Alert, Tabs, Box, Table, CopyButton, Tooltip, ActionIcon, Title, Badge, Divider,
|
|
22
|
+
import { Card, Text, SimpleGrid, Group, Stack, Alert, Tabs, Box, Table, CopyButton, Tooltip, ActionIcon, Title, Badge, Divider, Button, Paper, TableOfContents, ThemeIcon, UnstyledButton, List, Code, Progress } from '@mantine/core';
|
|
22
23
|
import { IconBook, IconCheck, IconCopy, IconExternalLink, IconCircleX, IconAlertTriangle, IconInfoCircle } from '@tabler/icons-react';
|
|
23
24
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
24
25
|
import { Highlight, themes } from 'prism-react-renderer';
|
|
@@ -38,7 +39,7 @@ var KNOWLEDGE_BODIES = {
|
|
|
38
39
|
"knowledge.lead-gen-strategy": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n li: "li",\n p: "p",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Strategy"\n }), "\\n", _jsx(_components.p, {\n children: "The lead-gen pipeline targets SMBs with 10-200 employees in recession-resistant verticals (manufacturing, logistics, professional services). Firmographic filters: revenue >$1M, HQ in US/CA/AU, tech stack includes at least one SaaS CRM."\n }), "\\n", _jsx(_components.h2, {\n children: "Scoring Thresholds"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "High priority: ICP score >= 80"\n }), "\\n", _jsx(_components.li, {\n children: "Medium priority: ICP score 60-79"\n }), "\\n", _jsx(_components.li, {\n children: "Low priority: < 60 (excluded from active outreach)"\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
39
40
|
"knowledge.org-model-reference": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n li: "li",\n p: "p",\n strong: "strong",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Schema"\n }), "\\n", _jsxs(_components.p, {\n children: ["The ", _jsx(_components.code, {\n children: "OrganizationModel"\n }), " schema is defined in ", _jsx(_components.code, {\n children: "packages/core/src/organization-model/schema.ts"\n }), ". It is versioned at ", _jsx(_components.code, {\n children: "version: 1"\n }), " and composed from domain sub-schemas. The OM is the authoritative contract for the organization: downstream surfaces including Command View, the Knowledge Browser, and the navigation shell are all derived projections from this schema."]\n }), "\\n", _jsx(_components.h2, {\n children: "Top-Level Domains"\n }), "\\n", _jsxs(_components.p, {\n children: ["These are the current top-level fields on ", _jsx(_components.code, {\n children: "OrganizationModel"\n }), ". There is no live ", _jsx(_components.code, {\n children: "features"\n }), " or ", _jsx(_components.code, {\n children: "capabilities"\n }), " top-level field -- those terms are legacy wording and should not appear as authored OM primitives."]\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "version"\n }), " -- schema version, currently locked at ", _jsx(_components.code, {\n children: "1"\n })]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "domainMetadata"\n }), " -- per-domain version and ", _jsx(_components.code, {\n children: "lastModified"\n }), " tracking"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "branding"\n }), " -- organization name, logo, color identity"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "navigation"\n }), " -- surfaces, groups, and defaultSurfaceId for shell routing"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "sales"\n }), " -- sales domain including pipeline entity references"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "prospecting"\n }), " -- lead generation stages, entity references, and pipeline config"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "projects"\n }), " -- project, milestone, and task entity references"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "identity"\n }), " -- organization identity fields"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "customers"\n }), " -- customer segment definitions"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "offerings"\n }), " -- product and service definitions linked to customer segments"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "roles"\n }), " -- role definitions with reportsToId hierarchy and agentId holder support"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "goals"\n }), " -- OKR-style objectives with period ranges and system links"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "systems"\n }), " -- the backbone: hierarchical bounded contexts with dotted IDs and parentSystemId"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "resources"\n }), " -- governance descriptors for workflows, agents, integrations, triggers, and scripts; resource identity lives here, not in a separate deployment manifest"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "actions"\n }), " -- the invokable semantic layer; actions map to resources, affect entities, bind to knowledge, and expose invocation types (slash command, MCP tool, API endpoint, script execution)"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "entities"\n }), " -- business objects owned by systems, with table metadata, state catalogs, and typed entity links"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "policies"\n }), " -- governance rules applied to systems, actions, resources, and roles"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "statuses"\n }), " -- runtime semantic status registry"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "knowledge"\n }), " -- first-class OM content backed by inline nodes and MDX source nodes"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Graph Contract"\n }), "\\n", _jsxs(_components.p, {\n children: ["The OM is projected into a typed graph by ", _jsx(_components.code, {\n children: "buildOrganizationGraph()"\n }), " in ", _jsx(_components.code, {\n children: "packages/core/src/organization-model/graph/build.ts"\n }), "."]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Node kinds:"\n }), " ", _jsx(_components.code, {\n children: "organization"\n }), ", ", _jsx(_components.code, {\n children: "system"\n }), ", ", _jsx(_components.code, {\n children: "role"\n }), ", ", _jsx(_components.code, {\n children: "action"\n }), ", ", _jsx(_components.code, {\n children: "entity"\n }), ", ", _jsx(_components.code, {\n children: "event"\n }), ", ", _jsx(_components.code, {\n children: "policy"\n }), ", ", _jsx(_components.code, {\n children: "stage"\n }), ", ", _jsx(_components.code, {\n children: "resource"\n }), ", ", _jsx(_components.code, {\n children: "knowledge"\n })]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Edge kinds:"\n }), " ", _jsx(_components.code, {\n children: "contains"\n }), ", ", _jsx(_components.code, {\n children: "references"\n }), ", ", _jsx(_components.code, {\n children: "maps_to"\n }), ", ", _jsx(_components.code, {\n children: "uses"\n }), ", ", _jsx(_components.code, {\n children: "governs"\n }), ", ", _jsx(_components.code, {\n children: "links"\n }), ", ", _jsx(_components.code, {\n children: "affects"\n }), ", ", _jsx(_components.code, {\n children: "emits"\n }), ", ", _jsx(_components.code, {\n children: "originates_from"\n }), ", ", _jsx(_components.code, {\n children: "triggers"\n }), ", ", _jsx(_components.code, {\n children: "applies_to"\n }), ", ", _jsx(_components.code, {\n children: "effects"\n })]\n }), "\\n", _jsxs(_components.p, {\n children: ["The ", _jsx(_components.code, {\n children: "resourceType"\n }), " overlay on resource nodes is a separate enum: ", _jsx(_components.code, {\n children: "workflow"\n }), ", ", _jsx(_components.code, {\n children: "agent"\n }), ", ", _jsx(_components.code, {\n children: "trigger"\n }), ", ", _jsx(_components.code, {\n children: "integration"\n }), ", ", _jsx(_components.code, {\n children: "external"\n }), ", ", _jsx(_components.code, {\n children: "human_checkpoint"\n }), ", ", _jsx(_components.code, {\n children: "script"\n }), "."]\n }), "\\n", _jsx(_components.h2, {\n children: "Authored Primitives vs Projected Graph Nodes"\n }), "\\n", _jsxs(_components.p, {\n children: ["Authored primitives are what you write directly in the OM: ", _jsx(_components.code, {\n children: "systems"\n }), ", ", _jsx(_components.code, {\n children: "roles"\n }), ", ", _jsx(_components.code, {\n children: "resources"\n }), ", ", _jsx(_components.code, {\n children: "actions"\n }), ", ", _jsx(_components.code, {\n children: "entities"\n }), ", ", _jsx(_components.code, {\n children: "policies"\n }), ", ", _jsx(_components.code, {\n children: "knowledge"\n }), ". The graph builder reads these and emits a richer set of typed nodes and edges. Events, for example, are not authored directly -- they are projected from resource ", _jsx(_components.code, {\n children: "emits"\n }), " declarations. Stages are projected from prospecting stage catalogs."]\n }), "\\n", _jsx(_components.h2, {\n children: "Command View"\n }), "\\n", _jsxs(_components.p, {\n children: ["Command View is a derived operational projection of the OM graph. It visualizes systems, resources, actions, entities, and relationships using the same node and edge taxonomy as ", _jsx(_components.code, {\n children: "buildOrganizationGraph()"\n }), ". It does not have a separate deployment manifest model -- the OM ", _jsx(_components.code, {\n children: "resources"\n }), " domain is the single source of resource identity."]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
40
41
|
"knowledge.seo-lead-gen-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n li: "li",\n ol: "ol",\n p: "p",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "This playbook governs the handoff from SEO-sourced traffic to the lead-gen pipeline."\n }), "\\n", _jsx(_components.h2, {\n children: "Steps"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsx(_components.li, {\n children: "SEO feature captures visitor signal (form fill or intent data)."\n }), "\\n", _jsx(_components.li, {\n children: "Score the lead using the standard ICP scoring thresholds."\n }), "\\n", _jsx(_components.li, {\n children: "If score >= 60, inject into the lead-gen prospect list."\n }), "\\n", _jsx(_components.li, {\n children: "Assign to the appropriate outreach campaign in the CRM."\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
41
|
-
"knowledge.outreach-campaign-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n li: "li",\n ol: "ol",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Benchmarks"\n }), "\\n", _jsxs(_components.p, {\n children: ["B2B cold email benchmarks (2025-2026). Use these as evaluation thresholds when running ", _jsx(_components.code, {\n children: "ist-analytics-workflow"\n }), "."]\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Metric"\n }), _jsx(_components.th, {\n children: "Bad"\n }), _jsx(_components.th, {\n children: "Needs Work"\n }), _jsx(_components.th, {\n children: "Good"\n }), _jsx(_components.th, {\n children: "Excellent"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Open Rate"\n })\n }), _jsx(_components.td, {\n children: "<20%"\n }), _jsx(_components.td, {\n children: "20-30%"\n }), _jsx(_components.td, {\n children: "30-45%"\n }), _jsx(_components.td, {\n children: "45%+"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Reply Rate"\n })\n }), _jsx(_components.td, {\n children: "<1%"\n }), _jsx(_components.td, {\n children: "1-3%"\n }), _jsx(_components.td, {\n children: "3-8%"\n }), _jsx(_components.td, {\n children: "8%+"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Positive Reply Rate"\n })\n }), _jsx(_components.td, {\n children: "<0.5%"\n }), _jsx(_components.td, {\n children: "0.5-1%"\n }), _jsx(_components.td, {\n children: "1-3%"\n }), _jsx(_components.td, {\n children: "3%+"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Bounce Rate"\n })\n }), _jsx(_components.td, {\n children: ">5%"\n }), _jsx(_components.td, {\n children: "2-5%"\n }), _jsx(_components.td, {\n children: "1-2%"\n }), _jsx(_components.td, {\n children: "<1%"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Campaign Sizing Rules"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "100-200 contacts per campaign segment"\n }), " -- small enough for meaningful personalization, large enough for statistical learning"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "1-2 contacts per company"\n }), " -- reply rates drop from ~8% to ~4% when blasting 10+ people at the same company"]\n }), "\\n", _jsx(_components.li, {\n children: _jsx(_components.strong, {\n children: "30-50 emails/day max per sending account"\n })\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "50-100 emails/day total during testing"\n }), " (weeks 1-4), scaling to 500+/day once a winning formula is found"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Testing Priority"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Subject lines"\n }), " -- highest leverage, easiest to isolate"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Opening line / hook"\n }), " -- determines if they keep reading"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "CTA type"\n }), " -- meeting request vs. soft question vs. value offer"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Body copy angle"\n }), " -- pain-point framing vs. benefit lead vs. social proof"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Send timing"\n }), " -- Tuesday-Thursday outperform Monday/Friday for B2B"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Sequence Structure"\n }), "\\n", _jsx(_components.p, {\n children: "3 emails total (1 opener + 2 follow-ups). 87-95% of replies come within the first 3 emails."\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Step"\n }), _jsx(_components.th, {\n children: "Timing"\n }), _jsx(_components.th, {\n children: "Strategy"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Email 1"\n })\n }), _jsx(_components.td, {\n children: "Day 0"\n }), _jsx(_components.td, {\n children: "Cold read opener + EMRG social proof + interest-based CTA"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Email 2"\n })\n }), _jsx(_components.td, {\n children: "Day 3"\n }), _jsx(_components.td, {\n children: "Short bump in same thread"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Email 3"\n })\n }), _jsx(_components.td, {\n children: "Day 5"\n }), _jsx(_components.td, {\n children: "Breakup email. Soft close, loss aversion"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Agent Optimization Loop"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Phase 1 (Launch):"\n }), " Verify batch readiness \
|
|
42
|
+
"knowledge.outreach-campaign-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n li: "li",\n ol: "ol",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Benchmarks"\n }), "\\n", _jsxs(_components.p, {\n children: ["B2B cold email benchmarks (2025-2026). Use these as evaluation thresholds when running ", _jsx(_components.code, {\n children: "ist-analytics-workflow"\n }), "."]\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Metric"\n }), _jsx(_components.th, {\n children: "Bad"\n }), _jsx(_components.th, {\n children: "Needs Work"\n }), _jsx(_components.th, {\n children: "Good"\n }), _jsx(_components.th, {\n children: "Excellent"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Open Rate"\n })\n }), _jsx(_components.td, {\n children: "<20%"\n }), _jsx(_components.td, {\n children: "20-30%"\n }), _jsx(_components.td, {\n children: "30-45%"\n }), _jsx(_components.td, {\n children: "45%+"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Reply Rate"\n })\n }), _jsx(_components.td, {\n children: "<1%"\n }), _jsx(_components.td, {\n children: "1-3%"\n }), _jsx(_components.td, {\n children: "3-8%"\n }), _jsx(_components.td, {\n children: "8%+"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Positive Reply Rate"\n })\n }), _jsx(_components.td, {\n children: "<0.5%"\n }), _jsx(_components.td, {\n children: "0.5-1%"\n }), _jsx(_components.td, {\n children: "1-3%"\n }), _jsx(_components.td, {\n children: "3%+"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Bounce Rate"\n })\n }), _jsx(_components.td, {\n children: ">5%"\n }), _jsx(_components.td, {\n children: "2-5%"\n }), _jsx(_components.td, {\n children: "1-2%"\n }), _jsx(_components.td, {\n children: "<1%"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Campaign Sizing Rules"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "100-200 contacts per campaign segment"\n }), " -- small enough for meaningful personalization, large enough for statistical learning"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "1-2 contacts per company"\n }), " -- reply rates drop from ~8% to ~4% when blasting 10+ people at the same company"]\n }), "\\n", _jsx(_components.li, {\n children: _jsx(_components.strong, {\n children: "30-50 emails/day max per sending account"\n })\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "50-100 emails/day total during testing"\n }), " (weeks 1-4), scaling to 500+/day once a winning formula is found"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Testing Priority"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Subject lines"\n }), " -- highest leverage, easiest to isolate"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Opening line / hook"\n }), " -- determines if they keep reading"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "CTA type"\n }), " -- meeting request vs. soft question vs. value offer"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Body copy angle"\n }), " -- pain-point framing vs. benefit lead vs. social proof"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Send timing"\n }), " -- Tuesday-Thursday outperform Monday/Friday for B2B"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Sequence Structure"\n }), "\\n", _jsx(_components.p, {\n children: "3 emails total (1 opener + 2 follow-ups). 87-95% of replies come within the first 3 emails."\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Step"\n }), _jsx(_components.th, {\n children: "Timing"\n }), _jsx(_components.th, {\n children: "Strategy"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Email 1"\n })\n }), _jsx(_components.td, {\n children: "Day 0"\n }), _jsx(_components.td, {\n children: "Cold read opener + EMRG social proof + interest-based CTA"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Email 2"\n })\n }), _jsx(_components.td, {\n children: "Day 3"\n }), _jsx(_components.td, {\n children: "Short bump in same thread"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Email 3"\n })\n }), _jsx(_components.td, {\n children: "Day 5"\n }), _jsx(_components.td, {\n children: "Breakup email. Soft close, loss aversion"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Agent Optimization Loop"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Phase 1 (Launch):"\n }), " Verify batch readiness \xE2\u2020\u2019 Personalize \xE2\u2020\u2019 Create campaign \xE2\u2020\u2019 Create tracking list \xE2\u2020\u2019 Upload \xE2\u2020\u2019 Activate"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Phase 2 (Analyze Day 7-14):"\n }), " Run ", _jsx(_components.code, {\n children: "ist-campaign-review-workflow"\n }), " \xE2\u2020\u2019 Run ", _jsx(_components.code, {\n children: "ist-analytics-workflow"\n }), " \xE2\u2020\u2019 Interpret results"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Phase 3 (Optimize):"\n }), " Fix based on Phase 2 analysis (subject lines, personalization, bounce cleanup)"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Phase 4 (Scale):"\n }), " Document winning combination \xE2\u2020\u2019 Replicate to new segments \xE2\u2020\u2019 Maintain hygiene"]\n }), "\\n", _jsx(_components.h2, {\n children: "Offer Framing"\n }), "\\n", _jsx(_components.p, {\n children: "\\"We find one bottleneck, build an AI solution to fix it, and you only pay if it actually saves you time or makes you money.\\""\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Never use \\"free\\" in subject lines -- triggers spam filters"\n }), "\\n", _jsx(_components.li, {\n children: "Frame as conditional, not charitable"\n }), "\\n", _jsx(_components.li, {\n children: "Low-commitment CTAs get 2x more replies than direct meeting requests"\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
42
43
|
"knowledge.outreach-copy-strategy": makeKnowledgeComponent(`"use strict";
|
|
43
44
|
const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
|
|
44
45
|
function _createMdxContent(props) {
|
|
@@ -95,19 +96,19 @@ function _createMdxContent(props) {
|
|
|
95
96
|
}), "\\n", _jsx(_components.h2, {
|
|
96
97
|
children: "3-Email Sequence Framework"
|
|
97
98
|
}), "\\n", _jsx(_components.h3, {
|
|
98
|
-
children: "Email 1 \
|
|
99
|
+
children: "Email 1 \xE2\u20AC\u201D Hook + Offer (Day 0, ~80 words)"
|
|
99
100
|
}), "\\n", _jsx(_components.pre, {
|
|
100
101
|
children: _jsx(_components.code, {
|
|
101
|
-
children: "Hi {{firstName | there}},\\n\\n{{opening_line}}\\n\\n{{category_pain}}\\n\\nI built 4 automations for a company that worked with Google and Sony Music. The first one alone saved them over $1,500 a month. I do the same thing for businesses like yours \
|
|
102
|
+
children: "Hi {{firstName | there}},\\n\\n{{opening_line}}\\n\\n{{category_pain}}\\n\\nI built 4 automations for a company that worked with Google and Sony Music. The first one alone saved them over $1,500 a month. I do the same thing for businesses like yours \xE2\u20AC\u201D you only pay if it actually works.\\n\\nWorth a quick look?\\n\\n{{sendingAccountFirstName}}\\n"
|
|
102
103
|
})
|
|
103
104
|
}), "\\n", _jsx(_components.h3, {
|
|
104
|
-
children: "Email 2 \
|
|
105
|
+
children: "Email 2 \xE2\u20AC\u201D Bump (Day 3, ~40 words)"
|
|
105
106
|
}), "\\n", _jsx(_components.pre, {
|
|
106
107
|
children: _jsx(_components.code, {
|
|
107
|
-
children: "Hi {{firstName | there}},\\n\\nWanted to circle back on this \
|
|
108
|
+
children: "Hi {{firstName | there}},\\n\\nWanted to circle back on this \xE2\u20AC\u201D I've been helping a few companies like {{companyName}} free up their team by automating the repetitive stuff that eats up the day.\\n\\nHappy to take a 10-minute look \xE2\u20AC\u201D no pitch, just observations.\\n\\n{{sendingAccountFirstName}}\\n"
|
|
108
109
|
})
|
|
109
110
|
}), "\\n", _jsx(_components.h3, {
|
|
110
|
-
children: "Email 3 \
|
|
111
|
+
children: "Email 3 \xE2\u20AC\u201D Breakup (Day 5, ~25 words)"
|
|
111
112
|
}), "\\n", _jsx(_components.pre, {
|
|
112
113
|
children: _jsx(_components.code, {
|
|
113
114
|
children: "Totally understand if this isn't the right time. If you ever want a second pair of eyes on what could be automated at {{companyName}}, the offer stands.\\n\\n{{sendingAccountFirstName}}\\n"
|
|
@@ -344,9 +345,9 @@ function _createMdxContent(props) {
|
|
|
344
345
|
})
|
|
345
346
|
}), "\\n", _jsxs(_components.ul, {
|
|
346
347
|
children: ["\\n", _jsx(_components.li, {
|
|
347
|
-
children: "\\"4,400 reviews since 2018 \
|
|
348
|
+
children: "\\"4,400 reviews since 2018 \xE2\u20AC\u201D that kind of growth in Orange County is honestly wild.\\""
|
|
348
349
|
}), "\\n", _jsx(_components.li, {
|
|
349
|
-
children: "\\"60 years family-owned with a proprietary Clean Green method \
|
|
350
|
+
children: "\\"60 years family-owned with a proprietary Clean Green method \xE2\u20AC\u201D that's rare in pest control.\\""
|
|
350
351
|
}), "\\n"]
|
|
351
352
|
}), "\\n", _jsx(_components.p, {
|
|
352
353
|
children: _jsx(_components.strong, {
|
|
@@ -354,7 +355,7 @@ function _createMdxContent(props) {
|
|
|
354
355
|
})
|
|
355
356
|
}), "\\n", _jsxs(_components.ul, {
|
|
356
357
|
children: ["\\n", _jsx(_components.li, {
|
|
357
|
-
children: "\\"You do termite inspections \
|
|
358
|
+
children: "\\"You do termite inspections \xE2\u20AC\u201D how many follow-up calls get missed?\\" (Implication \xE2\u20AC\u201D signals selling)"
|
|
358
359
|
}), "\\n", _jsx(_components.li, {
|
|
359
360
|
children: "\\"Great company you've built!\\" (Generic flattery)"
|
|
360
361
|
}), "\\n"]
|
|
@@ -466,7 +467,7 @@ function _createMdxContent(props) {
|
|
|
466
467
|
children: [_jsx(_components.td, {
|
|
467
468
|
children: "\\"78% of homeowners hire the first contractor who responds.\\""
|
|
468
469
|
}), _jsx(_components.td, {
|
|
469
|
-
children: "\\"When you're on a job, you can't answer the phone \
|
|
470
|
+
children: "\\"When you're on a job, you can't answer the phone \xE2\u20AC\u201D but the homeowner already called two other plumbers.\\""
|
|
470
471
|
})]
|
|
471
472
|
})
|
|
472
473
|
})]
|
|
@@ -776,7 +777,7 @@ return {
|
|
|
776
777
|
default: MDXContent
|
|
777
778
|
};
|
|
778
779
|
`),
|
|
779
|
-
"knowledge.lead-gen-pipeline-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n h3: "h3",\n li: "li",\n ol: "ol",\n p: "p",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Performance Benchmarks"\n }), "\\n", _jsx(_components.p, {\n children: "Per-stage success rates across the 3 completed Orange County batches (vet-1, auto-1, home-1)."\n }), "\\n", _jsx(_components.h3, {\n children: "Stage 1: Scrape (Raw to Filtered)"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Metric"\n }), _jsx(_components.th, {\n children: "vet-1"\n }), _jsx(_components.th, {\n children: "auto-1"\n }), _jsx(_components.th, {\n children: "home-1"\n }), _jsx(_components.th, {\n children: "Benchmark"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Raw results"\n }), _jsx(_components.td, {\n children: "480"\n }), _jsx(_components.td, {\n children: "800"\n }), _jsx(_components.td, {\n children: "1000"\n }), _jsx(_components.td, {\n children: "--"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Companies created"\n }), _jsx(_components.td, {\n children: "393"\n }), _jsx(_components.td, {\n children: "566"\n }), _jsx(_components.td, {\n children: "701"\n }), _jsx(_components.td, {\n children: "--"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Active in DB"\n }), _jsx(_components.td, {\n children: "322"\n }), _jsx(_components.td, {\n children: "428"\n }), _jsx(_components.td, {\n children: "640"\n }), _jsx(_components.td, {\n children: "--"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h3, {\n children: "Stage 3: Company Qualification Rate"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Metric"\n }), _jsx(_components.th, {\n children: "vet-1"\n }), _jsx(_components.th, {\n children: "auto-1"\n }), _jsx(_components.th, {\n children: "home-1"\n }), _jsx(_components.th, {\n children: "Benchmark"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Qualified"\n }), _jsx(_components.td, {\n children: "213 (76%)"\n }), _jsx(_components.td, {\n children: "284 (79%)"\n }), _jsx(_components.td, {\n children: "326 (60%)"\n }), _jsx(_components.td, {\n children: "60-80%"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Disqualified"\n }), _jsx(_components.td, {\n children: "66 (24%)"\n }), _jsx(_components.td, {\n children: "74 (21%)"\n }), _jsx(_components.td, {\n children: "222 (40%)"\n }), _jsx(_components.td, {\n children: "20-40%"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h3, {\n children: "Stage 5: Email Verification"\n }), "\\n", _jsx(_components.p, {\n children: "VALID rate: ~33-41% of discovered emails across batches. Target bounce rate <2%."\n }), "\\n", _jsx(_components.h2, {\n children: "Model Selection"\n }), "\\n", _jsx(_components.p, {\n children: "Use Gemini Flash models for high-volume qualification steps (cost/quality balance). Use GPT for personalization where quality matters most."\n }), "\\n", _jsx(_components.h2, {\n children: "Provider Economics"\n }), "\\n", _jsx(_components.p, {\n children: "Tomba domain search provides the best cost-per-verified-contact for local SMBs. Dual-verify (Tomba + Mails.so) catches most false positives."\n }), "\\n", _jsx(_components.h2, {\n children: "Pipeline Stages"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsx(_components.li, {\n children: "Scrape (Google Maps via Apify)"\n }), "\\n", _jsx(_components.li, {\n children: "LLM Extract (website crawl \
|
|
780
|
+
"knowledge.lead-gen-pipeline-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n h3: "h3",\n li: "li",\n ol: "ol",\n p: "p",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Performance Benchmarks"\n }), "\\n", _jsx(_components.p, {\n children: "Per-stage success rates across the 3 completed Orange County batches (vet-1, auto-1, home-1)."\n }), "\\n", _jsx(_components.h3, {\n children: "Stage 1: Scrape (Raw to Filtered)"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Metric"\n }), _jsx(_components.th, {\n children: "vet-1"\n }), _jsx(_components.th, {\n children: "auto-1"\n }), _jsx(_components.th, {\n children: "home-1"\n }), _jsx(_components.th, {\n children: "Benchmark"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Raw results"\n }), _jsx(_components.td, {\n children: "480"\n }), _jsx(_components.td, {\n children: "800"\n }), _jsx(_components.td, {\n children: "1000"\n }), _jsx(_components.td, {\n children: "--"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Companies created"\n }), _jsx(_components.td, {\n children: "393"\n }), _jsx(_components.td, {\n children: "566"\n }), _jsx(_components.td, {\n children: "701"\n }), _jsx(_components.td, {\n children: "--"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Active in DB"\n }), _jsx(_components.td, {\n children: "322"\n }), _jsx(_components.td, {\n children: "428"\n }), _jsx(_components.td, {\n children: "640"\n }), _jsx(_components.td, {\n children: "--"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h3, {\n children: "Stage 3: Company Qualification Rate"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Metric"\n }), _jsx(_components.th, {\n children: "vet-1"\n }), _jsx(_components.th, {\n children: "auto-1"\n }), _jsx(_components.th, {\n children: "home-1"\n }), _jsx(_components.th, {\n children: "Benchmark"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Qualified"\n }), _jsx(_components.td, {\n children: "213 (76%)"\n }), _jsx(_components.td, {\n children: "284 (79%)"\n }), _jsx(_components.td, {\n children: "326 (60%)"\n }), _jsx(_components.td, {\n children: "60-80%"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Disqualified"\n }), _jsx(_components.td, {\n children: "66 (24%)"\n }), _jsx(_components.td, {\n children: "74 (21%)"\n }), _jsx(_components.td, {\n children: "222 (40%)"\n }), _jsx(_components.td, {\n children: "20-40%"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h3, {\n children: "Stage 5: Email Verification"\n }), "\\n", _jsx(_components.p, {\n children: "VALID rate: ~33-41% of discovered emails across batches. Target bounce rate <2%."\n }), "\\n", _jsx(_components.h2, {\n children: "Model Selection"\n }), "\\n", _jsx(_components.p, {\n children: "Use Gemini Flash models for high-volume qualification steps (cost/quality balance). Use GPT for personalization where quality matters most."\n }), "\\n", _jsx(_components.h2, {\n children: "Provider Economics"\n }), "\\n", _jsx(_components.p, {\n children: "Tomba domain search provides the best cost-per-verified-contact for local SMBs. Dual-verify (Tomba + Mails.so) catches most false positives."\n }), "\\n", _jsx(_components.h2, {\n children: "Pipeline Stages"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsx(_components.li, {\n children: "Scrape (Google Maps via Apify)"\n }), "\\n", _jsx(_components.li, {\n children: "LLM Extract (website crawl \xE2\u2020\u2019 structured data)"\n }), "\\n", _jsx(_components.li, {\n children: "Company Qualification (LLM ICP scoring)"\n }), "\\n", _jsx(_components.li, {\n children: "Email Discovery (Tomba domain search)"\n }), "\\n", _jsx(_components.li, {\n children: "Email Verification (Mails.so)"\n }), "\\n", _jsx(_components.li, {\n children: "Opening Line Generation (ist-personalization-workflow)"\n }), "\\n", _jsx(_components.li, {\n children: "Campaign Upload (ist-upload-workflow)"\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
780
781
|
"knowledge.upwork-proposal-playbook": makeKnowledgeComponent(`"use strict";
|
|
781
782
|
const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
|
|
782
783
|
function _createMdxContent(props) {
|
|
@@ -847,23 +848,23 @@ function _createMdxContent(props) {
|
|
|
847
848
|
children: ["\\n", _jsxs(_components.li, {
|
|
848
849
|
children: [_jsx(_components.strong, {
|
|
849
850
|
children: "Hook (1-2 sentences)"
|
|
850
|
-
}), " \
|
|
851
|
+
}), " \xE2\u20AC\u201D Lead with what you do and why it's relevant. Never use \\"caught my attention\\" \xE2\u20AC\u201D overused clich\xC3\xA9."]
|
|
851
852
|
}), "\\n", _jsxs(_components.li, {
|
|
852
853
|
children: [_jsx(_components.strong, {
|
|
853
854
|
children: "Proof (1-2 sentences)"
|
|
854
|
-
}), " \
|
|
855
|
+
}), " \xE2\u20AC\u201D One concrete metric from past work."]
|
|
855
856
|
}), "\\n", _jsxs(_components.li, {
|
|
856
857
|
children: [_jsx(_components.strong, {
|
|
857
858
|
children: "Plan (2-3 lines)"
|
|
858
|
-
}), " \
|
|
859
|
+
}), " \xE2\u20AC\u201D Maximum 3 steps."]
|
|
859
860
|
}), "\\n", _jsxs(_components.li, {
|
|
860
861
|
children: [_jsx(_components.strong, {
|
|
861
862
|
children: "Discovery Questions (exactly 2)"
|
|
862
|
-
}), " \
|
|
863
|
+
}), " \xE2\u20AC\u201D Smart, role-specific questions. End with a binary CTA."]
|
|
863
864
|
}), "\\n", _jsxs(_components.li, {
|
|
864
865
|
children: [_jsx(_components.strong, {
|
|
865
866
|
children: "Sample (optional)"
|
|
866
|
-
}), " \
|
|
867
|
+
}), " \xE2\u20AC\u201D Loom video (2-3 min)."]
|
|
867
868
|
}), "\\n"]
|
|
868
869
|
}), "\\n", _jsx(_components.h2, {
|
|
869
870
|
children: "Opening Lines"
|
|
@@ -872,7 +873,7 @@ function _createMdxContent(props) {
|
|
|
872
873
|
}), "\\n", _jsxs(_components.p, {
|
|
873
874
|
children: [_jsx(_components.strong, {
|
|
874
875
|
children: "Good openers:"
|
|
875
|
-
}), " \\"Hi \
|
|
876
|
+
}), " \\"Hi \xE2\u20AC\u201D I build ", _jsx(_components.code, {
|
|
876
877
|
children: "{what_they_need}"
|
|
877
878
|
}), " for a living and run my own business on them daily.\\""]
|
|
878
879
|
}), "\\n", _jsxs(_components.p, {
|
|
@@ -884,20 +885,20 @@ function _createMdxContent(props) {
|
|
|
884
885
|
}), "\\n", _jsxs(_components.p, {
|
|
885
886
|
children: [_jsx(_components.strong, {
|
|
886
887
|
children: "Dogfooding (Strongest Differentiator):"
|
|
887
|
-
}), " We run our own 7-stage client acquisition pipeline on the platform: Scrape \
|
|
888
|
+
}), " We run our own 7-stage client acquisition pipeline on the platform: Scrape \xE2\u2020\u2019 Extract \xE2\u2020\u2019 Qualify \xE2\u2020\u2019 Email Discovery \xE2\u2020\u2019 Verify \xE2\u2020\u2019 Personalize \xE2\u2020\u2019 Outreach."]
|
|
888
889
|
}), "\\n", _jsx(_components.p, {
|
|
889
890
|
children: _jsx(_components.strong, {
|
|
890
891
|
children: "The 4 Principles (Use in Discovery Questions):"
|
|
891
892
|
})
|
|
892
893
|
}), "\\n", _jsxs(_components.ol, {
|
|
893
894
|
children: ["\\n", _jsx(_components.li, {
|
|
894
|
-
children: "Integrated \
|
|
895
|
+
children: "Integrated \xE2\u20AC\u201D Works with existing tools"
|
|
895
896
|
}), "\\n", _jsx(_components.li, {
|
|
896
|
-
children: "Improving \
|
|
897
|
+
children: "Improving \xE2\u20AC\u201D Learns from every human decision"
|
|
897
898
|
}), "\\n", _jsx(_components.li, {
|
|
898
|
-
children: "Observable \
|
|
899
|
+
children: "Observable \xE2\u20AC\u201D Real-time visibility"
|
|
899
900
|
}), "\\n", _jsx(_components.li, {
|
|
900
|
-
children: "Governed \
|
|
901
|
+
children: "Governed \xE2\u20AC\u201D Humans approve what matters"
|
|
901
902
|
}), "\\n"]
|
|
902
903
|
})]
|
|
903
904
|
});
|
|
@@ -1024,9 +1025,9 @@ return {
|
|
|
1024
1025
|
};
|
|
1025
1026
|
`),
|
|
1026
1027
|
"knowledge.seo-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n h3: "h3",\n li: "li",\n p: "p",\n pre: "pre",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Vertical Launch Workflow"\n }), "\\n", _jsxs(_components.p, {\n children: ["End-to-end process for launching a new vertical (e.g., ", _jsx(_components.code, {\n children: "hvac-contractors"\n }), "):"]\n }), "\\n", _jsx(_components.h3, {\n children: "Step 1: Research vertical data"\n }), "\\n", _jsx(_components.p, {\n children: "Find real, citable industry statistics: pain points, automation ROI, market context. Sources: trade associations, industry surveys, government data (BLS, Census)."\n }), "\\n", _jsx(_components.h3, {\n children: "Step 2: Generate pages"\n }), "\\n", _jsx(_components.pre, {\n children: _jsx(_components.code, {\n className: "language-bash",\n children: "# Pillar page\\npnpm tsx scripts/seo/generate-pages.ts --vertical hvac-contractors --type pillar --dry-run\\npnpm tsx scripts/seo/generate-pages.ts --vertical hvac-contractors --type pillar\\n\\n# Cluster pages\\npnpm tsx scripts/seo/generate-pages.ts --vertical hvac-contractors --type cluster\\n"\n })\n }), "\\n", _jsx(_components.h3, {\n children: "Step 3: Backfill chart data"\n }), "\\n", _jsxs(_components.p, {\n children: ["Charts require post-generation patching. Write chart patch files using Step 1 research, then apply via ", _jsx(_components.code, {\n children: "content.ts patch"\n }), "."]\n }), "\\n", _jsx(_components.h3, {\n children: "Step 4: AEO optimization"\n }), "\\n", _jsx(_components.p, {\n children: "Every section must be self-contained. AI engines extract individual passages, not full pages."\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Lead with a 30-50 word standalone answer in the first sentence of each section"\n }), "\\n", _jsx(_components.li, {\n children: "78% of AI Overview answers use list format"\n }), "\\n", _jsx(_components.li, {\n children: "Frame headings as questions when possible"\n }), "\\n"]\n }), "\\n", _jsx(_components.h3, {\n children: "Step 5: Post-publish distribution"\n }), "\\n", _jsxs(_components.p, {\n children: ["Update ", _jsx(_components.code, {\n children: "llms.txt"\n }), ", ping IndexNow, submit sitemap segments to Search Console."]\n }), "\\n", _jsx(_components.h2, {\n children: "Data Sourcing Rules"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Tier 1 (Verified): Named source, specific methodology. Use confidently."\n }), "\\n", _jsx(_components.li, {\n children: "Tier 2 (Plausible): Widely cited, directionally correct. Soften the specific number."\n }), "\\n", _jsx(_components.li, {\n children: "Tier 3 (Unverified): No credible source. Do not use specific numbers."\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1027
|
-
"knowledge.seo-content-guide": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n h3: "h3",\n li: "li",\n ol: "ol",\n p: "p",\n strong: "strong",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "This guide covers how to write SEO content that ranks in traditional search AND gets cited by AI answer engines \
|
|
1028
|
+
"knowledge.seo-content-guide": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n h3: "h3",\n li: "li",\n ol: "ol",\n p: "p",\n strong: "strong",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "This guide covers how to write SEO content that ranks in traditional search AND gets cited by AI answer engines \xE2\u20AC\u201D ChatGPT, Perplexity, Google AI Overviews, and Gemini."\n }), "\\n", _jsx(_components.p, {\n children: "The distribution channel is split: 69% of Google searches result in zero clicks, while AI platforms generated 1.13 billion referral visits in June 2025 alone."\n }), "\\n", _jsx(_components.h2, {\n children: "Page Structure"\n }), "\\n", _jsx(_components.h3, {\n children: "Section Architecture"\n }), "\\n", _jsx(_components.p, {\n children: "Every section must be self-contained. AI engines extract individual passages, not full pages."\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Lead with a 30-50 word standalone answer in the first sentence of each section"\n }), "\\n", _jsx(_components.li, {\n children: "Paragraphs: 2-4 sentences max"\n }), "\\n", _jsx(_components.li, {\n children: "78% of AI Overview answers use list format -- use bullets and numbered lists extensively"\n }), "\\n", _jsx(_components.li, {\n children: "Heading hierarchy: one H1 (page title), H2 for major sections, H3 for subsections"\n }), "\\n", _jsx(_components.li, {\n children: "Frame headings as questions when possible"\n }), "\\n"]\n }), "\\n", _jsx(_components.h3, {\n children: "Section Length"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Pillar pages:"\n }), " 2,000-3,000 words total"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Cluster pages:"\n }), " 1,000-2,000 words total"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Each major section:"\n }), " 150-300 words"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Conciseness Rules"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsx(_components.li, {\n children: "Two-paragraph intro max"\n }), "\\n", _jsx(_components.li, {\n children: "No stat duplication between intro and problem section"\n }), "\\n", _jsx(_components.li, {\n children: "Section character budget: Intro 450-600 chars, Problem 250-400 chars, Solution 300-550 chars"\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "E-E-A-T Signals"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Brand name \\"Elevasis\\" must appear explicitly minimum 3x per page"\n }), "\\n", _jsx(_components.li, {\n children: "Vertical names used as proper noun concepts"\n }), "\\n", _jsx(_components.li, {\n children: "Organization + Service + SoftwareApplication schema markup reinforces entity recognition"\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1028
1029
|
"knowledge.seo-distribution-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n h3: "h3",\n li: "li",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "Everything that happens after pages are published and sitemap/IndexNow pings are sent. Evergreen reference for maximizing visibility across traditional search, AI answer engines, and buyer-intent directories."\n }), "\\n", _jsx(_components.h2, {\n children: "AI Crawler Discovery"\n }), "\\n", _jsx(_components.h3, {\n children: _jsx(_components.code, {\n children: "llms.txt"\n })\n }), "\\n", _jsxs(_components.p, {\n children: ["A plain-text Markdown file at the domain root that gives LLMs a structured map of key content. Location: ", _jsx(_components.code, {\n children: "apps/website/public/llms.txt"\n }), "."]\n }), "\\n", _jsx(_components.p, {\n children: "Update whenever pillar or cluster pages are published."\n }), "\\n", _jsx(_components.h3, {\n children: "Sitemap Segmentation"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Segment ID"\n }), _jsx(_components.th, {\n children: "Contents"\n }), _jsx(_components.th, {\n children: "Priority"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "0"\n }), _jsx(_components.td, {\n children: "Static pages"\n }), _jsx(_components.td, {\n children: "Default"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "1"\n }), _jsx(_components.td, {\n children: "Pillar pages (9)"\n }), _jsx(_components.td, {\n children: "0.9"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "2"\n }), _jsx(_components.td, {\n children: "Cluster pages (52)"\n }), _jsx(_components.td, {\n children: "0.8"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h3, {\n children: "Entity Density Rules"\n }), "\\n", _jsx(_components.p, {\n children: "Pages with 15+ recognized entities show 4.8x higher selection probability for AI citations."\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Brand name \\"Elevasis\\" must appear explicitly (minimum 3x per page)"\n }), "\\n", _jsx(_components.li, {\n children: "Stat density target: one statistic every 150-200 words"\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Directory Citations"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Tier 1 (Buyer Intent):"\n }), " G2, Capterra, Product Hunt, AppSumo (direct buyer intent, high domain authority)"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Tier 2 (Authority):"\n }), " Crunchbase, AngelList, LinkedIn company page, industry association directories"]\n }), "\\n", _jsx(_components.h2, {\n children: "Google Business Profile"\n }), "\\n", _jsx(_components.p, {\n children: "Claim and verify GBP listing. Category: \\"Software Company\\". Keep NAP (Name, Address, Phone) consistent across all citations."\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1029
|
-
"knowledge.content-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n h3: "h3",\n li: "li",\n ol: "ol",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Content Pillars"\n }), "\\n", _jsx(_components.p, {\n children: "Every content piece maps to one of five pillars."\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Pillar"\n }), _jsx(_components.th, {\n children: "What It Is"\n }), _jsx(_components.th, {\n children: "Target Frequency"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "dogfooding"\n })\n }), _jsx(_components.td, {\n children: "How we run Elevasis using our own platform"\n }), _jsx(_components.td, {\n children: "1-2x/week"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "education"\n })\n }), _jsx(_components.td, {\n children: "4 Pattern Framework and AI orchestration concepts"\n }), _jsx(_components.td, {\n children: "1x/week"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "demo"\n })\n }), _jsx(_components.td, {\n children: "\\"Watch AI Work\\" \
|
|
1030
|
+
"knowledge.content-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n h3: "h3",\n li: "li",\n ol: "ol",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Content Pillars"\n }), "\\n", _jsx(_components.p, {\n children: "Every content piece maps to one of five pillars."\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Pillar"\n }), _jsx(_components.th, {\n children: "What It Is"\n }), _jsx(_components.th, {\n children: "Target Frequency"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "dogfooding"\n })\n }), _jsx(_components.td, {\n children: "How we run Elevasis using our own platform"\n }), _jsx(_components.td, {\n children: "1-2x/week"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "education"\n })\n }), _jsx(_components.td, {\n children: "4 Pattern Framework and AI orchestration concepts"\n }), _jsx(_components.td, {\n children: "1x/week"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "demo"\n })\n }), _jsx(_components.td, {\n children: "\\"Watch AI Work\\" \xE2\u20AC\u201D showing the platform in action"\n }), _jsx(_components.td, {\n children: "1x/2 weeks"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "pain-point"\n })\n }), _jsx(_components.td, {\n children: "SMB pain points backed by data"\n }), _jsx(_components.td, {\n children: "1x/week"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "founder-journey"\n })\n }), _jsx(_components.td, {\n children: "Solo founder building with AI"\n }), _jsx(_components.td, {\n children: "1x/week"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h3, {\n children: "The 90-10 Rule"\n }), "\\n", _jsx(_components.p, {\n children: "90% educational value, 10% promotional. Keeping promotional content to <15% ensures your audience stays receptive when you do make an offer."\n }), "\\n", _jsx(_components.h2, {\n children: "Content Creation Workflow"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Capture the Idea"\n }), " \xE2\u20AC\u201D Insert into ", _jsx(_components.code, {\n children: "acq_content"\n }), " with ", _jsx(_components.code, {\n children: "status: idea"\n })]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Draft the Source Content"\n }), " \xE2\u20AC\u201D Write core idea in ", _jsx(_components.code, {\n children: "acq_content.body"\n }), ". LinkedIn first."]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Adapt for Platforms"\n }), " \xE2\u20AC\u201D Repurpose from LinkedIn to YouTube, Instagram, X"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Schedule and Publish"\n }), " \xE2\u20AC\u201D Use platform-native scheduling"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Track Performance"\n }), " \xE2\u20AC\u201D Monitor in ", _jsx(_components.code, {\n children: "acq_content"\n }), " via Command Center"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Platform Priority"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsx(_components.li, {\n children: "LinkedIn \xE2\u20AC\u201D #1 priority, 3x/week"\n }), "\\n", _jsx(_components.li, {\n children: "YouTube \xE2\u20AC\u201D #2 priority, 1x/week + Shorts"\n }), "\\n", _jsx(_components.li, {\n children: "Instagram \xE2\u20AC\u201D #3 priority, 2-3x/week, repurpose from LinkedIn/YouTube"\n }), "\\n", _jsx(_components.li, {\n children: "X \xE2\u20AC\u201D #4 priority, 2-3x/week, threads from LinkedIn"\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1030
1031
|
"knowledge.inbound-reply-handling-playbook": makeKnowledgeComponent(`"use strict";
|
|
1031
1032
|
const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
|
|
1032
1033
|
function _createMdxContent(props) {
|
|
@@ -1075,7 +1076,7 @@ function _createMdxContent(props) {
|
|
|
1075
1076
|
}), _jsx(_components.td, {
|
|
1076
1077
|
children: "\\"Yes I'm interested\\", \\"Tell me more\\""
|
|
1077
1078
|
}), _jsx(_components.td, {
|
|
1078
|
-
children: "CRM \
|
|
1079
|
+
children: "CRM \xE2\u2020\u2019 HITL task with LLM-drafted follow-up"
|
|
1079
1080
|
})]
|
|
1080
1081
|
}), _jsxs(_components.tr, {
|
|
1081
1082
|
children: [_jsx(_components.td, {
|
|
@@ -1095,7 +1096,7 @@ function _createMdxContent(props) {
|
|
|
1095
1096
|
}), _jsx(_components.td, {
|
|
1096
1097
|
children: "mailer-daemon@, \\"Undeliverable\\""
|
|
1097
1098
|
}), _jsx(_components.td, {
|
|
1098
|
-
children: "Stop outreach \
|
|
1099
|
+
children: "Stop outreach \xE2\u2020\u2019 Mark Lead DB INVALID \xE2\u2020\u2019 Skip CRM"
|
|
1099
1100
|
})]
|
|
1100
1101
|
}), _jsxs(_components.tr, {
|
|
1101
1102
|
children: [_jsx(_components.td, {
|
|
@@ -1105,7 +1106,7 @@ function _createMdxContent(props) {
|
|
|
1105
1106
|
}), _jsx(_components.td, {
|
|
1106
1107
|
children: "Out-of-office, ticketing acknowledgments"
|
|
1107
1108
|
}), _jsx(_components.td, {
|
|
1108
|
-
children: "No action \
|
|
1109
|
+
children: "No action \xE2\u20AC\u201D campaign continues"
|
|
1109
1110
|
})]
|
|
1110
1111
|
})]
|
|
1111
1112
|
})]
|
|
@@ -1139,7 +1140,7 @@ function _createMdxContent(props) {
|
|
|
1139
1140
|
children: "update-interest-status"
|
|
1140
1141
|
})]
|
|
1141
1142
|
}), "\\n", _jsx(_components.li, {
|
|
1142
|
-
children: "INTERESTED: does NOT stop sequence \
|
|
1143
|
+
children: "INTERESTED: does NOT stop sequence \xE2\u20AC\u201D proceeds to CRM creation and HITL queue"
|
|
1143
1144
|
}), "\\n", _jsx(_components.li, {
|
|
1144
1145
|
children: "AUTO-REPLY: no CRM, no sequence stop, no reply"
|
|
1145
1146
|
}), "\\n"]
|
|
@@ -1163,15 +1164,15 @@ return {
|
|
|
1163
1164
|
default: MDXContent
|
|
1164
1165
|
};
|
|
1165
1166
|
`),
|
|
1166
|
-
"knowledge.inbound-booking-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n h3: "h3",\n li: "li",\n ol: "ol",\n p: "p",\n strong: "strong",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "When a prospect books a discovery call via Cal.com, the booking handler manages CRM updates, notifications, and reminder scheduling across all booking lifecycle events."\n }), "\\n", _jsx(_components.h2, {\n children: "Booking Handler Workflow"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Triggers:"\n }), " Cal.com webhooks (BOOKING_CREATED, BOOKING_RESCHEDULED, BOOKING_CANCELLED)"]\n }), "\\n", _jsx(_components.h3, {\n children: "Event Flows"\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "BOOKING_CREATED:"\n })\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "create-contact"\n }), " \
|
|
1167
|
-
"knowledge.discovery-call-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n li: "li",\n ol: "ol",\n p: "p",\n strong: "strong",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "The discovery form is filled during the call by the salesperson. On submission, the workflow stores structured data, updates the CRM, and routes based on qualification."\n }), "\\n", _jsxs(_components.p, {\n children: ["This is the ", _jsx(_components.strong, {\n children: "current pipeline endpoint"\n }), " \
|
|
1168
|
-
"knowledge.pipeline-management-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n h3: "h3",\n li: "li",\n ol: "ol",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "Pipeline management keeps the inbound pipeline clean without manual intervention."\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Timeout monitoring"\n }), " \
|
|
1169
|
-
"knowledge.communications-map": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n li: "li",\n p: "p",\n pre: "pre",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsxs(_components.p, {\n children: ["Every message sent to a lead across the active acquisition pipeline \
|
|
1170
|
-
"knowledge.reddit-monitoring-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n p: "p",\n pre: "pre",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "Social monitoring surfaces Reddit posts where business owners discuss operational challenges, manual processes, and automation needs."\n }), "\\n", _jsx(_components.pre, {\n children: _jsx(_components.code, {\n children: "Cron Trigger (3x/day: 16:00, 22:00, 04:00 UTC)\\n \
|
|
1171
|
-
"knowledge.reddit-account-strategy": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n li: "li",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Account Details"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Field"\n }), _jsx(_components.th, {\n children: "Value"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Username"\n })\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "AlexElevasis"\n })\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Created"\n })\n }), _jsx(_components.td, {\n children: "2026-03-26"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Purpose"\n })\n }), _jsx(_components.td, {\n children: "Lead generation via Reddit monitoring pipeline"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Persona"\n })\n }), _jsx(_components.td, {\n children: "Alexander, founder of an AI automation company"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.p, {\n children: "The username serves double duty: every helpful comment puts \\"Elevasis\\" in front of the reader."\n }), "\\n", _jsx(_components.h2, {\n children: "Warm-Up Playbook"\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "Days 1-3 \
|
|
1172
|
-
"knowledge.linkedin-strategy": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n h3: "h3",\n li: "li",\n ol: "ol",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsxs(_components.p, {\n children: ["LinkedIn is the ", _jsx(_components.strong, {\n children: "#1 priority platform"\n }), ". The algorithm heavily favors personal profiles over company pages. In 2025-2026, LinkedIn shifted from viral reach to ", _jsx(_components.strong, {\n children: "depth and authority"\n }), " \
|
|
1173
|
-
"knowledge.instagram-strategy": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n h3: "h3",\n li: "li",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsxs(_components.p, {\n children: ["Instagram is the ", _jsx(_components.strong, {\n children: "#3 priority platform"\n }), ". Carousels repurpose easily from LinkedIn, and Reels come directly from YouTube Shorts."]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Cadence:"\n }), " 3-5x/week feed posts + daily Stories"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "B2B Reality Check:"\n }), " Instagram is a complementary channel for B2B SaaS, not a primary lead gen tool. Decision-makers are on Instagram (76% of B2B companies use it), but they are in consumer mode."]\n }), "\\n", _jsx(_components.h2, {\n children: "Algorithm Deep Dive (2025-2026)"\n }), "\\n", _jsx(_components.h3, {\n children: "Reels Algorithm (Most Important for Reach)"\n }), "\\n", _jsxs(_components.p, {\n children: ["Reels are designed for ", _jsx(_components.strong, {\n children: "discovery"\n }), ": 55% of Reels views come from non-followers."]\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "Three priority signals:"\n })\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Signal"\n }), _jsx(_components.th, {\n children: "Weight"\n }), _jsx(_components.th, {\n children: "How to Optimize"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Watch time"\n })\n }), _jsx(_components.td, {\n children: "#1"\n }), _jsx(_components.td, {\n children: "Hook in first 1.7s; optimize for completion"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Sends per reach"\n })\n }), _jsx(_components.td, {\n children: "Highest for new audiences"\n }), _jsx(_components.td, {\n children: "\\"Send this to someone\\" content"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Likes per reach"\n })\n }), _jsx(_components.td, {\n children: "Highest for followers"\n }), _jsx(_components.td, {\n children: "Valuable content followers engage with"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Content Strategy"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Repurpose from LinkedIn:"\n }), " Carousel slides \
|
|
1174
|
-
"knowledge.x-strategy": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n h3: "h3",\n li: "li",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsxs(_components.p, {\n children: ["X is the ", _jsx(_components.strong, {\n children: "#4 priority platform"\n }), ". Most content is repurposed from LinkedIn text posts as threads."]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Cadence:"\n }), " 3-5 posts/day (mix of original posts + replies + quote tweets), 2-3 threads/week"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Prerequisite:"\n }), " Get ", _jsx(_components.strong, {\n children: "X Premium ($8/mo)"\n }), " \
|
|
1167
|
+
"knowledge.inbound-booking-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n h3: "h3",\n li: "li",\n ol: "ol",\n p: "p",\n strong: "strong",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "When a prospect books a discovery call via Cal.com, the booking handler manages CRM updates, notifications, and reminder scheduling across all booking lifecycle events."\n }), "\\n", _jsx(_components.h2, {\n children: "Booking Handler Workflow"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Triggers:"\n }), " Cal.com webhooks (BOOKING_CREATED, BOOKING_RESCHEDULED, BOOKING_CANCELLED)"]\n }), "\\n", _jsx(_components.h3, {\n children: "Event Flows"\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "BOOKING_CREATED:"\n })\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "create-contact"\n }), " \xE2\u20AC\u201D Create or update Attio Person record, resolve Deal via metadata or email, update Deal stage to ", _jsx(_components.code, {\n children: "booked"\n }), ", create Discovery Call Prep note, cancel brochure follow-ups"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "notify-created"\n }), " \xE2\u20AC\u201D Send platform notification to admin"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "schedule-reminders"\n }), " \xE2\u20AC\u201D Create absolute schedule with pre-computed -24h and -1h reminder times"]\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "BOOKING_RESCHEDULED:"\n })\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "update-schedule"\n }), " \xE2\u20AC\u201D Cancel existing reminders, schedule new ones at updated times"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "finish-reschedule"\n }), " \xE2\u20AC\u201D Update Deal stage, notify admin"]\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "BOOKING_CANCELLED:"\n })\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "cancel-schedule"\n }), " \xE2\u20AC\u201D Cancel all scheduled reminders"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "finish-cancel"\n }), " \xE2\u20AC\u201D Update Deal stage to ", _jsx(_components.code, {\n children: "cancelled"\n }), ", notify admin"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Reminder Schedule"\n }), "\\n", _jsx(_components.p, {\n children: "Two automated reminders per booking:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "-24h reminder: \\"Looking forward to our call tomorrow\\""\n }), "\\n", _jsx(_components.li, {\n children: "-1h reminder: \\"See you in 1 hour\\" with discovery form link"\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Reminders are scheduled as absolute times (not relative), so rescheduling correctly cancels and re-schedules them."\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1168
|
+
"knowledge.discovery-call-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n li: "li",\n ol: "ol",\n p: "p",\n strong: "strong",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "The discovery form is filled during the call by the salesperson. On submission, the workflow stores structured data, updates the CRM, and routes based on qualification."\n }), "\\n", _jsxs(_components.p, {\n children: ["This is the ", _jsx(_components.strong, {\n children: "current pipeline endpoint"\n }), " \xE2\u20AC\u201D qualified leads receive a HITL task for manual follow-up; no automated stages exist beyond this point."]\n }), "\\n", _jsx(_components.h2, {\n children: "Workflow Steps"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "route-by-action"\n }), " \xE2\u20AC\u201D Route to submission or no-show flow"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "compute-cost"\n }), " \xE2\u20AC\u201D Calculate totalAnnualCost from bottlenecks"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "store-discovery"\n }), " \xE2\u20AC\u201D Save discovery_data JSONB to acq_deals"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "find-deal"\n }), " \xE2\u20AC\u201D Find Attio Deal (acq_deals \xE2\u2020\u2019 URL context \xE2\u2020\u2019 Attio API)"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "update-attio-stage"\n }), " \xE2\u20AC\u201D Update Deal.stage based on qualification"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "create-summary-note"\n }), " \xE2\u20AC\u201D Add markdown Note to Deal"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "create-hitl-task"\n }), " \xE2\u20AC\u201D Create HITL approval item for qualified leads"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Qualification Routing"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Qualified:"\n }), " Deal moves to ", _jsx(_components.code, {\n children: "qualified"\n }), " stage; HITL task created for admin follow-up"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Not Qualified:"\n }), " Deal moves to ", _jsx(_components.code, {\n children: "closed_lost"\n }), " stage; no further automation"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "No-Show:"\n }), " Deal moves to ", _jsx(_components.code, {\n children: "no_show"\n }), " stage; timeout checker handles re-engagement"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Discovery Form Structure"\n }), "\\n", _jsx(_components.p, {\n children: "The form captures: company size, current tools, 3 biggest bottlenecks, estimated time wasted per week, budget comfort range, urgency, decision-making authority."\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1169
|
+
"knowledge.pipeline-management-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n h3: "h3",\n li: "li",\n ol: "ol",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "Pipeline management keeps the inbound pipeline clean without manual intervention."\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Timeout monitoring"\n }), " \xE2\u20AC\u201D Detecting deals that have gone stale in a stage"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Unsubscribe cleanup"\n }), " \xE2\u20AC\u201D Closing deals and cancelling automation when a contact opts out"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Full cleanup"\n }), " \xE2\u20AC\u201D Complete removal of all pipeline data for a contact"]\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "No timeout action transitions a deal automatically. All stage changes from the timeout system require admin approval via a HITL Command Queue item."\n }), "\\n", _jsx(_components.h2, {\n children: "Timeout System"\n }), "\\n", _jsxs(_components.h3, {\n children: ["Timeout Checker (", _jsx(_components.code, {\n children: "inb-pipeline-timeout-checker-workflow"\n }), ")"]\n }), "\\n", _jsx(_components.p, {\n children: "Scans all active pipeline stages. For each stale deal, creates a HITL approval item in the Command Queue. Never modifies deal records directly."\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "Timeout rules by stage:"\n })\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Stage"\n }), _jsx(_components.th, {\n children: "Condition"\n }), _jsx(_components.th, {\n children: "Timeout"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "interested"\n })\n }), _jsx(_components.td, {\n children: "No activity"\n }), _jsx(_components.td, {\n children: "30 days"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "booked"\n })\n }), _jsx(_components.td, {\n children: "Meeting time has passed"\n }), _jsx(_components.td, {\n children: "3 hours after meeting"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "discovery"\n })\n }), _jsx(_components.td, {\n children: "No form submission"\n }), _jsx(_components.td, {\n children: "24 hours after call"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h3, {\n children: "Action Workflows"\n }), "\\n", _jsx(_components.p, {\n children: "4 action workflows triggered by admin approval:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Nurture:"\n }), " Move to nurture sequence"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Close-Lost:"\n }), " Mark deal closed, stop all automation"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "No-Show:"\n }), " Re-send booking link with personal note"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Follow-Up:"\n }), " Send soft re-engagement email"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Unsubscribe Cleanup"\n }), "\\n", _jsx(_components.p, {\n children: "When a contact opts out:"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsx(_components.li, {\n children: "Find all active automation for the contact"\n }), "\\n", _jsx(_components.li, {\n children: "Cancel scheduled reminders"\n }), "\\n", _jsxs(_components.li, {\n children: ["Update Deal stage to ", _jsx(_components.code, {\n children: "unsubscribed"\n })]\n }), "\\n", _jsx(_components.li, {\n children: "Mark contact as unsubscribed in Attio"\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1170
|
+
"knowledge.communications-map": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n li: "li",\n p: "p",\n pre: "pre",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsxs(_components.p, {\n children: ["Every message sent to a lead across the active acquisition pipeline \xE2\u20AC\u201D outreach, follow-ups, reminders, and event-triggered emails. ", _jsx(_components.strong, {\n children: "~10 total active messages"\n }), " (3 outreach + 1 reply + 2 subsequent reply + 2 discovery reminders + 1 timeout follow-up + 1 timeout re-engagement)."]\n }), "\\n", _jsx(_components.p, {\n children: "Stages 04-08 communications (proposal follow-ups, payment reminders, nurture sequences) are archived."\n }), "\\n", _jsx(_components.h2, {\n children: "Active Pipeline Phases"\n }), "\\n", _jsx(_components.pre, {\n children: _jsx(_components.code, {\n children: "1. Outreach (Instantly) 2. Reply Handling 3. Discovery Reminders\\n 3 emails 1 email + 2 HITL 2 reminders\\n Day 0/3/7 On reply -24h/-1h\\n"\n })\n }), "\\n", _jsx(_components.h2, {\n children: "Phase 1: Outreach (Instantly)"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "#"\n }), _jsx(_components.th, {\n children: "Day"\n }), _jsx(_components.th, {\n children: "Subject"\n }), _jsx(_components.th, {\n children: "Angle"\n }), _jsx(_components.th, {\n children: "Purpose"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "1"\n }), _jsx(_components.td, {\n children: "0"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "idea for {{companyName}}"\n })\n }), _jsx(_components.td, {\n children: "Earn attention"\n }), _jsx(_components.td, {\n children: "Personal, specific"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "2"\n }), _jsx(_components.td, {\n children: "3"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "where do business hours actually go?"\n })\n }), _jsx(_components.td, {\n children: "New angle"\n }), _jsx(_components.td, {\n children: "Peer-level, intriguing"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "3"\n }), _jsx(_components.td, {\n children: "7"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "the offer (whenever useful)"\n })\n }), _jsx(_components.td, {\n children: "Permission to close"\n }), _jsx(_components.td, {\n children: "Warm, zero pressure"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Phase 2: Reply Handling (Resend)"\n }), "\\n", _jsx(_components.p, {\n children: "Sent only to INTERESTED replies. LLM drafts; admin approves via HITL before sending."\n }), "\\n", _jsx(_components.h2, {\n children: "Phase 3: Discovery Reminders (Resend)"\n }), "\\n", _jsx(_components.p, {\n children: "Two automated reminders per booking:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "-24h: \\"Looking forward to our call tomorrow\\""\n }), "\\n", _jsx(_components.li, {\n children: "-1h: \\"See you in 1 hour\\" with discovery form link"\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "All scheduled/event emails signed \\"Alex\\". Plain text."\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1171
|
+
"knowledge.reddit-monitoring-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n p: "p",\n pre: "pre",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "Social monitoring surfaces Reddit posts where business owners discuss operational challenges, manual processes, and automation needs."\n }), "\\n", _jsx(_components.pre, {\n children: _jsx(_components.code, {\n children: "Cron Trigger (3x/day: 16:00, 22:00, 04:00 UTC)\\n \xE2\u2020\u2019 mnt-reddit-monitor-workflow (4-step pipeline)\\n \xE2\u2020\u2019 Step 1: Search \xE2\u20AC\u201D 4 sequential Apify actors (one per tier)\\n \xE2\u2020\u2019 Step 2: Score \xE2\u20AC\u201D Gemini Flash Lite (concurrency 5)\\n \xE2\u2020\u2019 Step 3: Draft \xE2\u20AC\u201D Gemini Flash (high-score only)\\n \xE2\u2020\u2019 Step 4: Report \xE2\u20AC\u201D Store to acq_social_posts, log breakdown\\n \xE2\u2020\u2019 Command Center: /acquisition/monitoring\\n"\n })\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Status:"\n }), " Paused until further notice (2026-03-31). Pipeline technically validated but ROI is low without deep vertical expertise."]\n }), "\\n", _jsx(_components.h2, {\n children: "Velocity Batches"\n }), "\\n", _jsxs(_components.p, {\n children: ["Subreddits grouped by posting velocity, each with its own ", _jsx(_components.code, {\n children: "maxPostsPerSource"\n }), "."]\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Batch"\n }), _jsx(_components.th, {\n children: "Subs"\n }), _jsx(_components.th, {\n children: "Posts/Source"\n }), _jsx(_components.th, {\n children: "Example Subreddits"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Medium Velocity"\n }), _jsx(_components.td, {\n children: "2"\n }), _jsx(_components.td, {\n children: "5"\n }), _jsx(_components.td, {\n children: "Accounting, Plumbing"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Buyer Low-Volume"\n }), _jsx(_components.td, {\n children: "10"\n }), _jsx(_components.td, {\n children: "3"\n }), _jsx(_components.td, {\n children: "CRM, EntrepreneurRideAlong, sweatystartup"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Trade Niche"\n }), _jsx(_components.td, {\n children: "10"\n }), _jsx(_components.td, {\n children: "2"\n }), _jsx(_components.td, {\n children: "electricians, Dentists, InsuranceAgent"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Decision Niche"\n }), _jsx(_components.td, {\n children: "3"\n }), _jsx(_components.td, {\n children: "2"\n }), _jsx(_components.td, {\n children: "logistics, FreightBrokers, healthIT"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Scoring"\n }), "\\n", _jsx(_components.p, {\n children: "Posts scored 0-100 by Gemini Flash Lite for business automation opportunity relevance. Posts scoring >= 60 get response drafts via Gemini Flash."\n }), "\\n", _jsx(_components.h2, {\n children: "AlexElevasis Account"\n }), "\\n", _jsx(_components.p, {\n children: "All responses posted via the AlexElevasis Reddit account. See Reddit Account strategy doc for warmup playbook and karma thresholds."\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1172
|
+
"knowledge.reddit-account-strategy": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n li: "li",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Account Details"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Field"\n }), _jsx(_components.th, {\n children: "Value"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Username"\n })\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "AlexElevasis"\n })\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Created"\n })\n }), _jsx(_components.td, {\n children: "2026-03-26"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Purpose"\n })\n }), _jsx(_components.td, {\n children: "Lead generation via Reddit monitoring pipeline"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Persona"\n })\n }), _jsx(_components.td, {\n children: "Alexander, founder of an AI automation company"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.p, {\n children: "The username serves double duty: every helpful comment puts \\"Elevasis\\" in front of the reader."\n }), "\\n", _jsx(_components.h2, {\n children: "Warm-Up Playbook"\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "Days 1-3 \xE2\u20AC\u201D Cold Start:"\n })\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Browse, upvote, follow target subs"\n }), "\\n", _jsx(_components.li, {\n children: "1 comment per day max"\n }), "\\n", _jsx(_components.li, {\n children: "No links, no self-promotion, no CTAs"\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "Days 4-14 \xE2\u20AC\u201D Gradual Ramp:"\n })\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Increase to 2-3 comments/day"\n }), "\\n", _jsx(_components.li, {\n children: "Genuine, helpful answers \xE2\u20AC\u201D no copy-paste across threads"\n }), "\\n", _jsx(_components.li, {\n children: "Still no links or CTAs"\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "After 30 Days + 100 Karma \xE2\u20AC\u201D Activation:"\n })\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Most automod filters cleared"\n }), "\\n", _jsx(_components.li, {\n children: "Start using monitoring pipeline drafts"\n }), "\\n", _jsx(_components.li, {\n children: "300+ karma unlocks more restrictive subs (r/Entrepreneur, r/startups)"\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Karma Thresholds"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Karma"\n }), _jsx(_components.th, {\n children: "Access Level"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "100"\n }), _jsx(_components.td, {\n children: "Bypasses most automod filters"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "300+"\n }), _jsx(_components.td, {\n children: "Access to restrictive subs"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "1,000+"\n }), _jsx(_components.td, {\n children: "Considered established community member"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Posting Rules"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Genuine value first \xE2\u20AC\u201D no pitching without established reputation"\n }), "\\n", _jsx(_components.li, {\n children: "30-day account age required before using pipeline drafts"\n }), "\\n", _jsx(_components.li, {\n children: "Open questions in responses (not CTAs) per pipeline draft conventions"\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1173
|
+
"knowledge.linkedin-strategy": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n h3: "h3",\n li: "li",\n ol: "ol",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsxs(_components.p, {\n children: ["LinkedIn is the ", _jsx(_components.strong, {\n children: "#1 priority platform"\n }), ". The algorithm heavily favors personal profiles over company pages. In 2025-2026, LinkedIn shifted from viral reach to ", _jsx(_components.strong, {\n children: "depth and authority"\n }), " \xE2\u20AC\u201D topical consistency is now the single biggest strategic lever."]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Cadence:"\n }), " 3-5x/week (Wed/Thu/Fri strongest, Monday weakest)"]\n }), "\\n", _jsx(_components.h2, {\n children: "Algorithm Deep Dive"\n }), "\\n", _jsx(_components.h3, {\n children: "Ranking Signals (by weight)"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Signal"\n }), _jsx(_components.th, {\n children: "Weight"\n }), _jsx(_components.th, {\n children: "Notes"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Comments"\n })\n }), _jsx(_components.td, {\n children: "Highest"\n }), _jsx(_components.td, {\n children: "15x more valuable than likes"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Saves and sends"\n })\n }), _jsx(_components.td, {\n children: "Very high"\n }), _jsx(_components.td, {\n children: "Added to analytics in late 2025"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Dwell time"\n })\n }), _jsx(_components.td, {\n children: "High"\n }), _jsx(_components.td, {\n children: "15+ seconds = meaningful"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "\\"See more\\" clicks"\n })\n }), _jsx(_components.td, {\n children: "High"\n }), _jsx(_components.td, {\n children: "Whether people expand the full post"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Reactions/likes"\n })\n }), _jsx(_components.td, {\n children: "Lowest"\n }), _jsx(_components.td, {\n children: "Significantly de-emphasized"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h3, {\n children: "Topical Authority"\n }), "\\n", _jsx(_components.p, {\n children: "The algorithm rewards consistent publishing within a defined area of expertise. Pick a lane (AI automation) and stay in it."\n }), "\\n", _jsx(_components.h2, {\n children: "Post Formats"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Carousels"\n }), " \xE2\u20AC\u201D Highest avg engagement; 10-slide with text + data"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Text posts"\n }), " \xE2\u20AC\u201D Quick takes, contrarian observations, founder stories"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Documents/PDFs"\n }), " \xE2\u20AC\u201D In-depth guides, playbooks, frameworks"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Videos"\n }), " \xE2\u20AC\u201D Native upload outperforms external links by ~5x"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Hook Techniques"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Lead with the most surprising/counterintuitive insight"\n }), "\\n", _jsx(_components.li, {\n children: "Use \\"I\\" not \\"we\\" \xE2\u20AC\u201D personal profile posts outperform company pages"\n }), "\\n", _jsx(_components.li, {\n children: "3 lines max before \\"...see more\\" break"\n }), "\\n", _jsx(_components.li, {\n children: "Questions outperform statements for comments engagement"\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1174
|
+
"knowledge.instagram-strategy": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n h3: "h3",\n li: "li",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsxs(_components.p, {\n children: ["Instagram is the ", _jsx(_components.strong, {\n children: "#3 priority platform"\n }), ". Carousels repurpose easily from LinkedIn, and Reels come directly from YouTube Shorts."]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Cadence:"\n }), " 3-5x/week feed posts + daily Stories"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "B2B Reality Check:"\n }), " Instagram is a complementary channel for B2B SaaS, not a primary lead gen tool. Decision-makers are on Instagram (76% of B2B companies use it), but they are in consumer mode."]\n }), "\\n", _jsx(_components.h2, {\n children: "Algorithm Deep Dive (2025-2026)"\n }), "\\n", _jsx(_components.h3, {\n children: "Reels Algorithm (Most Important for Reach)"\n }), "\\n", _jsxs(_components.p, {\n children: ["Reels are designed for ", _jsx(_components.strong, {\n children: "discovery"\n }), ": 55% of Reels views come from non-followers."]\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "Three priority signals:"\n })\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Signal"\n }), _jsx(_components.th, {\n children: "Weight"\n }), _jsx(_components.th, {\n children: "How to Optimize"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Watch time"\n })\n }), _jsx(_components.td, {\n children: "#1"\n }), _jsx(_components.td, {\n children: "Hook in first 1.7s; optimize for completion"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Sends per reach"\n })\n }), _jsx(_components.td, {\n children: "Highest for new audiences"\n }), _jsx(_components.td, {\n children: "\\"Send this to someone\\" content"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Likes per reach"\n })\n }), _jsx(_components.td, {\n children: "Highest for followers"\n }), _jsx(_components.td, {\n children: "Valuable content followers engage with"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Content Strategy"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Repurpose from LinkedIn:"\n }), " Carousel slides \xE2\u2020\u2019 Instagram carousel"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Repurpose from YouTube:"\n }), " Long-form \xE2\u2020\u2019 Reels (cut 30-60s clips)"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Stories:"\n }), " Daily touchpoints, polls, Q&A, behind-the-scenes"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Carousel Optimization"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Slide 1: Hook (bold claim or question)"\n }), "\\n", _jsx(_components.li, {\n children: "Slides 2-9: Value delivery (one point per slide)"\n }), "\\n", _jsx(_components.li, {\n children: "Slide 10: CTA (follow, DM, link in bio)"\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1175
|
+
"knowledge.x-strategy": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n h3: "h3",\n li: "li",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsxs(_components.p, {\n children: ["X is the ", _jsx(_components.strong, {\n children: "#4 priority platform"\n }), ". Most content is repurposed from LinkedIn text posts as threads."]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Cadence:"\n }), " 3-5 posts/day (mix of original posts + replies + quote tweets), 2-3 threads/week"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Prerequisite:"\n }), " Get ", _jsx(_components.strong, {\n children: "X Premium ($8/mo)"\n }), " \xE2\u20AC\u201D verified accounts get ~10x more impressions. Non-Premium accounts posting links receive near-zero engagement as of 2026."]\n }), "\\n", _jsx(_components.h2, {\n children: "Algorithm Deep Dive"\n }), "\\n", _jsx(_components.h3, {\n children: "Engagement Weight Scoring"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Signal"\n }), _jsx(_components.th, {\n children: "Weight"\n }), _jsx(_components.th, {\n children: "vs. Like"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Reply engaged by author"\n })\n }), _jsx(_components.td, {\n children: "+75"\n }), _jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "150x"\n })\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Reply"\n }), _jsx(_components.td, {\n children: "+13.5"\n }), _jsx(_components.td, {\n children: "27x"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Profile click + engagement"\n }), _jsx(_components.td, {\n children: "+12.0"\n }), _jsx(_components.td, {\n children: "24x"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Bookmark"\n }), _jsx(_components.td, {\n children: "+10.0"\n }), _jsx(_components.td, {\n children: "20x"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Retweet"\n }), _jsx(_components.td, {\n children: "+1.0"\n }), _jsx(_components.td, {\n children: "2x"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Like"\n }), _jsx(_components.td, {\n children: "+0.5"\n }), _jsx(_components.td, {\n children: "1x"\n })]\n })]\n })]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Critical takeaway:"\n }), " Replying to your own replies is worth ", _jsx(_components.strong, {\n children: "150x a like"\n }), "."]\n }), "\\n", _jsx(_components.h3, {\n children: "Penalties"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: ["External links: ", _jsx(_components.strong, {\n children: "30-50% reach reduction"\n })]\n }), "\\n", _jsxs(_components.li, {\n children: ["Multiple hashtags: ", _jsx(_components.strong, {\n children: "40% penalty"\n })]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Thread Strategy"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "First tweet = hook (bold claim or surprising stat)"\n }), "\\n", _jsx(_components.li, {\n children: "5-10 tweets per thread"\n }), "\\n", _jsx(_components.li, {\n children: "Last tweet = CTA (follow for more, link to extended content)"\n }), "\\n", _jsx(_components.li, {\n children: "Reply to your own threads within the first hour to boost algorithmic velocity"\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1175
1176
|
"knowledge.youtube-channel-strategy": makeKnowledgeComponent(`"use strict";
|
|
1176
1177
|
const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
|
|
1177
1178
|
function _createMdxContent(props) {
|
|
@@ -1191,14 +1192,14 @@ function _createMdxContent(props) {
|
|
|
1191
1192
|
}), "\\n", _jsxs(_components.p, {
|
|
1192
1193
|
children: ["Build the \\"Alexander Le | Elevasis\\" YouTube channel as an evergreen discovery engine for Elevasis. YouTube is the ", _jsx(_components.strong, {
|
|
1193
1194
|
children: "#1 content priority"
|
|
1194
|
-
}), " \
|
|
1195
|
+
}), " \xE2\u20AC\u201D evergreen discovery, SEO compounding, and 53% of B2B buyers watch video before requesting demos."]
|
|
1195
1196
|
}), "\\n", _jsx(_components.h2, {
|
|
1196
1197
|
children: "Channel Identity"
|
|
1197
1198
|
}), "\\n", _jsxs(_components.ul, {
|
|
1198
1199
|
children: ["\\n", _jsxs(_components.li, {
|
|
1199
1200
|
children: [_jsx(_components.strong, {
|
|
1200
1201
|
children: "Name:"
|
|
1201
|
-
}), " \\"Alexander Le | Elevasis\\" \
|
|
1202
|
+
}), " \\"Alexander Le | Elevasis\\" \xE2\u20AC\u201D personal-brand hybrid with clear business association"]
|
|
1202
1203
|
}), "\\n", _jsxs(_components.li, {
|
|
1203
1204
|
children: [_jsx(_components.strong, {
|
|
1204
1205
|
children: "Handle:"
|
|
@@ -1211,7 +1212,7 @@ function _createMdxContent(props) {
|
|
|
1211
1212
|
}), " People subscribe to people. Algorithm favors creator-branded channels over faceless brands."]
|
|
1212
1213
|
}), "\\n"]
|
|
1213
1214
|
}), "\\n", _jsx(_components.h2, {
|
|
1214
|
-
children: "Content Format: Face Bubble Intro \
|
|
1215
|
+
children: "Content Format: Face Bubble Intro \xE2\u2020\u2019 Screen Recording"
|
|
1215
1216
|
}), "\\n", _jsxs(_components.p, {
|
|
1216
1217
|
children: [_jsx(_components.strong, {
|
|
1217
1218
|
children: "Primary format:"
|
|
@@ -1222,7 +1223,7 @@ function _createMdxContent(props) {
|
|
|
1222
1223
|
})
|
|
1223
1224
|
}), "\\n", _jsxs(_components.ul, {
|
|
1224
1225
|
children: ["\\n", _jsx(_components.li, {
|
|
1225
|
-
children: "40%+ of YouTube's top 1,000 channels never show a presenter \
|
|
1226
|
+
children: "40%+ of YouTube's top 1,000 channels never show a presenter \xE2\u20AC\u201D faceless works"
|
|
1226
1227
|
}), "\\n", _jsx(_components.li, {
|
|
1227
1228
|
children: "Screen recording tutorials rank extremely well on YouTube + Google"
|
|
1228
1229
|
}), "\\n", _jsxs(_components.li, {
|
|
@@ -1240,7 +1241,7 @@ function _createMdxContent(props) {
|
|
|
1240
1241
|
}), "\\n", _jsx(_components.li, {
|
|
1241
1242
|
children: "\\"Document the build\\" format: record while building, editing, deploying"
|
|
1242
1243
|
}), "\\n", _jsx(_components.li, {
|
|
1243
|
-
children: "Show Command Center in action \
|
|
1244
|
+
children: "Show Command Center in action \xE2\u20AC\u201D no equivalent content exists"
|
|
1244
1245
|
}), "\\n"]
|
|
1245
1246
|
}), "\\n", _jsx(_components.h2, {
|
|
1246
1247
|
children: "Launch Queue"
|
|
@@ -1325,7 +1326,7 @@ function _createMdxContent(props) {
|
|
|
1325
1326
|
}), "\\n", _jsxs(_components.li, {
|
|
1326
1327
|
children: ["Use YouTube's ", _jsx(_components.strong, {
|
|
1327
1328
|
children: "Test & Compare"
|
|
1328
|
-
}), " \
|
|
1329
|
+
}), " \xE2\u20AC\u201D upload 3 thumbnails, YouTube A/B tests and reports CTR"]
|
|
1329
1330
|
}), "\\n"]
|
|
1330
1331
|
}), "\\n", _jsx(_components.h3, {
|
|
1331
1332
|
children: "Description"
|
|
@@ -1337,7 +1338,7 @@ function _createMdxContent(props) {
|
|
|
1337
1338
|
}), "\\n", _jsxs(_components.li, {
|
|
1338
1339
|
children: ["Add ", _jsx(_components.strong, {
|
|
1339
1340
|
children: "timestamps/chapters"
|
|
1340
|
-
}), " \
|
|
1341
|
+
}), " \xE2\u20AC\u201D improve retention + create extra search ranking hooks"]
|
|
1341
1342
|
}), "\\n"]
|
|
1342
1343
|
}), "\\n", _jsx(_components.h2, {
|
|
1343
1344
|
children: "Shorts Strategy"
|
|
@@ -1359,7 +1360,7 @@ function _createMdxContent(props) {
|
|
|
1359
1360
|
}), "\\n", _jsx(_components.li, {
|
|
1360
1361
|
children: "Reply to every comment within the first 24 hours"
|
|
1361
1362
|
}), "\\n", _jsx(_components.li, {
|
|
1362
|
-
children: "Share in relevant communities (not spam \
|
|
1363
|
+
children: "Share in relevant communities (not spam \xE2\u20AC\u201D genuine value)"
|
|
1363
1364
|
}), "\\n"]
|
|
1364
1365
|
})]
|
|
1365
1366
|
});
|
|
@@ -1377,7 +1378,7 @@ return {
|
|
|
1377
1378
|
default: MDXContent
|
|
1378
1379
|
};
|
|
1379
1380
|
`),
|
|
1380
|
-
"knowledge.youtube-growth-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n li: "li",\n ol: "ol",\n p: "p",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "This playbook maps YouTube growth tactics to the current Elevasis content format: screen recordings, Command Center walkthroughs, founder commentary, proof assets, and short clips cut from real demos."\n }), "\\n", _jsx(_components.p, {\n children: "The goal is to make real AI orchestration visible enough that buyers and technical peers understand what Elevasis does."\n }), "\\n", _jsx(_components.h2, {\n children: "Core Format"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Format"\n }), _jsx(_components.th, {\n children: "Use For"\n }), _jsx(_components.th, {\n children: "Notes"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Face intro \
|
|
1381
|
+
"knowledge.youtube-growth-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n li: "li",\n ol: "ol",\n p: "p",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "This playbook maps YouTube growth tactics to the current Elevasis content format: screen recordings, Command Center walkthroughs, founder commentary, proof assets, and short clips cut from real demos."\n }), "\\n", _jsx(_components.p, {\n children: "The goal is to make real AI orchestration visible enough that buyers and technical peers understand what Elevasis does."\n }), "\\n", _jsx(_components.h2, {\n children: "Core Format"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Format"\n }), _jsx(_components.th, {\n children: "Use For"\n }), _jsx(_components.th, {\n children: "Notes"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Face intro \xE2\u2020\u2019 screen recording"\n }), _jsx(_components.td, {\n children: "Flagship demos, founder-led walkthroughs"\n }), _jsx(_components.td, {\n children: "15-30 second intro, then full-screen product work"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Screen recording only"\n }), _jsx(_components.td, {\n children: "Tutorials, Shorts source material"\n }), _jsx(_components.td, {\n children: "Fastest to produce"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Data walkthrough"\n }), _jsx(_components.td, {\n children: "Campaign metrics, cost tracking, workflow results"\n }), _jsx(_components.td, {\n children: "Use only real data"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Concept explainer"\n }), _jsx(_components.td, {\n children: "AI agents, orchestration, human oversight"\n }), _jsx(_components.td, {\n children: "Keep tied to concrete business workflows"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "CTR Optimization"\n }), "\\n", _jsx(_components.p, {\n children: "Thumbnails should show the result or system, not abstract concepts:"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsx(_components.li, {\n children: "Command Center, workflow graph, campaign analytics, or visible output"\n }), "\\n", _jsx(_components.li, {\n children: "Optional face overlay when it improves trust"\n }), "\\n", _jsx(_components.li, {\n children: "Three to five words of context. High contrast, readable at mobile size."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Title rules:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Front-load the topic"\n }), "\\n", _jsx(_components.li, {\n children: "Use real numbers only when current and verifiable"\n }), "\\n", _jsx(_components.li, {\n children: "Prefer \\"Watch\\", \\"Real\\", \\"Live\\", \\"Actual\\", \\"Walkthrough\\" over hype language"\n }), "\\n", _jsx(_components.li, {\n children: "Make the title and thumbnail say different things"\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Retention"\n }), "\\n", _jsx(_components.p, {\n children: "Open with the payoff:"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsx(_components.li, {\n children: "Show the final dashboard, result, or workflow output"\n }), "\\n", _jsx(_components.li, {\n children: "Explain what the viewer is about to see"\n }), "\\n", _jsx(_components.li, {\n children: "Switch into the walkthrough quickly"\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "First-24-Hour Workflow"\n }), "\\n", _jsx(_components.p, {\n children: "Algorithm watches first 30-60 minutes closely. A video getting 10 replies in 15 minutes dramatically outperforms one getting 10 replies over 24 hours."\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1381
1382
|
"knowledge.youtube-mental-prep": makeKnowledgeComponent(`"use strict";
|
|
1382
1383
|
const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
|
|
1383
1384
|
function _createMdxContent(props) {
|
|
@@ -1394,7 +1395,7 @@ function _createMdxContent(props) {
|
|
|
1394
1395
|
children: [_jsx(_components.h2, {
|
|
1395
1396
|
children: "Why This Exists"
|
|
1396
1397
|
}), "\\n", _jsx(_components.p, {
|
|
1397
|
-
children: "Recording yourself and putting your ideas out publicly is genuinely uncomfortable. This doc captures the research and practical strategies so you can reference them when the anxiety spikes \
|
|
1398
|
+
children: "Recording yourself and putting your ideas out publicly is genuinely uncomfortable. This doc captures the research and practical strategies so you can reference them when the anxiety spikes \xE2\u20AC\u201D not as motivation, but as evidence that the discomfort is normal, finite, and navigable."
|
|
1398
1399
|
}), "\\n", _jsx(_components.h2, {
|
|
1399
1400
|
children: "The Core Insight"
|
|
1400
1401
|
}), "\\n", _jsxs(_components.p, {
|
|
@@ -1408,30 +1409,30 @@ function _createMdxContent(props) {
|
|
|
1408
1409
|
}), "\\n", _jsxs(_components.p, {
|
|
1409
1410
|
children: ["People overestimate how much others notice and judge them by roughly ", _jsx(_components.strong, {
|
|
1410
1411
|
children: "2x"
|
|
1411
|
-
}), ". Early videos get almost zero views \
|
|
1412
|
+
}), ". Early videos get almost zero views \xE2\u20AC\u201D you're practicing in an empty room."]
|
|
1412
1413
|
}), "\\n", _jsx(_components.h3, {
|
|
1413
1414
|
children: "The Five Common Fears (in order of prevalence)"
|
|
1414
1415
|
}), "\\n", _jsxs(_components.ol, {
|
|
1415
1416
|
children: ["\\n", _jsxs(_components.li, {
|
|
1416
1417
|
children: [_jsx(_components.strong, {
|
|
1417
1418
|
children: "Judgment from people you know"
|
|
1418
|
-
}), " \
|
|
1419
|
+
}), " \xE2\u20AC\u201D not strangers. The #1 blocker."]
|
|
1419
1420
|
}), "\\n", _jsxs(_components.li, {
|
|
1420
1421
|
children: [_jsx(_components.strong, {
|
|
1421
1422
|
children: "Perfectionism as procrastination"
|
|
1422
|
-
}), " \
|
|
1423
|
+
}), " \xE2\u20AC\u201D \\"I'll start when I have better equipment.\\" This is avoidance."]
|
|
1423
1424
|
}), "\\n", _jsxs(_components.li, {
|
|
1424
1425
|
children: [_jsx(_components.strong, {
|
|
1425
1426
|
children: "Impostor syndrome"
|
|
1426
|
-
}), " \
|
|
1427
|
+
}), " \xE2\u20AC\u201D \\"Who am I to teach this?\\""]
|
|
1427
1428
|
}), "\\n", _jsxs(_components.li, {
|
|
1428
1429
|
children: [_jsx(_components.strong, {
|
|
1429
1430
|
children: "Permanence anxiety"
|
|
1430
|
-
}), " \
|
|
1431
|
+
}), " \xE2\u20AC\u201D \\"This will be on the internet forever\\""]
|
|
1431
1432
|
}), "\\n", _jsxs(_components.li, {
|
|
1432
1433
|
children: [_jsx(_components.strong, {
|
|
1433
1434
|
children: "Voice/face aversion"
|
|
1434
|
-
}), " \
|
|
1435
|
+
}), " \xE2\u20AC\u201D Most people dislike their recorded voice (bone conduction gap)"]
|
|
1435
1436
|
}), "\\n"]
|
|
1436
1437
|
}), "\\n", _jsx(_components.h3, {
|
|
1437
1438
|
children: "The Real Fear: Cringe"
|
|
@@ -1441,11 +1442,11 @@ function _createMdxContent(props) {
|
|
|
1441
1442
|
children: "Graduated Exposure Protocol"
|
|
1442
1443
|
}), "\\n", _jsxs(_components.ol, {
|
|
1443
1444
|
children: ["\\n", _jsx(_components.li, {
|
|
1444
|
-
children: "Screen recording only (no face, no voice) \
|
|
1445
|
+
children: "Screen recording only (no face, no voice) \xE2\u20AC\u201D 2 videos"
|
|
1445
1446
|
}), "\\n", _jsx(_components.li, {
|
|
1446
|
-
children: "Screen recording + voiceover (no face) \
|
|
1447
|
+
children: "Screen recording + voiceover (no face) \xE2\u20AC\u201D 5 videos"
|
|
1447
1448
|
}), "\\n", _jsx(_components.li, {
|
|
1448
|
-
children: "Face bubble intro (15-30s) + screen recording \
|
|
1449
|
+
children: "Face bubble intro (15-30s) + screen recording \xE2\u20AC\u201D ongoing"
|
|
1449
1450
|
}), "\\n"]
|
|
1450
1451
|
}), "\\n", _jsx(_components.p, {
|
|
1451
1452
|
children: "Each stage desensitizes one fear at a time. Never skip ahead. The goal is consistency, not perfection."
|
|
@@ -1465,8 +1466,8 @@ return {
|
|
|
1465
1466
|
default: MDXContent
|
|
1466
1467
|
};
|
|
1467
1468
|
`),
|
|
1468
|
-
"knowledge.what-is-elevasis": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n h3: "h3",\n li: "li",\n p: "p",\n strong: "strong",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Executive Summary"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Company:"\n }), " Bootstrapped AI orchestration platform for done-for-you business automation"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Founder:"\n }), " Solo (Alex, 34), bootstrapped"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Market:"\n }), " Service-based SMBs that need practical AI automation without building internal AI teams"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "GTM:"\n }), " Content-led marketing, proof assets, consultative sales, and land-and-expand pricing"]\n }), "\\n", _jsx(_components.h2, {\n children: "Company Overview"\n }), "\\n", _jsx(_components.h3, {\n children: "Current Status"\n }), "\\n", _jsx(_components.p, {\n children: "The platform core is production-ready enough to support client-facing demonstrations and implementation work. Current business focus is client acquisition, proof-building, and turning the platform into a repeatable service delivery system."\n }), "\\n", _jsx(_components.h3, {\n children: "Founder Profile"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Alex, 34"\n }), " \
|
|
1469
|
-
"knowledge.platform-systems-overview": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n h3: "h3",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "Elevasis is a production AI orchestration platform that coordinates workflows, autonomous agents, and human approvals into a unified operating layer for SMBs. Everything described below is implemented and running in production."\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "Core Architecture:"\n })\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Layer"\n }), _jsx(_components.th, {\n children: "What It Does"\n }), _jsx(_components.th, {\n children: "Key Components"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Execution"\n })\n }), _jsx(_components.td, {\n children: "Runs workflows and agents with schema validation"\n }), _jsx(_components.td, {\n children: "Workflow Engine, Agent Framework, Execution Runner"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Control"\n })\n }), _jsx(_components.td, {\n children: "Human oversight, approvals, and decision capture"\n }), _jsx(_components.td, {\n children: "Command Queue (HITL), Dynamic Forms, Action System"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Intelligence"\n })\n }), _jsx(_components.td, {\n children: "Autonomous reasoning, tool use, and memory management"\n }), _jsx(_components.td, {\n children: "ReAct Agents, Knowledge Map, Session Memory"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Observability"\n })\n }), _jsx(_components.td, {\n children: "Real-time visibility into cost, performance, and health"\n }), _jsx(_components.td, {\n children: "Cost Tracking, Metrics, Activity Log, SSE Streaming"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Platform"\n })\n }), _jsx(_components.td, {\n children: "Multi-tenancy, security, scheduling, integrations"\n }), _jsx(_components.td, {\n children: "Registry, RLS, Scheduler, Credential Vault, SDK"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Execution Engine"\n }), "\\n", _jsx(_components.h3, {\n children: "AI Workflows"\n }), "\\n", _jsx(_components.p, {\n children: "Graph-based workflow execution with schema-validated steps and conditional routing. Steps define explicit routing: linear, conditional (rule-based branching), or terminal. Context flows through the entire workflow."\n }), "\\n", _jsx(_components.h3, {\n children: "Autonomous Agents"\n }), "\\n", _jsx(_components.p, {\n children: "Production-grade ReAct-style agents with tool use, memory management, and security hardening."\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "LLM Provider Support:"\n }), " OpenAI (GPT-5), Google (Gemini 3 Flash), Anthropic (Claude Sonnet 4.5), OpenRouter (GLM-5)"]\n }), "\\n", _jsx(_components.h2, {\n children: "Human-in-the-Loop (HITL)"\n }), "\\n", _jsx(_components.p, {\n children: "The Command Queue surfaces pending approvals as structured tasks. Admin reviews, approves or edits, and the workflow continues. Every critical decision \
|
|
1469
|
+
"knowledge.what-is-elevasis": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n h3: "h3",\n li: "li",\n p: "p",\n strong: "strong",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Executive Summary"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Company:"\n }), " Bootstrapped AI orchestration platform for done-for-you business automation"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Founder:"\n }), " Solo (Alex, 34), bootstrapped"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Market:"\n }), " Service-based SMBs that need practical AI automation without building internal AI teams"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "GTM:"\n }), " Content-led marketing, proof assets, consultative sales, and land-and-expand pricing"]\n }), "\\n", _jsx(_components.h2, {\n children: "Company Overview"\n }), "\\n", _jsx(_components.h3, {\n children: "Current Status"\n }), "\\n", _jsx(_components.p, {\n children: "The platform core is production-ready enough to support client-facing demonstrations and implementation work. Current business focus is client acquisition, proof-building, and turning the platform into a repeatable service delivery system."\n }), "\\n", _jsx(_components.h3, {\n children: "Founder Profile"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Alex, 34"\n }), " \xE2\u20AC\u201D Solo founder with software engineering background (BSCS degree). Previous: Ecommerce platforms, Streaming technology. No formal AI background \xE2\u20AC\u201D practitioner, not academic."]\n }), "\\n", _jsx(_components.h3, {\n children: "What We Are"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Operating layer for AI automation."\n }), " We help SMBs operate with closed-loop feedback, decision capture, and continuous learning \xE2\u20AC\u201D at SMB pricing with done-for-you implementation (NOT self-service)."]\n }), "\\n", _jsx(_components.h3, {\n children: "Target Market"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "ICP:"\n }), " Service-based SMBs (2-50 employees, USA, $200K-$5M revenue)"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Core Pain:"\n }), " Capacity crisis, pipeline problems, operational chaos, growth blockers \xE2\u20AC\u201D too busy serving clients to grow their own business."]\n }), "\\n", _jsx(_components.h3, {\n children: "Pricing (Land-and-Expand)"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Tier 1 \xE2\u20AC\u201D Foundation (1-2 workflows): $500-2k/mo"\n }), "\\n", _jsx(_components.li, {\n children: "Tier 2 \xE2\u20AC\u201D Scaled Operations (3-5 workflows): $2k-5k/mo"\n }), "\\n", _jsx(_components.li, {\n children: "Tier 3 \xE2\u20AC\u201D AI-Powered Systems (6+ workflows): $5k-15k+/mo"\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Additional workflows cost less due to shared infrastructure."\n }), "\\n", _jsx(_components.h3, {\n children: "Value Proposition"\n }), "\\n", _jsx(_components.p, {\n children: "\\"We find one bottleneck in your business, build an AI solution to fix it, and you only pay if it actually saves you time or makes you money.\\""\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1470
|
+
"knowledge.platform-systems-overview": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n h3: "h3",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "Elevasis is a production AI orchestration platform that coordinates workflows, autonomous agents, and human approvals into a unified operating layer for SMBs. Everything described below is implemented and running in production."\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "Core Architecture:"\n })\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Layer"\n }), _jsx(_components.th, {\n children: "What It Does"\n }), _jsx(_components.th, {\n children: "Key Components"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Execution"\n })\n }), _jsx(_components.td, {\n children: "Runs workflows and agents with schema validation"\n }), _jsx(_components.td, {\n children: "Workflow Engine, Agent Framework, Execution Runner"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Control"\n })\n }), _jsx(_components.td, {\n children: "Human oversight, approvals, and decision capture"\n }), _jsx(_components.td, {\n children: "Command Queue (HITL), Dynamic Forms, Action System"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Intelligence"\n })\n }), _jsx(_components.td, {\n children: "Autonomous reasoning, tool use, and memory management"\n }), _jsx(_components.td, {\n children: "ReAct Agents, Knowledge Map, Session Memory"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Observability"\n })\n }), _jsx(_components.td, {\n children: "Real-time visibility into cost, performance, and health"\n }), _jsx(_components.td, {\n children: "Cost Tracking, Metrics, Activity Log, SSE Streaming"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Platform"\n })\n }), _jsx(_components.td, {\n children: "Multi-tenancy, security, scheduling, integrations"\n }), _jsx(_components.td, {\n children: "Registry, RLS, Scheduler, Credential Vault, SDK"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Execution Engine"\n }), "\\n", _jsx(_components.h3, {\n children: "AI Workflows"\n }), "\\n", _jsx(_components.p, {\n children: "Graph-based workflow execution with schema-validated steps and conditional routing. Steps define explicit routing: linear, conditional (rule-based branching), or terminal. Context flows through the entire workflow."\n }), "\\n", _jsx(_components.h3, {\n children: "Autonomous Agents"\n }), "\\n", _jsx(_components.p, {\n children: "Production-grade ReAct-style agents with tool use, memory management, and security hardening."\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "LLM Provider Support:"\n }), " OpenAI (GPT-5), Google (Gemini 3 Flash), Anthropic (Claude Sonnet 4.5), OpenRouter (GLM-5)"]\n }), "\\n", _jsx(_components.h2, {\n children: "Human-in-the-Loop (HITL)"\n }), "\\n", _jsx(_components.p, {\n children: "The Command Queue surfaces pending approvals as structured tasks. Admin reviews, approves or edits, and the workflow continues. Every critical decision \xE2\u20AC\u201D sending emails to prospects, updating customer records, publishing content \xE2\u20AC\u201D requires human approval."\n }), "\\n", _jsx(_components.h2, {\n children: "Knowledge Map"\n }), "\\n", _jsx(_components.p, {\n children: "Organizational knowledge loaded lazily into agent context. 80-95% token savings vs. always-loading full context. Nodes link to features, teams, and other nodes."\n }), "\\n", _jsx(_components.h2, {\n children: "Integrations (13 active)"\n }), "\\n", _jsx(_components.p, {\n children: "Attio CRM, Cal.com, Instantly (cold email), Resend, Apify, Google Maps, Tomba, Mails.so, Supabase, Stripe, OpenAI, Google Gemini, Anthropic Claude."\n }), "\\n", _jsx(_components.h2, {\n children: "SDK"\n }), "\\n", _jsxs(_components.p, {\n children: ["TypeScript-based resource development with local testing, validation, and deployment pipeline. External consumers define workflows and agents in their own repos and deploy via ", _jsx(_components.code, {\n children: "elevasis-sdk deploy"\n }), "."]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1470
1471
|
"knowledge.client-testimonials": makeKnowledgeComponent(`"use strict";
|
|
1471
1472
|
const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
|
|
1472
1473
|
function _createMdxContent(props) {
|
|
@@ -1491,7 +1492,7 @@ function _createMdxContent(props) {
|
|
|
1491
1492
|
}), "\\n", _jsx(_components.h2, {
|
|
1492
1493
|
children: "Testimonials"
|
|
1493
1494
|
}), "\\n", _jsx(_components.h3, {
|
|
1494
|
-
children: "Xero Automation \
|
|
1495
|
+
children: "Xero Automation \xE2\u20AC\u201D The Invoice Chase That Disappeared"
|
|
1495
1496
|
}), "\\n", _jsxs(_components.p, {
|
|
1496
1497
|
children: [_jsx(_components.strong, {
|
|
1497
1498
|
children: "Client:"
|
|
@@ -1509,7 +1510,7 @@ function _createMdxContent(props) {
|
|
|
1509
1510
|
children: "Permission:"
|
|
1510
1511
|
}), " Case study approved with company name."]
|
|
1511
1512
|
}), "\\n", _jsx(_components.h3, {
|
|
1512
|
-
children: "Influencer Discovery \
|
|
1513
|
+
children: "Influencer Discovery \xE2\u20AC\u201D From Spreadsheet Hell to Strategic Decisions"
|
|
1513
1514
|
}), "\\n", _jsxs(_components.p, {
|
|
1514
1515
|
children: [_jsx(_components.strong, {
|
|
1515
1516
|
children: "Client:"
|
|
@@ -1527,7 +1528,7 @@ function _createMdxContent(props) {
|
|
|
1527
1528
|
children: "Permission:"
|
|
1528
1529
|
}), " Case study approved with company name."]
|
|
1529
1530
|
}), "\\n", _jsx(_components.h3, {
|
|
1530
|
-
children: "EMRG Media \
|
|
1531
|
+
children: "EMRG Media \xE2\u20AC\u201D 4 Automations for NYC's Premier Events Firm"
|
|
1531
1532
|
}), "\\n", _jsxs(_components.p, {
|
|
1532
1533
|
children: [_jsx(_components.strong, {
|
|
1533
1534
|
children: "Client:"
|
|
@@ -1540,19 +1541,19 @@ function _createMdxContent(props) {
|
|
|
1540
1541
|
children: ["\\n", _jsxs(_components.li, {
|
|
1541
1542
|
children: [_jsx(_components.strong, {
|
|
1542
1543
|
children: "Case Study Generator"
|
|
1543
|
-
}), " \
|
|
1544
|
+
}), " \xE2\u20AC\u201D 7-10 hours \xE2\u2020\u2019 2 hours. Publication rate: 1/quarter \xE2\u2020\u2019 2/month."]
|
|
1544
1545
|
}), "\\n", _jsxs(_components.li, {
|
|
1545
1546
|
children: [_jsx(_components.strong, {
|
|
1546
1547
|
children: "EMRG Follow-Up Generator"
|
|
1547
|
-
}), " \
|
|
1548
|
+
}), " \xE2\u20AC\u201D Automated post-event follow-ups with signature management."]
|
|
1548
1549
|
}), "\\n", _jsxs(_components.li, {
|
|
1549
1550
|
children: [_jsx(_components.strong, {
|
|
1550
1551
|
children: "Event Sponsor Tracker"
|
|
1551
|
-
}), " \
|
|
1552
|
+
}), " \xE2\u20AC\u201D Automated sponsor pipeline tracking and communications."]
|
|
1552
1553
|
}), "\\n", _jsxs(_components.li, {
|
|
1553
1554
|
children: [_jsx(_components.strong, {
|
|
1554
1555
|
children: "Lead Scraper"
|
|
1555
|
-
}), " \
|
|
1556
|
+
}), " \xE2\u20AC\u201D Automated discovery of event planning prospects."]
|
|
1556
1557
|
}), "\\n"]
|
|
1557
1558
|
}), "\\n", _jsx(_components.p, {
|
|
1558
1559
|
children: _jsx(_components.strong, {
|
|
@@ -1586,7 +1587,7 @@ return {
|
|
|
1586
1587
|
default: MDXContent
|
|
1587
1588
|
};
|
|
1588
1589
|
`),
|
|
1589
|
-
"knowledge.understanding-elevasis": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n li: "li",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: "Lean documentation explaining what Elevasis is and what the platform can do. This section provides the foundational context for business conversations and technical evaluation."\n }), "\\n", _jsx(_components.p, {\n children: "Elevasis is a done-for-you AI automation service backed by a production-grade platform. The company targets service-based SMBs (2-50 employees, $200K-$5M revenue) who are too busy serving clients to grow their own business."\n }), "\\n", _jsx(_components.h2, {\n children: "Key Facts"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Stage:"\n }), " Pre-revenue, platform 100% complete, client acquisition active"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Offer:"\n }), " Done-for-you AI automation -- we build and maintain the workflows, no coding required"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "ICP:"\n }), " Service-based SMBs (2-50 employees, $200K-$5M revenue, USA)"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Pricing:"\n }), " $500-$2k/mo (Foundation) \
|
|
1590
|
+
"knowledge.understanding-elevasis": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n li: "li",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: "Lean documentation explaining what Elevasis is and what the platform can do. This section provides the foundational context for business conversations and technical evaluation."\n }), "\\n", _jsx(_components.p, {\n children: "Elevasis is a done-for-you AI automation service backed by a production-grade platform. The company targets service-based SMBs (2-50 employees, $200K-$5M revenue) who are too busy serving clients to grow their own business."\n }), "\\n", _jsx(_components.h2, {\n children: "Key Facts"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Stage:"\n }), " Pre-revenue, platform 100% complete, client acquisition active"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Offer:"\n }), " Done-for-you AI automation -- we build and maintain the workflows, no coding required"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "ICP:"\n }), " Service-based SMBs (2-50 employees, $200K-$5M revenue, USA)"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Pricing:"\n }), " $500-$2k/mo (Foundation) \xE2\u2020\u2019 $2k-$5k/mo (Scaled) \xE2\u2020\u2019 $5k-$15k+/mo (AI-Powered)"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Market:"\n }), " Early Adopters stage, $23.77B TAM growing to $87.7B by 2032"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Competitive position:"\n }), " No dominant done-for-you SMB AI provider exists; blue ocean"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "When to Use Each Document"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Situation"\n }), _jsx(_components.th, {\n children: "Document"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "First conversation with any audience"\n }), _jsx(_components.td, {\n children: "What is Elevasis"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Technical evaluation or demo prep"\n }), _jsx(_components.td, {\n children: "Platform Systems Overview"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Documentation"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "What is Elevasis"\n }), " \xE2\u20AC\u201D AI orchestration platform overview, company stage, value proposition, and pricing tiers"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Platform Systems Overview"\n }), " \xE2\u20AC\u201D Authoritative overview of what is built, what each system does, and how the pieces fit together"]\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
|
|
1590
1591
|
"knowledge.marketing-overview": makeKnowledgeComponent(`"use strict";
|
|
1591
1592
|
const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
|
|
1592
1593
|
function _createMdxContent(props) {
|
|
@@ -1610,12 +1611,12 @@ function _createMdxContent(props) {
|
|
|
1610
1611
|
children: ["\\n", _jsxs(_components.li, {
|
|
1611
1612
|
children: [_jsx(_components.strong, {
|
|
1612
1613
|
children: "Overview"
|
|
1613
|
-
}), " \
|
|
1614
|
+
}), " \xE2\u20AC\u201D Channel strategy, inbound content system, and proof-led demand generation"]
|
|
1614
1615
|
}), "\\n"]
|
|
1615
1616
|
}), "\\n", _jsx(_components.h3, {
|
|
1616
1617
|
children: "Website"
|
|
1617
1618
|
}), "\\n", _jsx(_components.p, {
|
|
1618
|
-
children: "The marketing website's technical infrastructure, setup, and SEO docs now live under Architecture \
|
|
1619
|
+
children: "The marketing website's technical infrastructure, setup, and SEO docs now live under Architecture \xE2\u2020\u2019 Website."
|
|
1619
1620
|
})]
|
|
1620
1621
|
});
|
|
1621
1622
|
}
|
|
@@ -1658,7 +1659,7 @@ function _createMdxContent(props) {
|
|
|
1658
1659
|
children: "Principle:"
|
|
1659
1660
|
}), " AI must work with your existing tools, not replace them."]
|
|
1660
1661
|
}), "\\n", _jsx(_components.p, {
|
|
1661
|
-
children: "AI that doesn't connect to your CRM, your email, your calendar, your existing workflows is a toy. Real AI automation works WITH what you already have \
|
|
1662
|
+
children: "AI that doesn't connect to your CRM, your email, your calendar, your existing workflows is a toy. Real AI automation works WITH what you already have \xE2\u20AC\u201D not instead of it."
|
|
1662
1663
|
}), "\\n", _jsxs(_components.ul, {
|
|
1663
1664
|
children: ["\\n", _jsx(_components.li, {
|
|
1664
1665
|
children: "Your 50 Zapier workflows keep running"
|
|
@@ -1678,7 +1679,7 @@ function _createMdxContent(props) {
|
|
|
1678
1679
|
children: "Principle:"
|
|
1679
1680
|
}), " AI must learn from every decision and improve continuously."]
|
|
1680
1681
|
}), "\\n", _jsx(_components.p, {
|
|
1681
|
-
children: "Static automation is just fancy if-then logic. Real AI captures every approval, rejection, and edit \
|
|
1682
|
+
children: "Static automation is just fancy if-then logic. Real AI captures every approval, rejection, and edit \xE2\u20AC\u201D then uses that data to get smarter."
|
|
1682
1683
|
}), "\\n", _jsxs(_components.p, {
|
|
1683
1684
|
children: [_jsx(_components.strong, {
|
|
1684
1685
|
children: "The anti-pattern:"
|
|
@@ -1690,7 +1691,7 @@ function _createMdxContent(props) {
|
|
|
1690
1691
|
children: "Principle:"
|
|
1691
1692
|
}), " You must be able to see what AI systems are doing in real-time."]
|
|
1692
1693
|
}), "\\n", _jsx(_components.p, {
|
|
1693
|
-
children: "Black-box automation is unacceptable for business operations. You need to see every action, every decision, every cost \
|
|
1694
|
+
children: "Black-box automation is unacceptable for business operations. You need to see every action, every decision, every cost \xE2\u20AC\u201D as it happens."
|
|
1694
1695
|
}), "\\n", _jsxs(_components.ul, {
|
|
1695
1696
|
children: ["\\n", _jsx(_components.li, {
|
|
1696
1697
|
children: "Real-time activity feeds showing what's executing"
|
|
@@ -1712,7 +1713,7 @@ function _createMdxContent(props) {
|
|
|
1712
1713
|
children: "Principle:"
|
|
1713
1714
|
}), " Humans must approve important actions before execution."]
|
|
1714
1715
|
}), "\\n", _jsx(_components.p, {
|
|
1715
|
-
children: "AI should handle the grunt work. But critical decisions \
|
|
1716
|
+
children: "AI should handle the grunt work. But critical decisions \xE2\u20AC\u201D sending emails to prospects, updating customer records, publishing content \xE2\u20AC\u201D require human approval."
|
|
1716
1717
|
}), "\\n", _jsxs(_components.ul, {
|
|
1717
1718
|
children: ["\\n", _jsx(_components.li, {
|
|
1718
1719
|
children: "AI researches 50 prospects and drafts personalized emails"
|
|
@@ -2231,7 +2232,7 @@ function _createMdxContent(props) {
|
|
|
2231
2232
|
}), "\\n", _jsx(_components.pre, {
|
|
2232
2233
|
children: _jsx(_components.code, {
|
|
2233
2234
|
className: "language-text",
|
|
2234
|
-
children: "q{NN}-{slug}.mdx\\ncandidate-{slug}.mdx\\nsummary.mdx\\n"
|
|
2235
|
+
children: "q{NN}-{slug}.mdx\\r\\ncandidate-{slug}.mdx\\r\\nsummary.mdx\\n"
|
|
2235
2236
|
})
|
|
2236
2237
|
}), "\\n", _jsxs(_components.p, {
|
|
2237
2238
|
children: ["Use active-query filenames such as ", _jsx(_components.code, {
|
|
@@ -3242,7 +3243,7 @@ function _createMdxContent(props) {
|
|
|
3242
3243
|
}), "\\n", _jsx(_components.pre, {
|
|
3243
3244
|
children: _jsx(_components.code, {
|
|
3244
3245
|
className: "language-text",
|
|
3245
|
-
children: "Video: 1920x1080, 60fps, NV12, Rec. 709 Partial\\nEncode: NVENC H.264, CQP 18, P5 preset, High profile\\nFormat: MKV with automatic remux to MP4\\nAudio: 48 kHz stereo, 320 kbps AAC, mixed plus mic-only tracks\\nCamera: Insta360 Link 2C at 1080p60 with circle mask\\nScenes: Face + Screen on F5, Screen Only on F6\\n"
|
|
3246
|
+
children: "Video: 1920x1080, 60fps, NV12, Rec. 709 Partial\\r\\nEncode: NVENC H.264, CQP 18, P5 preset, High profile\\r\\nFormat: MKV with automatic remux to MP4\\r\\nAudio: 48 kHz stereo, 320 kbps AAC, mixed plus mic-only tracks\\r\\nCamera: Insta360 Link 2C at 1080p60 with circle mask\\r\\nScenes: Face + Screen on F5, Screen Only on F6\\n"
|
|
3246
3247
|
})
|
|
3247
3248
|
}), "\\n", _jsx(_components.p, {
|
|
3248
3249
|
children: "Prefer 1080p60 over 4K30 for screen recordings. Smooth cursor motion, scrolling, typing, and app transitions matter more than pixel density, and most viewers watch at 1080p or below. 4K30 produces larger files, slower editing, and visibly choppier screen motion."
|
|
@@ -3264,7 +3265,7 @@ function _createMdxContent(props) {
|
|
|
3264
3265
|
}), "\\n", _jsx(_components.pre, {
|
|
3265
3266
|
children: _jsx(_components.code, {
|
|
3266
3267
|
className: "language-text",
|
|
3267
|
-
children: "Settings > Output > Output Mode: Advanced\\nRecording Tab:\\n Type: Standard\\n Recording Format: mkv\\n Encoder: NVIDIA NVENC H.264\\n Rate Control: CQP\\n CQ Level: 18\\n Keyframe Interval: 2\\n Preset: P5 (Slow)\\n Profile: high\\n Look-ahead: checked\\n Psycho Visual Tuning: checked\\n Max B-frames: 2\\n"
|
|
3268
|
+
children: "Settings > Output > Output Mode: Advanced\\r\\nRecording Tab:\\r\\n Type: Standard\\r\\n Recording Format: mkv\\r\\n Encoder: NVIDIA NVENC H.264\\r\\n Rate Control: CQP\\r\\n CQ Level: 18\\r\\n Keyframe Interval: 2\\r\\n Preset: P5 (Slow)\\r\\n Profile: high\\r\\n Look-ahead: checked\\r\\n Psycho Visual Tuning: checked\\r\\n Max B-frames: 2\\n"
|
|
3268
3269
|
})
|
|
3269
3270
|
}), "\\n", _jsx(_components.p, {
|
|
3270
3271
|
children: "CQP 18 is the stable quality target for screen content. It is visually lossless for this use case and gives YouTube a high-quality source before its VP9 or AV1 re-encode."
|
|
@@ -3285,7 +3286,7 @@ function _createMdxContent(props) {
|
|
|
3285
3286
|
}), "\\n", _jsx(_components.pre, {
|
|
3286
3287
|
children: _jsx(_components.code, {
|
|
3287
3288
|
className: "language-text",
|
|
3288
|
-
children: "Output > Advanced > Audio:\\n Track 1: 320 kbps\\n Track 2: 320 kbps\\n"
|
|
3289
|
+
children: "Output > Advanced > Audio:\\r\\n Track 1: 320 kbps\\r\\n Track 2: 320 kbps\\n"
|
|
3289
3290
|
})
|
|
3290
3291
|
}), "\\n", _jsx(_components.h2, {
|
|
3291
3292
|
children: "Video Settings"
|
|
@@ -3294,14 +3295,14 @@ function _createMdxContent(props) {
|
|
|
3294
3295
|
}), "\\n", _jsx(_components.pre, {
|
|
3295
3296
|
children: _jsx(_components.code, {
|
|
3296
3297
|
className: "language-text",
|
|
3297
|
-
children: "Settings > Video:\\n Base (Canvas) Resolution: 1920x1080\\n Output (Scaled) Resolution: 1920x1080\\n Downscale Filter: Lanczos (36 samples)\\n Common FPS Values: 60\\n"
|
|
3298
|
+
children: "Settings > Video:\\r\\n Base (Canvas) Resolution: 1920x1080\\r\\n Output (Scaled) Resolution: 1920x1080\\r\\n Downscale Filter: Lanczos (36 samples)\\r\\n Common FPS Values: 60\\n"
|
|
3298
3299
|
})
|
|
3299
3300
|
}), "\\n", _jsx(_components.p, {
|
|
3300
3301
|
children: "Use Rec. 709 limited-range color:"
|
|
3301
3302
|
}), "\\n", _jsx(_components.pre, {
|
|
3302
3303
|
children: _jsx(_components.code, {
|
|
3303
3304
|
className: "language-text",
|
|
3304
|
-
children: "Settings > Advanced:\\n Color Format: NV12\\n Color Space: 709\\n Color Range: Partial\\n"
|
|
3305
|
+
children: "Settings > Advanced:\\r\\n Color Format: NV12\\r\\n Color Space: 709\\r\\n Color Range: Partial\\n"
|
|
3305
3306
|
})
|
|
3306
3307
|
}), "\\n", _jsx(_components.p, {
|
|
3307
3308
|
children: "YouTube expects Rec. 709 limited range. Full range can produce washed-out or overly contrasty results after processing."
|
|
@@ -3340,7 +3341,7 @@ function _createMdxContent(props) {
|
|
|
3340
3341
|
}), "\\n", _jsx(_components.pre, {
|
|
3341
3342
|
children: _jsx(_components.code, {
|
|
3342
3343
|
className: "language-text",
|
|
3343
|
-
children: "Settings > Audio:\\n Sample Rate: 48 kHz\\n Channels: Stereo\\n Desktop Audio: Default\\n Mic/Auxiliary Audio: Focusrite USB Audio (Scarlett 2i2)\\n"
|
|
3344
|
+
children: "Settings > Audio:\\r\\n Sample Rate: 48 kHz\\r\\n Channels: Stereo\\r\\n Desktop Audio: Default\\r\\n Mic/Auxiliary Audio: Focusrite USB Audio (Scarlett 2i2)\\n"
|
|
3344
3345
|
})
|
|
3345
3346
|
}), "\\n", _jsx(_components.p, {
|
|
3346
3347
|
children: "Set the Focusrite input in Windows before recording:"
|
|
@@ -3419,7 +3420,7 @@ function _createMdxContent(props) {
|
|
|
3419
3420
|
}), "\\n", _jsx(_components.pre, {
|
|
3420
3421
|
children: _jsx(_components.code, {
|
|
3421
3422
|
className: "language-text",
|
|
3422
|
-
children: "Settings > Output > Advanced > Recording Tab:\\n Audio Track: check 1 and 2\\n"
|
|
3423
|
+
children: "Settings > Output > Advanced > Recording Tab:\\r\\n Audio Track: check 1 and 2\\n"
|
|
3423
3424
|
})
|
|
3424
3425
|
}), "\\n", _jsxs(_components.p, {
|
|
3425
3426
|
children: ["Route tracks in ", _jsx(_components.code, {
|
|
@@ -3484,7 +3485,7 @@ function _createMdxContent(props) {
|
|
|
3484
3485
|
}), "\\n", _jsx(_components.pre, {
|
|
3485
3486
|
children: _jsx(_components.code, {
|
|
3486
3487
|
className: "language-text",
|
|
3487
|
-
children: "Source: Display Capture\\nDisplay: Primary monitor\\nCapture Method: Windows 10 (1903 and later)\\nCapture Cursor: checked\\n"
|
|
3488
|
+
children: "Source: Display Capture\\r\\nDisplay: Primary monitor\\r\\nCapture Method: Windows 10 (1903 and later)\\r\\nCapture Cursor: checked\\n"
|
|
3488
3489
|
})
|
|
3489
3490
|
}), "\\n", _jsx(_components.p, {
|
|
3490
3491
|
children: "Apply the ultrawide crop to this source when recording from the 3440x1440 monitor."
|
|
@@ -3493,7 +3494,7 @@ function _createMdxContent(props) {
|
|
|
3493
3494
|
}), "\\n", _jsx(_components.pre, {
|
|
3494
3495
|
children: _jsx(_components.code, {
|
|
3495
3496
|
className: "language-text",
|
|
3496
|
-
children: "Device: Insta360 Link 2C\\nResolution: 1920x1080\\nFPS: 60\\nVideo Format: MJPEG or default\\n"
|
|
3497
|
+
children: "Device: Insta360 Link 2C\\r\\nResolution: 1920x1080\\r\\nFPS: 60\\r\\nVideo Format: MJPEG or default\\n"
|
|
3497
3498
|
})
|
|
3498
3499
|
}), "\\n", _jsx(_components.p, {
|
|
3499
3500
|
children: "Create a 512x512 PNG with a white circle on a black background and store it permanently, for example:"
|
|
@@ -3507,7 +3508,7 @@ function _createMdxContent(props) {
|
|
|
3507
3508
|
}), "\\n", _jsx(_components.pre, {
|
|
3508
3509
|
children: _jsx(_components.code, {
|
|
3509
3510
|
className: "language-text",
|
|
3510
|
-
children: "Filters > Image Mask/Blend:\\n Type: Alpha Mask (Colour Channel)\\n Path: E:\\\\OBS\\\\circle-mask.png\\n"
|
|
3511
|
+
children: "Filters > Image Mask/Blend:\\r\\n Type: Alpha Mask (Colour Channel)\\r\\n Path: E:\\\\OBS\\\\circle-mask.png\\n"
|
|
3511
3512
|
})
|
|
3512
3513
|
}), "\\n", _jsx(_components.p, {
|
|
3513
3514
|
children: "Resize the facecam source to roughly 300-400 px diameter and place it in a lower corner."
|
|
@@ -3524,7 +3525,7 @@ function _createMdxContent(props) {
|
|
|
3524
3525
|
}), "\\n", _jsx(_components.pre, {
|
|
3525
3526
|
children: _jsx(_components.code, {
|
|
3526
3527
|
className: "language-text",
|
|
3527
|
-
children: "Settings > Hotkeys:\\n Switch to Scene \\"Face + Screen\\": F5\\n Switch to Scene \\"Screen Only\\": F6\\n Start Recording: Ctrl+F9\\n Stop Recording: Ctrl+F10\\n"
|
|
3528
|
+
children: "Settings > Hotkeys:\\r\\n Switch to Scene \\"Face + Screen\\": F5\\r\\n Switch to Scene \\"Screen Only\\": F6\\r\\n Start Recording: Ctrl+F9\\r\\n Stop Recording: Ctrl+F10\\n"
|
|
3528
3529
|
})
|
|
3529
3530
|
}), "\\n", _jsx(_components.p, {
|
|
3530
3531
|
children: "Avoid hotkeys that collide with the app being recorded. If using F5 inside a browser-heavy recording, choose a different key because F5 refreshes the page."
|
|
@@ -3946,29 +3947,25 @@ function _createMdxContent(props) {
|
|
|
3946
3947
|
}), " field links the entity to a state catalog. The graph builder uses this to project event nodes for each state transition:"]
|
|
3947
3948
|
}), "\\n", _jsxs(_components.ul, {
|
|
3948
3949
|
children: ["\\n", _jsxs(_components.li, {
|
|
3949
|
-
children: ["For general status catalogs, the builder walks ", _jsx(_components.code, {
|
|
3950
|
-
children: "OM.statuses"
|
|
3951
|
-
}), " entries whose ", _jsx(_components.code, {
|
|
3952
|
-
children: "semanticClass"
|
|
3953
|
-
}), " matches the catalog ID."]
|
|
3954
|
-
}), "\\n", _jsxs(_components.li, {
|
|
3955
3950
|
children: ["For ", _jsx(_components.code, {
|
|
3956
3951
|
children: "crm.pipeline"
|
|
3957
|
-
}), ", the builder
|
|
3958
|
-
children: "OM.sales"
|
|
3959
|
-
}), "."]
|
|
3952
|
+
}), ", the builder walks pipeline content via the pipeline migration helper."]
|
|
3960
3953
|
}), "\\n", _jsxs(_components.li, {
|
|
3961
3954
|
children: ["For ", _jsx(_components.code, {
|
|
3962
3955
|
children: "delivery.task"
|
|
3963
|
-
}), ", the builder walks task
|
|
3964
|
-
children: "OM.projects"
|
|
3965
|
-
}), "."]
|
|
3956
|
+
}), ", the builder walks project task status content via the project-status helper."]
|
|
3966
3957
|
}), "\\n", _jsxs(_components.li, {
|
|
3967
3958
|
children: ["For ", _jsx(_components.code, {
|
|
3968
3959
|
children: "lead-gen.company"
|
|
3969
3960
|
}), " and ", _jsx(_components.code, {
|
|
3970
3961
|
children: "lead-gen.contact"
|
|
3971
3962
|
}), ", the builder walks the lead-gen stage catalog."]
|
|
3963
|
+
}), "\\n", _jsxs(_components.li, {
|
|
3964
|
+
children: ["General status catalogs now live in ", _jsx(_components.code, {
|
|
3965
|
+
children: "System.content"
|
|
3966
|
+
}), "; direct ", _jsx(_components.code, {
|
|
3967
|
+
children: "OM.statuses"
|
|
3968
|
+
}), " reads are legacy."]
|
|
3972
3969
|
}), "\\n"]
|
|
3973
3970
|
}), "\\n", _jsxs(_components.p, {
|
|
3974
3971
|
children: ["Each matching status or stage generates an ", _jsx(_components.code, {
|
|
@@ -4133,7 +4130,7 @@ function _createMdxContent(props) {
|
|
|
4133
4130
|
}), "\\n", _jsxs(_components.li, {
|
|
4134
4131
|
children: ["To change an entity state-transition event, update the entity's ", _jsx(_components.code, {
|
|
4135
4132
|
children: "stateCatalogId"
|
|
4136
|
-
}), " or the underlying status/stage entry
|
|
4133
|
+
}), " or the underlying status/stage content entry on the owning System."]
|
|
4137
4134
|
}), "\\n"]
|
|
4138
4135
|
}), "\\n", _jsxs(_components.p, {
|
|
4139
4136
|
children: ["The graph builder projects these into ", _jsx(_components.code, {
|
|
@@ -4267,29 +4264,23 @@ function _createMdxContent(props) {
|
|
|
4267
4264
|
children: ["\\n", _jsxs(_components.li, {
|
|
4268
4265
|
children: [_jsx(_components.strong, {
|
|
4269
4266
|
children: "General status catalogs"
|
|
4270
|
-
}), ":
|
|
4267
|
+
}), ": status data now lives in ", _jsx(_components.code, {
|
|
4268
|
+
children: "System.content"
|
|
4269
|
+
}), "; direct ", _jsx(_components.code, {
|
|
4271
4270
|
children: "OM.statuses"
|
|
4272
|
-
}), "
|
|
4273
|
-
children: "semanticClass"
|
|
4274
|
-
}), " matches the entity's ", _jsx(_components.code, {
|
|
4275
|
-
children: "stateCatalogId"
|
|
4276
|
-
}), "."]
|
|
4271
|
+
}), " reads are legacy."]
|
|
4277
4272
|
}), "\\n", _jsxs(_components.li, {
|
|
4278
4273
|
children: [_jsx(_components.strong, {
|
|
4279
4274
|
children: _jsx(_components.code, {
|
|
4280
4275
|
children: "crm.pipeline"
|
|
4281
4276
|
})
|
|
4282
|
-
}), ":
|
|
4283
|
-
children: "OM.sales"
|
|
4284
|
-
}), " that reference the entity."]
|
|
4277
|
+
}), ": walks pipeline content via the pipeline migration helper."]
|
|
4285
4278
|
}), "\\n", _jsxs(_components.li, {
|
|
4286
4279
|
children: [_jsx(_components.strong, {
|
|
4287
4280
|
children: _jsx(_components.code, {
|
|
4288
4281
|
children: "delivery.task"
|
|
4289
4282
|
})
|
|
4290
|
-
}), ":
|
|
4291
|
-
children: "OM.projects"
|
|
4292
|
-
}), "."]
|
|
4283
|
+
}), ": walks project task status content via the project-status helper."]
|
|
4293
4284
|
}), "\\n", _jsxs(_components.li, {
|
|
4294
4285
|
children: [_jsxs(_components.strong, {
|
|
4295
4286
|
children: [_jsx(_components.code, {
|
|
@@ -4532,13 +4523,13 @@ function _createMdxContent(props) {
|
|
|
4532
4523
|
}), "\\n", _jsxs(_components.p, {
|
|
4533
4524
|
children: ["Source schema: ", _jsx(_components.code, {
|
|
4534
4525
|
children: "packages/core/src/organization-model/graph/schema.ts"
|
|
4535
|
-
}), "\\nProjection logic: ", _jsx(_components.code, {
|
|
4526
|
+
}), "\\r\\nProjection logic: ", _jsx(_components.code, {
|
|
4536
4527
|
children: "packages/core/src/organization-model/graph/build.ts"
|
|
4537
4528
|
})]
|
|
4538
4529
|
}), "\\n", _jsx(_components.h2, {
|
|
4539
4530
|
children: "Node Kinds"
|
|
4540
4531
|
}), "\\n", _jsx(_components.p, {
|
|
4541
|
-
children: "
|
|
4532
|
+
children: "The graph vocabulary includes authored semantic nodes and projected operational/navigation nodes."
|
|
4542
4533
|
}), "\\n", _jsxs(_components.table, {
|
|
4543
4534
|
children: [_jsx(_components.thead, {
|
|
4544
4535
|
children: _jsxs(_components.tr, {
|
|
@@ -4643,9 +4634,9 @@ function _createMdxContent(props) {
|
|
|
4643
4634
|
}), _jsx(_components.td, {
|
|
4644
4635
|
children: "Projected"
|
|
4645
4636
|
}), _jsxs(_components.td, {
|
|
4646
|
-
children: ["Derived from ", _jsx(_components.code, {
|
|
4647
|
-
children: "
|
|
4648
|
-
}), "
|
|
4637
|
+
children: ["Derived from prospecting stage helpers over ", _jsx(_components.code, {
|
|
4638
|
+
children: "System.content"
|
|
4639
|
+
}), " and compatibility catalogs"]
|
|
4649
4640
|
})]
|
|
4650
4641
|
}), _jsxs(_components.tr, {
|
|
4651
4642
|
children: [_jsx(_components.td, {
|
|
@@ -4668,8 +4659,86 @@ function _createMdxContent(props) {
|
|
|
4668
4659
|
children: "Authored"
|
|
4669
4660
|
}), _jsxs(_components.td, {
|
|
4670
4661
|
children: [_jsx(_components.code, {
|
|
4671
|
-
children: "OM.knowledge
|
|
4672
|
-
}), "
|
|
4662
|
+
children: "OM.knowledge"
|
|
4663
|
+
}), " id-keyed map"]
|
|
4664
|
+
})]
|
|
4665
|
+
}), _jsxs(_components.tr, {
|
|
4666
|
+
children: [_jsx(_components.td, {
|
|
4667
|
+
children: _jsx(_components.code, {
|
|
4668
|
+
children: "customer-segment"
|
|
4669
|
+
})
|
|
4670
|
+
}), _jsx(_components.td, {
|
|
4671
|
+
children: "Authored"
|
|
4672
|
+
}), _jsxs(_components.td, {
|
|
4673
|
+
children: [_jsx(_components.code, {
|
|
4674
|
+
children: "OM.customers"
|
|
4675
|
+
}), " domain map"]
|
|
4676
|
+
})]
|
|
4677
|
+
}), _jsxs(_components.tr, {
|
|
4678
|
+
children: [_jsx(_components.td, {
|
|
4679
|
+
children: _jsx(_components.code, {
|
|
4680
|
+
children: "offering"
|
|
4681
|
+
})
|
|
4682
|
+
}), _jsx(_components.td, {
|
|
4683
|
+
children: "Authored"
|
|
4684
|
+
}), _jsxs(_components.td, {
|
|
4685
|
+
children: [_jsx(_components.code, {
|
|
4686
|
+
children: "OM.offerings"
|
|
4687
|
+
}), " domain map"]
|
|
4688
|
+
})]
|
|
4689
|
+
}), _jsxs(_components.tr, {
|
|
4690
|
+
children: [_jsx(_components.td, {
|
|
4691
|
+
children: _jsx(_components.code, {
|
|
4692
|
+
children: "goal"
|
|
4693
|
+
})
|
|
4694
|
+
}), _jsx(_components.td, {
|
|
4695
|
+
children: "Authored"
|
|
4696
|
+
}), _jsxs(_components.td, {
|
|
4697
|
+
children: [_jsx(_components.code, {
|
|
4698
|
+
children: "OM.goals"
|
|
4699
|
+
}), " domain map"]
|
|
4700
|
+
})]
|
|
4701
|
+
}), _jsxs(_components.tr, {
|
|
4702
|
+
children: [_jsx(_components.td, {
|
|
4703
|
+
children: _jsx(_components.code, {
|
|
4704
|
+
children: "surface"
|
|
4705
|
+
})
|
|
4706
|
+
}), _jsx(_components.td, {
|
|
4707
|
+
children: "Projected"
|
|
4708
|
+
}), _jsxs(_components.td, {
|
|
4709
|
+
children: ["Routeable leaves from ", _jsx(_components.code, {
|
|
4710
|
+
children: "OM.navigation.sidebar"
|
|
4711
|
+
})]
|
|
4712
|
+
})]
|
|
4713
|
+
}), _jsxs(_components.tr, {
|
|
4714
|
+
children: [_jsx(_components.td, {
|
|
4715
|
+
children: _jsx(_components.code, {
|
|
4716
|
+
children: "navigation-group"
|
|
4717
|
+
})
|
|
4718
|
+
}), _jsx(_components.td, {
|
|
4719
|
+
children: "Projected"
|
|
4720
|
+
}), _jsxs(_components.td, {
|
|
4721
|
+
children: ["Groups from ", _jsx(_components.code, {
|
|
4722
|
+
children: "OM.navigation.sidebar"
|
|
4723
|
+
})]
|
|
4724
|
+
})]
|
|
4725
|
+
}), _jsxs(_components.tr, {
|
|
4726
|
+
children: [_jsx(_components.td, {
|
|
4727
|
+
children: _jsx(_components.code, {
|
|
4728
|
+
children: "content-node"
|
|
4729
|
+
})
|
|
4730
|
+
}), _jsx(_components.td, {
|
|
4731
|
+
children: "Authored on System, projected to graph"
|
|
4732
|
+
}), _jsxs(_components.td, {
|
|
4733
|
+
children: [_jsx(_components.code, {
|
|
4734
|
+
children: "System.content"
|
|
4735
|
+
}), " entries such as ", _jsx(_components.code, {
|
|
4736
|
+
children: "schema:pipeline"
|
|
4737
|
+
}), ", ", _jsx(_components.code, {
|
|
4738
|
+
children: "schema:stage"
|
|
4739
|
+
}), ", and ", _jsx(_components.code, {
|
|
4740
|
+
children: "config:kv"
|
|
4741
|
+
})]
|
|
4673
4742
|
})]
|
|
4674
4743
|
})]
|
|
4675
4744
|
})]
|
|
@@ -4894,7 +4963,9 @@ function _createMdxContent(props) {
|
|
|
4894
4963
|
}), "\\n", _jsx(_components.h3, {
|
|
4895
4964
|
children: "Authored nodes"
|
|
4896
4965
|
}), "\\n", _jsxs(_components.p, {
|
|
4897
|
-
children: ["System, role, action, entity, policy, resource, and
|
|
4966
|
+
children: ["System, role, action, entity, policy, resource, knowledge, customer-segment, offering, and goal nodes are authored in the OM domain maps. Content nodes are authored inside ", _jsx(_components.code, {
|
|
4967
|
+
children: "System.content"
|
|
4968
|
+
}), " and projected with qualified graph IDs. Their ", _jsx(_components.code, {
|
|
4898
4969
|
children: "id"
|
|
4899
4970
|
}), ", ", _jsx(_components.code, {
|
|
4900
4971
|
children: "label"
|
|
@@ -4919,14 +4990,18 @@ function _createMdxContent(props) {
|
|
|
4919
4990
|
children: "resource.emits"
|
|
4920
4991
|
}), " declarations on workflow and agent resources. Entity events come from the entity's ", _jsx(_components.code, {
|
|
4921
4992
|
children: "stateCatalogId"
|
|
4922
|
-
}), " -- the builder walks
|
|
4993
|
+
}), " -- the builder walks compatible pipeline, project-status, or lead-gen stage helpers to generate one event node per transition."]
|
|
4923
4994
|
}), "\\n", _jsxs(_components.li, {
|
|
4924
4995
|
children: [_jsx(_components.strong, {
|
|
4925
4996
|
children: "Stage nodes"
|
|
4997
|
+
}), ": derived from prospecting stage helpers over current ", _jsx(_components.code, {
|
|
4998
|
+
children: "System.content"
|
|
4999
|
+
}), " and compatibility catalogs."]
|
|
5000
|
+
}), "\\n", _jsxs(_components.li, {
|
|
5001
|
+
children: [_jsx(_components.strong, {
|
|
5002
|
+
children: "Surface and navigation-group nodes"
|
|
4926
5003
|
}), ": derived from ", _jsx(_components.code, {
|
|
4927
|
-
children: "
|
|
4928
|
-
}), " and ", _jsx(_components.code, {
|
|
4929
|
-
children: "OM.prospecting.contactStages"
|
|
5004
|
+
children: "navigation.sidebar"
|
|
4930
5005
|
}), "."]
|
|
4931
5006
|
}), "\\n"]
|
|
4932
5007
|
}), "\\n", _jsxs(_components.p, {
|
|
@@ -5505,7 +5580,7 @@ function _createMdxContent(props) {
|
|
|
5505
5580
|
}), "\\n", _jsx(_components.pre, {
|
|
5506
5581
|
children: _jsx(_components.code, {
|
|
5507
5582
|
className: "language-text",
|
|
5508
|
-
children: "Trigger to Agent\\n |- Tool: Integration A\\n |- Tool: Integration B\\n |- Tool: Workflow 1 via resource invocation\\n \`- Tool: Workflow 2 via resource invocation\\n"
|
|
5583
|
+
children: "Trigger to Agent\\r\\n |- Tool: Integration A\\r\\n |- Tool: Integration B\\r\\n |- Tool: Workflow 1 via resource invocation\\r\\n \`- Tool: Workflow 2 via resource invocation\\n"
|
|
5509
5584
|
})
|
|
5510
5585
|
}), "\\n", _jsx(_components.p, {
|
|
5511
5586
|
children: "Use this pattern for ambiguous goals, dynamic decision-making, multi-turn conversations, and business logic that requires judgment."
|
|
@@ -5542,7 +5617,7 @@ function _createMdxContent(props) {
|
|
|
5542
5617
|
}), "\\n", _jsx(_components.pre, {
|
|
5543
5618
|
children: _jsx(_components.code, {
|
|
5544
5619
|
className: "language-text",
|
|
5545
|
-
children: "Trigger to Workflow\\n |- Step 1: Integration A reads data\\n |- Step 2: Agent processes or reasons\\n |- Step 3: Integration B writes result\\n \`- Step 4: Conditional routing\\n"
|
|
5620
|
+
children: "Trigger to Workflow\\r\\n |- Step 1: Integration A reads data\\r\\n |- Step 2: Agent processes or reasons\\r\\n |- Step 3: Integration B writes result\\r\\n \`- Step 4: Conditional routing\\n"
|
|
5546
5621
|
})
|
|
5547
5622
|
}), "\\n", _jsx(_components.p, {
|
|
5548
5623
|
children: "Use this pattern for predictable sequences, data transformation pipelines, integration orchestration, and fixed business logic."
|
|
@@ -5577,7 +5652,7 @@ function _createMdxContent(props) {
|
|
|
5577
5652
|
}), "\\n", _jsx(_components.pre, {
|
|
5578
5653
|
children: _jsx(_components.code, {
|
|
5579
5654
|
className: "language-text",
|
|
5580
|
-
children: "Trigger to Agent decides what to do\\n |- Invokes: Workflow A\\n |- Invokes: Workflow B\\n \`- Uses: Integration C directly\\n\\nWorkflow A:\\n |- Integration D reads\\n |- Agent processes a specific subtask\\n \`- Integration E writes\\n"
|
|
5655
|
+
children: "Trigger to Agent decides what to do\\r\\n |- Invokes: Workflow A\\r\\n |- Invokes: Workflow B\\r\\n \`- Uses: Integration C directly\\r\\n\\r\\nWorkflow A:\\r\\n |- Integration D reads\\r\\n |- Agent processes a specific subtask\\r\\n \`- Integration E writes\\n"
|
|
5581
5656
|
})
|
|
5582
5657
|
}), "\\n", _jsx(_components.p, {
|
|
5583
5658
|
children: "Use this pattern when the system needs variable paths, reasoning, reliability, and a mix of predictable and unpredictable steps."
|
|
@@ -5635,7 +5710,7 @@ function _createMdxContent(props) {
|
|
|
5635
5710
|
}), "\\n", _jsx(_components.pre, {
|
|
5636
5711
|
children: _jsx(_components.code, {
|
|
5637
5712
|
className: "language-text",
|
|
5638
|
-
children: "Trigger to Agent reasoning\\n |- Direct tool: read integration\\n |- Invoke tool: Workflow A\\n \`- Invoke tool: Workflow B\\n"
|
|
5713
|
+
children: "Trigger to Agent reasoning\\r\\n |- Direct tool: read integration\\r\\n |- Invoke tool: Workflow A\\r\\n \`- Invoke tool: Workflow B\\n"
|
|
5639
5714
|
})
|
|
5640
5715
|
}), "\\n", _jsx(_components.p, {
|
|
5641
5716
|
children: "Execution flow:"
|
|
@@ -5658,7 +5733,7 @@ function _createMdxContent(props) {
|
|
|
5658
5733
|
}), "\\n", _jsx(_components.pre, {
|
|
5659
5734
|
children: _jsx(_components.code, {
|
|
5660
5735
|
className: "language-text",
|
|
5661
|
-
children: "Trigger to Workflow\\n |- Step 1: Integration A reads\\n |- Step 2: Transform pure function\\n |- Step 3: Integration B writes\\n \`- Step 4: Notify\\n"
|
|
5736
|
+
children: "Trigger to Workflow\\r\\n |- Step 1: Integration A reads\\r\\n |- Step 2: Transform pure function\\r\\n |- Step 3: Integration B writes\\r\\n \`- Step 4: Notify\\n"
|
|
5662
5737
|
})
|
|
5663
5738
|
}), "\\n", _jsx(_components.p, {
|
|
5664
5739
|
children: "Use this pattern for predictable step sequences, data transformation pipelines, integration orchestration, and cost-sensitive work that does not need LLM reasoning."
|
|
@@ -5861,7 +5936,7 @@ function _createMdxContent(props) {
|
|
|
5861
5936
|
}), "\\n", _jsx(_components.pre, {
|
|
5862
5937
|
children: _jsx(_components.code, {
|
|
5863
5938
|
className: "language-typescript",
|
|
5864
|
-
children: "{\\n id: 'sync-to-crm',\\n handler: async ({ input, context }) => {\\n try {\\n return await crmClient.createContact(input)\\n } catch (error) {\\n if (error.code === 'DUPLICATE') {\\n return crmClient.updateContact(input)\\n }\\n\\n throw error\\n }\\n },\\n next: { type: 'linear', target: 'send-notification' }\\n}\\n"
|
|
5939
|
+
children: "{\\r\\n id: 'sync-to-crm',\\r\\n handler: async ({ input, context }) => {\\r\\n try {\\r\\n return await crmClient.createContact(input)\\r\\n } catch (error) {\\r\\n if (error.code === 'DUPLICATE') {\\r\\n return crmClient.updateContact(input)\\r\\n }\\r\\n\\r\\n throw error\\r\\n }\\r\\n },\\r\\n next: { type: 'linear', target: 'send-notification' }\\r\\n}\\n"
|
|
5865
5940
|
})
|
|
5866
5941
|
}), "\\n", _jsx(_components.h3, {
|
|
5867
5942
|
children: "Security"
|
|
@@ -6090,14 +6165,14 @@ function _createMdxContent(props) {
|
|
|
6090
6165
|
}), "\\n", _jsx(_components.pre, {
|
|
6091
6166
|
children: _jsx(_components.code, {
|
|
6092
6167
|
className: "language-typescript",
|
|
6093
|
-
children: "const salesTool = createAttioCreateRecordTool('attio-sales')\\nconst supportTool = createAttioCreateRecordTool('attio-support')\\n"
|
|
6168
|
+
children: "const salesTool = createAttioCreateRecordTool('attio-sales')\\r\\nconst supportTool = createAttioCreateRecordTool('attio-support')\\n"
|
|
6094
6169
|
})
|
|
6095
6170
|
}), "\\n", _jsx(_components.p, {
|
|
6096
6171
|
children: "Disambiguate multi-account tools with explicit tool names:"
|
|
6097
6172
|
}), "\\n", _jsx(_components.pre, {
|
|
6098
6173
|
children: _jsx(_components.code, {
|
|
6099
6174
|
className: "language-typescript",
|
|
6100
|
-
children: "const tool = createAttioToolNamed(\\n 'attio_sales_create_record',\\n 'attio-sales',\\n 'createRecord'\\n)\\n"
|
|
6175
|
+
children: "const tool = createAttioToolNamed(\\r\\n 'attio_sales_create_record',\\r\\n 'attio-sales',\\r\\n 'createRecord'\\r\\n)\\n"
|
|
6101
6176
|
})
|
|
6102
6177
|
}), "\\n", _jsx(_components.h2, {
|
|
6103
6178
|
children: "Authentication Patterns"
|
|
@@ -6174,7 +6249,7 @@ function _createMdxContent(props) {
|
|
|
6174
6249
|
}), "\\n", _jsx(_components.pre, {
|
|
6175
6250
|
children: _jsx(_components.code, {
|
|
6176
6251
|
className: "language-typescript",
|
|
6177
|
-
children: "interface OAuthToken {\\n provider: string\\n accessToken: string\\n refreshToken: string\\n expiresAt: string\\n tokenType: 'Bearer'\\n scope?: string\\n}\\n"
|
|
6252
|
+
children: "interface OAuthToken {\\r\\n provider: string\\r\\n accessToken: string\\r\\n refreshToken: string\\r\\n expiresAt: string\\r\\n tokenType: 'Bearer'\\r\\n scope?: string\\r\\n}\\n"
|
|
6178
6253
|
})
|
|
6179
6254
|
}), "\\n", _jsxs(_components.p, {
|
|
6180
6255
|
children: [_jsx(_components.code, {
|
|
@@ -6189,7 +6264,7 @@ function _createMdxContent(props) {
|
|
|
6189
6264
|
}), "\\n", _jsx(_components.pre, {
|
|
6190
6265
|
children: _jsx(_components.code, {
|
|
6191
6266
|
className: "language-typescript",
|
|
6192
|
-
children: "interface APIKeyCredentials {\\n apiKey: string\\n}\\n"
|
|
6267
|
+
children: "interface APIKeyCredentials {\\r\\n apiKey: string\\r\\n}\\n"
|
|
6193
6268
|
})
|
|
6194
6269
|
}), "\\n", _jsx(_components.p, {
|
|
6195
6270
|
children: "Provider-specific validation belongs in the adapter. For Attio, see:"
|
|
@@ -6840,7 +6915,7 @@ var KIND_CHIP_TONE_STYLES = {
|
|
|
6840
6915
|
subtle: {
|
|
6841
6916
|
backgroundColor: "var(--color-surface-hover)",
|
|
6842
6917
|
borderColor: "var(--color-border)",
|
|
6843
|
-
color: "var(--color-text-
|
|
6918
|
+
color: "var(--color-text-subtle)"
|
|
6844
6919
|
},
|
|
6845
6920
|
primary: {
|
|
6846
6921
|
backgroundColor: "var(--surface-primary-subtle)",
|
|
@@ -6894,22 +6969,14 @@ function NodeHeader({
|
|
|
6894
6969
|
}) {
|
|
6895
6970
|
return /* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
|
|
6896
6971
|
/* @__PURE__ */ jsxs(Group, { gap: "xs", align: "flex-start", wrap: "nowrap", children: [
|
|
6897
|
-
iconToken && /* @__PURE__ */ jsx(
|
|
6898
|
-
SemanticIcon,
|
|
6899
|
-
{
|
|
6900
|
-
token: iconToken,
|
|
6901
|
-
fallbackKind: "knowledge",
|
|
6902
|
-
size: 22,
|
|
6903
|
-
style: { color: "var(--color-primary)", marginTop: 5 }
|
|
6904
|
-
}
|
|
6905
|
-
),
|
|
6972
|
+
iconToken && /* @__PURE__ */ jsx(SemanticIcon, { token: iconToken, size: 22, style: { color: "var(--color-primary)", marginTop: 5 } }),
|
|
6906
6973
|
/* @__PURE__ */ jsx(Title, { order: 3, style: { flex: 1, minWidth: 0, color: "var(--color-text)" }, children: title }),
|
|
6907
6974
|
/* @__PURE__ */ jsx(KindChip, { kind, tone, style: { flexShrink: 0, marginTop: 4 } }),
|
|
6908
6975
|
provenanceTag && /* @__PURE__ */ jsx(Badge, { variant: "light", size: "sm", style: { flexShrink: 0, marginTop: 4 }, children: provenanceTag }),
|
|
6909
6976
|
rightSection
|
|
6910
6977
|
] }),
|
|
6911
|
-
description && /* @__PURE__ */ jsx(Text, { size: "sm",
|
|
6912
|
-
updatedAt && /* @__PURE__ */ jsxs(Text, { size: "xs",
|
|
6978
|
+
description && /* @__PURE__ */ jsx(Text, { size: "sm", style: { color: "var(--color-text-subtle)", lineHeight: 1.5 }, children: description }),
|
|
6979
|
+
updatedAt && /* @__PURE__ */ jsxs(Text, { size: "xs", style: { color: "var(--color-text-subtle)", opacity: 0.7 }, children: [
|
|
6913
6980
|
"Updated ",
|
|
6914
6981
|
updatedAt
|
|
6915
6982
|
] })
|
|
@@ -6943,7 +7010,7 @@ function EdgeChip({ id, onClick }) {
|
|
|
6943
7010
|
}
|
|
6944
7011
|
function EdgeGroup({ label, ids, onNavigateToNode }) {
|
|
6945
7012
|
return /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
6946
|
-
/* @__PURE__ */ jsx(Text, { size: "xs",
|
|
7013
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 500, style: { color: "var(--color-text-subtle)" }, children: label }),
|
|
6947
7014
|
ids.map((id) => /* @__PURE__ */ jsx(EdgeChip, { id, onClick: onNavigateToNode ? () => onNavigateToNode(id) : void 0 }, id))
|
|
6948
7015
|
] });
|
|
6949
7016
|
}
|
|
@@ -6965,7 +7032,7 @@ function RelatedKnowledgeSection({
|
|
|
6965
7032
|
}).filter((card) => card !== null);
|
|
6966
7033
|
if (cards.length === 0) return null;
|
|
6967
7034
|
return /* @__PURE__ */ jsxs(Stack, { gap: "xs", "data-related-knowledge-section": true, children: [
|
|
6968
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 600, tt: "uppercase",
|
|
7035
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 600, tt: "uppercase", style: { color: "var(--color-text-subtle)", letterSpacing: "0.05em" }, children: "Governing Knowledge" }),
|
|
6969
7036
|
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: cards.map(({ graphNodeId, node }) => /* @__PURE__ */ jsx(
|
|
6970
7037
|
Box,
|
|
6971
7038
|
{
|
|
@@ -6990,7 +7057,6 @@ function RelatedKnowledgeSection({
|
|
|
6990
7057
|
SemanticIcon,
|
|
6991
7058
|
{
|
|
6992
7059
|
token: getKnowledgeIconToken(node),
|
|
6993
|
-
fallbackKind: node.kind,
|
|
6994
7060
|
size: 16,
|
|
6995
7061
|
style: { color: "var(--color-text-subtle)", marginTop: 1 }
|
|
6996
7062
|
}
|
|
@@ -6998,7 +7064,7 @@ function RelatedKnowledgeSection({
|
|
|
6998
7064
|
/* @__PURE__ */ jsx(Text, { size: "sm", fw: 600, style: { flex: 1, minWidth: 0, lineHeight: 1.35 }, children: node.title }),
|
|
6999
7065
|
/* @__PURE__ */ jsx(KindChip, { kind: node.kind, tone: "muted", style: { flexShrink: 0 } })
|
|
7000
7066
|
] }),
|
|
7001
|
-
/* @__PURE__ */ jsx(Text, { size: "xs",
|
|
7067
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", style: { color: "var(--color-text-subtle)", lineHeight: 1.45 }, children: node.summary })
|
|
7002
7068
|
] })
|
|
7003
7069
|
},
|
|
7004
7070
|
node.id
|
|
@@ -7055,7 +7121,7 @@ function EdgeRelationshipGroup({
|
|
|
7055
7121
|
if (!hasRelationships) return null;
|
|
7056
7122
|
return /* @__PURE__ */ jsxs(Stack, { gap: "xs", "data-edge-relationship-group": true, children: [
|
|
7057
7123
|
/* @__PURE__ */ jsx(Divider, {}),
|
|
7058
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 600, tt: "uppercase",
|
|
7124
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 600, tt: "uppercase", style: { color: "var(--color-text-subtle)", letterSpacing: "0.05em" }, children: "Relationships" }),
|
|
7059
7125
|
subSystems.length > 0 && /* @__PURE__ */ jsx(EdgeGroup, { label: `Sub-systems (${subSystems.length})`, ids: subSystems, onNavigateToNode }),
|
|
7060
7126
|
containedResources.length > 0 && /* @__PURE__ */ jsx(
|
|
7061
7127
|
EdgeGroup,
|
|
@@ -7239,7 +7305,7 @@ function NodeMetadataFooter({
|
|
|
7239
7305
|
component: "summary",
|
|
7240
7306
|
style: {
|
|
7241
7307
|
cursor: "pointer",
|
|
7242
|
-
color: "var(--color-text-
|
|
7308
|
+
color: "var(--color-text-subtle)",
|
|
7243
7309
|
fontSize: "var(--mantine-font-size-xs)",
|
|
7244
7310
|
fontWeight: 600,
|
|
7245
7311
|
letterSpacing: "0.05em",
|
|
@@ -7260,6 +7326,66 @@ function NodeMetadataFooter({
|
|
|
7260
7326
|
}
|
|
7261
7327
|
);
|
|
7262
7328
|
}
|
|
7329
|
+
function getKnowledgeCommand(nodeId) {
|
|
7330
|
+
return getKnowledgeNodeReadCommand(nodeId);
|
|
7331
|
+
}
|
|
7332
|
+
function KnowledgePageHeader({
|
|
7333
|
+
title,
|
|
7334
|
+
kind,
|
|
7335
|
+
tone,
|
|
7336
|
+
iconToken,
|
|
7337
|
+
description,
|
|
7338
|
+
updatedAt,
|
|
7339
|
+
provenanceTag,
|
|
7340
|
+
copyCommand,
|
|
7341
|
+
badges
|
|
7342
|
+
}) {
|
|
7343
|
+
const copyButton = copyCommand ? /* @__PURE__ */ jsx(CopyButton, { value: copyCommand, timeout: 2e3, children: ({ copied, copy }) => /* @__PURE__ */ jsx(Tooltip, { label: copied ? "Copied knowledge command" : "Copy knowledge command", withArrow: true, children: /* @__PURE__ */ jsx(
|
|
7344
|
+
ActionIcon,
|
|
7345
|
+
{
|
|
7346
|
+
"aria-label": "Copy knowledge command",
|
|
7347
|
+
onClick: copy,
|
|
7348
|
+
variant: "subtle",
|
|
7349
|
+
size: "sm",
|
|
7350
|
+
color: copied ? "green" : "var(--color-text-subtle)",
|
|
7351
|
+
style: { flexShrink: 0, marginTop: 2 },
|
|
7352
|
+
children: copied ? /* @__PURE__ */ jsx(IconCheck, { size: 14 }) : /* @__PURE__ */ jsx(IconCopy, { size: 14 })
|
|
7353
|
+
}
|
|
7354
|
+
) }) }) : void 0;
|
|
7355
|
+
return /* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
|
|
7356
|
+
/* @__PURE__ */ jsx(
|
|
7357
|
+
NodeHeader,
|
|
7358
|
+
{
|
|
7359
|
+
title,
|
|
7360
|
+
kind,
|
|
7361
|
+
tone,
|
|
7362
|
+
iconToken,
|
|
7363
|
+
description,
|
|
7364
|
+
updatedAt,
|
|
7365
|
+
provenanceTag,
|
|
7366
|
+
rightSection: copyButton
|
|
7367
|
+
}
|
|
7368
|
+
),
|
|
7369
|
+
badges
|
|
7370
|
+
] });
|
|
7371
|
+
}
|
|
7372
|
+
function DomainPanelFrame({ children }) {
|
|
7373
|
+
return /* @__PURE__ */ jsx(Box, { style: { width: "100%" }, children: /* @__PURE__ */ jsx(PageContainer, { children: /* @__PURE__ */ jsx(
|
|
7374
|
+
Paper,
|
|
7375
|
+
{
|
|
7376
|
+
withBorder: true,
|
|
7377
|
+
style: {
|
|
7378
|
+
minWidth: 0,
|
|
7379
|
+
width: "100%",
|
|
7380
|
+
maxWidth: 820,
|
|
7381
|
+
marginInline: "auto",
|
|
7382
|
+
background: "var(--glass-background)",
|
|
7383
|
+
borderColor: "var(--color-border)"
|
|
7384
|
+
},
|
|
7385
|
+
children
|
|
7386
|
+
}
|
|
7387
|
+
) }) });
|
|
7388
|
+
}
|
|
7263
7389
|
function NodeDescribeShell({ header, content, relationships, footer }) {
|
|
7264
7390
|
return /* @__PURE__ */ jsxs(Stack, { gap: "md", style: { padding: "var(--mantine-spacing-md)", width: "100%" }, children: [
|
|
7265
7391
|
header,
|
|
@@ -7273,7 +7399,7 @@ function NodeDescribeShell({ header, content, relationships, footer }) {
|
|
|
7273
7399
|
}
|
|
7274
7400
|
function KeyField({ label, value }) {
|
|
7275
7401
|
return /* @__PURE__ */ jsxs(Group, { gap: "xs", align: "baseline", children: [
|
|
7276
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 500,
|
|
7402
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 500, style: { minWidth: 96, color: "var(--color-text-subtle)" }, children: label }),
|
|
7277
7403
|
/* @__PURE__ */ jsx(Text, { size: "sm", style: { fontFamily: "var(--mantine-font-family-monospace)" }, children: value })
|
|
7278
7404
|
] });
|
|
7279
7405
|
}
|
|
@@ -7290,9 +7416,6 @@ function resolveKnowledgeGraphNode(graph, node) {
|
|
|
7290
7416
|
(graphNode) => graphNode.kind === "knowledge" && (graphNode.sourceId === node.id || graphNode.id === `knowledge:${node.id}`)
|
|
7291
7417
|
);
|
|
7292
7418
|
}
|
|
7293
|
-
function getKnowledgeCommand(nodeId) {
|
|
7294
|
-
return `/knowledge read ${nodeId.replace(/^knowledge:/, "")}`;
|
|
7295
|
-
}
|
|
7296
7419
|
function detectProvenanceTag(nodeId) {
|
|
7297
7420
|
if (nodeId in KNOWLEDGE_BODIES) return "MDX";
|
|
7298
7421
|
return "inline TS";
|
|
@@ -7318,7 +7441,7 @@ function KnowledgeNodeView({
|
|
|
7318
7441
|
const reinitializeTocRef = useRef(() => void 0);
|
|
7319
7442
|
const [scrollHost, setScrollHost] = useState();
|
|
7320
7443
|
const provenanceTag = detectProvenanceTag(node.id);
|
|
7321
|
-
const sourceFilePath =
|
|
7444
|
+
const sourceFilePath = node.sourceFilePath;
|
|
7322
7445
|
useEffect(() => {
|
|
7323
7446
|
setScrollHost(findScrollParent(rootRef.current));
|
|
7324
7447
|
}, []);
|
|
@@ -7326,6 +7449,31 @@ function KnowledgeNodeView({
|
|
|
7326
7449
|
const timer = window.setTimeout(() => reinitializeTocRef.current?.(), 0);
|
|
7327
7450
|
return () => window.clearTimeout(timer);
|
|
7328
7451
|
}, [node.id]);
|
|
7452
|
+
const ownersBlock = node.ownerIds.length > 0 ? /* @__PURE__ */ jsx(Group, { gap: "xs", wrap: "wrap", children: node.ownerIds.map((roleId) => {
|
|
7453
|
+
const graphNodeId = roleId.startsWith("role:") ? roleId : `role:${roleId}`;
|
|
7454
|
+
return /* @__PURE__ */ jsx(
|
|
7455
|
+
EdgeChip,
|
|
7456
|
+
{
|
|
7457
|
+
id: roleId,
|
|
7458
|
+
onClick: onNavigateToNode ? () => onNavigateToNode(graphNodeId) : void 0
|
|
7459
|
+
},
|
|
7460
|
+
roleId
|
|
7461
|
+
);
|
|
7462
|
+
}) }) : null;
|
|
7463
|
+
const externalUrlBlock = node.externalUrl ? /* @__PURE__ */ jsx(
|
|
7464
|
+
Button,
|
|
7465
|
+
{
|
|
7466
|
+
component: "a",
|
|
7467
|
+
href: node.externalUrl,
|
|
7468
|
+
target: "_blank",
|
|
7469
|
+
rel: "noopener noreferrer",
|
|
7470
|
+
variant: "subtle",
|
|
7471
|
+
size: "xs",
|
|
7472
|
+
leftSection: /* @__PURE__ */ jsx(IconExternalLink, { size: 14 }),
|
|
7473
|
+
style: { alignSelf: "flex-start" },
|
|
7474
|
+
children: "View full documentation"
|
|
7475
|
+
}
|
|
7476
|
+
) : null;
|
|
7329
7477
|
return /* @__PURE__ */ jsx(KnowledgeMDXProvider, { extraComponents, children: /* @__PURE__ */ jsx(Box, { ref: rootRef, style: { width: "100%" }, children: /* @__PURE__ */ jsx(PageContainer, { children: /* @__PURE__ */ jsxs(
|
|
7330
7478
|
Box,
|
|
7331
7479
|
{
|
|
@@ -7344,63 +7492,29 @@ function KnowledgeNodeView({
|
|
|
7344
7492
|
style: {
|
|
7345
7493
|
minWidth: 0,
|
|
7346
7494
|
flex: "1 1 0",
|
|
7347
|
-
maxWidth:
|
|
7495
|
+
maxWidth: 820,
|
|
7348
7496
|
background: "var(--glass-background)",
|
|
7349
7497
|
borderColor: "var(--color-border)"
|
|
7350
7498
|
},
|
|
7351
7499
|
children: /* @__PURE__ */ jsx(
|
|
7352
7500
|
NodeDescribeShell,
|
|
7353
7501
|
{
|
|
7354
|
-
header: /* @__PURE__ */
|
|
7355
|
-
|
|
7356
|
-
|
|
7357
|
-
|
|
7358
|
-
|
|
7359
|
-
|
|
7360
|
-
|
|
7361
|
-
|
|
7362
|
-
|
|
7363
|
-
|
|
7364
|
-
|
|
7365
|
-
|
|
7366
|
-
|
|
7367
|
-
|
|
7368
|
-
|
|
7369
|
-
|
|
7370
|
-
size: "sm",
|
|
7371
|
-
color: copied ? "green" : "var(--color-text-subtle)",
|
|
7372
|
-
style: { flexShrink: 0, marginTop: 2 },
|
|
7373
|
-
children: copied ? /* @__PURE__ */ jsx(IconCheck, { size: 14 }) : /* @__PURE__ */ jsx(IconCopy, { size: 14 })
|
|
7374
|
-
}
|
|
7375
|
-
) }) })
|
|
7376
|
-
}
|
|
7377
|
-
),
|
|
7378
|
-
node.ownerIds.length > 0 && /* @__PURE__ */ jsx(Group, { gap: "xs", wrap: "wrap", children: node.ownerIds.map((roleId) => {
|
|
7379
|
-
const graphNodeId = roleId.startsWith("role:") ? roleId : `role:${roleId}`;
|
|
7380
|
-
return /* @__PURE__ */ jsx(
|
|
7381
|
-
EdgeChip,
|
|
7382
|
-
{
|
|
7383
|
-
id: roleId,
|
|
7384
|
-
onClick: onNavigateToNode ? () => onNavigateToNode(graphNodeId) : void 0
|
|
7385
|
-
},
|
|
7386
|
-
roleId
|
|
7387
|
-
);
|
|
7388
|
-
}) }),
|
|
7389
|
-
node.externalUrl && /* @__PURE__ */ jsx(
|
|
7390
|
-
Button,
|
|
7391
|
-
{
|
|
7392
|
-
component: "a",
|
|
7393
|
-
href: node.externalUrl,
|
|
7394
|
-
target: "_blank",
|
|
7395
|
-
rel: "noopener noreferrer",
|
|
7396
|
-
variant: "subtle",
|
|
7397
|
-
size: "xs",
|
|
7398
|
-
leftSection: /* @__PURE__ */ jsx(IconExternalLink, { size: 14 }),
|
|
7399
|
-
style: { alignSelf: "flex-start" },
|
|
7400
|
-
children: "View full documentation"
|
|
7401
|
-
}
|
|
7402
|
-
)
|
|
7403
|
-
] }),
|
|
7502
|
+
header: /* @__PURE__ */ jsx(
|
|
7503
|
+
KnowledgePageHeader,
|
|
7504
|
+
{
|
|
7505
|
+
title: node.title,
|
|
7506
|
+
kind: node.kind,
|
|
7507
|
+
iconToken: getKnowledgeIconToken(node),
|
|
7508
|
+
description: node.summary,
|
|
7509
|
+
updatedAt: node.updatedAt,
|
|
7510
|
+
provenanceTag,
|
|
7511
|
+
copyCommand: getKnowledgeCommand(node.id),
|
|
7512
|
+
badges: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7513
|
+
ownersBlock,
|
|
7514
|
+
externalUrlBlock
|
|
7515
|
+
] })
|
|
7516
|
+
}
|
|
7517
|
+
),
|
|
7404
7518
|
content: /* @__PURE__ */ jsx(
|
|
7405
7519
|
Box,
|
|
7406
7520
|
{
|
|
@@ -7461,358 +7575,17 @@ function KnowledgeNodeView({
|
|
|
7461
7575
|
}
|
|
7462
7576
|
) }) }) });
|
|
7463
7577
|
}
|
|
7464
|
-
function
|
|
7465
|
-
|
|
7466
|
-
knowledgeNodes,
|
|
7467
|
-
initialNodeId,
|
|
7468
|
-
onNavigateToNode,
|
|
7469
|
-
onSelectNode
|
|
7470
|
-
}) {
|
|
7471
|
-
const selectedNode = useMemo(
|
|
7472
|
-
() => initialNodeId ? knowledgeNodes.find((n) => n.id === initialNodeId) ?? null : null,
|
|
7473
|
-
[initialNodeId, knowledgeNodes]
|
|
7474
|
-
);
|
|
7475
|
-
if (!selectedNode) {
|
|
7476
|
-
return /* @__PURE__ */ jsx(KnowledgeOverview, { graph, knowledgeNodes, onSelectNode });
|
|
7477
|
-
}
|
|
7478
|
-
return /* @__PURE__ */ jsx(KnowledgeNodeView, { node: selectedNode, graph, onNavigateToNode });
|
|
7479
|
-
}
|
|
7480
|
-
var ENTRY_NODE_IDS = [
|
|
7481
|
-
"knowledge.org-model-reference",
|
|
7482
|
-
"knowledge.org-model-graph-contract",
|
|
7483
|
-
"knowledge.org-model-actions",
|
|
7484
|
-
"knowledge.org-model-entities",
|
|
7485
|
-
"knowledge.org-model-events",
|
|
7486
|
-
"knowledge.org-model-policies",
|
|
7487
|
-
"knowledge.platform-command-view",
|
|
7488
|
-
"knowledge.platform-systems-overview",
|
|
7489
|
-
"knowledge.what-is-elevasis",
|
|
7490
|
-
"knowledge.understanding-elevasis"
|
|
7491
|
-
];
|
|
7492
|
-
function formatKindLabel(kind) {
|
|
7493
|
-
return kind.charAt(0).toUpperCase() + kind.slice(1);
|
|
7494
|
-
}
|
|
7495
|
-
function createKindCounts(nodes) {
|
|
7496
|
-
return nodes.reduce(
|
|
7497
|
-
(counts, node) => {
|
|
7498
|
-
counts[node.kind] += 1;
|
|
7499
|
-
return counts;
|
|
7500
|
-
},
|
|
7501
|
-
{ playbook: 0, strategy: 0, reference: 0 }
|
|
7502
|
-
);
|
|
7578
|
+
function getMeta(schema) {
|
|
7579
|
+
return schema.meta() ?? {};
|
|
7503
7580
|
}
|
|
7504
|
-
function
|
|
7505
|
-
return
|
|
7581
|
+
function labelFromFieldName(fieldName) {
|
|
7582
|
+
return fieldName.replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/[-_]/g, " ").replace(/^./, (c) => c.toUpperCase());
|
|
7506
7583
|
}
|
|
7507
|
-
function
|
|
7508
|
-
|
|
7509
|
-
|
|
7510
|
-
const systemCounts = /* @__PURE__ */ new Map();
|
|
7511
|
-
for (const edge of graph.edges) {
|
|
7512
|
-
if (edge.kind !== "governs" || !knowledgeGraphIds.has(edge.sourceId)) continue;
|
|
7513
|
-
const target = graphNodesById.get(edge.targetId);
|
|
7514
|
-
if (target?.kind !== "system") continue;
|
|
7515
|
-
systemCounts.set(target.id, (systemCounts.get(target.id) ?? 0) + 1);
|
|
7584
|
+
function unwrap(schema) {
|
|
7585
|
+
if (schema instanceof ZodOptional || schema instanceof ZodNullable || schema instanceof ZodDefault) {
|
|
7586
|
+
return unwrap(schema.def.innerType);
|
|
7516
7587
|
}
|
|
7517
|
-
return
|
|
7518
|
-
systemId,
|
|
7519
|
-
count,
|
|
7520
|
-
label: graphNodesById.get(systemId)?.label ?? systemId.replace(/^system:/, "")
|
|
7521
|
-
})).sort((left, right) => right.count - left.count || left.label.localeCompare(right.label));
|
|
7522
|
-
}
|
|
7523
|
-
function KnowledgeOverview({ graph, knowledgeNodes, onSelectNode }) {
|
|
7524
|
-
const kindCounts = useMemo(() => createKindCounts(knowledgeNodes), [knowledgeNodes]);
|
|
7525
|
-
const entryNodes = useMemo(
|
|
7526
|
-
() => ENTRY_NODE_IDS.map((id) => knowledgeNodes.find((node) => node.id === id)).filter(
|
|
7527
|
-
(node) => Boolean(node)
|
|
7528
|
-
),
|
|
7529
|
-
[knowledgeNodes]
|
|
7530
|
-
);
|
|
7531
|
-
const recentNodes = useMemo(
|
|
7532
|
-
() => [...knowledgeNodes].sort((left, right) => right.updatedAt.localeCompare(left.updatedAt) || left.title.localeCompare(right.title)).slice(0, 5),
|
|
7533
|
-
[knowledgeNodes]
|
|
7534
|
-
);
|
|
7535
|
-
const governedSystemCoverage = useMemo(() => getGovernedSystemCoverage(graph), [graph]);
|
|
7536
|
-
const governedSystemCount = governedSystemCoverage.length;
|
|
7537
|
-
const governedTargetCount = useMemo(() => {
|
|
7538
|
-
const knowledgeGraphIds = resolveKnowledgeGraphIds(graph);
|
|
7539
|
-
return new Set(
|
|
7540
|
-
graph.edges.filter((edge) => edge.kind === "governs" && knowledgeGraphIds.has(edge.sourceId)).map((edge) => edge.targetId)
|
|
7541
|
-
).size;
|
|
7542
|
-
}, [graph]);
|
|
7543
|
-
return /* @__PURE__ */ jsx(Box, { style: { width: "100%" }, children: /* @__PURE__ */ jsx(PageContainer, { children: /* @__PURE__ */ jsx(
|
|
7544
|
-
Paper,
|
|
7545
|
-
{
|
|
7546
|
-
withBorder: true,
|
|
7547
|
-
style: {
|
|
7548
|
-
maxWidth: 920,
|
|
7549
|
-
margin: "0 auto",
|
|
7550
|
-
background: "var(--glass-background)",
|
|
7551
|
-
borderColor: "var(--color-border)"
|
|
7552
|
-
},
|
|
7553
|
-
children: /* @__PURE__ */ jsxs(Stack, { gap: "xl", p: "lg", children: [
|
|
7554
|
-
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: /* @__PURE__ */ jsxs(Group, { justify: "space-between", align: "start", gap: "md", children: [
|
|
7555
|
-
/* @__PURE__ */ jsxs(Group, { gap: "sm", align: "start", wrap: "nowrap", children: [
|
|
7556
|
-
/* @__PURE__ */ jsx(ThemeIcon, { variant: "light", color: "blue", radius: "sm", size: "lg", children: /* @__PURE__ */ jsx(SemanticIcon, { token: "nav.knowledge", fallbackKind: "knowledge", size: 18 }) }),
|
|
7557
|
-
/* @__PURE__ */ jsxs(Box, { children: [
|
|
7558
|
-
/* @__PURE__ */ jsx(Title, { order: 1, size: "h2", children: "Knowledge Base" }),
|
|
7559
|
-
/* @__PURE__ */ jsx(Text, { c: "dimmed", size: "sm", maw: 720, mt: 4, children: "Start at Profile to understand the org. Browse Business Model for who we serve and what we sell. Systems is operational structure. Graph shows the machinery. Governance & Wiring covers cross-cutting roles, policies, statuses, and navigation surfaces." })
|
|
7560
|
-
] })
|
|
7561
|
-
] }),
|
|
7562
|
-
/* @__PURE__ */ jsxs(Badge, { variant: "light", color: "blue", children: [
|
|
7563
|
-
knowledgeNodes.length,
|
|
7564
|
-
" nodes"
|
|
7565
|
-
] })
|
|
7566
|
-
] }) }),
|
|
7567
|
-
/* @__PURE__ */ jsxs(SimpleGrid, { cols: { base: 1, sm: 2, md: 4 }, spacing: "sm", children: [
|
|
7568
|
-
/* @__PURE__ */ jsx(OverviewStat, { label: "Knowledge nodes", value: knowledgeNodes.length.toString() }),
|
|
7569
|
-
/* @__PURE__ */ jsx(OverviewStat, { label: "Governed areas", value: governedTargetCount.toString() }),
|
|
7570
|
-
/* @__PURE__ */ jsx(OverviewStat, { label: "Covered systems", value: governedSystemCount.toString() }),
|
|
7571
|
-
/* @__PURE__ */ jsx(OverviewStat, { label: "Graph nodes", value: graph.nodes.length.toString() })
|
|
7572
|
-
] }),
|
|
7573
|
-
/* @__PURE__ */ jsx(Divider, {}),
|
|
7574
|
-
/* @__PURE__ */ jsxs(SimpleGrid, { cols: { base: 1, md: 3 }, spacing: "lg", children: [
|
|
7575
|
-
/* @__PURE__ */ jsx(
|
|
7576
|
-
OverviewSection,
|
|
7577
|
-
{
|
|
7578
|
-
title: "Profile",
|
|
7579
|
-
body: "Understand identity, branding, mission, legal shape, and business hours before moving into the model."
|
|
7580
|
-
}
|
|
7581
|
-
),
|
|
7582
|
-
/* @__PURE__ */ jsx(
|
|
7583
|
-
OverviewSection,
|
|
7584
|
-
{
|
|
7585
|
-
title: "Business Model",
|
|
7586
|
-
body: "Review customers, offerings, and goals to see who we serve, what we sell, and what the org is optimizing for."
|
|
7587
|
-
}
|
|
7588
|
-
),
|
|
7589
|
-
/* @__PURE__ */ jsx(
|
|
7590
|
-
OverviewSection,
|
|
7591
|
-
{
|
|
7592
|
-
title: "Systems",
|
|
7593
|
-
body: "Browse operational structure, including business systems and their nested sales, prospecting, and project configuration."
|
|
7594
|
-
}
|
|
7595
|
-
),
|
|
7596
|
-
/* @__PURE__ */ jsx(
|
|
7597
|
-
OverviewSection,
|
|
7598
|
-
{
|
|
7599
|
-
title: "Graph",
|
|
7600
|
-
body: "Drill into resources, actions, entities, events, and the knowledge Start Here hub that explains the graph contract."
|
|
7601
|
-
}
|
|
7602
|
-
),
|
|
7603
|
-
/* @__PURE__ */ jsx(
|
|
7604
|
-
OverviewSection,
|
|
7605
|
-
{
|
|
7606
|
-
title: "Governance & Wiring",
|
|
7607
|
-
body: "Check cross-cutting roles, policies, status vocabularies, and navigation surfaces that connect the model."
|
|
7608
|
-
}
|
|
7609
|
-
)
|
|
7610
|
-
] }),
|
|
7611
|
-
/* @__PURE__ */ jsx(Divider, {}),
|
|
7612
|
-
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
7613
|
-
/* @__PURE__ */ jsxs(Group, { justify: "space-between", align: "center", children: [
|
|
7614
|
-
/* @__PURE__ */ jsx(Title, { order: 2, size: "h3", children: "Start Here" }),
|
|
7615
|
-
/* @__PURE__ */ jsx(Group, { gap: 6, children: Object.entries(kindCounts).map(([kind, count]) => /* @__PURE__ */ jsxs(Badge, { variant: "outline", color: "gray", children: [
|
|
7616
|
-
formatKindLabel(kind),
|
|
7617
|
-
": ",
|
|
7618
|
-
count
|
|
7619
|
-
] }, kind)) })
|
|
7620
|
-
] }),
|
|
7621
|
-
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: entryNodes.map((node) => /* @__PURE__ */ jsx(KnowledgeOverviewRow, { node, onSelectNode }, node.id)) })
|
|
7622
|
-
] }),
|
|
7623
|
-
/* @__PURE__ */ jsxs(SimpleGrid, { cols: { base: 1, md: 2 }, spacing: "lg", children: [
|
|
7624
|
-
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
7625
|
-
/* @__PURE__ */ jsx(Title, { order: 2, size: "h3", children: "Recent Updates" }),
|
|
7626
|
-
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: recentNodes.map((node) => /* @__PURE__ */ jsx(KnowledgeOverviewRow, { node, compact: true, onSelectNode }, node.id)) })
|
|
7627
|
-
] }),
|
|
7628
|
-
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
7629
|
-
/* @__PURE__ */ jsx(Title, { order: 2, size: "h3", children: "System Coverage" }),
|
|
7630
|
-
/* @__PURE__ */ jsx(Stack, { gap: 6, children: governedSystemCoverage.slice(0, 6).map((system) => /* @__PURE__ */ jsxs(
|
|
7631
|
-
Group,
|
|
7632
|
-
{
|
|
7633
|
-
justify: "space-between",
|
|
7634
|
-
wrap: "nowrap",
|
|
7635
|
-
style: {
|
|
7636
|
-
borderBottom: "1px solid var(--color-border)",
|
|
7637
|
-
paddingBlock: 8
|
|
7638
|
-
},
|
|
7639
|
-
children: [
|
|
7640
|
-
/* @__PURE__ */ jsx(Text, { size: "sm", fw: 650, lineClamp: 1, children: system.label }),
|
|
7641
|
-
/* @__PURE__ */ jsx(Badge, { variant: "light", color: "gray", children: system.count })
|
|
7642
|
-
]
|
|
7643
|
-
},
|
|
7644
|
-
system.systemId
|
|
7645
|
-
)) })
|
|
7646
|
-
] })
|
|
7647
|
-
] })
|
|
7648
|
-
] })
|
|
7649
|
-
}
|
|
7650
|
-
) }) });
|
|
7651
|
-
}
|
|
7652
|
-
function OverviewStat({ label, value }) {
|
|
7653
|
-
return /* @__PURE__ */ jsxs(
|
|
7654
|
-
Box,
|
|
7655
|
-
{
|
|
7656
|
-
style: {
|
|
7657
|
-
border: "1px solid var(--color-border)",
|
|
7658
|
-
borderRadius: 8,
|
|
7659
|
-
padding: "var(--mantine-spacing-sm)"
|
|
7660
|
-
},
|
|
7661
|
-
children: [
|
|
7662
|
-
/* @__PURE__ */ jsx(Text, { size: "xl", fw: 800, lh: 1, children: value }),
|
|
7663
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", c: "dimmed", fw: 650, tt: "uppercase", mt: 6, children: label })
|
|
7664
|
-
]
|
|
7665
|
-
}
|
|
7666
|
-
);
|
|
7667
|
-
}
|
|
7668
|
-
function OverviewSection({ title, body }) {
|
|
7669
|
-
return /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
7670
|
-
/* @__PURE__ */ jsx(Text, { fw: 750, children: title }),
|
|
7671
|
-
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", lh: 1.6, children: body })
|
|
7672
|
-
] });
|
|
7673
|
-
}
|
|
7674
|
-
function KnowledgeOverviewRow({
|
|
7675
|
-
node,
|
|
7676
|
-
compact = false,
|
|
7677
|
-
onSelectNode
|
|
7678
|
-
}) {
|
|
7679
|
-
return /* @__PURE__ */ jsx(
|
|
7680
|
-
UnstyledButton,
|
|
7681
|
-
{
|
|
7682
|
-
onClick: () => onSelectNode?.(node.id),
|
|
7683
|
-
disabled: !onSelectNode,
|
|
7684
|
-
style: {
|
|
7685
|
-
display: "block",
|
|
7686
|
-
width: "100%",
|
|
7687
|
-
border: "1px solid var(--color-border)",
|
|
7688
|
-
borderRadius: 8,
|
|
7689
|
-
padding: compact ? "10px 12px" : "12px 14px",
|
|
7690
|
-
color: "var(--color-text)",
|
|
7691
|
-
cursor: onSelectNode ? "pointer" : "default"
|
|
7692
|
-
},
|
|
7693
|
-
children: /* @__PURE__ */ jsxs(Group, { gap: "sm", align: "start", wrap: "nowrap", children: [
|
|
7694
|
-
/* @__PURE__ */ jsx(
|
|
7695
|
-
SemanticIcon,
|
|
7696
|
-
{
|
|
7697
|
-
token: getKnowledgeIconToken(node),
|
|
7698
|
-
fallbackKind: node.kind,
|
|
7699
|
-
size: 16,
|
|
7700
|
-
style: { color: "var(--color-primary)", marginTop: 2 }
|
|
7701
|
-
}
|
|
7702
|
-
),
|
|
7703
|
-
/* @__PURE__ */ jsxs(Box, { style: { minWidth: 0, flex: 1 }, children: [
|
|
7704
|
-
/* @__PURE__ */ jsxs(Group, { gap: "xs", wrap: "nowrap", children: [
|
|
7705
|
-
/* @__PURE__ */ jsx(Text, { size: "sm", fw: 750, lineClamp: 1, children: node.title }),
|
|
7706
|
-
/* @__PURE__ */ jsx(Badge, { variant: "light", color: "gray", size: "xs", style: { flexShrink: 0 }, children: node.kind })
|
|
7707
|
-
] }),
|
|
7708
|
-
!compact && /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", mt: 4, lineClamp: 2, children: node.summary }),
|
|
7709
|
-
/* @__PURE__ */ jsxs(Text, { size: "xs", c: "dimmed", mt: compact ? 2 : 6, children: [
|
|
7710
|
-
"Updated ",
|
|
7711
|
-
node.updatedAt
|
|
7712
|
-
] })
|
|
7713
|
-
] })
|
|
7714
|
-
] })
|
|
7715
|
-
}
|
|
7716
|
-
);
|
|
7717
|
-
}
|
|
7718
|
-
function KnowledgeNodeList({ nodes, onSelect, selectedNodeId, label }) {
|
|
7719
|
-
if (nodes.length === 0) {
|
|
7720
|
-
return /* @__PURE__ */ jsxs(Stack, { gap: "xs", style: { padding: "var(--mantine-spacing-md)" }, children: [
|
|
7721
|
-
label && /* @__PURE__ */ jsx(Text, { size: "xs", fw: 600, tt: "uppercase", c: "dimmed", style: { letterSpacing: "0.05em" }, children: label }),
|
|
7722
|
-
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "No knowledge nodes found." })
|
|
7723
|
-
] });
|
|
7724
|
-
}
|
|
7725
|
-
return /* @__PURE__ */ jsxs(Stack, { gap: 4, style: { padding: "var(--mantine-spacing-sm)" }, children: [
|
|
7726
|
-
label && /* @__PURE__ */ jsx(
|
|
7727
|
-
Text,
|
|
7728
|
-
{
|
|
7729
|
-
size: "xs",
|
|
7730
|
-
fw: 600,
|
|
7731
|
-
tt: "uppercase",
|
|
7732
|
-
c: "dimmed",
|
|
7733
|
-
style: { letterSpacing: "0.05em", paddingBottom: "var(--mantine-spacing-xs)" },
|
|
7734
|
-
children: label
|
|
7735
|
-
}
|
|
7736
|
-
),
|
|
7737
|
-
nodes.map((node) => {
|
|
7738
|
-
const isActive = node.id === selectedNodeId;
|
|
7739
|
-
return /* @__PURE__ */ jsx(
|
|
7740
|
-
UnstyledButton,
|
|
7741
|
-
{
|
|
7742
|
-
onClick: () => onSelect(node),
|
|
7743
|
-
style: {
|
|
7744
|
-
padding: "var(--mantine-spacing-sm)",
|
|
7745
|
-
borderRadius: "var(--mantine-radius-default)",
|
|
7746
|
-
backgroundColor: isActive ? "color-mix(in srgb, var(--color-primary) 10%, transparent)" : "transparent",
|
|
7747
|
-
border: isActive ? "1px solid color-mix(in srgb, var(--color-primary) 25%, transparent)" : "1px solid transparent",
|
|
7748
|
-
transition: `all var(--duration-fast) var(--easing)`,
|
|
7749
|
-
cursor: "pointer",
|
|
7750
|
-
width: "100%",
|
|
7751
|
-
textAlign: "left"
|
|
7752
|
-
},
|
|
7753
|
-
onMouseEnter: (e) => {
|
|
7754
|
-
if (!isActive) {
|
|
7755
|
-
e.currentTarget.style.backgroundColor = "var(--color-surface-hover)";
|
|
7756
|
-
}
|
|
7757
|
-
},
|
|
7758
|
-
onMouseLeave: (e) => {
|
|
7759
|
-
if (!isActive) {
|
|
7760
|
-
e.currentTarget.style.backgroundColor = "transparent";
|
|
7761
|
-
}
|
|
7762
|
-
},
|
|
7763
|
-
children: /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
7764
|
-
/* @__PURE__ */ jsxs(Group, { gap: "xs", wrap: "nowrap", children: [
|
|
7765
|
-
/* @__PURE__ */ jsx(
|
|
7766
|
-
Text,
|
|
7767
|
-
{
|
|
7768
|
-
size: "sm",
|
|
7769
|
-
fw: isActive ? 600 : 400,
|
|
7770
|
-
style: {
|
|
7771
|
-
flex: 1,
|
|
7772
|
-
overflow: "hidden",
|
|
7773
|
-
textOverflow: "ellipsis",
|
|
7774
|
-
whiteSpace: "nowrap",
|
|
7775
|
-
color: isActive ? "var(--color-primary)" : "var(--color-text)"
|
|
7776
|
-
},
|
|
7777
|
-
children: node.title
|
|
7778
|
-
}
|
|
7779
|
-
),
|
|
7780
|
-
/* @__PURE__ */ jsx(KindChip, { kind: node.kind, tone: "primary", style: { flexShrink: 0 } })
|
|
7781
|
-
] }),
|
|
7782
|
-
/* @__PURE__ */ jsx(
|
|
7783
|
-
Text,
|
|
7784
|
-
{
|
|
7785
|
-
size: "xs",
|
|
7786
|
-
c: "dimmed",
|
|
7787
|
-
style: {
|
|
7788
|
-
overflow: "hidden",
|
|
7789
|
-
display: "-webkit-box",
|
|
7790
|
-
WebkitLineClamp: 2,
|
|
7791
|
-
WebkitBoxOrient: "vertical",
|
|
7792
|
-
textOverflow: "ellipsis"
|
|
7793
|
-
},
|
|
7794
|
-
children: node.summary
|
|
7795
|
-
}
|
|
7796
|
-
)
|
|
7797
|
-
] })
|
|
7798
|
-
},
|
|
7799
|
-
node.id
|
|
7800
|
-
);
|
|
7801
|
-
})
|
|
7802
|
-
] });
|
|
7803
|
-
}
|
|
7804
|
-
var KNOWLEDGE_ITEMS = [{ label: "Knowledge", to: "/knowledge", icon: IconBook, exact: true }];
|
|
7805
|
-
function getMeta(schema) {
|
|
7806
|
-
return schema.meta() ?? {};
|
|
7807
|
-
}
|
|
7808
|
-
function labelFromFieldName(fieldName) {
|
|
7809
|
-
return fieldName.replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/[-_]/g, " ").replace(/^./, (c) => c.toUpperCase());
|
|
7810
|
-
}
|
|
7811
|
-
function unwrap(schema) {
|
|
7812
|
-
if (schema instanceof ZodOptional || schema instanceof ZodNullable || schema instanceof ZodDefault) {
|
|
7813
|
-
return unwrap(schema.def.innerType);
|
|
7814
|
-
}
|
|
7815
|
-
return schema;
|
|
7588
|
+
return schema;
|
|
7816
7589
|
}
|
|
7817
7590
|
function renderField({ schema, value, fieldName, onNavigateToNode }) {
|
|
7818
7591
|
const meta = getMeta(schema);
|
|
@@ -7856,7 +7629,7 @@ function renderField({ schema, value, fieldName, onNavigateToNode }) {
|
|
|
7856
7629
|
cursor: "pointer",
|
|
7857
7630
|
fontSize: "var(--mantine-font-size-xs)",
|
|
7858
7631
|
fontWeight: 600,
|
|
7859
|
-
color: "var(--color-text-
|
|
7632
|
+
color: "var(--color-text-subtle)",
|
|
7860
7633
|
paddingBottom: 4
|
|
7861
7634
|
},
|
|
7862
7635
|
children: label
|
|
@@ -7886,7 +7659,7 @@ function renderField({ schema, value, fieldName, onNavigateToNode }) {
|
|
|
7886
7659
|
cursor: "pointer",
|
|
7887
7660
|
fontSize: "var(--mantine-font-size-xs)",
|
|
7888
7661
|
fontWeight: 600,
|
|
7889
|
-
color: "var(--color-text-
|
|
7662
|
+
color: "var(--color-text-subtle)",
|
|
7890
7663
|
paddingBottom: 4
|
|
7891
7664
|
},
|
|
7892
7665
|
children: /* @__PURE__ */ jsxs(Group, { gap: 4, align: "center", component: "span", style: { display: "inline-flex" }, children: [
|
|
@@ -7969,9 +7742,9 @@ function ParentBreadcrumb({
|
|
|
7969
7742
|
}
|
|
7970
7743
|
if (ancestors.length === 0) return null;
|
|
7971
7744
|
return /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
7972
|
-
/* @__PURE__ */ jsx(Text, { size: "xs",
|
|
7745
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 500, style: { color: "var(--color-text-subtle)" }, children: "Parent system" }),
|
|
7973
7746
|
/* @__PURE__ */ jsx(Group, { gap: 4, align: "center", wrap: "wrap", children: ancestors.map((ancestor, i) => /* @__PURE__ */ jsxs(Group, { gap: 4, align: "center", children: [
|
|
7974
|
-
i > 0 && /* @__PURE__ */ jsx(Text, { size: "xs",
|
|
7747
|
+
i > 0 && /* @__PURE__ */ jsx(Text, { size: "xs", style: { color: "var(--color-text-subtle)" }, children: ">" }),
|
|
7975
7748
|
/* @__PURE__ */ jsx(
|
|
7976
7749
|
EdgeChip,
|
|
7977
7750
|
{
|
|
@@ -7992,7 +7765,7 @@ function UiPlacementSection({
|
|
|
7992
7765
|
const hasAny = uiOrder !== void 0 || uiPosition !== void 0 || requiresAdmin !== void 0 || devOnly !== void 0 || color !== void 0;
|
|
7993
7766
|
if (!hasAny) return null;
|
|
7994
7767
|
return /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
7995
|
-
/* @__PURE__ */ jsx(Text, { size: "xs",
|
|
7768
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 500, style: { color: "var(--color-text-subtle)" }, children: "UI placement" }),
|
|
7996
7769
|
/* @__PURE__ */ jsxs(Group, { gap: 4, wrap: "wrap", children: [
|
|
7997
7770
|
uiOrder !== void 0 && /* @__PURE__ */ jsx(KindChip, { kind: `order: ${uiOrder}`, tone: "subtle" }),
|
|
7998
7771
|
uiPosition !== void 0 && /* @__PURE__ */ jsx(KindChip, { kind: uiPosition, tone: "subtle" }),
|
|
@@ -8002,6 +7775,16 @@ function UiPlacementSection({
|
|
|
8002
7775
|
] })
|
|
8003
7776
|
] });
|
|
8004
7777
|
}
|
|
7778
|
+
function getContainedOntologyNodeIds(node, graph, ontologyKind) {
|
|
7779
|
+
return graph.edges.filter((edge) => edge.kind === "contains" && edge.sourceId === node.id).map((edge) => graph.nodes.find((candidate) => candidate.id === edge.targetId)).filter(
|
|
7780
|
+
(candidate) => candidate !== void 0 && candidate.kind === "ontology" && candidate.ontologyKind === ontologyKind
|
|
7781
|
+
).map((candidate) => candidate.id);
|
|
7782
|
+
}
|
|
7783
|
+
function getPrimaryOntologyNodeIds(systemId, organizationModel, domainKey) {
|
|
7784
|
+
if (systemId === void 0 || organizationModel === void 0) return void 0;
|
|
7785
|
+
const projection = getKnowledgeOntologyProjection(organizationModel);
|
|
7786
|
+
return getPrimaryOntologyItemsForDomain(projection, domainKey).filter((item) => item.ownerSystemId === systemId).map((item) => item.kind === "resource" ? `resource:${item.id}` : `ontology:${item.id}`);
|
|
7787
|
+
}
|
|
8005
7788
|
function SystemDescribeView({
|
|
8006
7789
|
node,
|
|
8007
7790
|
graph,
|
|
@@ -8019,6 +7802,10 @@ function SystemDescribeView({
|
|
|
8019
7802
|
);
|
|
8020
7803
|
const exposesActionIds = actionEdges.filter((e) => e.label === "exposes").map((e) => e.targetId);
|
|
8021
7804
|
const consumesActionIds = actionEdges.filter((e) => e.label === "consumes").map((e) => e.targetId);
|
|
7805
|
+
const ontologyObjectIds = getPrimaryOntologyNodeIds(systemSourceId, organizationModel, "ontology-objects") ?? getContainedOntologyNodeIds(node, graph, "object");
|
|
7806
|
+
const ontologyActionIds = getPrimaryOntologyNodeIds(systemSourceId, organizationModel, "ontology-actions") ?? getContainedOntologyNodeIds(node, graph, "action");
|
|
7807
|
+
const ontologyCatalogIds = getPrimaryOntologyNodeIds(systemSourceId, organizationModel, "ontology-catalogs") ?? getContainedOntologyNodeIds(node, graph, "catalog");
|
|
7808
|
+
const ontologySurfaceIds = getPrimaryOntologyNodeIds(systemSourceId, organizationModel, "ontology-surfaces") ?? getContainedOntologyNodeIds(node, graph, "surface");
|
|
8022
7809
|
const uiIcon = system?.ui?.icon ?? system?.icon;
|
|
8023
7810
|
const uiPath = system?.ui?.path ?? system?.path;
|
|
8024
7811
|
const uiSurfaces = system?.ui?.surfaces;
|
|
@@ -8033,13 +7820,15 @@ function SystemDescribeView({
|
|
|
8033
7820
|
NodeDescribeShell,
|
|
8034
7821
|
{
|
|
8035
7822
|
header: /* @__PURE__ */ jsx(
|
|
8036
|
-
|
|
7823
|
+
KnowledgePageHeader,
|
|
8037
7824
|
{
|
|
8038
7825
|
title: node.label,
|
|
8039
7826
|
kind: "System",
|
|
8040
7827
|
tone: "subtle",
|
|
7828
|
+
iconToken: uiIcon,
|
|
8041
7829
|
description: node.description,
|
|
8042
|
-
|
|
7830
|
+
copyCommand: getKnowledgeGraphNodeCommand(node),
|
|
7831
|
+
badges: system?.kind != null ? /* @__PURE__ */ jsx(KindChip, { kind: system.kind, tone: "muted" }) : void 0
|
|
8043
7832
|
}
|
|
8044
7833
|
),
|
|
8045
7834
|
content: /* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
|
|
@@ -8048,27 +7837,19 @@ function SystemDescribeView({
|
|
|
8048
7837
|
node.enabled !== void 0 && /* @__PURE__ */ jsx(KeyField, { label: "Enabled", value: String(node.enabled) }),
|
|
8049
7838
|
uiPath != null && /* @__PURE__ */ jsx(KeyField, { label: "UI path", value: uiPath }),
|
|
8050
7839
|
uiIcon != null && /* @__PURE__ */ jsxs(Group, { gap: "xs", align: "center", children: [
|
|
8051
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 500,
|
|
7840
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 500, style: { minWidth: 96, color: "var(--color-text-subtle)" }, children: "UI icon" }),
|
|
8052
7841
|
/* @__PURE__ */ jsxs(Group, { gap: 4, align: "center", children: [
|
|
8053
|
-
/* @__PURE__ */ jsx(
|
|
8054
|
-
SemanticIcon,
|
|
8055
|
-
{
|
|
8056
|
-
token: uiIcon,
|
|
8057
|
-
fallbackKind: "unknown",
|
|
8058
|
-
size: 14,
|
|
8059
|
-
style: { color: "var(--color-text-subtle)" }
|
|
8060
|
-
}
|
|
8061
|
-
),
|
|
7842
|
+
/* @__PURE__ */ jsx(SemanticIcon, { token: uiIcon, size: 14, style: { color: "var(--color-text-subtle)" } }),
|
|
8062
7843
|
/* @__PURE__ */ jsx(KindChip, { kind: uiIcon, tone: "subtle" })
|
|
8063
7844
|
] })
|
|
8064
7845
|
] }),
|
|
8065
7846
|
system?.lifecycle != null && /* @__PURE__ */ jsxs(Group, { gap: "xs", align: "baseline", children: [
|
|
8066
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 500,
|
|
7847
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 500, style: { minWidth: 96, color: "var(--color-text-subtle)" }, children: "Lifecycle" }),
|
|
8067
7848
|
/* @__PURE__ */ jsx(KindChip, { kind: system.lifecycle, tone: system.lifecycle === "active" ? "primary" : "subtle" })
|
|
8068
7849
|
] }),
|
|
8069
7850
|
systemSourceId != null && systemSourceId.includes(".") && /* @__PURE__ */ jsx(ParentBreadcrumb, { systemId: systemSourceId, graph, onNavigateToNode }),
|
|
8070
7851
|
system?.responsibleRoleId != null && /* @__PURE__ */ jsxs(Group, { gap: "xs", align: "baseline", children: [
|
|
8071
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 500,
|
|
7852
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", fw: 500, style: { minWidth: 96, color: "var(--color-text-subtle)" }, children: "Responsible role" }),
|
|
8072
7853
|
/* @__PURE__ */ jsx(
|
|
8073
7854
|
EdgeChip,
|
|
8074
7855
|
{
|
|
@@ -8078,7 +7859,7 @@ function SystemDescribeView({
|
|
|
8078
7859
|
)
|
|
8079
7860
|
] }),
|
|
8080
7861
|
system?.drivesGoals != null && system.drivesGoals.length > 0 && /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
8081
|
-
/* @__PURE__ */ jsxs(Text, { size: "xs",
|
|
7862
|
+
/* @__PURE__ */ jsxs(Text, { size: "xs", fw: 500, style: { color: "var(--color-text-subtle)" }, children: [
|
|
8082
7863
|
"Drives goals (",
|
|
8083
7864
|
system.drivesGoals.length,
|
|
8084
7865
|
")"
|
|
@@ -8119,8 +7900,40 @@ function SystemDescribeView({
|
|
|
8119
7900
|
color
|
|
8120
7901
|
}
|
|
8121
7902
|
),
|
|
7903
|
+
ontologyObjectIds.length > 0 && /* @__PURE__ */ jsx(
|
|
7904
|
+
EdgeGroup,
|
|
7905
|
+
{
|
|
7906
|
+
label: `Ontology objects (${ontologyObjectIds.length})`,
|
|
7907
|
+
ids: ontologyObjectIds,
|
|
7908
|
+
onNavigateToNode
|
|
7909
|
+
}
|
|
7910
|
+
),
|
|
7911
|
+
ontologyActionIds.length > 0 && /* @__PURE__ */ jsx(
|
|
7912
|
+
EdgeGroup,
|
|
7913
|
+
{
|
|
7914
|
+
label: `Ontology actions (${ontologyActionIds.length})`,
|
|
7915
|
+
ids: ontologyActionIds,
|
|
7916
|
+
onNavigateToNode
|
|
7917
|
+
}
|
|
7918
|
+
),
|
|
7919
|
+
ontologyCatalogIds.length > 0 && /* @__PURE__ */ jsx(
|
|
7920
|
+
EdgeGroup,
|
|
7921
|
+
{
|
|
7922
|
+
label: `Ontology catalogs (${ontologyCatalogIds.length})`,
|
|
7923
|
+
ids: ontologyCatalogIds,
|
|
7924
|
+
onNavigateToNode
|
|
7925
|
+
}
|
|
7926
|
+
),
|
|
7927
|
+
ontologySurfaceIds.length > 0 && /* @__PURE__ */ jsx(
|
|
7928
|
+
EdgeGroup,
|
|
7929
|
+
{
|
|
7930
|
+
label: `Ontology surfaces (${ontologySurfaceIds.length})`,
|
|
7931
|
+
ids: ontologySurfaceIds,
|
|
7932
|
+
onNavigateToNode
|
|
7933
|
+
}
|
|
7934
|
+
),
|
|
8122
7935
|
exposesActionIds.length > 0 && /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
8123
|
-
/* @__PURE__ */ jsxs(Text, { size: "xs",
|
|
7936
|
+
/* @__PURE__ */ jsxs(Text, { size: "xs", fw: 500, style: { color: "var(--color-text-subtle)" }, children: [
|
|
8124
7937
|
"Exposes actions (",
|
|
8125
7938
|
exposesActionIds.length,
|
|
8126
7939
|
")"
|
|
@@ -8128,7 +7941,7 @@ function SystemDescribeView({
|
|
|
8128
7941
|
/* @__PURE__ */ jsx(Group, { gap: 4, wrap: "wrap", children: exposesActionIds.map((id) => /* @__PURE__ */ jsx(EdgeChip, { id, onClick: onNavigateToNode ? () => onNavigateToNode(id) : void 0 }, id)) })
|
|
8129
7942
|
] }),
|
|
8130
7943
|
consumesActionIds.length > 0 && /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
8131
|
-
/* @__PURE__ */ jsxs(Text, { size: "xs",
|
|
7944
|
+
/* @__PURE__ */ jsxs(Text, { size: "xs", fw: 500, style: { color: "var(--color-text-subtle)" }, children: [
|
|
8132
7945
|
"Consumes actions (",
|
|
8133
7946
|
consumesActionIds.length,
|
|
8134
7947
|
")"
|
|
@@ -8138,7 +7951,7 @@ function SystemDescribeView({
|
|
|
8138
7951
|
ownedEntityIds.length > 0 && /* @__PURE__ */ jsx(
|
|
8139
7952
|
EdgeGroup,
|
|
8140
7953
|
{
|
|
8141
|
-
label: `
|
|
7954
|
+
label: `Legacy entities owned (${ownedEntityIds.length})`,
|
|
8142
7955
|
ids: ownedEntityIds,
|
|
8143
7956
|
onNavigateToNode
|
|
8144
7957
|
}
|
|
@@ -8193,7 +8006,16 @@ function GenericDescribeView({ node, graph, knowledgeNodes, onNavigateToNode })
|
|
|
8193
8006
|
return /* @__PURE__ */ jsx(
|
|
8194
8007
|
NodeDescribeShell,
|
|
8195
8008
|
{
|
|
8196
|
-
header: /* @__PURE__ */ jsx(
|
|
8009
|
+
header: /* @__PURE__ */ jsx(
|
|
8010
|
+
KnowledgePageHeader,
|
|
8011
|
+
{
|
|
8012
|
+
title: node.label,
|
|
8013
|
+
kind: node.kind,
|
|
8014
|
+
tone: "subtle",
|
|
8015
|
+
description: node.description,
|
|
8016
|
+
copyCommand: getKnowledgeGraphNodeCommand(node)
|
|
8017
|
+
}
|
|
8018
|
+
),
|
|
8197
8019
|
content: /* @__PURE__ */ jsx(Stack, { gap: 4, children: entries.map(([key, value]) => /* @__PURE__ */ jsx(KeyField, { label: key, value: String(value) }, key)) }),
|
|
8198
8020
|
relationships: /* @__PURE__ */ jsx(
|
|
8199
8021
|
EdgeRelationshipGroup,
|
|
@@ -8284,7 +8106,7 @@ function InvocationsTable({ action, onNavigateToNode }) {
|
|
|
8284
8106
|
fz: "xs",
|
|
8285
8107
|
styles: {
|
|
8286
8108
|
table: { borderColor: "var(--color-border)", background: "var(--color-surface)" },
|
|
8287
|
-
th: { color: "var(--color-text-
|
|
8109
|
+
th: { color: "var(--color-text-subtle)", fontWeight: 600, padding: "4px 8px" },
|
|
8288
8110
|
td: { padding: "4px 8px", verticalAlign: "middle" }
|
|
8289
8111
|
},
|
|
8290
8112
|
children: [
|
|
@@ -8459,7 +8281,7 @@ function InvocationsTable2({
|
|
|
8459
8281
|
fz: "xs",
|
|
8460
8282
|
styles: {
|
|
8461
8283
|
table: { borderColor: "var(--color-border)", background: "var(--color-surface)" },
|
|
8462
|
-
th: { color: "var(--color-text-
|
|
8284
|
+
th: { color: "var(--color-text-subtle)", fontWeight: 600, padding: "4px 8px" },
|
|
8463
8285
|
td: { padding: "4px 8px", verticalAlign: "middle" }
|
|
8464
8286
|
},
|
|
8465
8287
|
children: [
|
|
@@ -8777,10 +8599,10 @@ function EntityDescribeView({
|
|
|
8777
8599
|
},
|
|
8778
8600
|
children: [
|
|
8779
8601
|
/* @__PURE__ */ jsx(Table.Thead, { children: /* @__PURE__ */ jsxs(Table.Tr, { children: [
|
|
8780
|
-
/* @__PURE__ */ jsx(Table.Th, { style: { color: "var(--color-text-
|
|
8781
|
-
/* @__PURE__ */ jsx(Table.Th, { style: { color: "var(--color-text-
|
|
8782
|
-
/* @__PURE__ */ jsx(Table.Th, { style: { color: "var(--color-text-
|
|
8783
|
-
/* @__PURE__ */ jsx(Table.Th, { style: { color: "var(--color-text-
|
|
8602
|
+
/* @__PURE__ */ jsx(Table.Th, { style: { color: "var(--color-text-subtle)", fontWeight: 500 }, children: "To Entity" }),
|
|
8603
|
+
/* @__PURE__ */ jsx(Table.Th, { style: { color: "var(--color-text-subtle)", fontWeight: 500 }, children: "Kind" }),
|
|
8604
|
+
/* @__PURE__ */ jsx(Table.Th, { style: { color: "var(--color-text-subtle)", fontWeight: 500 }, children: "Via" }),
|
|
8605
|
+
/* @__PURE__ */ jsx(Table.Th, { style: { color: "var(--color-text-subtle)", fontWeight: 500 }, children: "Label" })
|
|
8784
8606
|
] }) }),
|
|
8785
8607
|
/* @__PURE__ */ jsx(Table.Tbody, { children: linkEdges.map((edge) => /* @__PURE__ */ jsxs(Table.Tr, { children: [
|
|
8786
8608
|
/* @__PURE__ */ jsx(Table.Td, { style: { fontFamily: "var(--mantine-font-family-monospace)" }, children: edge.targetId }),
|
|
@@ -9204,14 +9026,30 @@ function ContentNodeDescribeView({
|
|
|
9204
9026
|
function BrandingPanel({ model }) {
|
|
9205
9027
|
const branding = model.branding;
|
|
9206
9028
|
if (!branding) {
|
|
9207
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9208
|
-
/* @__PURE__ */ jsx(
|
|
9029
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "sm", children: [
|
|
9030
|
+
/* @__PURE__ */ jsx(
|
|
9031
|
+
KnowledgePageHeader,
|
|
9032
|
+
{
|
|
9033
|
+
title: "Branding",
|
|
9034
|
+
kind: "Domain",
|
|
9035
|
+
tone: "subtle",
|
|
9036
|
+
copyCommand: getKnowledgeDomainFolderCommand("branding")
|
|
9037
|
+
}
|
|
9038
|
+
),
|
|
9209
9039
|
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "No branding configured." })
|
|
9210
9040
|
] });
|
|
9211
9041
|
}
|
|
9212
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9213
|
-
/* @__PURE__ */ jsx(
|
|
9214
|
-
|
|
9042
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "md", children: [
|
|
9043
|
+
/* @__PURE__ */ jsx(
|
|
9044
|
+
KnowledgePageHeader,
|
|
9045
|
+
{
|
|
9046
|
+
title: "Branding",
|
|
9047
|
+
kind: "Domain",
|
|
9048
|
+
tone: "subtle",
|
|
9049
|
+
copyCommand: getKnowledgeDomainFolderCommand("branding")
|
|
9050
|
+
}
|
|
9051
|
+
),
|
|
9052
|
+
/* @__PURE__ */ jsx(Divider, {}),
|
|
9215
9053
|
/* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
|
|
9216
9054
|
/* @__PURE__ */ jsxs(Group, { gap: "xs", children: [
|
|
9217
9055
|
/* @__PURE__ */ jsx(Text, { size: "sm", fw: 500, c: "dimmed", style: { minWidth: 140 }, children: "Organization Name" }),
|
|
@@ -9272,13 +9110,29 @@ function CustomersPanel({ model, filterToItemId }) {
|
|
|
9272
9110
|
const customers = model.customers;
|
|
9273
9111
|
const segments = Object.values(customers).filter((segment) => !filterToItemId || segment.id === filterToItemId).sort((a, b) => a.order - b.order);
|
|
9274
9112
|
if (segments.length === 0) {
|
|
9275
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9276
|
-
/* @__PURE__ */ jsx(
|
|
9113
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "sm", children: [
|
|
9114
|
+
/* @__PURE__ */ jsx(
|
|
9115
|
+
KnowledgePageHeader,
|
|
9116
|
+
{
|
|
9117
|
+
title: "Customers",
|
|
9118
|
+
kind: "Domain",
|
|
9119
|
+
tone: "subtle",
|
|
9120
|
+
copyCommand: getKnowledgeDomainFolderCommand("customers")
|
|
9121
|
+
}
|
|
9122
|
+
),
|
|
9277
9123
|
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: filterToItemId ? "Customer segment not found." : "No customer segments defined yet." })
|
|
9278
9124
|
] });
|
|
9279
9125
|
}
|
|
9280
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9281
|
-
/* @__PURE__ */ jsx(
|
|
9126
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "md", children: [
|
|
9127
|
+
/* @__PURE__ */ jsx(
|
|
9128
|
+
KnowledgePageHeader,
|
|
9129
|
+
{
|
|
9130
|
+
title: "Customers",
|
|
9131
|
+
kind: "Domain",
|
|
9132
|
+
tone: "subtle",
|
|
9133
|
+
copyCommand: getKnowledgeDomainFolderCommand("customers")
|
|
9134
|
+
}
|
|
9135
|
+
),
|
|
9282
9136
|
/* @__PURE__ */ jsxs(Text, { size: "sm", c: "dimmed", children: [
|
|
9283
9137
|
segments.length,
|
|
9284
9138
|
" segment",
|
|
@@ -9326,13 +9180,29 @@ function GoalsPanel({ model, filterToItemId }) {
|
|
|
9326
9180
|
const goals = model.goals;
|
|
9327
9181
|
const objectives = Object.values(goals).filter((objective) => !filterToItemId || objective.id === filterToItemId).sort((a, b) => a.order - b.order);
|
|
9328
9182
|
if (objectives.length === 0) {
|
|
9329
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9330
|
-
/* @__PURE__ */ jsx(
|
|
9183
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "sm", children: [
|
|
9184
|
+
/* @__PURE__ */ jsx(
|
|
9185
|
+
KnowledgePageHeader,
|
|
9186
|
+
{
|
|
9187
|
+
title: "Goals",
|
|
9188
|
+
kind: "Domain",
|
|
9189
|
+
tone: "subtle",
|
|
9190
|
+
copyCommand: getKnowledgeDomainFolderCommand("goals")
|
|
9191
|
+
}
|
|
9192
|
+
),
|
|
9331
9193
|
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: filterToItemId ? "Goal not found." : "No goals defined yet." })
|
|
9332
9194
|
] });
|
|
9333
9195
|
}
|
|
9334
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9335
|
-
/* @__PURE__ */ jsx(
|
|
9196
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "md", children: [
|
|
9197
|
+
/* @__PURE__ */ jsx(
|
|
9198
|
+
KnowledgePageHeader,
|
|
9199
|
+
{
|
|
9200
|
+
title: "Goals",
|
|
9201
|
+
kind: "Domain",
|
|
9202
|
+
tone: "subtle",
|
|
9203
|
+
copyCommand: getKnowledgeDomainFolderCommand("goals")
|
|
9204
|
+
}
|
|
9205
|
+
),
|
|
9336
9206
|
/* @__PURE__ */ jsxs(Text, { size: "sm", c: "dimmed", children: [
|
|
9337
9207
|
objectives.length,
|
|
9338
9208
|
" goal",
|
|
@@ -9393,8 +9263,16 @@ function IdentityPanel({ model }) {
|
|
|
9393
9263
|
const identity = model.identity;
|
|
9394
9264
|
const hasAnyField = identity.mission || identity.vision || identity.legalName || identity.entityType || identity.jurisdiction || identity.industryCategory || identity.geographicFocus || identity.timeZone !== "UTC" || identity.clientBrief;
|
|
9395
9265
|
if (!hasAnyField) {
|
|
9396
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9397
|
-
/* @__PURE__ */ jsx(
|
|
9266
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "sm", children: [
|
|
9267
|
+
/* @__PURE__ */ jsx(
|
|
9268
|
+
KnowledgePageHeader,
|
|
9269
|
+
{
|
|
9270
|
+
title: "Identity",
|
|
9271
|
+
kind: "Domain",
|
|
9272
|
+
tone: "subtle",
|
|
9273
|
+
copyCommand: getKnowledgeDomainFolderCommand("identity")
|
|
9274
|
+
}
|
|
9275
|
+
),
|
|
9398
9276
|
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "No identity configured." })
|
|
9399
9277
|
] });
|
|
9400
9278
|
}
|
|
@@ -9403,8 +9281,16 @@ function IdentityPanel({ model }) {
|
|
|
9403
9281
|
return { day: capitalize(day), hours };
|
|
9404
9282
|
});
|
|
9405
9283
|
const hasBusinessHours = businessHoursRows.some((r) => r.hours !== void 0);
|
|
9406
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9407
|
-
/* @__PURE__ */ jsx(
|
|
9284
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "md", children: [
|
|
9285
|
+
/* @__PURE__ */ jsx(
|
|
9286
|
+
KnowledgePageHeader,
|
|
9287
|
+
{
|
|
9288
|
+
title: "Identity",
|
|
9289
|
+
kind: "Domain",
|
|
9290
|
+
tone: "subtle",
|
|
9291
|
+
copyCommand: getKnowledgeDomainFolderCommand("identity")
|
|
9292
|
+
}
|
|
9293
|
+
),
|
|
9408
9294
|
/* @__PURE__ */ jsx(Divider, {}),
|
|
9409
9295
|
/* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
|
|
9410
9296
|
identity.mission && /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
@@ -9462,8 +9348,16 @@ var SURFACE_TYPE_COLORS = {
|
|
|
9462
9348
|
function NavigationPanel({ model, onNavigateToNode, lastModified }) {
|
|
9463
9349
|
const surfaces = projectNavigationSurfaces(model);
|
|
9464
9350
|
const groups = projectNavigationGroups(model);
|
|
9465
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9466
|
-
/* @__PURE__ */ jsx(
|
|
9351
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "md", children: [
|
|
9352
|
+
/* @__PURE__ */ jsx(
|
|
9353
|
+
KnowledgePageHeader,
|
|
9354
|
+
{
|
|
9355
|
+
title: "Navigation",
|
|
9356
|
+
kind: "Domain",
|
|
9357
|
+
tone: "subtle",
|
|
9358
|
+
copyCommand: getKnowledgeDomainFolderCommand("navigation")
|
|
9359
|
+
}
|
|
9360
|
+
),
|
|
9467
9361
|
/* @__PURE__ */ jsxs(Text, { size: "sm", c: "dimmed", children: [
|
|
9468
9362
|
surfaces.length,
|
|
9469
9363
|
" surface",
|
|
@@ -9557,13 +9451,29 @@ function OfferingsPanel({ model, onNavigateToNode, filterToItemId }) {
|
|
|
9557
9451
|
const offerings = model.offerings;
|
|
9558
9452
|
const products = Object.values(offerings).filter((product) => !filterToItemId || product.id === filterToItemId).sort((a, b) => a.order - b.order);
|
|
9559
9453
|
if (products.length === 0) {
|
|
9560
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9561
|
-
/* @__PURE__ */ jsx(
|
|
9454
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "sm", children: [
|
|
9455
|
+
/* @__PURE__ */ jsx(
|
|
9456
|
+
KnowledgePageHeader,
|
|
9457
|
+
{
|
|
9458
|
+
title: "Offerings",
|
|
9459
|
+
kind: "Domain",
|
|
9460
|
+
tone: "subtle",
|
|
9461
|
+
copyCommand: getKnowledgeDomainFolderCommand("offerings")
|
|
9462
|
+
}
|
|
9463
|
+
),
|
|
9562
9464
|
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: filterToItemId ? "Offering not found." : "No offerings defined yet." })
|
|
9563
9465
|
] });
|
|
9564
9466
|
}
|
|
9565
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9566
|
-
/* @__PURE__ */ jsx(
|
|
9467
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "md", children: [
|
|
9468
|
+
/* @__PURE__ */ jsx(
|
|
9469
|
+
KnowledgePageHeader,
|
|
9470
|
+
{
|
|
9471
|
+
title: "Offerings",
|
|
9472
|
+
kind: "Domain",
|
|
9473
|
+
tone: "subtle",
|
|
9474
|
+
copyCommand: getKnowledgeDomainFolderCommand("offerings")
|
|
9475
|
+
}
|
|
9476
|
+
),
|
|
9567
9477
|
/* @__PURE__ */ jsxs(Text, { size: "sm", c: "dimmed", children: [
|
|
9568
9478
|
products.length,
|
|
9569
9479
|
" product",
|
|
@@ -9731,13 +9641,29 @@ function PoliciesPanel({ model, onNavigateToNode, filterToItemId }) {
|
|
|
9731
9641
|
const policiesRecord = model.policies ?? {};
|
|
9732
9642
|
const policies = Object.values(policiesRecord).filter((policy) => !filterToItemId || policy.id === filterToItemId).sort((a, b) => a.id.localeCompare(b.id));
|
|
9733
9643
|
if (policies.length === 0) {
|
|
9734
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9735
|
-
/* @__PURE__ */ jsx(
|
|
9644
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "sm", children: [
|
|
9645
|
+
/* @__PURE__ */ jsx(
|
|
9646
|
+
KnowledgePageHeader,
|
|
9647
|
+
{
|
|
9648
|
+
title: "Policies",
|
|
9649
|
+
kind: "Domain",
|
|
9650
|
+
tone: "subtle",
|
|
9651
|
+
copyCommand: getKnowledgeDomainFolderCommand("policies")
|
|
9652
|
+
}
|
|
9653
|
+
),
|
|
9736
9654
|
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: filterToItemId ? "Policy not found." : "No policies defined yet." })
|
|
9737
9655
|
] });
|
|
9738
9656
|
}
|
|
9739
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9740
|
-
/* @__PURE__ */ jsx(
|
|
9657
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "md", children: [
|
|
9658
|
+
/* @__PURE__ */ jsx(
|
|
9659
|
+
KnowledgePageHeader,
|
|
9660
|
+
{
|
|
9661
|
+
title: "Policies",
|
|
9662
|
+
kind: "Domain",
|
|
9663
|
+
tone: "subtle",
|
|
9664
|
+
copyCommand: getKnowledgeDomainFolderCommand("policies")
|
|
9665
|
+
}
|
|
9666
|
+
),
|
|
9741
9667
|
/* @__PURE__ */ jsxs(Text, { size: "sm", c: "dimmed", children: [
|
|
9742
9668
|
policies.length,
|
|
9743
9669
|
" polic",
|
|
@@ -9765,13 +9691,29 @@ function RolesPanel({ model, onNavigateToNode, filterToItemId }) {
|
|
|
9765
9691
|
const roles = model.roles;
|
|
9766
9692
|
const roleList = Object.values(roles).filter((role) => !filterToItemId || role.id === filterToItemId).sort((a, b) => a.order - b.order);
|
|
9767
9693
|
if (roleList.length === 0) {
|
|
9768
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9769
|
-
/* @__PURE__ */ jsx(
|
|
9694
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "sm", children: [
|
|
9695
|
+
/* @__PURE__ */ jsx(
|
|
9696
|
+
KnowledgePageHeader,
|
|
9697
|
+
{
|
|
9698
|
+
title: "Roles",
|
|
9699
|
+
kind: "Domain",
|
|
9700
|
+
tone: "subtle",
|
|
9701
|
+
copyCommand: getKnowledgeDomainFolderCommand("roles")
|
|
9702
|
+
}
|
|
9703
|
+
),
|
|
9770
9704
|
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: filterToItemId ? "Role not found." : "No roles defined yet." })
|
|
9771
9705
|
] });
|
|
9772
9706
|
}
|
|
9773
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9774
|
-
/* @__PURE__ */ jsx(
|
|
9707
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "md", children: [
|
|
9708
|
+
/* @__PURE__ */ jsx(
|
|
9709
|
+
KnowledgePageHeader,
|
|
9710
|
+
{
|
|
9711
|
+
title: "Roles",
|
|
9712
|
+
kind: "Domain",
|
|
9713
|
+
tone: "subtle",
|
|
9714
|
+
copyCommand: getKnowledgeDomainFolderCommand("roles")
|
|
9715
|
+
}
|
|
9716
|
+
),
|
|
9775
9717
|
/* @__PURE__ */ jsxs(Text, { size: "sm", c: "dimmed", children: [
|
|
9776
9718
|
roleList.length,
|
|
9777
9719
|
" role",
|
|
@@ -9867,8 +9809,16 @@ function collectAllStatusEntries(model) {
|
|
|
9867
9809
|
function StatusesPanel({ model, filterToItemId }) {
|
|
9868
9810
|
const allEntries = collectAllStatusEntries(model).filter((entry) => !filterToItemId || entry.id === filterToItemId).sort((a, b) => a.order - b.order);
|
|
9869
9811
|
if (allEntries.length === 0) {
|
|
9870
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9871
|
-
/* @__PURE__ */ jsx(
|
|
9812
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "sm", children: [
|
|
9813
|
+
/* @__PURE__ */ jsx(
|
|
9814
|
+
KnowledgePageHeader,
|
|
9815
|
+
{
|
|
9816
|
+
title: "Statuses",
|
|
9817
|
+
kind: "Domain",
|
|
9818
|
+
tone: "subtle",
|
|
9819
|
+
copyCommand: getKnowledgeDomainFolderCommand("statuses")
|
|
9820
|
+
}
|
|
9821
|
+
),
|
|
9872
9822
|
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: filterToItemId ? "Status not found." : "No statuses defined yet." })
|
|
9873
9823
|
] });
|
|
9874
9824
|
}
|
|
@@ -9911,8 +9861,16 @@ function StatusesPanel({ model, filterToItemId }) {
|
|
|
9911
9861
|
/* @__PURE__ */ jsx(Table.Td, { ta: "right", children: /* @__PURE__ */ jsx(Text, { size: "sm", children: entry.order }) })
|
|
9912
9862
|
] }, entry.id)) })
|
|
9913
9863
|
] }) });
|
|
9914
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
9915
|
-
/* @__PURE__ */ jsx(
|
|
9864
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "md", children: [
|
|
9865
|
+
/* @__PURE__ */ jsx(
|
|
9866
|
+
KnowledgePageHeader,
|
|
9867
|
+
{
|
|
9868
|
+
title: "Statuses",
|
|
9869
|
+
kind: "Domain",
|
|
9870
|
+
tone: "subtle",
|
|
9871
|
+
copyCommand: getKnowledgeDomainFolderCommand("statuses")
|
|
9872
|
+
}
|
|
9873
|
+
),
|
|
9916
9874
|
/* @__PURE__ */ jsxs(Text, { size: "sm", c: "dimmed", children: [
|
|
9917
9875
|
allEntries.length,
|
|
9918
9876
|
" status",
|
|
@@ -9956,27 +9914,110 @@ function StatusesPanel({ model, filterToItemId }) {
|
|
|
9956
9914
|
)) })
|
|
9957
9915
|
] });
|
|
9958
9916
|
}
|
|
9917
|
+
var SOURCE_COLORS = {
|
|
9918
|
+
ontology: "blue",
|
|
9919
|
+
"legacy-bridge": "gray",
|
|
9920
|
+
resource: "green"
|
|
9921
|
+
};
|
|
9922
|
+
function formatSource(source) {
|
|
9923
|
+
return source === "legacy-bridge" ? "legacy bridge" : source;
|
|
9924
|
+
}
|
|
9925
|
+
function OntologyStats({
|
|
9926
|
+
projection
|
|
9927
|
+
}) {
|
|
9928
|
+
const primaryStats = [
|
|
9929
|
+
"ontology-objects",
|
|
9930
|
+
"ontology-links",
|
|
9931
|
+
"ontology-actions",
|
|
9932
|
+
"ontology-catalogs",
|
|
9933
|
+
"ontology-events",
|
|
9934
|
+
"ontology-surfaces"
|
|
9935
|
+
];
|
|
9936
|
+
const optionalStats = [
|
|
9937
|
+
"ontology-interfaces",
|
|
9938
|
+
"ontology-value-types",
|
|
9939
|
+
"ontology-properties",
|
|
9940
|
+
"ontology-groups"
|
|
9941
|
+
];
|
|
9942
|
+
const stats = [
|
|
9943
|
+
...primaryStats.map((domainKey) => ({
|
|
9944
|
+
domainKey,
|
|
9945
|
+
value: getPrimaryOntologyItemsForDomain(projection, domainKey).length
|
|
9946
|
+
})),
|
|
9947
|
+
...optionalStats.map((domainKey) => ({
|
|
9948
|
+
domainKey,
|
|
9949
|
+
value: getPrimaryOntologyItemsForDomain(projection, domainKey).length
|
|
9950
|
+
})).filter((stat) => stat.value > 0)
|
|
9951
|
+
];
|
|
9952
|
+
return /* @__PURE__ */ jsx(SimpleGrid, { cols: { base: 2, sm: 5 }, spacing: "xs", children: stats.map((stat) => /* @__PURE__ */ jsx(StatCard, { label: getOntologyDomainLabel(stat.domainKey), value: stat.value }, stat.domainKey)) });
|
|
9953
|
+
}
|
|
9954
|
+
function StatCard({ label, value }) {
|
|
9955
|
+
return /* @__PURE__ */ jsxs(Card, { withBorder: true, padding: "sm", radius: "sm", children: [
|
|
9956
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, style: { color: "var(--color-text-subtle)" }, children: label }),
|
|
9957
|
+
/* @__PURE__ */ jsx(Text, { size: "xl", fw: 800, ff: "monospace", children: value })
|
|
9958
|
+
] });
|
|
9959
|
+
}
|
|
9960
|
+
function MetadataSummary({ item }) {
|
|
9961
|
+
const entries = Object.entries(item.meta).slice(0, 3);
|
|
9962
|
+
if (entries.length === 0) return null;
|
|
9963
|
+
return /* @__PURE__ */ jsx(Group, { gap: 4, wrap: "wrap", children: entries.map(([key, value]) => /* @__PURE__ */ jsxs(Badge, { variant: "outline", color: "gray", size: "xs", children: [
|
|
9964
|
+
key,
|
|
9965
|
+
": ",
|
|
9966
|
+
String(value)
|
|
9967
|
+
] }, key)) });
|
|
9968
|
+
}
|
|
9969
|
+
function OntologyPanel({ model, domainKey, filterToItemId }) {
|
|
9970
|
+
const projection = getKnowledgeOntologyProjection(model);
|
|
9971
|
+
const label = getOntologyDomainLabel(domainKey);
|
|
9972
|
+
const items = getPrimaryOntologyItemsForDomain(projection, domainKey).filter(
|
|
9973
|
+
(item) => !filterToItemId || item.id === filterToItemId
|
|
9974
|
+
);
|
|
9975
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "md", children: [
|
|
9976
|
+
/* @__PURE__ */ jsx(
|
|
9977
|
+
KnowledgePageHeader,
|
|
9978
|
+
{
|
|
9979
|
+
title: label,
|
|
9980
|
+
kind: "Ontology",
|
|
9981
|
+
tone: "subtle",
|
|
9982
|
+
description: "Primary ontology records from authored scopes.",
|
|
9983
|
+
copyCommand: getKnowledgeDomainFolderCommand(domainKey),
|
|
9984
|
+
badges: /* @__PURE__ */ jsxs(Group, { gap: "xs", children: [
|
|
9985
|
+
/* @__PURE__ */ jsxs(Badge, { variant: "light", color: "blue", children: [
|
|
9986
|
+
items.length,
|
|
9987
|
+
" records"
|
|
9988
|
+
] }),
|
|
9989
|
+
projection.diagnosticsCount > 0 && /* @__PURE__ */ jsxs(Badge, { variant: "light", color: "red", children: [
|
|
9990
|
+
projection.diagnosticsCount,
|
|
9991
|
+
" diagnostics"
|
|
9992
|
+
] })
|
|
9993
|
+
] })
|
|
9994
|
+
}
|
|
9995
|
+
),
|
|
9996
|
+
!filterToItemId && /* @__PURE__ */ jsx(OntologyStats, { projection }),
|
|
9997
|
+
items.length === 0 ? /* @__PURE__ */ jsx(Text, { size: "sm", style: { color: "var(--color-text-subtle)" }, children: filterToItemId ? "Ontology record not found." : `No ${label.toLowerCase()} projected yet.` }) : /* @__PURE__ */ jsx(Card, { withBorder: true, padding: 0, radius: "sm", children: /* @__PURE__ */ jsxs(Table, { verticalSpacing: "xs", horizontalSpacing: "md", children: [
|
|
9998
|
+
/* @__PURE__ */ jsx(Table.Thead, { children: /* @__PURE__ */ jsxs(Table.Tr, { children: [
|
|
9999
|
+
/* @__PURE__ */ jsx(Table.Th, { children: "Record" }),
|
|
10000
|
+
/* @__PURE__ */ jsx(Table.Th, { children: "Owner" }),
|
|
10001
|
+
/* @__PURE__ */ jsx(Table.Th, { children: "Source" }),
|
|
10002
|
+
/* @__PURE__ */ jsx(Table.Th, { children: "Metadata" })
|
|
10003
|
+
] }) }),
|
|
10004
|
+
/* @__PURE__ */ jsx(Table.Tbody, { children: items.map((item) => /* @__PURE__ */ jsxs(Table.Tr, { children: [
|
|
10005
|
+
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsxs(Stack, { gap: 3, children: [
|
|
10006
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", fw: 650, children: item.label }),
|
|
10007
|
+
/* @__PURE__ */ jsx(Code, { fz: "xs", style: { whiteSpace: "normal" }, children: item.id }),
|
|
10008
|
+
item.description && /* @__PURE__ */ jsx(Text, { size: "xs", lineClamp: 2, style: { color: "var(--color-text-subtle)" }, children: item.description })
|
|
10009
|
+
] }) }),
|
|
10010
|
+
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Text, { size: "sm", style: { color: "var(--color-text-subtle)" }, children: item.ownerSystemId ?? "global" }) }),
|
|
10011
|
+
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Badge, { variant: "light", color: SOURCE_COLORS[item.source], children: formatSource(item.source) }) }),
|
|
10012
|
+
/* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(MetadataSummary, { item }) })
|
|
10013
|
+
] }, item.id)) })
|
|
10014
|
+
] }) })
|
|
10015
|
+
] });
|
|
10016
|
+
}
|
|
9959
10017
|
function resolveKnowledgeNode(graphNode, knowledgeNodes) {
|
|
9960
10018
|
const knowledgeId = graphNode.sourceId ?? graphNode.id.replace(/^knowledge:/, "");
|
|
9961
10019
|
return knowledgeNodes.find((knowledgeNode) => knowledgeNode.id === knowledgeId);
|
|
9962
10020
|
}
|
|
9963
|
-
function GraphNodeFrame({ children }) {
|
|
9964
|
-
return /* @__PURE__ */ jsx(Box, { style: { width: "100%" }, children: /* @__PURE__ */ jsx(PageContainer, { children: /* @__PURE__ */ jsx(
|
|
9965
|
-
Paper,
|
|
9966
|
-
{
|
|
9967
|
-
withBorder: true,
|
|
9968
|
-
style: {
|
|
9969
|
-
minWidth: 0,
|
|
9970
|
-
width: "100%",
|
|
9971
|
-
maxWidth: 820,
|
|
9972
|
-
marginInline: "auto",
|
|
9973
|
-
background: "var(--glass-background)",
|
|
9974
|
-
borderColor: "var(--color-border)"
|
|
9975
|
-
},
|
|
9976
|
-
children
|
|
9977
|
-
}
|
|
9978
|
-
) }) });
|
|
9979
|
-
}
|
|
9980
10021
|
function isTreeSelectionNode(node) {
|
|
9981
10022
|
return "nodeType" in node;
|
|
9982
10023
|
}
|
|
@@ -9984,7 +10025,7 @@ function hasDomainPanel(domainKey) {
|
|
|
9984
10025
|
return KNOWLEDGE_DOMAINS_WITH_PANELS.has(domainKey);
|
|
9985
10026
|
}
|
|
9986
10027
|
function UnavailableDomainPanel({ domainKey }) {
|
|
9987
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
10028
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "xs", children: [
|
|
9988
10029
|
/* @__PURE__ */ jsx(Text, { fw: 650, children: "Domain unavailable" }),
|
|
9989
10030
|
/* @__PURE__ */ jsxs(Text, { size: "sm", c: "dimmed", children: [
|
|
9990
10031
|
"No organization model was provided for `",
|
|
@@ -10019,8 +10060,20 @@ function DomainPanel({
|
|
|
10019
10060
|
return /* @__PURE__ */ jsx(NavigationPanel, { model, onNavigateToNode });
|
|
10020
10061
|
case "policies":
|
|
10021
10062
|
return /* @__PURE__ */ jsx(PoliciesPanel, { model, onNavigateToNode, filterToItemId });
|
|
10063
|
+
case "ontology-objects":
|
|
10064
|
+
case "ontology-links":
|
|
10065
|
+
case "ontology-actions":
|
|
10066
|
+
case "ontology-catalogs":
|
|
10067
|
+
case "ontology-events":
|
|
10068
|
+
case "ontology-interfaces":
|
|
10069
|
+
case "ontology-value-types":
|
|
10070
|
+
case "ontology-properties":
|
|
10071
|
+
case "ontology-groups":
|
|
10072
|
+
case "ontology-surfaces":
|
|
10073
|
+
case "ontology-resources":
|
|
10074
|
+
return /* @__PURE__ */ jsx(OntologyPanel, { model, domainKey, filterToItemId });
|
|
10022
10075
|
default:
|
|
10023
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
10076
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "xs", children: [
|
|
10024
10077
|
/* @__PURE__ */ jsx(Text, { fw: 650, children: "Unknown domain" }),
|
|
10025
10078
|
/* @__PURE__ */ jsxs(Text, { size: "sm", c: "dimmed", children: [
|
|
10026
10079
|
"No panel for `",
|
|
@@ -10039,16 +10092,18 @@ function childSummary(child) {
|
|
|
10039
10092
|
}
|
|
10040
10093
|
function GroupOverviewPanel({ node }) {
|
|
10041
10094
|
const children = node.children ?? [];
|
|
10042
|
-
|
|
10043
|
-
|
|
10044
|
-
|
|
10045
|
-
|
|
10046
|
-
|
|
10047
|
-
|
|
10048
|
-
|
|
10049
|
-
"
|
|
10050
|
-
|
|
10051
|
-
|
|
10095
|
+
const copyCommand = node.value ? getKnowledgeTreeFolderCommand(node.value) : void 0;
|
|
10096
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "md", children: [
|
|
10097
|
+
/* @__PURE__ */ jsx(
|
|
10098
|
+
KnowledgePageHeader,
|
|
10099
|
+
{
|
|
10100
|
+
title: node.label,
|
|
10101
|
+
kind: "Group",
|
|
10102
|
+
tone: "subtle",
|
|
10103
|
+
description: `${children.length} child branch${children.length === 1 ? "" : "es"}.`,
|
|
10104
|
+
copyCommand
|
|
10105
|
+
}
|
|
10106
|
+
),
|
|
10052
10107
|
/* @__PURE__ */ jsx(Divider, {}),
|
|
10053
10108
|
children.length === 0 ? /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "No child branches available." }) : /* @__PURE__ */ jsx(Stack, { gap: "sm", children: children.map((child) => /* @__PURE__ */ jsx(Card, { withBorder: true, padding: "md", children: /* @__PURE__ */ jsxs(Group, { justify: "space-between", align: "start", gap: "md", wrap: "nowrap", children: [
|
|
10054
10109
|
/* @__PURE__ */ jsxs(Stack, { gap: 4, style: { minWidth: 0 }, children: [
|
|
@@ -10059,6 +10114,54 @@ function GroupOverviewPanel({ node }) {
|
|
|
10059
10114
|
] }) }, child.value ?? child.id ?? `${child.nodeType}:${child.label}`)) })
|
|
10060
10115
|
] });
|
|
10061
10116
|
}
|
|
10117
|
+
function OntologyDescribeView({
|
|
10118
|
+
node,
|
|
10119
|
+
graph,
|
|
10120
|
+
knowledgeNodes,
|
|
10121
|
+
onNavigateToNode
|
|
10122
|
+
}) {
|
|
10123
|
+
const parentSystemEdge = graph.edges.find(
|
|
10124
|
+
(edge) => edge.kind === "contains" && edge.targetId === node.id && graph.nodes.find((candidate) => candidate.id === edge.sourceId)?.kind === "system"
|
|
10125
|
+
);
|
|
10126
|
+
return /* @__PURE__ */ jsx(
|
|
10127
|
+
NodeDescribeShell,
|
|
10128
|
+
{
|
|
10129
|
+
header: /* @__PURE__ */ jsx(
|
|
10130
|
+
KnowledgePageHeader,
|
|
10131
|
+
{
|
|
10132
|
+
title: node.label,
|
|
10133
|
+
kind: "Ontology",
|
|
10134
|
+
tone: "subtle",
|
|
10135
|
+
description: node.description,
|
|
10136
|
+
copyCommand: getKnowledgeGraphNodeCommand(node),
|
|
10137
|
+
badges: node.ontologyKind ? /* @__PURE__ */ jsx(KindChip, { kind: node.ontologyKind, tone: "muted" }) : void 0
|
|
10138
|
+
}
|
|
10139
|
+
),
|
|
10140
|
+
content: /* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
|
|
10141
|
+
/* @__PURE__ */ jsx(KeyField, { label: "ID", value: node.id }),
|
|
10142
|
+
node.sourceId !== void 0 && /* @__PURE__ */ jsx(KeyField, { label: "Ontology ID", value: node.sourceId }),
|
|
10143
|
+
node.ontologyKind !== void 0 && /* @__PURE__ */ jsx(KeyField, { label: "Ontology kind", value: node.ontologyKind }),
|
|
10144
|
+
parentSystemEdge !== void 0 && /* @__PURE__ */ jsx(
|
|
10145
|
+
KeyField,
|
|
10146
|
+
{
|
|
10147
|
+
label: "System",
|
|
10148
|
+
value: graph.nodes.find((candidate) => candidate.id === parentSystemEdge.sourceId)?.label ?? parentSystemEdge.sourceId
|
|
10149
|
+
}
|
|
10150
|
+
)
|
|
10151
|
+
] }),
|
|
10152
|
+
relationships: /* @__PURE__ */ jsx(
|
|
10153
|
+
EdgeRelationshipGroup,
|
|
10154
|
+
{
|
|
10155
|
+
nodeId: node.id,
|
|
10156
|
+
graph,
|
|
10157
|
+
knowledgeNodes,
|
|
10158
|
+
onNavigateToNode
|
|
10159
|
+
}
|
|
10160
|
+
),
|
|
10161
|
+
footer: /* @__PURE__ */ jsx(NodeMetadataFooter, { node })
|
|
10162
|
+
}
|
|
10163
|
+
);
|
|
10164
|
+
}
|
|
10062
10165
|
function renderTreeSelection(node, organizationModel, onNavigateToNode) {
|
|
10063
10166
|
if (node.nodeType === "group") {
|
|
10064
10167
|
return /* @__PURE__ */ jsx(GroupOverviewPanel, { node });
|
|
@@ -10077,7 +10180,7 @@ function renderTreeSelection(node, organizationModel, onNavigateToNode) {
|
|
|
10077
10180
|
}
|
|
10078
10181
|
);
|
|
10079
10182
|
}
|
|
10080
|
-
return /* @__PURE__ */ jsxs(Stack, { p: "
|
|
10183
|
+
return /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "xs", children: [
|
|
10081
10184
|
/* @__PURE__ */ jsx(Text, { fw: 650, children: node.label }),
|
|
10082
10185
|
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "No panel coverage for this tree node." })
|
|
10083
10186
|
] });
|
|
@@ -10090,12 +10193,12 @@ function DescribeNodeView({
|
|
|
10090
10193
|
onNavigateToNode
|
|
10091
10194
|
}) {
|
|
10092
10195
|
if (isTreeSelectionNode(node)) {
|
|
10093
|
-
return /* @__PURE__ */ jsx(
|
|
10196
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: renderTreeSelection(node, organizationModel, onNavigateToNode) });
|
|
10094
10197
|
}
|
|
10095
10198
|
switch (node.kind) {
|
|
10096
10199
|
case "knowledge": {
|
|
10097
10200
|
const knowledgeNode = resolveKnowledgeNode(node, knowledgeNodes);
|
|
10098
|
-
return knowledgeNode ? /* @__PURE__ */ jsx(KnowledgeNodeView, { node: knowledgeNode, graph, onNavigateToNode }) : /* @__PURE__ */ jsx(
|
|
10201
|
+
return knowledgeNode ? /* @__PURE__ */ jsx(KnowledgeNodeView, { node: knowledgeNode, graph, onNavigateToNode }) : /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
|
|
10099
10202
|
GenericDescribeView,
|
|
10100
10203
|
{
|
|
10101
10204
|
node,
|
|
@@ -10106,17 +10209,18 @@ function DescribeNodeView({
|
|
|
10106
10209
|
) });
|
|
10107
10210
|
}
|
|
10108
10211
|
case "system":
|
|
10109
|
-
return /* @__PURE__ */ jsx(
|
|
10212
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
|
|
10110
10213
|
SystemDescribeView,
|
|
10111
10214
|
{
|
|
10112
10215
|
node,
|
|
10113
10216
|
graph,
|
|
10114
10217
|
knowledgeNodes,
|
|
10115
|
-
onNavigateToNode
|
|
10218
|
+
onNavigateToNode,
|
|
10219
|
+
organizationModel
|
|
10116
10220
|
}
|
|
10117
10221
|
) });
|
|
10118
10222
|
case "resource":
|
|
10119
|
-
return /* @__PURE__ */ jsx(
|
|
10223
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
|
|
10120
10224
|
ResourceDescribeView,
|
|
10121
10225
|
{
|
|
10122
10226
|
node,
|
|
@@ -10125,8 +10229,18 @@ function DescribeNodeView({
|
|
|
10125
10229
|
onNavigateToNode
|
|
10126
10230
|
}
|
|
10127
10231
|
) });
|
|
10232
|
+
case "ontology":
|
|
10233
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
|
|
10234
|
+
OntologyDescribeView,
|
|
10235
|
+
{
|
|
10236
|
+
node,
|
|
10237
|
+
graph,
|
|
10238
|
+
knowledgeNodes,
|
|
10239
|
+
onNavigateToNode
|
|
10240
|
+
}
|
|
10241
|
+
) });
|
|
10128
10242
|
case "organization":
|
|
10129
|
-
return /* @__PURE__ */ jsx(
|
|
10243
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
|
|
10130
10244
|
OrganizationDescribeView,
|
|
10131
10245
|
{
|
|
10132
10246
|
node,
|
|
@@ -10137,7 +10251,7 @@ function DescribeNodeView({
|
|
|
10137
10251
|
}
|
|
10138
10252
|
) });
|
|
10139
10253
|
case "stage":
|
|
10140
|
-
return /* @__PURE__ */ jsx(
|
|
10254
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
|
|
10141
10255
|
StageDescribeView,
|
|
10142
10256
|
{
|
|
10143
10257
|
node,
|
|
@@ -10148,7 +10262,7 @@ function DescribeNodeView({
|
|
|
10148
10262
|
}
|
|
10149
10263
|
) });
|
|
10150
10264
|
case "action":
|
|
10151
|
-
return /* @__PURE__ */ jsx(
|
|
10265
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
|
|
10152
10266
|
ActionDescribeView,
|
|
10153
10267
|
{
|
|
10154
10268
|
node,
|
|
@@ -10158,7 +10272,7 @@ function DescribeNodeView({
|
|
|
10158
10272
|
}
|
|
10159
10273
|
) });
|
|
10160
10274
|
case "entity":
|
|
10161
|
-
return /* @__PURE__ */ jsx(
|
|
10275
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
|
|
10162
10276
|
EntityDescribeView,
|
|
10163
10277
|
{
|
|
10164
10278
|
node,
|
|
@@ -10168,7 +10282,7 @@ function DescribeNodeView({
|
|
|
10168
10282
|
}
|
|
10169
10283
|
) });
|
|
10170
10284
|
case "event":
|
|
10171
|
-
return /* @__PURE__ */ jsx(
|
|
10285
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
|
|
10172
10286
|
EventDescribeView,
|
|
10173
10287
|
{
|
|
10174
10288
|
node,
|
|
@@ -10178,7 +10292,7 @@ function DescribeNodeView({
|
|
|
10178
10292
|
}
|
|
10179
10293
|
) });
|
|
10180
10294
|
case "policy":
|
|
10181
|
-
return /* @__PURE__ */ jsx(
|
|
10295
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
|
|
10182
10296
|
PolicyDescribeView,
|
|
10183
10297
|
{
|
|
10184
10298
|
node,
|
|
@@ -10189,7 +10303,7 @@ function DescribeNodeView({
|
|
|
10189
10303
|
}
|
|
10190
10304
|
) });
|
|
10191
10305
|
case "role":
|
|
10192
|
-
return /* @__PURE__ */ jsx(
|
|
10306
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
|
|
10193
10307
|
RoleDescribeView,
|
|
10194
10308
|
{
|
|
10195
10309
|
node,
|
|
@@ -10200,7 +10314,7 @@ function DescribeNodeView({
|
|
|
10200
10314
|
}
|
|
10201
10315
|
) });
|
|
10202
10316
|
case "surface":
|
|
10203
|
-
return /* @__PURE__ */ jsx(
|
|
10317
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
|
|
10204
10318
|
SurfaceDescribeView,
|
|
10205
10319
|
{
|
|
10206
10320
|
node,
|
|
@@ -10210,7 +10324,7 @@ function DescribeNodeView({
|
|
|
10210
10324
|
}
|
|
10211
10325
|
) });
|
|
10212
10326
|
case "content-node":
|
|
10213
|
-
return /* @__PURE__ */ jsx(
|
|
10327
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
|
|
10214
10328
|
ContentNodeDescribeView,
|
|
10215
10329
|
{
|
|
10216
10330
|
node,
|
|
@@ -10221,7 +10335,7 @@ function DescribeNodeView({
|
|
|
10221
10335
|
}
|
|
10222
10336
|
) });
|
|
10223
10337
|
default:
|
|
10224
|
-
return /* @__PURE__ */ jsx(
|
|
10338
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
|
|
10225
10339
|
GenericDescribeView,
|
|
10226
10340
|
{
|
|
10227
10341
|
node,
|
|
@@ -10232,23 +10346,389 @@ function DescribeNodeView({
|
|
|
10232
10346
|
) });
|
|
10233
10347
|
}
|
|
10234
10348
|
}
|
|
10235
|
-
function
|
|
10349
|
+
function KnowledgeBrowser({
|
|
10350
|
+
graph,
|
|
10351
|
+
knowledgeNodes,
|
|
10352
|
+
organizationModel,
|
|
10353
|
+
initialNodeId,
|
|
10354
|
+
onNavigateToNode,
|
|
10355
|
+
onSelectNode
|
|
10356
|
+
}) {
|
|
10357
|
+
const initialFocus = useMemo(
|
|
10358
|
+
() => resolveInitialFocus(graph, knowledgeNodes, initialNodeId),
|
|
10359
|
+
[graph, initialNodeId, knowledgeNodes]
|
|
10360
|
+
);
|
|
10361
|
+
if (!initialFocus) {
|
|
10362
|
+
return /* @__PURE__ */ jsx(KnowledgeOverview, { graph, knowledgeNodes, onSelectNode });
|
|
10363
|
+
}
|
|
10364
|
+
if (initialFocus.kind === "knowledge") {
|
|
10365
|
+
return /* @__PURE__ */ jsx(KnowledgeNodeView, { node: initialFocus.node, graph, onNavigateToNode });
|
|
10366
|
+
}
|
|
10367
|
+
return /* @__PURE__ */ jsx(
|
|
10368
|
+
DescribeNodeView,
|
|
10369
|
+
{
|
|
10370
|
+
node: initialFocus.node,
|
|
10371
|
+
graph,
|
|
10372
|
+
organizationModel,
|
|
10373
|
+
knowledgeNodes,
|
|
10374
|
+
onNavigateToNode
|
|
10375
|
+
}
|
|
10376
|
+
);
|
|
10377
|
+
}
|
|
10378
|
+
var ENTRY_NODE_IDS = [
|
|
10379
|
+
"knowledge.org-model-reference",
|
|
10380
|
+
"knowledge.org-model-graph-contract",
|
|
10381
|
+
"knowledge.org-model-actions",
|
|
10382
|
+
"knowledge.org-model-entities",
|
|
10383
|
+
"knowledge.org-model-events",
|
|
10384
|
+
"knowledge.org-model-policies",
|
|
10385
|
+
"knowledge.platform-command-view",
|
|
10386
|
+
"knowledge.platform-systems-overview",
|
|
10387
|
+
"knowledge.what-is-elevasis",
|
|
10388
|
+
"knowledge.understanding-elevasis"
|
|
10389
|
+
];
|
|
10390
|
+
function formatKindLabel(kind) {
|
|
10391
|
+
return kind.charAt(0).toUpperCase() + kind.slice(1);
|
|
10392
|
+
}
|
|
10393
|
+
function createKindCounts(nodes) {
|
|
10394
|
+
return nodes.reduce(
|
|
10395
|
+
(counts, node) => {
|
|
10396
|
+
counts[node.kind] += 1;
|
|
10397
|
+
return counts;
|
|
10398
|
+
},
|
|
10399
|
+
{ playbook: 0, strategy: 0, reference: 0 }
|
|
10400
|
+
);
|
|
10401
|
+
}
|
|
10402
|
+
function resolveKnowledgeNodeFromGraphNode(graphNode, knowledgeNodesById) {
|
|
10403
|
+
if (graphNode.sourceId) return knowledgeNodesById.get(graphNode.sourceId);
|
|
10404
|
+
return graphNode.id.startsWith("knowledge:") ? knowledgeNodesById.get(graphNode.id.slice("knowledge:".length)) : void 0;
|
|
10405
|
+
}
|
|
10406
|
+
function resolveBareOntologyGraphNodeId(nodeId) {
|
|
10407
|
+
const ontologyId = OntologyIdSchema.safeParse(nodeId);
|
|
10408
|
+
return ontologyId.success ? ontologyGraphNodeId(ontologyId.data) : void 0;
|
|
10409
|
+
}
|
|
10410
|
+
function decodeInitialNodeId(nodeId) {
|
|
10411
|
+
try {
|
|
10412
|
+
return decodeURIComponent(nodeId);
|
|
10413
|
+
} catch {
|
|
10414
|
+
return nodeId;
|
|
10415
|
+
}
|
|
10416
|
+
}
|
|
10417
|
+
function resolveInitialFocus(graph, knowledgeNodes, initialNodeId) {
|
|
10418
|
+
if (!initialNodeId) return null;
|
|
10419
|
+
const routeNodeId = decodeInitialNodeId(initialNodeId);
|
|
10420
|
+
const knowledgeNodesById = new Map(knowledgeNodes.map((node) => [node.id, node]));
|
|
10421
|
+
const directKnowledgeNode = knowledgeNodesById.get(routeNodeId);
|
|
10422
|
+
if (directKnowledgeNode) return { kind: "knowledge", node: directKnowledgeNode };
|
|
10423
|
+
const graphNodesById = new Map(graph.nodes.map((node) => [node.id, node]));
|
|
10424
|
+
const graphNode = graphNodesById.get(routeNodeId) ?? graphNodesById.get(resolveBareOntologyGraphNodeId(routeNodeId) ?? "") ?? graphNodesById.get(`system:${routeNodeId}`);
|
|
10425
|
+
if (!graphNode) return null;
|
|
10426
|
+
if (graphNode.kind === "knowledge") {
|
|
10427
|
+
const knowledgeNode = resolveKnowledgeNodeFromGraphNode(graphNode, knowledgeNodesById);
|
|
10428
|
+
if (knowledgeNode) return { kind: "knowledge", node: knowledgeNode };
|
|
10429
|
+
}
|
|
10430
|
+
return { kind: "graph", node: graphNode };
|
|
10431
|
+
}
|
|
10432
|
+
function resolveKnowledgeGraphIds(graph) {
|
|
10433
|
+
return new Set(graph.nodes.filter((node) => node.kind === "knowledge").map((node) => node.id));
|
|
10434
|
+
}
|
|
10435
|
+
function getGovernedSystemCoverage(graph) {
|
|
10436
|
+
const graphNodesById = new Map(graph.nodes.map((node) => [node.id, node]));
|
|
10437
|
+
const knowledgeGraphIds = resolveKnowledgeGraphIds(graph);
|
|
10438
|
+
const systemCounts = /* @__PURE__ */ new Map();
|
|
10439
|
+
for (const edge of graph.edges) {
|
|
10440
|
+
if (edge.kind !== "governs" || !knowledgeGraphIds.has(edge.sourceId)) continue;
|
|
10441
|
+
const target = graphNodesById.get(edge.targetId);
|
|
10442
|
+
if (target?.kind !== "system") continue;
|
|
10443
|
+
systemCounts.set(target.id, (systemCounts.get(target.id) ?? 0) + 1);
|
|
10444
|
+
}
|
|
10445
|
+
return [...systemCounts.entries()].map(([systemId, count]) => ({
|
|
10446
|
+
systemId,
|
|
10447
|
+
count,
|
|
10448
|
+
label: graphNodesById.get(systemId)?.label ?? systemId.replace(/^system:/, "")
|
|
10449
|
+
})).sort((left, right) => right.count - left.count || left.label.localeCompare(right.label));
|
|
10450
|
+
}
|
|
10451
|
+
function KnowledgeOverview({ graph, knowledgeNodes, onSelectNode }) {
|
|
10452
|
+
const kindCounts = useMemo(() => createKindCounts(knowledgeNodes), [knowledgeNodes]);
|
|
10453
|
+
const entryNodes = useMemo(
|
|
10454
|
+
() => ENTRY_NODE_IDS.map((id) => knowledgeNodes.find((node) => node.id === id)).filter(
|
|
10455
|
+
(node) => Boolean(node)
|
|
10456
|
+
),
|
|
10457
|
+
[knowledgeNodes]
|
|
10458
|
+
);
|
|
10459
|
+
const recentNodes = useMemo(
|
|
10460
|
+
() => [...knowledgeNodes].sort((left, right) => right.updatedAt.localeCompare(left.updatedAt) || left.title.localeCompare(right.title)).slice(0, 5),
|
|
10461
|
+
[knowledgeNodes]
|
|
10462
|
+
);
|
|
10463
|
+
const governedSystemCoverage = useMemo(() => getGovernedSystemCoverage(graph), [graph]);
|
|
10464
|
+
const governedSystemCount = governedSystemCoverage.length;
|
|
10465
|
+
const governedTargetCount = useMemo(() => {
|
|
10466
|
+
const knowledgeGraphIds = resolveKnowledgeGraphIds(graph);
|
|
10467
|
+
return new Set(
|
|
10468
|
+
graph.edges.filter((edge) => edge.kind === "governs" && knowledgeGraphIds.has(edge.sourceId)).map((edge) => edge.targetId)
|
|
10469
|
+
).size;
|
|
10470
|
+
}, [graph]);
|
|
10236
10471
|
return /* @__PURE__ */ jsx(Box, { style: { width: "100%" }, children: /* @__PURE__ */ jsx(PageContainer, { children: /* @__PURE__ */ jsx(
|
|
10237
10472
|
Paper,
|
|
10238
10473
|
{
|
|
10239
10474
|
withBorder: true,
|
|
10240
10475
|
style: {
|
|
10241
|
-
|
|
10242
|
-
|
|
10243
|
-
maxWidth: 820,
|
|
10244
|
-
marginInline: "auto",
|
|
10476
|
+
maxWidth: 920,
|
|
10477
|
+
margin: "0 auto",
|
|
10245
10478
|
background: "var(--glass-background)",
|
|
10246
10479
|
borderColor: "var(--color-border)"
|
|
10247
10480
|
},
|
|
10248
|
-
children
|
|
10481
|
+
children: /* @__PURE__ */ jsxs(Stack, { gap: "xl", p: "lg", children: [
|
|
10482
|
+
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: /* @__PURE__ */ jsxs(Group, { justify: "space-between", align: "start", gap: "md", children: [
|
|
10483
|
+
/* @__PURE__ */ jsxs(Group, { gap: "sm", align: "start", wrap: "nowrap", children: [
|
|
10484
|
+
/* @__PURE__ */ jsx(ThemeIcon, { variant: "light", color: "blue", radius: "sm", size: "lg", children: /* @__PURE__ */ jsx(SemanticIcon, { token: "knowledge", size: 18 }) }),
|
|
10485
|
+
/* @__PURE__ */ jsxs(Box, { children: [
|
|
10486
|
+
/* @__PURE__ */ jsx(Title, { order: 1, size: "h2", children: "Knowledge Base" }),
|
|
10487
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", maw: 720, mt: 4, style: { color: "var(--color-text-subtle)" }, children: "Start at Profile to understand the org. Browse Business Model for who we serve and what we sell. Systems is operational structure. Ontology shows the machinery. Governance & Wiring covers cross-cutting roles, policies, statuses, and navigation surfaces." })
|
|
10488
|
+
] })
|
|
10489
|
+
] }),
|
|
10490
|
+
/* @__PURE__ */ jsxs(Badge, { variant: "light", color: "blue", children: [
|
|
10491
|
+
knowledgeNodes.length,
|
|
10492
|
+
" nodes"
|
|
10493
|
+
] })
|
|
10494
|
+
] }) }),
|
|
10495
|
+
/* @__PURE__ */ jsxs(SimpleGrid, { cols: { base: 1, sm: 2, md: 4 }, spacing: "sm", children: [
|
|
10496
|
+
/* @__PURE__ */ jsx(OverviewStat, { label: "Knowledge nodes", value: knowledgeNodes.length.toString() }),
|
|
10497
|
+
/* @__PURE__ */ jsx(OverviewStat, { label: "Governed areas", value: governedTargetCount.toString() }),
|
|
10498
|
+
/* @__PURE__ */ jsx(OverviewStat, { label: "Covered systems", value: governedSystemCount.toString() }),
|
|
10499
|
+
/* @__PURE__ */ jsx(OverviewStat, { label: "Graph nodes", value: graph.nodes.length.toString() })
|
|
10500
|
+
] }),
|
|
10501
|
+
/* @__PURE__ */ jsx(Divider, {}),
|
|
10502
|
+
/* @__PURE__ */ jsxs(SimpleGrid, { cols: { base: 1, md: 3 }, spacing: "lg", children: [
|
|
10503
|
+
/* @__PURE__ */ jsx(
|
|
10504
|
+
OverviewSection,
|
|
10505
|
+
{
|
|
10506
|
+
title: "Profile",
|
|
10507
|
+
body: "Understand identity, branding, mission, legal shape, and business hours before moving into the model."
|
|
10508
|
+
}
|
|
10509
|
+
),
|
|
10510
|
+
/* @__PURE__ */ jsx(
|
|
10511
|
+
OverviewSection,
|
|
10512
|
+
{
|
|
10513
|
+
title: "Business Model",
|
|
10514
|
+
body: "Review customers, offerings, and goals to see who we serve, what we sell, and what the org is optimizing for."
|
|
10515
|
+
}
|
|
10516
|
+
),
|
|
10517
|
+
/* @__PURE__ */ jsx(
|
|
10518
|
+
OverviewSection,
|
|
10519
|
+
{
|
|
10520
|
+
title: "Systems",
|
|
10521
|
+
body: "Browse operational structure, including business systems and their nested sales, prospecting, and project configuration."
|
|
10522
|
+
}
|
|
10523
|
+
),
|
|
10524
|
+
/* @__PURE__ */ jsx(
|
|
10525
|
+
OverviewSection,
|
|
10526
|
+
{
|
|
10527
|
+
title: "Ontology",
|
|
10528
|
+
body: "Drill into compiled ontology indexes, resources, actions, entities, events, and the knowledge Start Here hub that explains the model contract."
|
|
10529
|
+
}
|
|
10530
|
+
),
|
|
10531
|
+
/* @__PURE__ */ jsx(
|
|
10532
|
+
OverviewSection,
|
|
10533
|
+
{
|
|
10534
|
+
title: "Governance & Wiring",
|
|
10535
|
+
body: "Check cross-cutting roles, policies, status vocabularies, and navigation surfaces that connect the model."
|
|
10536
|
+
}
|
|
10537
|
+
)
|
|
10538
|
+
] }),
|
|
10539
|
+
/* @__PURE__ */ jsx(Divider, {}),
|
|
10540
|
+
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
10541
|
+
/* @__PURE__ */ jsxs(Group, { justify: "space-between", align: "center", children: [
|
|
10542
|
+
/* @__PURE__ */ jsx(Title, { order: 2, size: "h3", children: "Start Here" }),
|
|
10543
|
+
/* @__PURE__ */ jsx(Group, { gap: 6, children: Object.entries(kindCounts).map(([kind, count]) => /* @__PURE__ */ jsxs(Badge, { variant: "outline", color: "gray", children: [
|
|
10544
|
+
formatKindLabel(kind),
|
|
10545
|
+
": ",
|
|
10546
|
+
count
|
|
10547
|
+
] }, kind)) })
|
|
10548
|
+
] }),
|
|
10549
|
+
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: entryNodes.map((node) => /* @__PURE__ */ jsx(KnowledgeOverviewRow, { node, onSelectNode }, node.id)) })
|
|
10550
|
+
] }),
|
|
10551
|
+
/* @__PURE__ */ jsxs(SimpleGrid, { cols: { base: 1, md: 2 }, spacing: "lg", children: [
|
|
10552
|
+
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
10553
|
+
/* @__PURE__ */ jsx(Title, { order: 2, size: "h3", children: "Recent Updates" }),
|
|
10554
|
+
/* @__PURE__ */ jsx(Stack, { gap: "xs", children: recentNodes.map((node) => /* @__PURE__ */ jsx(KnowledgeOverviewRow, { node, compact: true, onSelectNode }, node.id)) })
|
|
10555
|
+
] }),
|
|
10556
|
+
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
10557
|
+
/* @__PURE__ */ jsx(Title, { order: 2, size: "h3", children: "System Coverage" }),
|
|
10558
|
+
/* @__PURE__ */ jsx(Stack, { gap: 6, children: governedSystemCoverage.slice(0, 6).map((system) => /* @__PURE__ */ jsxs(
|
|
10559
|
+
Group,
|
|
10560
|
+
{
|
|
10561
|
+
justify: "space-between",
|
|
10562
|
+
wrap: "nowrap",
|
|
10563
|
+
style: {
|
|
10564
|
+
borderBottom: "1px solid var(--color-border)",
|
|
10565
|
+
paddingBlock: 8
|
|
10566
|
+
},
|
|
10567
|
+
children: [
|
|
10568
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", fw: 650, lineClamp: 1, children: system.label }),
|
|
10569
|
+
/* @__PURE__ */ jsx(Badge, { variant: "light", color: "gray", children: system.count })
|
|
10570
|
+
]
|
|
10571
|
+
},
|
|
10572
|
+
system.systemId
|
|
10573
|
+
)) })
|
|
10574
|
+
] })
|
|
10575
|
+
] })
|
|
10576
|
+
] })
|
|
10249
10577
|
}
|
|
10250
10578
|
) }) });
|
|
10251
10579
|
}
|
|
10580
|
+
function OverviewStat({ label, value }) {
|
|
10581
|
+
return /* @__PURE__ */ jsxs(
|
|
10582
|
+
Box,
|
|
10583
|
+
{
|
|
10584
|
+
style: {
|
|
10585
|
+
border: "1px solid var(--color-border)",
|
|
10586
|
+
borderRadius: 8,
|
|
10587
|
+
padding: "var(--mantine-spacing-sm)"
|
|
10588
|
+
},
|
|
10589
|
+
children: [
|
|
10590
|
+
/* @__PURE__ */ jsx(Text, { size: "xl", fw: 800, lh: 1, children: value }),
|
|
10591
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", c: "dimmed", fw: 650, tt: "uppercase", mt: 6, children: label })
|
|
10592
|
+
]
|
|
10593
|
+
}
|
|
10594
|
+
);
|
|
10595
|
+
}
|
|
10596
|
+
function OverviewSection({ title, body }) {
|
|
10597
|
+
return /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
10598
|
+
/* @__PURE__ */ jsx(Text, { fw: 750, children: title }),
|
|
10599
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", lh: 1.6, children: body })
|
|
10600
|
+
] });
|
|
10601
|
+
}
|
|
10602
|
+
function KnowledgeOverviewRow({
|
|
10603
|
+
node,
|
|
10604
|
+
compact = false,
|
|
10605
|
+
onSelectNode
|
|
10606
|
+
}) {
|
|
10607
|
+
return /* @__PURE__ */ jsx(
|
|
10608
|
+
UnstyledButton,
|
|
10609
|
+
{
|
|
10610
|
+
onClick: () => onSelectNode?.(node.id),
|
|
10611
|
+
disabled: !onSelectNode,
|
|
10612
|
+
style: {
|
|
10613
|
+
display: "block",
|
|
10614
|
+
width: "100%",
|
|
10615
|
+
border: "1px solid var(--color-border)",
|
|
10616
|
+
borderRadius: 8,
|
|
10617
|
+
padding: compact ? "10px 12px" : "12px 14px",
|
|
10618
|
+
color: "var(--color-text)",
|
|
10619
|
+
cursor: onSelectNode ? "pointer" : "default"
|
|
10620
|
+
},
|
|
10621
|
+
children: /* @__PURE__ */ jsxs(Group, { gap: "sm", align: "start", wrap: "nowrap", children: [
|
|
10622
|
+
/* @__PURE__ */ jsx(
|
|
10623
|
+
SemanticIcon,
|
|
10624
|
+
{
|
|
10625
|
+
token: getKnowledgeIconToken(node) ?? node.kind,
|
|
10626
|
+
size: 16,
|
|
10627
|
+
style: { color: "var(--color-primary)", marginTop: 2 }
|
|
10628
|
+
}
|
|
10629
|
+
),
|
|
10630
|
+
/* @__PURE__ */ jsxs(Box, { style: { minWidth: 0, flex: 1 }, children: [
|
|
10631
|
+
/* @__PURE__ */ jsxs(Group, { gap: "xs", wrap: "nowrap", children: [
|
|
10632
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", fw: 750, lineClamp: 1, children: node.title }),
|
|
10633
|
+
/* @__PURE__ */ jsx(Badge, { variant: "light", color: "gray", size: "xs", style: { flexShrink: 0 }, children: node.kind })
|
|
10634
|
+
] }),
|
|
10635
|
+
!compact && /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", mt: 4, lineClamp: 2, children: node.summary }),
|
|
10636
|
+
/* @__PURE__ */ jsxs(Text, { size: "xs", c: "dimmed", mt: compact ? 2 : 6, children: [
|
|
10637
|
+
"Updated ",
|
|
10638
|
+
node.updatedAt
|
|
10639
|
+
] })
|
|
10640
|
+
] })
|
|
10641
|
+
] })
|
|
10642
|
+
}
|
|
10643
|
+
);
|
|
10644
|
+
}
|
|
10645
|
+
function KnowledgeNodeList({ nodes, onSelect, selectedNodeId, label }) {
|
|
10646
|
+
if (nodes.length === 0) {
|
|
10647
|
+
return /* @__PURE__ */ jsxs(Stack, { gap: "xs", style: { padding: "var(--mantine-spacing-md)" }, children: [
|
|
10648
|
+
label && /* @__PURE__ */ jsx(Text, { size: "xs", fw: 600, tt: "uppercase", c: "dimmed", style: { letterSpacing: "0.05em" }, children: label }),
|
|
10649
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "No knowledge nodes found." })
|
|
10650
|
+
] });
|
|
10651
|
+
}
|
|
10652
|
+
return /* @__PURE__ */ jsxs(Stack, { gap: 4, style: { padding: "var(--mantine-spacing-sm)" }, children: [
|
|
10653
|
+
label && /* @__PURE__ */ jsx(
|
|
10654
|
+
Text,
|
|
10655
|
+
{
|
|
10656
|
+
size: "xs",
|
|
10657
|
+
fw: 600,
|
|
10658
|
+
tt: "uppercase",
|
|
10659
|
+
c: "dimmed",
|
|
10660
|
+
style: { letterSpacing: "0.05em", paddingBottom: "var(--mantine-spacing-xs)" },
|
|
10661
|
+
children: label
|
|
10662
|
+
}
|
|
10663
|
+
),
|
|
10664
|
+
nodes.map((node) => {
|
|
10665
|
+
const isActive = node.id === selectedNodeId;
|
|
10666
|
+
return /* @__PURE__ */ jsx(
|
|
10667
|
+
UnstyledButton,
|
|
10668
|
+
{
|
|
10669
|
+
onClick: () => onSelect(node),
|
|
10670
|
+
style: {
|
|
10671
|
+
padding: "var(--mantine-spacing-sm)",
|
|
10672
|
+
borderRadius: "var(--mantine-radius-default)",
|
|
10673
|
+
backgroundColor: isActive ? "color-mix(in srgb, var(--color-primary) 10%, transparent)" : "transparent",
|
|
10674
|
+
border: isActive ? "1px solid color-mix(in srgb, var(--color-primary) 25%, transparent)" : "1px solid transparent",
|
|
10675
|
+
transition: `all var(--duration-fast) var(--easing)`,
|
|
10676
|
+
cursor: "pointer",
|
|
10677
|
+
width: "100%",
|
|
10678
|
+
textAlign: "left"
|
|
10679
|
+
},
|
|
10680
|
+
onMouseEnter: (e) => {
|
|
10681
|
+
if (!isActive) {
|
|
10682
|
+
e.currentTarget.style.backgroundColor = "var(--color-surface-hover)";
|
|
10683
|
+
}
|
|
10684
|
+
},
|
|
10685
|
+
onMouseLeave: (e) => {
|
|
10686
|
+
if (!isActive) {
|
|
10687
|
+
e.currentTarget.style.backgroundColor = "transparent";
|
|
10688
|
+
}
|
|
10689
|
+
},
|
|
10690
|
+
children: /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
10691
|
+
/* @__PURE__ */ jsxs(Group, { gap: "xs", wrap: "nowrap", children: [
|
|
10692
|
+
/* @__PURE__ */ jsx(
|
|
10693
|
+
Text,
|
|
10694
|
+
{
|
|
10695
|
+
size: "sm",
|
|
10696
|
+
fw: isActive ? 600 : 400,
|
|
10697
|
+
style: {
|
|
10698
|
+
flex: 1,
|
|
10699
|
+
overflow: "hidden",
|
|
10700
|
+
textOverflow: "ellipsis",
|
|
10701
|
+
whiteSpace: "nowrap",
|
|
10702
|
+
color: isActive ? "var(--color-primary)" : "var(--color-text)"
|
|
10703
|
+
},
|
|
10704
|
+
children: node.title
|
|
10705
|
+
}
|
|
10706
|
+
),
|
|
10707
|
+
/* @__PURE__ */ jsx(KindChip, { kind: node.kind, tone: "primary", style: { flexShrink: 0 } })
|
|
10708
|
+
] }),
|
|
10709
|
+
/* @__PURE__ */ jsx(
|
|
10710
|
+
Text,
|
|
10711
|
+
{
|
|
10712
|
+
size: "xs",
|
|
10713
|
+
c: "dimmed",
|
|
10714
|
+
style: {
|
|
10715
|
+
overflow: "hidden",
|
|
10716
|
+
display: "-webkit-box",
|
|
10717
|
+
WebkitLineClamp: 2,
|
|
10718
|
+
WebkitBoxOrient: "vertical",
|
|
10719
|
+
textOverflow: "ellipsis"
|
|
10720
|
+
},
|
|
10721
|
+
children: node.summary
|
|
10722
|
+
}
|
|
10723
|
+
)
|
|
10724
|
+
] })
|
|
10725
|
+
},
|
|
10726
|
+
node.id
|
|
10727
|
+
);
|
|
10728
|
+
})
|
|
10729
|
+
] });
|
|
10730
|
+
}
|
|
10731
|
+
var KNOWLEDGE_ITEMS = [{ label: "Knowledge", to: "/knowledge", icon: IconBook, exact: true }];
|
|
10252
10732
|
function DomainPanelDispatcher({
|
|
10253
10733
|
domainKey,
|
|
10254
10734
|
model,
|
|
@@ -10257,25 +10737,37 @@ function DomainPanelDispatcher({
|
|
|
10257
10737
|
}) {
|
|
10258
10738
|
switch (domainKey) {
|
|
10259
10739
|
case "identity":
|
|
10260
|
-
return /* @__PURE__ */ jsx(
|
|
10740
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(IdentityPanel, { model, onNavigateToNode }) });
|
|
10261
10741
|
case "branding":
|
|
10262
|
-
return /* @__PURE__ */ jsx(
|
|
10742
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(BrandingPanel, { model, onNavigateToNode }) });
|
|
10263
10743
|
case "customers":
|
|
10264
|
-
return /* @__PURE__ */ jsx(
|
|
10744
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(CustomersPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
10265
10745
|
case "offerings":
|
|
10266
|
-
return /* @__PURE__ */ jsx(
|
|
10746
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(OfferingsPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
10267
10747
|
case "goals":
|
|
10268
|
-
return /* @__PURE__ */ jsx(
|
|
10748
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(GoalsPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
10269
10749
|
case "roles":
|
|
10270
|
-
return /* @__PURE__ */ jsx(
|
|
10750
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(RolesPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
10271
10751
|
case "statuses":
|
|
10272
|
-
return /* @__PURE__ */ jsx(
|
|
10752
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(StatusesPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
10273
10753
|
case "navigation":
|
|
10274
|
-
return /* @__PURE__ */ jsx(
|
|
10754
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(NavigationPanel, { model, onNavigateToNode }) });
|
|
10275
10755
|
case "policies":
|
|
10276
|
-
return /* @__PURE__ */ jsx(
|
|
10756
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(PoliciesPanel, { model, onNavigateToNode, filterToItemId }) });
|
|
10757
|
+
case "ontology-objects":
|
|
10758
|
+
case "ontology-links":
|
|
10759
|
+
case "ontology-actions":
|
|
10760
|
+
case "ontology-catalogs":
|
|
10761
|
+
case "ontology-events":
|
|
10762
|
+
case "ontology-interfaces":
|
|
10763
|
+
case "ontology-value-types":
|
|
10764
|
+
case "ontology-properties":
|
|
10765
|
+
case "ontology-groups":
|
|
10766
|
+
case "ontology-surfaces":
|
|
10767
|
+
case "ontology-resources":
|
|
10768
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(OntologyPanel, { model, domainKey, filterToItemId }) });
|
|
10277
10769
|
default:
|
|
10278
|
-
return /* @__PURE__ */ jsx(
|
|
10770
|
+
return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsxs(Stack, { p: "md", gap: "xs", children: [
|
|
10279
10771
|
/* @__PURE__ */ jsx(Text, { fw: 650, children: "Unknown domain" }),
|
|
10280
10772
|
/* @__PURE__ */ jsxs(Text, { size: "sm", c: "dimmed", children: [
|
|
10281
10773
|
"No panel for `",
|