@elevasis/sdk 1.20.2 → 1.22.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.
Files changed (164) hide show
  1. package/dist/cli.cjs +4220 -1583
  2. package/dist/index.d.ts +1035 -481
  3. package/dist/index.js +7381 -4187
  4. package/dist/node/index.d.ts +1 -3
  5. package/dist/node/index.js +40 -49
  6. package/dist/test-utils/index.d.ts +699 -123
  7. package/dist/test-utils/index.js +3826 -630
  8. package/dist/worker/index.js +3616 -442
  9. package/package.json +3 -3
  10. package/reference/_navigation.md +9 -7
  11. package/reference/_reference-manifest.json +1 -1
  12. package/reference/claude-config/hooks/post-edit-validate.mjs +98 -98
  13. package/reference/claude-config/hooks/scaffold-registry-reminder.mjs +188 -188
  14. package/reference/claude-config/hooks/tool-failure-recovery.mjs +73 -73
  15. package/reference/claude-config/registries/graph-skills.json +4 -4
  16. package/reference/claude-config/registries/knowledge-flags.json +0 -2
  17. package/reference/claude-config/rules/active-change-index.md +80 -80
  18. package/reference/claude-config/rules/agent-start-here.md +277 -273
  19. package/reference/claude-config/rules/deployment.md +57 -57
  20. package/reference/claude-config/rules/error-handling.md +56 -56
  21. package/reference/claude-config/rules/execution.md +40 -40
  22. package/reference/claude-config/rules/frontend.md +4 -4
  23. package/reference/claude-config/rules/observability.md +31 -31
  24. package/reference/claude-config/rules/operations.md +29 -17
  25. package/reference/claude-config/rules/organization-model.md +108 -40
  26. package/reference/claude-config/rules/organization-os.md +115 -113
  27. package/reference/claude-config/rules/package-taxonomy.md +33 -33
  28. package/reference/claude-config/rules/platform.md +42 -42
  29. package/reference/claude-config/rules/shared-types.md +49 -46
  30. package/reference/claude-config/rules/task-tracking.md +47 -47
  31. package/reference/claude-config/rules/ui.md +200 -200
  32. package/reference/claude-config/rules/vibe.md +235 -231
  33. package/reference/claude-config/scripts/statusline-command.js +18 -18
  34. package/reference/claude-config/settings.json +34 -34
  35. package/reference/claude-config/skills/deploy/{SKILL.md → skill.md} +156 -156
  36. package/reference/claude-config/skills/dsp/SKILL.md +66 -66
  37. package/reference/claude-config/skills/elevasis/SKILL.md +235 -235
  38. package/reference/claude-config/skills/explore/SKILL.md +6 -6
  39. package/reference/claude-config/skills/git-sync/SKILL.md +126 -126
  40. package/reference/claude-config/skills/knowledge/SKILL.md +330 -271
  41. package/reference/claude-config/skills/knowledge/operations/codify-level-a.md +100 -100
  42. package/reference/claude-config/skills/knowledge/operations/codify-level-b.md +159 -158
  43. package/reference/claude-config/skills/knowledge/operations/customers.md +109 -109
  44. package/reference/claude-config/skills/knowledge/operations/features.md +76 -113
  45. package/reference/claude-config/skills/knowledge/operations/goals.md +118 -118
  46. package/reference/claude-config/skills/knowledge/operations/identity.md +93 -93
  47. package/reference/claude-config/skills/knowledge/operations/labels.md +94 -89
  48. package/reference/claude-config/skills/knowledge/operations/offerings.md +109 -109
  49. package/reference/claude-config/skills/knowledge/operations/roles.md +99 -99
  50. package/reference/claude-config/skills/knowledge/operations/techStack.md +30 -30
  51. package/reference/claude-config/skills/project/SKILL.md +1088 -1088
  52. package/reference/claude-config/skills/run-ui/SKILL.md +73 -73
  53. package/reference/claude-config/skills/save/SKILL.md +3 -3
  54. package/reference/claude-config/skills/setup/SKILL.md +275 -275
  55. package/reference/claude-config/skills/status/SKILL.md +59 -59
  56. package/reference/claude-config/skills/submit-request/SKILL.md +180 -180
  57. package/reference/claude-config/skills/sync/SKILL.md +47 -47
  58. package/reference/claude-config/skills/tutorial/SKILL.md +259 -259
  59. package/reference/claude-config/skills/tutorial/progress-template.md +74 -74
  60. package/reference/claude-config/skills/tutorial/technical.md +1303 -1306
  61. package/reference/claude-config/skills/tutorial/vibe-coder.md +890 -890
  62. package/reference/claude-config/sync-notes/2026-04-22-git-sync-and-sync-notes.md +27 -27
  63. package/reference/claude-config/sync-notes/2026-04-22-lead-gen-deliverability-removal.md +30 -30
  64. package/reference/claude-config/sync-notes/2026-04-24-test-utils-and-template-tests.md +73 -73
  65. package/reference/claude-config/sync-notes/2026-04-24-ui-consolidation-and-sdk-cli-train.md +86 -86
  66. package/reference/claude-config/sync-notes/2026-04-25-auth-role-system-and-settings-roles.md +55 -55
  67. package/reference/claude-config/sync-notes/2026-04-27-crm-hitl-action-layer-cutover.md +97 -97
  68. package/reference/claude-config/sync-notes/2026-04-27-lead-gen-substrate-train.md +112 -112
  69. package/reference/claude-config/sync-notes/2026-04-29-crm-state-and-lead-gen-processing-status.md +93 -93
  70. package/reference/claude-config/sync-notes/2026-05-02-crm-ownership-next-action.md +58 -58
  71. package/reference/claude-config/sync-notes/2026-05-02-template-hardcode-workos-config.md +56 -56
  72. package/reference/claude-config/sync-notes/2026-05-04-elevasis-workspace.md +71 -71
  73. package/reference/claude-config/sync-notes/2026-05-04-knowledge-bundle.md +83 -83
  74. package/reference/claude-config/sync-notes/2026-05-04-template-skills-run-ui-and-tutorial.md +59 -59
  75. package/reference/claude-config/sync-notes/2026-05-05-list-builder.md +42 -42
  76. package/reference/claude-config/sync-notes/2026-05-06-crm-spine.md +60 -60
  77. package/reference/claude-config/sync-notes/2026-05-06-sdk-changes-release-train.md +37 -37
  78. package/reference/claude-config/sync-notes/2026-05-07-sdk-changes-release-train.md +34 -34
  79. package/reference/claude-config/sync-notes/2026-05-08-resource-governance-scaffold-guidance.md +38 -38
  80. package/reference/claude-config/sync-notes/2026-05-09-clients-domain.md +32 -32
  81. package/reference/claude-config/sync-notes/2026-05-09-command-system.md +33 -33
  82. package/reference/claude-config/sync-notes/2026-05-09-resource-governance-and-misc.md +69 -69
  83. package/reference/claude-config/sync-notes/2026-05-12-sdk-ready-release-train.md +30 -0
  84. package/reference/claude-config/sync-notes/2026-05-14-organization-model-ontology-refactor.md +42 -0
  85. package/reference/claude-config/sync-notes/README.md +43 -43
  86. package/reference/cli.mdx +808 -668
  87. package/reference/concepts.mdx +146 -146
  88. package/reference/deployment/api.mdx +297 -297
  89. package/reference/deployment/command-center.mdx +209 -209
  90. package/reference/deployment/index.mdx +195 -195
  91. package/reference/deployment/provided-features.mdx +107 -93
  92. package/reference/deployment/ui-execution.mdx +250 -250
  93. package/reference/examples/organization-model.ts +147 -84
  94. package/reference/framework/agent.mdx +156 -156
  95. package/reference/framework/index.mdx +195 -195
  96. package/reference/framework/interaction-guidance.mdx +182 -182
  97. package/reference/framework/memory.mdx +326 -326
  98. package/reference/framework/project-structure.mdx +282 -282
  99. package/reference/framework/tutorial-system.mdx +135 -135
  100. package/reference/getting-started.mdx +142 -142
  101. package/reference/index.mdx +106 -106
  102. package/reference/packages/core/src/README.md +14 -14
  103. package/reference/packages/core/src/business/README.md +2 -2
  104. package/reference/packages/core/src/knowledge/README.md +33 -32
  105. package/reference/packages/core/src/organization-model/README.md +149 -109
  106. package/reference/packages/core/src/test-utils/README.md +37 -37
  107. package/reference/packages/ui/src/api/README.md +18 -18
  108. package/reference/packages/ui/src/app/README.md +24 -24
  109. package/reference/packages/ui/src/auth/README.md +18 -18
  110. package/reference/packages/ui/src/components/README.md +24 -24
  111. package/reference/packages/ui/src/execution/README.md +16 -16
  112. package/reference/packages/ui/src/features/README.md +28 -28
  113. package/reference/packages/ui/src/graph/README.md +16 -16
  114. package/reference/packages/ui/src/hooks/README.md +23 -23
  115. package/reference/packages/ui/src/initialization/README.md +19 -19
  116. package/reference/packages/ui/src/knowledge/README.md +31 -31
  117. package/reference/packages/ui/src/organization/README.md +18 -18
  118. package/reference/packages/ui/src/profile/README.md +19 -19
  119. package/reference/packages/ui/src/provider/README.md +32 -32
  120. package/reference/packages/ui/src/router/README.md +18 -18
  121. package/reference/packages/ui/src/sse/README.md +13 -13
  122. package/reference/packages/ui/src/test-utils/README.md +7 -7
  123. package/reference/packages/ui/src/theme/README.md +23 -23
  124. package/reference/packages/ui/src/theme/presets/README.md +19 -19
  125. package/reference/packages/ui/src/types/README.md +16 -16
  126. package/reference/packages/ui/src/utils/README.md +18 -18
  127. package/reference/packages/ui/src/zustand/README.md +18 -18
  128. package/reference/platform-tools/adapters-integration.mdx +301 -301
  129. package/reference/platform-tools/adapters-platform.mdx +553 -553
  130. package/reference/platform-tools/index.mdx +217 -217
  131. package/reference/platform-tools/type-safety.mdx +82 -82
  132. package/reference/resources/index.mdx +349 -349
  133. package/reference/resources/patterns.mdx +449 -449
  134. package/reference/resources/types.mdx +116 -116
  135. package/reference/roadmap.mdx +165 -165
  136. package/reference/runtime.mdx +173 -173
  137. package/reference/scaffold/core/organization-graph.mdx +110 -89
  138. package/reference/scaffold/core/organization-model.mdx +226 -171
  139. package/reference/scaffold/index.mdx +67 -67
  140. package/reference/scaffold/operations/propagation-pipeline.md +77 -77
  141. package/reference/scaffold/operations/scaffold-maintenance.md +10 -10
  142. package/reference/scaffold/operations/workflow-recipes.md +138 -138
  143. package/reference/scaffold/recipes/add-a-feature.md +310 -88
  144. package/reference/scaffold/recipes/add-a-resource.md +137 -117
  145. package/reference/scaffold/recipes/customize-crm-actions.md +439 -439
  146. package/reference/scaffold/recipes/customize-knowledge-browser.md +384 -0
  147. package/reference/scaffold/recipes/customize-organization-model.md +281 -118
  148. package/reference/scaffold/recipes/extend-a-base-entity.md +8 -8
  149. package/reference/scaffold/recipes/extend-crm.md +40 -39
  150. package/reference/scaffold/recipes/extend-lead-gen.md +400 -401
  151. package/reference/scaffold/recipes/gate-by-feature-or-admin.md +118 -114
  152. package/reference/scaffold/recipes/index.md +47 -46
  153. package/reference/scaffold/recipes/query-the-knowledge-graph.md +227 -0
  154. package/reference/scaffold/reference/contracts.md +2389 -2121
  155. package/reference/scaffold/reference/feature-registry.md +9 -20
  156. package/reference/scaffold/reference/glossary.md +76 -76
  157. package/reference/scaffold/ui/composition-extensibility.mdx +233 -233
  158. package/reference/scaffold/ui/customization.md +243 -243
  159. package/reference/scaffold/ui/feature-flags-and-gating.md +46 -46
  160. package/reference/scaffold/ui/feature-shell.mdx +72 -72
  161. package/reference/scaffold/ui/recipes.md +221 -213
  162. package/reference/spine/spine-primer.md +96 -96
  163. package/reference/templates/index.mdx +47 -47
  164. package/reference/troubleshooting.mdx +223 -223
@@ -5,19 +5,17 @@ interface KnowledgeCodegenNode {
5
5
  title: string;
6
6
  summary: string;
7
7
  icon?: string;
8
+ sourceFilePath?: string;
8
9
  body: string;
9
10
  links: {
10
11
  nodeId: string;
11
12
  }[];
12
- skills: string[];
13
- domain?: string;
14
13
  ownerIds: string[];
15
14
  updatedAt: string;
16
15
  }
17
16
  interface GenerateKnowledgeNodesOptions {
18
17
  sourceDir: string;
19
18
  outputPath: string;
20
- graphSkillsOutputPath?: string;
21
19
  knowledgeFlagsOutputPath?: string;
22
20
  knowledgeFlagsCliCommand?: string;
23
21
  typeImportPath?: string;
@@ -4,6 +4,22 @@ import { compile } from '@mdx-js/mdx';
4
4
  import remarkGfm from 'remark-gfm';
5
5
 
6
6
  // src/knowledge-codegen.ts
7
+ function targetFromNodeId(nodeId) {
8
+ const [kind, ...idParts] = nodeId.split(":");
9
+ return {
10
+ kind,
11
+ id: idParts.join(":")
12
+ };
13
+ }
14
+ function canonicalizeKnowledgeNodeLinks(node) {
15
+ return {
16
+ ...node,
17
+ links: node.links.map((link) => ({
18
+ target: targetFromNodeId(link.nodeId),
19
+ nodeId: link.nodeId
20
+ }))
21
+ };
22
+ }
7
23
  function listMdxFiles(directory) {
8
24
  return readdirSync(directory, { withFileTypes: true }).flatMap((entry) => {
9
25
  const path = join(directory, entry.name);
@@ -128,6 +144,18 @@ var ROUTING_STOPWORDS = /* @__PURE__ */ new Set([
128
144
  function toRegistryPath(path) {
129
145
  return path.replace(/\\/g, "/");
130
146
  }
147
+ function sourceBaseFromLabel(sourceLabel) {
148
+ if (!sourceLabel) return void 0;
149
+ const normalized = toRegistryPath(sourceLabel).replace(/\/+$/, "");
150
+ const globIndex = normalized.indexOf("*");
151
+ if (globIndex === -1) return normalized;
152
+ return normalized.slice(0, globIndex).replace(/\/+$/, "");
153
+ }
154
+ function toSourceFilePath(sourceLabel, relativePath) {
155
+ const normalizedRelativePath = toRegistryPath(relativePath);
156
+ const sourceBase = sourceBaseFromLabel(sourceLabel);
157
+ return sourceBase ? `${sourceBase}/${normalizedRelativePath}` : normalizedRelativePath;
158
+ }
131
159
  function slugify(value) {
132
160
  return value.trim().toLowerCase().replace(/['"]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
133
161
  }
@@ -161,24 +189,20 @@ function nodeRoutingTerms(node, sourcePath, limit) {
161
189
  node.title,
162
190
  node.summary,
163
191
  node.body,
164
- node.domain ?? "",
165
192
  sourcePath,
166
- ...node.links.map((link) => link.nodeId),
167
- ...node.skills
193
+ ...node.links.map((link) => link.nodeId)
168
194
  ),
169
195
  limit
170
196
  );
171
197
  }
172
198
  function nodeTags(node, sourcePath) {
173
199
  return uniqueSorted([
174
- ...node.domain ? [node.domain] : [],
175
200
  node.kind,
176
201
  ...tokenizeRoutingText(
177
202
  node.title,
178
203
  node.summary,
179
204
  sourcePath,
180
- ...node.links.map((link) => link.nodeId),
181
- ...node.skills
205
+ ...node.links.map((link) => link.nodeId)
182
206
  ).map(slugify).filter((term) => term && !ROUTING_STOPWORDS.has(term) && (term.length >= 3 || term === "ai")).slice(0, 20)
183
207
  ]);
184
208
  }
@@ -205,58 +229,30 @@ function readKnowledgeNodeMdx(filePath) {
205
229
  icon: optionalString(frontmatter, "icon", filePath),
206
230
  body,
207
231
  links: optionalStringArray(frontmatter, "links", filePath).map((nodeId) => ({ nodeId })),
208
- skills: optionalStringArray(frontmatter, "skills", filePath),
209
- domain: optionalString(frontmatter, "domain", filePath),
210
232
  ownerIds: optionalStringArray(frontmatter, "ownerIds", filePath),
211
233
  updatedAt: assertString(frontmatter, "updatedAt", filePath)
212
234
  };
213
235
  }
214
- function generateGraphSkillsRegistry(nodes) {
215
- const domains = {};
216
- for (const node of nodes) {
217
- if (!node.domain) continue;
218
- const domain = domains[node.domain] ?? { skills: [], nodes: [] };
219
- const skills = [...new Set(node.skills)].sort((a, b) => a.localeCompare(b));
220
- domain.nodes.push({
221
- id: node.id,
222
- title: node.title,
223
- kind: node.kind,
224
- skills
225
- });
226
- domain.skills = [.../* @__PURE__ */ new Set([...domain.skills, ...skills])].sort((a, b) => a.localeCompare(b));
227
- domains[node.domain] = domain;
228
- }
229
- for (const domain of Object.values(domains)) {
230
- domain.nodes.sort((a, b) => a.id.localeCompare(b.id));
231
- }
232
- return {
233
- generatedBy: "generate-knowledge-nodes",
234
- domains: Object.fromEntries(Object.entries(domains).sort(([a], [b]) => a.localeCompare(b)))
235
- };
236
- }
237
236
  function generateKnowledgeFlagRegistry(nodes, sourcePaths = {}, options = {}) {
238
237
  const routes = /* @__PURE__ */ new Map();
239
238
  for (const node of nodes) {
240
- const routeKey = node.domain ?? `kind-${node.kind}`;
239
+ const routeKey = `kind-${node.kind}`;
241
240
  const flag = `--${slugify(routeKey)}`;
242
241
  const sourcePath = toRegistryPath(sourcePaths[node.id] ?? "");
243
242
  const routingTerms = nodeRoutingTerms(node, sourcePath, 24);
244
243
  const tags = nodeTags(node, sourcePath);
245
- const skills = uniqueSorted(node.skills);
246
244
  const cliBindings = readCommandForNode(node, options.cliCommand);
247
245
  const route = routes.get(flag) ?? {
248
246
  flag,
249
247
  label: toTitle(routeKey),
250
- ...node.domain ? { domain: node.domain } : { kind: node.kind },
248
+ kind: node.kind,
251
249
  tags: [],
252
250
  queryTerms: [],
253
- skills: [],
254
251
  cliBindings: [],
255
252
  nodes: []
256
253
  };
257
254
  route.tags = uniqueSorted([...route.tags, ...tags]);
258
255
  route.queryTerms = rankedTerms([...route.queryTerms, ...routingTerms], 40);
259
- route.skills = uniqueSorted([...route.skills, ...skills]);
260
256
  route.cliBindings = [...route.cliBindings, ...cliBindings].filter(
261
257
  (binding, index, bindings) => bindings.findIndex((candidate) => candidate.command === binding.command) === index
262
258
  );
@@ -264,12 +260,10 @@ function generateKnowledgeFlagRegistry(nodes, sourcePaths = {}, options = {}) {
264
260
  id: node.id,
265
261
  title: node.title,
266
262
  kind: node.kind,
267
- ...node.domain ? { domain: node.domain } : {},
268
263
  sourcePath,
269
264
  tags,
270
265
  routingTerms,
271
266
  links: node.links.map((link) => link.nodeId),
272
- skills,
273
267
  cliBindings
274
268
  });
275
269
  routes.set(flag, route);
@@ -317,7 +311,7 @@ function generateKnowledgeNodesTs(options) {
317
311
  `// Source: ${options.sourceLabel ?? "knowledge/nodes/**/*.mdx"}`,
318
312
  "",
319
313
  ...typeImport,
320
- `export const ${exportedName} = ${JSON.stringify(options.nodes, null, 2)}${typeSatisfies}`,
314
+ `export const ${exportedName} = ${JSON.stringify(options.nodes.map(canonicalizeKnowledgeNodeLinks), null, 2)}${typeSatisfies}`,
321
315
  ""
322
316
  ].join("\n");
323
317
  }
@@ -325,7 +319,13 @@ function generateKnowledgeNodes(options) {
325
319
  const files = listMdxFiles(options.sourceDir).sort(
326
320
  (a, b) => relative(options.sourceDir, a).localeCompare(relative(options.sourceDir, b))
327
321
  );
328
- const nodes = files.map(readKnowledgeNodeMdx);
322
+ const nodes = files.map((file) => {
323
+ const relativePath = relative(options.sourceDir, file);
324
+ return {
325
+ ...readKnowledgeNodeMdx(file),
326
+ sourceFilePath: toSourceFilePath(options.sourceLabel, relativePath)
327
+ };
328
+ });
329
329
  const sourcePaths = Object.fromEntries(
330
330
  files.map((file, index) => [nodes[index].id, toRegistryPath(relative(options.sourceDir, file))])
331
331
  );
@@ -345,15 +345,6 @@ function generateKnowledgeNodes(options) {
345
345
  }),
346
346
  "utf8"
347
347
  );
348
- if (options.graphSkillsOutputPath) {
349
- mkdirSync(dirname(options.graphSkillsOutputPath), { recursive: true });
350
- writeFileSync(
351
- options.graphSkillsOutputPath,
352
- `${JSON.stringify(generateGraphSkillsRegistry(nodes), null, 2)}
353
- `,
354
- "utf8"
355
- );
356
- }
357
348
  if (options.knowledgeFlagsOutputPath) {
358
349
  mkdirSync(dirname(options.knowledgeFlagsOutputPath), { recursive: true });
359
350
  writeFileSync(