@elevasis/sdk 1.44.3 → 1.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/dist/cli.cjs +35026 -30226
  2. package/dist/index.d.ts +1786 -808
  3. package/dist/index.js +789 -739
  4. package/dist/node/index.d.ts +105 -181
  5. package/dist/node/index.js +2 -2
  6. package/dist/test-utils/index.d.ts +901 -359
  7. package/dist/test-utils/index.js +587 -824
  8. package/dist/worker/index.d.ts +12685 -0
  9. package/dist/worker/index.js +188 -216
  10. package/package.json +4 -7
  11. package/reference/_navigation.md +161 -22
  12. package/reference/_reference-manifest.json +228 -4
  13. package/reference/claude-config.md +8 -0
  14. package/reference/core/exports.mdx +2 -0
  15. package/reference/core/index.mdx +3 -3
  16. package/reference/examples/organization-model.ts +117 -111
  17. package/reference/index.mdx +4 -4
  18. package/reference/packages/core/src/business/README.md +4 -1
  19. package/reference/packages/core/src/content/README.md +19 -0
  20. package/reference/packages/core/src/organization-model/README.md +148 -149
  21. package/reference/packages/core/src/organization-model/readiness/README.md +42 -0
  22. package/reference/packages/ui/src/features/README.md +28 -28
  23. package/reference/rules/active-change-index.md +40 -54
  24. package/reference/rules/agent-runtime.md +81 -0
  25. package/reference/rules/agent-start-here.md +71 -163
  26. package/reference/rules/deployment.md +33 -10
  27. package/reference/rules/error-handling.md +26 -0
  28. package/reference/rules/execution.md +13 -0
  29. package/reference/rules/frontend.md +10 -3
  30. package/reference/rules/observability.md +9 -1
  31. package/reference/rules/operations.md +26 -17
  32. package/reference/rules/organization-model.md +74 -88
  33. package/reference/rules/organization-os.md +71 -88
  34. package/reference/rules/package-taxonomy.md +11 -2
  35. package/reference/rules/platform.md +13 -7
  36. package/reference/rules/shared-types.md +36 -0
  37. package/reference/rules/task-tracking.md +30 -5
  38. package/reference/rules/ui.md +145 -3
  39. package/reference/rules/vibe-intents.md +271 -0
  40. package/reference/rules/vibe.md +17 -243
  41. package/reference/scaffold/core/organization-graph.mdx +112 -99
  42. package/reference/scaffold/core/organization-model.mdx +231 -215
  43. package/reference/scaffold/operations/propagation-pipeline.md +16 -17
  44. package/reference/scaffold/operations/scaffold-maintenance.md +22 -20
  45. package/reference/scaffold/operations/workflow-recipes.md +72 -20
  46. package/reference/scaffold/recipes/add-a-feature.md +156 -146
  47. package/reference/scaffold/recipes/add-a-resource.md +123 -117
  48. package/reference/scaffold/recipes/customize-crm-actions.md +28 -13
  49. package/reference/scaffold/recipes/customize-knowledge-browser.md +52 -117
  50. package/reference/scaffold/recipes/customize-organization-model.md +161 -149
  51. package/reference/scaffold/recipes/extend-a-base-entity.md +156 -140
  52. package/reference/scaffold/recipes/extend-content.md +265 -0
  53. package/reference/scaffold/recipes/extend-crm.md +16 -11
  54. package/reference/scaffold/recipes/extend-lead-gen.md +37 -21
  55. package/reference/scaffold/recipes/gate-by-feature-or-admin.md +160 -118
  56. package/reference/scaffold/recipes/index.md +6 -3
  57. package/reference/scaffold/recipes/query-the-knowledge-graph.md +23 -23
  58. package/reference/scaffold/reference/contracts.md +30 -56
  59. package/reference/scaffold/reference/feature-registry.md +3 -0
  60. package/reference/scaffold/reference/glossary.md +4 -4
  61. package/reference/scaffold/reference/system-interface-capabilities.md +5 -4
  62. package/reference/scaffold/ui/composition-extensibility.mdx +271 -232
  63. package/reference/scaffold/ui/customization.md +2 -2
  64. package/reference/scaffold/ui/feature-flags-and-gating.md +14 -6
  65. package/reference/scaffold/ui/feature-shell.mdx +277 -62
  66. package/reference/scaffold/ui/recipes.md +229 -197
  67. package/reference/sdk/cli-management.mdx +166 -33
  68. package/reference/sdk/cli.mdx +90 -13
  69. package/reference/sdk/concepts.mdx +2 -0
  70. package/reference/sdk/define-builders.mdx +76 -0
  71. package/reference/sdk/deployment/command-center.mdx +6 -2
  72. package/reference/sdk/deployment/execution-reference.mdx +64 -186
  73. package/reference/sdk/deployment/index.mdx +2 -0
  74. package/reference/sdk/exports.mdx +4 -4
  75. package/reference/sdk/framework/agent.mdx +52 -116
  76. package/reference/sdk/framework/index.mdx +46 -65
  77. package/reference/sdk/framework/project-structure.mdx +150 -205
  78. package/reference/sdk/framework/tutorial-system.mdx +2 -2
  79. package/reference/sdk/human-in-the-loop.mdx +152 -0
  80. package/reference/sdk/index.mdx +6 -7
  81. package/reference/sdk/platform-tools/adapters-platform.mdx +3 -1
  82. package/reference/sdk/platform-tools/index.mdx +12 -0
  83. package/reference/sdk/platform-tools/type-safety.mdx +4 -0
  84. package/reference/sdk/project-deployment-spec.mdx +131 -0
  85. package/reference/sdk/resources/index.mdx +21 -7
  86. package/reference/sdk/resources/patterns.mdx +54 -24
  87. package/reference/sdk/resources/types.mdx +7 -4
  88. package/reference/sdk/templates/data-enrichment.mdx +7 -3
  89. package/reference/sdk/templates/email-sender.mdx +139 -135
  90. package/reference/sdk/templates/lead-scorer.mdx +5 -1
  91. package/reference/sdk/templates/pdf-generator.mdx +155 -151
  92. package/reference/sdk/templates/recurring-job.mdx +195 -189
  93. package/reference/sdk/templates/text-classifier.mdx +4 -0
  94. package/reference/sdk/templates/web-scraper.mdx +139 -135
  95. package/reference/spine/spine-primer.md +135 -96
  96. package/reference/ui/exports.mdx +1 -0
  97. package/reference/ui/index.mdx +14 -7
  98. package/dist/types/worker/adapters/anymailfinder.d.ts +0 -14
  99. package/dist/types/worker/adapters/apify.d.ts +0 -14
  100. package/dist/types/worker/adapters/approval.d.ts +0 -23
  101. package/dist/types/worker/adapters/attio.d.ts +0 -22
  102. package/dist/types/worker/adapters/clickup.d.ts +0 -22
  103. package/dist/types/worker/adapters/create-adapter.d.ts +0 -41
  104. package/dist/types/worker/adapters/crm.d.ts +0 -20
  105. package/dist/types/worker/adapters/dropbox.d.ts +0 -14
  106. package/dist/types/worker/adapters/email.d.ts +0 -25
  107. package/dist/types/worker/adapters/execution.d.ts +0 -22
  108. package/dist/types/worker/adapters/gmail.d.ts +0 -14
  109. package/dist/types/worker/adapters/google-sheets.d.ts +0 -14
  110. package/dist/types/worker/adapters/index.d.ts +0 -33
  111. package/dist/types/worker/adapters/instantly.d.ts +0 -14
  112. package/dist/types/worker/adapters/lead.d.ts +0 -28
  113. package/dist/types/worker/adapters/list.d.ts +0 -9
  114. package/dist/types/worker/adapters/llm.d.ts +0 -45
  115. package/dist/types/worker/adapters/millionverifier.d.ts +0 -14
  116. package/dist/types/worker/adapters/notification.d.ts +0 -28
  117. package/dist/types/worker/adapters/pdf.d.ts +0 -22
  118. package/dist/types/worker/adapters/projects.d.ts +0 -20
  119. package/dist/types/worker/adapters/resend.d.ts +0 -14
  120. package/dist/types/worker/adapters/scheduler.d.ts +0 -25
  121. package/dist/types/worker/adapters/signature-api.d.ts +0 -14
  122. package/dist/types/worker/adapters/storage.d.ts +0 -33
  123. package/dist/types/worker/adapters/stripe.d.ts +0 -14
  124. package/dist/types/worker/adapters/tomba.d.ts +0 -14
  125. package/dist/types/worker/index.d.ts +0 -60
  126. package/dist/types/worker/platform.d.ts +0 -90
  127. package/dist/types/worker/utils.d.ts +0 -9
  128. package/reference/claude-config/Overview.md +0 -230
  129. package/reference/claude-config/hooks/post-edit-validate.mjs +0 -98
  130. package/reference/claude-config/hooks/scaffold-registry-reminder.mjs +0 -187
  131. package/reference/claude-config/hooks/tool-failure-recovery.mjs +0 -73
  132. package/reference/claude-config/registries/graph-skills.json +0 -4
  133. package/reference/claude-config/registries/knowledge-flags.json +0 -154
  134. package/reference/claude-config/registries/skill-coverage.json +0 -20
  135. package/reference/claude-config/rules/active-change-index.md +0 -22
  136. package/reference/claude-config/rules/agent-start-here.md +0 -22
  137. package/reference/claude-config/rules/deployment.md +0 -22
  138. package/reference/claude-config/rules/error-handling.md +0 -22
  139. package/reference/claude-config/rules/execution.md +0 -22
  140. package/reference/claude-config/rules/frontend.md +0 -22
  141. package/reference/claude-config/rules/observability.md +0 -22
  142. package/reference/claude-config/rules/operations.md +0 -22
  143. package/reference/claude-config/rules/organization-model.md +0 -22
  144. package/reference/claude-config/rules/organization-os.md +0 -22
  145. package/reference/claude-config/rules/package-taxonomy.md +0 -22
  146. package/reference/claude-config/rules/platform.md +0 -22
  147. package/reference/claude-config/rules/shared-types.md +0 -22
  148. package/reference/claude-config/rules/task-tracking.md +0 -22
  149. package/reference/claude-config/rules/topbar-actions.md +0 -70
  150. package/reference/claude-config/rules/ui.md +0 -22
  151. package/reference/claude-config/rules/vibe.md +0 -22
  152. package/reference/claude-config/scripts/statusline-command.js +0 -18
  153. package/reference/claude-config/settings.json +0 -30
  154. package/reference/claude-config/skills/client/SKILL.md +0 -201
  155. package/reference/claude-config/skills/deploy/SKILL.md +0 -159
  156. package/reference/claude-config/skills/dsp/SKILL.md +0 -66
  157. package/reference/claude-config/skills/elevasis/SKILL.md +0 -251
  158. package/reference/claude-config/skills/explore/SKILL.md +0 -78
  159. package/reference/claude-config/skills/git-sync/SKILL.md +0 -166
  160. package/reference/claude-config/skills/om/SKILL.md +0 -475
  161. package/reference/claude-config/skills/om/operations/build.md +0 -237
  162. package/reference/claude-config/skills/om/operations/codify-level-a.md +0 -109
  163. package/reference/claude-config/skills/om/operations/codify-level-b.md +0 -159
  164. package/reference/claude-config/skills/om/operations/customers.md +0 -114
  165. package/reference/claude-config/skills/om/operations/features.md +0 -88
  166. package/reference/claude-config/skills/om/operations/goals.md +0 -123
  167. package/reference/claude-config/skills/om/operations/identity.md +0 -97
  168. package/reference/claude-config/skills/om/operations/labels.md +0 -110
  169. package/reference/claude-config/skills/om/operations/offerings.md +0 -114
  170. package/reference/claude-config/skills/om/operations/roles.md +0 -104
  171. package/reference/claude-config/skills/om/operations/scaffold.md +0 -163
  172. package/reference/claude-config/skills/om/operations/techStack.md +0 -38
  173. package/reference/claude-config/skills/project/SKILL.md +0 -1114
  174. package/reference/claude-config/skills/run-ui/SKILL.md +0 -73
  175. package/reference/claude-config/skills/save/SKILL.md +0 -183
  176. package/reference/claude-config/skills/setup/SKILL.md +0 -290
  177. package/reference/claude-config/skills/status/SKILL.md +0 -59
  178. package/reference/claude-config/skills/submit-request/SKILL.md +0 -180
  179. package/reference/claude-config/skills/sync/SKILL.md +0 -47
  180. package/reference/claude-config/skills/tutorial/SKILL.md +0 -259
  181. package/reference/claude-config/skills/tutorial/progress-template.md +0 -74
  182. package/reference/claude-config/skills/tutorial/technical.md +0 -1303
  183. package/reference/claude-config/skills/tutorial/vibe-coder.md +0 -890
  184. package/reference/claude-config/sync-notes/2026-04-22-git-sync-and-sync-notes.md +0 -27
  185. package/reference/claude-config/sync-notes/2026-04-22-lead-gen-deliverability-removal.md +0 -30
  186. package/reference/claude-config/sync-notes/2026-04-24-test-utils-and-template-tests.md +0 -73
  187. package/reference/claude-config/sync-notes/2026-04-24-ui-consolidation-and-sdk-cli-train.md +0 -86
  188. package/reference/claude-config/sync-notes/2026-04-25-auth-role-system-and-settings-roles.md +0 -55
  189. package/reference/claude-config/sync-notes/2026-04-27-crm-hitl-action-layer-cutover.md +0 -97
  190. package/reference/claude-config/sync-notes/2026-04-27-lead-gen-substrate-train.md +0 -112
  191. package/reference/claude-config/sync-notes/2026-04-29-crm-state-and-lead-gen-processing-status.md +0 -93
  192. package/reference/claude-config/sync-notes/2026-05-02-crm-ownership-next-action.md +0 -58
  193. package/reference/claude-config/sync-notes/2026-05-02-template-hardcode-workos-config.md +0 -56
  194. package/reference/claude-config/sync-notes/2026-05-04-elevasis-workspace.md +0 -71
  195. package/reference/claude-config/sync-notes/2026-05-04-knowledge-bundle.md +0 -83
  196. package/reference/claude-config/sync-notes/2026-05-04-template-skills-run-ui-and-tutorial.md +0 -59
  197. package/reference/claude-config/sync-notes/2026-05-05-list-builder.md +0 -42
  198. package/reference/claude-config/sync-notes/2026-05-06-crm-spine.md +0 -60
  199. package/reference/claude-config/sync-notes/2026-05-06-sdk-changes-release-train.md +0 -37
  200. package/reference/claude-config/sync-notes/2026-05-07-sdk-changes-release-train.md +0 -34
  201. package/reference/claude-config/sync-notes/2026-05-08-resource-governance-scaffold-guidance.md +0 -38
  202. package/reference/claude-config/sync-notes/2026-05-09-clients-domain.md +0 -32
  203. package/reference/claude-config/sync-notes/2026-05-09-command-system.md +0 -33
  204. package/reference/claude-config/sync-notes/2026-05-09-resource-governance-and-misc.md +0 -69
  205. package/reference/claude-config/sync-notes/2026-05-12-sdk-ready-release-train.md +0 -30
  206. package/reference/claude-config/sync-notes/2026-05-14-organization-model-ontology-refactor.md +0 -45
  207. package/reference/claude-config/sync-notes/2026-05-15-om-skill-rename-and-write-family.md +0 -52
  208. package/reference/claude-config/sync-notes/2026-05-17-sdk-boundary-consolidation.md +0 -33
  209. package/reference/claude-config/sync-notes/2026-05-20-om-define-helpers.md +0 -32
  210. package/reference/claude-config/sync-notes/2026-05-22-access-model-and-right-panel.md +0 -43
  211. package/reference/claude-config/sync-notes/2026-05-22-lead-gen-tenant-config.md +0 -40
  212. package/reference/claude-config/sync-notes/2026-05-22-org-model-multi-file-split.md +0 -61
  213. package/reference/claude-config/sync-notes/2026-05-23-branding-names-to-identity.md +0 -49
  214. package/reference/claude-config/sync-notes/2026-05-23-lead-gen-manage-access.md +0 -31
  215. package/reference/claude-config/sync-notes/2026-05-23-om-deployment-drift-detection.md +0 -42
  216. package/reference/claude-config/sync-notes/2026-05-23-om-full-model-deploy-contract.md +0 -33
  217. package/reference/claude-config/sync-notes/2026-05-23-ui-sdk-package-fixes.md +0 -37
  218. package/reference/claude-config/sync-notes/2026-05-24-platform-invite-router-core-baseline.md +0 -28
  219. package/reference/claude-config/sync-notes/2026-05-24-system-interface-readiness.md +0 -43
  220. package/reference/claude-config/sync-notes/2026-05-25-invitation-login-loader.md +0 -26
  221. package/reference/claude-config/sync-notes/2026-05-25-om-topbar-requests.md +0 -33
  222. package/reference/claude-config/sync-notes/2026-05-25-system-interface-profile-registry-and-substrate.md +0 -35
  223. package/reference/claude-config/sync-notes/2026-05-25-tenant-om-scaffold-cli.md +0 -49
  224. package/reference/claude-config/sync-notes/2026-05-25-vibe-operate-intent.md +0 -47
  225. package/reference/claude-config/sync-notes/2026-05-28-om-snapshot-sdk-workflow-config.md +0 -33
  226. package/reference/claude-config/sync-notes/2026-05-30-client-source-and-om-profiles.md +0 -39
  227. package/reference/claude-config/sync-notes/2026-06-02-knowledge-nested-group-routing.md +0 -27
  228. package/reference/claude-config/sync-notes/2026-06-02-nest-projects-under-platform.md +0 -45
  229. package/reference/claude-config/sync-notes/2026-06-03-skill-autogen-and-client-skill.md +0 -34
  230. package/reference/claude-config/sync-notes/2026-06-04-scaffold-registry-lane-severity.md +0 -34
  231. package/reference/claude-config/sync-notes/2026-06-05-appearance-app-mode-decouple.md +0 -29
  232. package/reference/claude-config/sync-notes/2026-06-05-ontology-endpoint-rename-and-knowledge-browser-ui.md +0 -86
  233. package/reference/claude-config/sync-notes/2026-06-06-om-build-systems-scaffold.md +0 -47
  234. package/reference/claude-config/sync-notes/2026-06-06-om-item-copy-references.md +0 -50
  235. package/reference/claude-config/sync-notes/2026-06-08-knowledge-base-page-not-found-fix.md +0 -76
  236. package/reference/claude-config/sync-notes/2026-06-09-agent-sessions-public-agent-chat-route.md +0 -75
  237. package/reference/claude-config/sync-notes/2026-06-09-sdk-cli-load-org-model-resolution.md +0 -42
  238. package/reference/claude-config/sync-notes/2026-06-12-agent-grants-visualizer-operations.md +0 -30
  239. package/reference/claude-config/sync-notes/2026-06-14-session-ux-and-project-cli-json.md +0 -33
  240. package/reference/claude-config/sync-notes/2026-06-14-shared-session-conversation-view.md +0 -26
  241. package/reference/claude-config/sync-notes/2026-06-15-session-chat-zero-wiring.md +0 -46
  242. package/reference/claude-config/sync-notes/2026-06-17-agent-session-ux-features.md +0 -34
  243. package/reference/claude-config/sync-notes/2026-06-25-shared-page-scroll-contract-guard.md +0 -52
  244. package/reference/claude-config/sync-notes/2026-06-26-leadgen-overview-om-telemetry.md +0 -47
  245. package/reference/claude-config/sync-notes/2026-07-21-agent-scaffold-hardening.md +0 -75
  246. package/reference/claude-config/sync-notes/2026-07-23-agent-session-memory.md +0 -49
  247. package/reference/claude-config/sync-notes/2026-07-23-workos-org-marker.md +0 -50
  248. package/reference/claude-config/sync-notes/2026-07-24-claude-5-models-and-session-surface-fixes.md +0 -116
  249. package/reference/claude-config/sync-notes/2026-07-27-agent-strict-output-and-turn-drift.md +0 -73
  250. package/reference/claude-config/sync-notes/2026-07-28-agent-reply-is-its-own-field.md +0 -84
  251. package/reference/claude-config/sync-notes/2026-07-30-login-screen-and-member-provisioning-state.md +0 -114
  252. package/reference/claude-config/sync-notes/2026-08-02-auth-guard-defaults-and-truncation-fix.md +0 -122
  253. package/reference/claude-config/sync-notes/2026-08-03-agent-prose-escape-normalization.md +0 -88
  254. package/reference/claude-config/sync-notes/2026-08-03-cli-gateway-errors-and-request-timeout.md +0 -120
  255. package/reference/claude-config/sync-notes/README.md +0 -43
  256. package/reference/sdk/framework/interaction-guidance.mdx +0 -182
  257. package/reference/sdk/framework/memory.mdx +0 -326
  258. package/reference/sdk/framework/resource-documentation.mdx +0 -90
  259. package/reference/sdk/roadmap.mdx +0 -164
@@ -1,47 +0,0 @@
1
- # /om build system scaffold added to tenant template
2
-
3
- ## Why this note exists
4
-
5
- The monorepo added a guided `/om build` operation (Steps 2-3 of the Building-Systems Scaffold
6
- task) that sequences the full platform runbook for authoring an Organization Model System end
7
- to end. This train mirrors a thinner, Codify-ceremony-framed variant of that operation into the
8
- tenant template. Tenant projects author OM via the Codify ceremony (not the platform PR-review
9
- runbook), so the tenant variant is scoped accordingly.
10
-
11
- Changes in this train:
12
-
13
- - New operation file `.claude/skills/om/operations/build.md` (Codify-framed, 8 phases).
14
- - `metadata.promptSignals` in `.claude/skills/om/SKILL.md` extended with four build-intent
15
- phrases: `build a system`, `design a system`, `create a system that`, `system architecture`.
16
- - `## Operations` table added to `.claude/skills/om/SKILL.md` with the `build` EXECUTE row.
17
- - Build-intent routing branch added to the Decision Tree section of `SKILL.md` so free-text
18
- build intent routes to `/om build` before the 5-bucket read/write buckets.
19
-
20
- ## Applies to
21
-
22
- - All template-derived projects that ship the `om` skill (`.claude/skills/om/SKILL.md`).
23
- - Any project where an agent might express intent to build or design a new System.
24
-
25
- ## Required actions
26
-
27
- 1. Pull template changes so the new `build.md` operation file and the updated `SKILL.md` are
28
- present in `.claude/skills/om/`.
29
- 2. No package baseline bumps required -- this is a pure agent-scaffold change (no published
30
- package version involved).
31
- 3. No `pnpm install` needed unless the `/git-sync` pull also brings unrelated baseline changes.
32
-
33
- ## Verification
34
-
35
- - `.claude/skills/om/operations/build.md` is present.
36
- - `.claude/skills/om/SKILL.md` contains the `build` row in the `## Operations` table.
37
- - `.claude/skills/om/SKILL.md` `metadata.promptSignals.phrases` includes `build a system`,
38
- `design a system`, `create a system that`, and `system architecture`.
39
- - Saying "build a system for lead gen" in chat triggers `/om` and routes to `/om build` without
40
- requiring the explicit `/om build` subcommand.
41
-
42
- ## Not handled by /git-sync
43
-
44
- - No dependency bumps or `pnpm install` required for this change alone.
45
- - Any project-local documentation that references how to add a new System should be updated by
46
- the maintainer to point at `/om build` as the guided entry point rather than manual Codify
47
- Level-A alone.
@@ -1,50 +0,0 @@
1
- # Knowledge Browser item copy-references now resolve via `om:describe item:<domain>:<id>`
2
-
3
- ## Why this note exists
4
-
5
- The Knowledge Browser used to copy an unresolvable `graph:<kind>:<uuid>` shorthand for
6
- domain items (clients, roles, policies, customers, offerings, goals). Pasting that to an
7
- agent led to dead ends — the OM resolver had no mount for it and `om:describe` rejected the
8
- id. This train (published `@elevasis/core`, `@elevasis/sdk`, `@elevasis/ui` + the bundled
9
- `om` skill) standardizes domain-item copy references on `item:<domain>:<id>`, which resolves
10
- to the rich profile plus its location and governing knowledge. The `om` skill's read-folder
11
- table and CLI invocation guidance changed, so derived projects must pick up the new skill
12
- text and package baselines.
13
-
14
- ## Applies to
15
-
16
- - All template-derived projects that ship the `om` skill (`.claude/skills/om/SKILL.md`).
17
- - Any project whose Knowledge Browser surfaces domain items (clients, roles, policies,
18
- customers, offerings, goals).
19
- - Agents that consume copied Knowledge Browser references.
20
-
21
- ## Required actions
22
-
23
- 1. Pull template changes and bump the published package baselines to the versions shipped by
24
- this train: `@elevasis/core`, `@elevasis/sdk`, `@elevasis/ui` (run `pnpm install` after the
25
- baseline bump so the new SDK CLI and UI copy behavior are present).
26
- 2. Adopt the refreshed `.claude/skills/om/SKILL.md` read-folder table. It now documents
27
- `item:<domain>:<id>` (resolves via `om:describe item:<domain>:<id>`), the `/by-domain/<domain>`
28
- and `/by-item/<domain>/<id>` `om:ls` mounts, `group:` / `domain:` / `folder:` as
29
- browser-overview references, and a legacy `graph:client:<uuid>` bridge note pointing to
30
- `om:describe item:clients:<uuid>`.
31
- 3. Use the corrected SDK CLI invocation at a project root: `pnpm elevasis-sdk om:describe …`
32
- (root script alias) or `pnpm -C operations exec elevasis-sdk om:describe …`. The old
33
- `pnpm exec elevasis-sdk …` at the project root fails in a multi-package tenant — replace it.
34
-
35
- ## Verification
36
-
37
- - `pnpm elevasis-sdk om:describe item:clients:<id>` returns the client profile, its location
38
- (domain + graph id + `contains` parentage), and any governing knowledge — no dead ends.
39
- - A bare/legacy `om:describe client:<uuid>` still resolves (back-compat for already-copied
40
- references).
41
- - `pnpm sync:verify -- <project>` shows the `.claude/skills/om/SKILL.md` write applied and no
42
- remaining `om`-skill drift.
43
-
44
- ## Not handled by /git-sync
45
-
46
- - The published-package baseline bumps (`@elevasis/core` / `@elevasis/sdk` / `@elevasis/ui`)
47
- and the subsequent `pnpm install` are manual — `/git-sync` does not bump dependencies.
48
- - Any project-local documentation that hand-copied the old `pnpm exec elevasis-sdk` root
49
- invocation or the old `graph:<kind>:<uuid>` copy vocabulary must be corrected by the
50
- maintainer; `/git-sync` stops before touching project-owned surfaces.
@@ -1,76 +0,0 @@
1
- # Knowledge Base "Page Not Found" hardening (KB `$nodeId` route)
2
-
3
- ## Why this note exists
4
-
5
- The Knowledge Base detail route (`ui/src/routes/knowledge/$nodeId.tsx`) could render a
6
- terminal full-pane **"Page Not Found"** screen for node ids it could not resolve. Two
7
- distinct gaps caused it:
8
-
9
- 1. **No `folder:` branch.** Selecting a KB **folder** node (e.g. the `KNOWLEDGE > All`
10
- folder) navigates to `/knowledge/folder:knowledge:all`. The route matched none of the
11
- `domain:` / `group:` / `item:` prefixes, resolved to no graph node, and fell through to
12
- a bare `<PageNotFound />`. The folder routing (`folder:` → `FolderDetailView`) was
13
- missing from the template route entirely.
14
- 2. **Two hard-404 landmines.** The `!group` and `!node` fall-through branches returned
15
- `<PageNotFound />`, so any stale bookmark, renamed ontology id, or snapshot drift
16
- dead-ended the whole content pane.
17
-
18
- This train delivers the hardened route that **always renders browsable content** for any
19
- node id. There is **no package bump** — the fix consumes only `@elevasis/ui` exports your
20
- project already has at `@2.49.0+` (`KnowledgeBrowser`, `buildKnowledgeOmTreeData`,
21
- `findKnowledgeTreeNodeByValue`, `KnowledgeTreeNodeData`).
22
-
23
- ## Applies to
24
-
25
- - Every template-derived project whose `ui/src/routes/knowledge/$nodeId.tsx` is still the
26
- pre-fix version (no `folder:` branch, bare `PageNotFound` returns). If your KB renders
27
- "Page Not Found" when the `All` (or any) folder node is selected, you are affected.
28
- - No action is required for projects that have already customized this route to handle
29
- folders and avoid hard 404s — the sync is a `merge-baseline` that **preserves your local
30
- route edits** (`external-sync-feature-route-baseline`, `sync_lane_severity:
31
- optional-feature-selection`).
32
-
33
- ## Required actions
34
-
35
- `/git-sync` / `/external sync` delivers the hardened route as a baseline merge and surfaces
36
- this note. The route is project-owned baseline content under the route-preservation lane,
37
- so it is **merged, not force-overwritten** — review the merge if you carry local
38
- customizations.
39
-
40
- 1. **Pull and review.** Run `/git-sync` (or `/external sync`) and review the merge into
41
- `ui/src/routes/knowledge/$nodeId.tsx`. Accept the two changes: the new `folder:` →
42
- `FolderDetailView` branch, and the replacement of both `<PageNotFound />` returns with a
43
- `KnowledgeNodeFallback` (a subtle "not available" `Alert` plus the full
44
- `KnowledgeBrowser`).
45
- 2. **No dependency change.** `@elevasis/ui` does **not** need bumping for this fix; the
46
- required exports are already published. Do not add a package bump to this sync.
47
- 3. **Type-check, then boot.** Run `pnpm -C ui lint` (`tsc --noEmit`), then start the UI.
48
-
49
- ## Verification
50
-
51
- ```bash
52
- # 1. The route must no longer return a bare PageNotFound
53
- grep -n "PageNotFound" ui/src/routes/knowledge/$nodeId.tsx
54
- # Expect: no terminal `return <PageNotFound />` in the content branches
55
- # (a folder: branch + KnowledgeNodeFallback should be present instead)
56
-
57
- # 2. Required @elevasis/ui exports are present at your installed version
58
- grep -n "KnowledgeBrowser\|buildKnowledgeOmTreeData\|findKnowledgeTreeNodeByValue" \
59
- ui/src/routes/knowledge/$nodeId.tsx
60
-
61
- # 3. Template-family coherence
62
- pnpm -C ui lint
63
- ```
64
-
65
- In the running app, select the `KNOWLEDGE > All` folder node (and any other folder/group
66
- node): the content pane must render browsable Knowledge content, never a full-pane
67
- "Page Not Found".
68
-
69
- ## Not handled by /git-sync
70
-
71
- - `/git-sync` / `/external sync` deliver and merge the route baseline plus this note, but
72
- they do **not** redeploy your UI. Reaching your live app requires your own UI **redeploy**
73
- after the sync merge is accepted.
74
- - Local customizations to `ui/src/routes/knowledge/$nodeId.tsx` are preserved by the
75
- `merge-baseline` lane — if you maintain a forked KB route, reconcile the `folder:` branch
76
- and the `KnowledgeNodeFallback` into your version by hand rather than discarding your edits.
@@ -1,75 +0,0 @@
1
- # Agent Sessions and public agent chat route
2
-
3
- ## Why this note exists
4
-
5
- This train makes `Agent Sessions` the canonical internal full-page chat surface and
6
- introduces the browser-safe public agent chat substrate. Public browser clients use
7
- platform-issued access grants and short-lived capability tokens; they must not call
8
- server-to-server session APIs with platform API keys.
9
-
10
- The shared public chat UI is published from `@elevasis/ui/features/public-agent-chat`.
11
- The tenant route is authored after the UI package publish, then propagated through the
12
- strict manifest sync.
13
-
14
- The template Organization Model now also declares the `operations-sessions` navigation
15
- surface (`/operations/sessions`). That lets template-derived tenants inherit the
16
- standard Agent Sessions page or opt into the same surface from their own OM navigation
17
- without hand-authoring a route.
18
-
19
- ## Applies to
20
-
21
- - Template-derived projects that want public or code-gated agent chat links.
22
- - Projects syncing the template route baseline after the `@elevasis/ui` package baseline
23
- is bumped.
24
- - Projects that want the internal Agent Sessions page exposed through OM-authored
25
- navigation.
26
-
27
- ## Required actions
28
-
29
- 1. Accept the package baseline updates for `@elevasis/core` and `@elevasis/ui`.
30
- 2. Accept the new public chat route baseline once it appears in
31
- `ui/src/routes/chat.$slug.tsx` and any root-shell adjustment needed to keep that route
32
- outside the authenticated app shell.
33
- 3. If your project customizes `core/config/organization-model/navigation.ts`, merge the
34
- `operations-sessions` surface into the Operations group:
35
-
36
- ```ts
37
- 'operations-sessions': {
38
- type: 'surface',
39
- label: 'Agent Sessions',
40
- path: '/operations/sessions',
41
- surfaceType: 'list',
42
- order: 30
43
- }
44
- ```
45
-
46
- 4. Run the project UI install and typecheck/build after sync:
47
-
48
- ```bash
49
- pnpm -C ui install
50
- pnpm -C ui check-types
51
- pnpm -C ui build
52
- ```
53
-
54
- 5. Configure platform-side public agent access grants before sharing a public chat URL.
55
-
56
- ## Verification
57
-
58
- After sync, verify the OM exposes the Agent Sessions navigation surface:
59
-
60
- ```bash
61
- grep -n "operations-sessions\\|Agent Sessions\\|/operations/sessions" core/config/organization-model/navigation.ts
62
- pnpm -C core test
63
- ```
64
-
65
- ## Security notes
66
-
67
- - Browser code must use the public grant/capability-token flow.
68
- - Do not expose `ELEVASIS_PLATFORM_KEY` or operations API keys in browser code.
69
- - Public turns use the public WebSocket route backed by a capability token.
70
-
71
- ## Not handled by /git-sync
72
-
73
- `/git-sync` does not create production access grants, choose which agents are public,
74
- merge project-owned OM customizations automatically, or redeploy tenant UIs. Those are
75
- project/operator decisions after the code and package baselines are accepted.
@@ -1,42 +0,0 @@
1
- # SDK CLI `om:*` tenant Organization Model loader fix
2
-
3
- ## Why this note exists
4
-
5
- The `@elevasis/sdk` CLI `om:*` read commands could return an empty model in standard
6
- template-derived pnpm-workspace projects even when `core/config/organization-model.ts`
7
- contained real systems and resources. The loader resolved `esbuild` and external
8
- package imports from the project root, but template projects install SDK runtime
9
- dependencies under `operations/`.
10
-
11
- This train publishes an SDK loader fix. Tenant source does not need to change, but
12
- `operations/package.json` must pick up the new `@elevasis/sdk` baseline.
13
-
14
- ## Applies to
15
-
16
- - Template-derived projects that run `elevasis-sdk om:ls`, `om:search`, `om:describe`,
17
- `om:cat`, `om:graph`, or `om:skills` from `operations/`.
18
- - Projects whose `om:*` output is unexpectedly empty despite a valid
19
- `core/config/organization-model.ts`.
20
-
21
- ## Required actions
22
-
23
- 1. Accept the `operations/package.json` `@elevasis/sdk` baseline bump delivered by
24
- `/external sync`.
25
- 2. Run the operations install after the sync so the published CLI binary is updated.
26
-
27
- ## Verification
28
-
29
- Verify the tenant model loads from the published CLI:
30
-
31
- ```bash
32
- pnpm -C operations exec elevasis-sdk om:ls /all-systems
33
- ```
34
-
35
- The command should list the tenant's authored systems instead of returning an empty
36
- result.
37
-
38
- ## Not handled by /git-sync
39
-
40
- `/git-sync` pulls template guidance into a derived project. It does not publish the SDK,
41
- install dependencies inside every standalone project, or redeploy any project. Run the
42
- project-local install and deployment steps after accepting the sync.
@@ -1,30 +0,0 @@
1
- # Agent grants, execution visualizer, and Operations sidebar release train
2
-
3
- This train publishes coordinated platform updates across `@elevasis/core`, `@elevasis/ui`,
4
- and `@elevasis/sdk`, then syncs the external template baseline.
5
-
6
- ## What changes for tenant projects
7
-
8
- 1. `@elevasis/sdk` adds `grant:list`, `grant:create`, and `grant:disable` for
9
- managing public/code-gated agent access grants through the platform API.
10
- 2. `@elevasis/ui` adds shared agent public/private controls and improves the
11
- agent execution visualizer with per-iteration tool activity.
12
- 3. `@elevasis/core` adds the grant audit activity contract used by platform
13
- activity feeds.
14
- 4. The template `.claude/registries/skill-coverage.json` now explicitly waives
15
- the `grant` CLI domain as operator-facing access-management tooling.
16
-
17
- ## Operator action
18
-
19
- - Run the prepared external sync manifest from the SDK ship artifact.
20
- - Verify each derived project updates `.claude/registries/skill-coverage.json`.
21
- - After package baselines are bumped, verify derived package manifests point at
22
- the newly published `@elevasis/core`, `@elevasis/ui`, and `@elevasis/sdk`
23
- versions selected by the release steps.
24
-
25
- ## Manual-review exclusions
26
-
27
- Operations sidebar root-route parity for `external/nirvana-marketing` and
28
- `external/ZentaraHQ` is intentionally excluded from this ship train. Their
29
- root routes are project-specific merge-managed surfaces and should be reviewed
30
- manually before adopting the template Operations manifest mount.
@@ -1,33 +0,0 @@
1
- # Session UX fixes + project CLI `--json`
2
-
3
- ## Why this note exists
4
-
5
- This train bumps both `@elevasis/ui` and `@elevasis/sdk` with several tenant-facing changes beyond the shared `SessionConversationView` adoption (see the companion `2026-06-14-shared-session-conversation-view.md` note):
6
-
7
- - **Lazy agent-session creation** (`@elevasis/ui`) — the Agent Sessions surface and the public agent-chat surface no longer create a `sessions` row on open/mount. The row is created on the first message-send ("create-on-first-turn"), so opened-then-abandoned chats no longer leave phantom "0 turns" rows.
8
- - **Agent Sessions list refresh-after-delete fix** (`@elevasis/ui`) — a query-key factory bug (`sessionsKeys.sessions` appended a literal `undefined`) broke partial-match invalidation, so delete/create/archive left the list stale until a manual reload. Fixed; the list now refreshes automatically.
9
- - **Project milestone progress badge fix** (`@elevasis/ui`) — the `/projects` milestone header badge counted the milestone's own (empty) checklist, showing `0/0 COMPLETE`. It now counts completed child tasks, with a checklist fallback for task-free milestones.
10
- - **`project:*` CLI `--json` flag** (`@elevasis/sdk`) — every `project:*` command (project/task/milestone/note) now accepts `--json` for clean machine-parseable output, matching `grant:*`/`session:*`. The `/project` skill SKILL.md gains an Output Flags reference and the canonical `pnpm -s elevasis-sdk … --json` parse recipe (auto-propagated as a managed `.claude` write).
11
-
12
- ## Applies to
13
-
14
- - All template-derived projects that expose the agent-sessions page (`ui/src/features/operations/sessions/`) or the public agent-chat surface.
15
- - All projects that drive work via the `elevasis-sdk project:*` CLI or surface the `/projects` delivery page.
16
-
17
- ## Required actions
18
-
19
- - Bump `@elevasis/ui` to `^2.55.0` and `@elevasis/sdk` to `^1.36.5` (or later) and install. The ship train's `external-sync` stage does this automatically via the package-cascade baselines — manual `pnpm update` is not required.
20
- - No source changes are required to receive the lazy-session, delete-refresh, or milestone-badge fixes — they ship inside `@elevasis/ui`.
21
- - Agents may now invoke `pnpm -s elevasis-sdk project:<cmd> … --json` for clean JSON; the propagated `/project` SKILL.md Output Flags table documents the parse recipe.
22
-
23
- ## Verification
24
-
25
- - `pnpm -C ui check-types` passes against `@elevasis/ui@^2.55.0`.
26
- - Open an agent-session chat without sending → no new `sessions` row appears in the list; send one message → exactly one row with `1 turn`.
27
- - Delete a session → the list refreshes without a manual reload.
28
- - `pnpm -s elevasis-sdk project:task:list --project <id> --json` exits 0 with parseable JSON and no `unknown option` error.
29
-
30
- ## Not handled by /git-sync
31
-
32
- - `/git-sync` surfaces this note and pulls the propagated `/project` SKILL.md baseline, but it does not run the `@elevasis/ui` / `@elevasis/sdk` install for you when reconciling manually outside the ship train.
33
- - The lazy-session change does NOT retroactively clean up pre-existing "0 turns" rows; those are left in place by design.
@@ -1,26 +0,0 @@
1
- # Shared Session ConversationView
2
-
3
- ## Why this note exists
4
-
5
- `@elevasis/ui` now ships a shared `SessionConversationView` component (WebSocket-backed session-detail chat body). The template's session-detail page previously filled the `renderConversationView` slot with a local stub (`ui/src/features/assistant/components/ConversationView.tsx`) that returned `null`, so the agent-sessions chat page (`/operations/sessions/$sessionId`) rendered blank and the `DISCONNECTED` badge never cleared. The template `SessionChatPage` now renders the shared component directly, so derived projects get a working session chat with no local implementation.
6
-
7
- ## Applies to
8
-
9
- - All template-derived projects that expose the agent-sessions page (`ui/src/features/operations/sessions/SessionChatPage.tsx`).
10
- - Any project still carrying the `null`-returning `ConversationView` stub in `ui/src/features/assistant/components/`.
11
-
12
- ## Required actions
13
-
14
- - Bump `@elevasis/ui` to `^2.55.0` (or later) in `ui/package.json` and install. (The ship train's `external-sync` stage does this automatically via the package-cascade baseline; manual `pnpm update` is not required.)
15
- - Adopt the new `SessionChatPage` slot wiring: render `<SessionConversationView apiUrl={API_URL} sessionId={...} ... />` from `@elevasis/ui/features/operations`, reading `API_URL` from `@/lib/constants/api`, instead of the local `ConversationView` stub.
16
- - The local `ConversationView` stub is now unused by the session page. It remains a generic placeholder for an AI-assistant feature; keep it only if you are building such a feature, otherwise it can be removed.
17
-
18
- ## Verification
19
-
20
- - `pnpm -C ui check-types` passes against `@elevasis/ui@^2.55.0`.
21
- - The session-detail chat page renders history + live messages and the `DISCONNECTED` badge clears (connects) once `apiUrl` is wired.
22
-
23
- ## Not handled by /git-sync
24
-
25
- - `/git-sync` surfaces this note and pulls the template `SessionChatPage` baseline, but it does not delete the now-unused local `ConversationView` stub. Remove it manually if you do not intend to build an assistant feature.
26
- - `/git-sync` does not run the `@elevasis/ui` install for you; run the install after the baseline bump if you are reconciling manually outside the ship train.
@@ -1,46 +0,0 @@
1
- # Session Chat Zero-Wiring Default Slot
2
-
3
- ## Why this note exists
4
-
5
- `@elevasis/ui` (>= 2.56.0) makes `SessionChatPage`'s `renderConversationView` slot
6
- optional and self-defaulting: when omitted, the page renders the shared
7
- `SessionConversationView` itself, resolving `apiUrl` from the service context
8
- (now exposed on `ElevasisServiceContextValue`). The template `SessionChatPage`
9
- now mounts the shared page with NO slot, and the orphan null-stub
10
- `ui/src/features/assistant/components/ConversationView.tsx` is deleted. Projects
11
- that omit the slot get a working session chat out of the box; customization stays
12
- opt-in via the same prop. Backward-compatible: hosts that still pass the slot are
13
- unaffected.
14
-
15
- ## Applies to
16
-
17
- - All template-derived projects with the agent-sessions page
18
- (`ui/src/features/operations/sessions/SessionChatPage.tsx`).
19
- - Any project still wiring a local `ConversationView` stub
20
- (`ui/src/features/assistant/components/ConversationView.tsx`) -> these render
21
- a blank chat with a stuck `DISCONNECTED` badge until reconciled.
22
-
23
- ## Required actions
24
-
25
- - Bump `@elevasis/ui` to `^2.56.0` (or later) and install. (The ship train's
26
- `external-sync` stage does this automatically via the package-cascade baseline;
27
- manual `pnpm update` is not required.)
28
- - Drop the explicit `renderConversationView={...}` slot from your
29
- `SessionChatPage.tsx` and remove the local stub import, relying on the new
30
- default. (To keep a custom body, keep passing the slot.)
31
- - Delete the now-unused local null-stub
32
- `ui/src/features/assistant/components/ConversationView.tsx`.
33
-
34
- ## Verification
35
-
36
- - `pnpm -C ui check-types` passes against `@elevasis/ui@^2.56.0`.
37
- - The session-detail chat page (`/operations/sessions/$sessionId`) renders
38
- history + live messages and the `DISCONNECTED` badge clears, with NO slot wired.
39
-
40
- ## Not handled by /git-sync
41
-
42
- - `/git-sync` surfaces this note and pulls the template `SessionChatPage`
43
- baseline, but the diverged tenant copy is preserved (merge-managed) -- you must
44
- manually drop the explicit slot.
45
- - `/git-sync` does NOT delete the local `ConversationView` stub
46
- (`delete_policy: none`); remove it manually.
@@ -1,34 +0,0 @@
1
- # Agent session UX features (End Conversation, intake form, session naming)
2
-
3
- ## Why this note exists
4
-
5
- This train bumps `@elevasis/core` and `@elevasis/ui` with three tenant-facing agent-session features that ship entirely inside the published packages (no template source edit, package-cascade-only):
6
-
7
- - **End Conversation** (`@elevasis/ui`) — both the internal Agent Sessions surface (`features/operations/sessions/SessionDetailsPanel`) and the public agent-chat surface (`features/public-agent-chat/PublicAgentChat`) now render an "End conversation" control. Ending preserves history and blocks new turns (distinct from Delete, which removes). The public composer locks out after end with a "This conversation has ended" placeholder.
8
- - **Welcome intake form** (`@elevasis/ui` + `@elevasis/core`) — the public chat intro screen renders an optional intake form driven by the grant's `capture_fields` column (now typed as `CaptureField[]` in `@elevasis/core`'s public-agent-chat schema). Collected values flow into `session.metadata`. All fields are optional.
9
- - **Session naming from intake** (`@elevasis/ui` + platform API) — sessions are titled from the collected `name` (server-side, with a first-user-message fallback), and the Agent Sessions list now renders `session.title` as the row label.
10
-
11
- The session `session:end` / `session:ended` WebSocket messages, the internal `POST /sessions/:id/end` route, and server-side title derivation live in the Elevasis-deployed platform API — tenants receive that behavior automatically; the package bump only delivers the frontend.
12
-
13
- ## Applies to
14
-
15
- - All template-derived projects that expose the Agent Sessions page (`ui/src/features/operations/sessions/`) or the public agent-chat surface (`ui/src/features/public-agent-chat/`).
16
- - Projects that configure public agent grants and want to collect intake fields (Name plus arbitrary configurable fields) on the public intro screen.
17
-
18
- ## Required actions
19
-
20
- - Bump `@elevasis/core` to `^0.52.0` and `@elevasis/ui` to `^2.59.0` (or later) and install. The ship train's `external-sync` stage does this automatically via the package-cascade baselines — manual `pnpm update` is not required.
21
- - No source changes are required to receive End Conversation, the intake form, or title-in-list — they ship inside `@elevasis/ui` / `@elevasis/core`.
22
- - To enable an intake form on a public agent, populate the grant's `capture_fields` (array of `{ key, label, type?, required? }`). There is no Command Center editor for `capture_fields` yet — configure it via a grant write. Leaving `capture_fields` empty renders the intro exactly as before (no form).
23
-
24
- ## Verification
25
-
26
- - `pnpm -C ui check-types` passes against `@elevasis/ui@^2.59.0`.
27
- - Open the public agent chat for a grant with `capture_fields` set → the intro renders the configured fields; entering a name and starting the session titles the session by that name in the Agent Sessions list.
28
- - With no `capture_fields` → the intro renders unchanged; the session is titled from the first user message.
29
- - Click "End conversation" on either the public header or the internal session detail panel → the session ends, history is preserved, and a new turn is rejected ("Session has ended").
30
-
31
- ## Not handled by /git-sync
32
-
33
- - `/git-sync` surfaces this note and pulls the propagated package baselines, but it does not run the `@elevasis/core` / `@elevasis/ui` install for you when reconciling manually outside the ship train.
34
- - The intake/title and End features depend on the Elevasis-deployed platform API (`session:end` handling, `/sessions/:id/end`, server-side title derivation). They are not part of a tenant's own backend and require no tenant action — but they only work once the platform API carrying them is deployed.
@@ -1,52 +0,0 @@
1
- # Shared Full-Height Page Scroll Contract + Canonical headerActions Pattern
2
-
3
- ## Why this note exists
4
-
5
- `@elevasis/ui` (>= 2.61.2) hardens the shared full-height page scroll contract and
6
- the template now demonstrates the safe customization pattern for it.
7
-
8
- - `SubshellContentContainer` (the root of the lead-gen list-detail, CRM/delivery/
9
- clients detail pages, etc.) is a `flex:1 / overflowY:auto / minHeight:0` scroll
10
- container that only bounds correctly as a **direct flex child** of the shell's
11
- height-bounded region. Wrapping a shared page in a layout element (e.g. a Mantine
12
- `<Stack>`, which is `flex:0 1 auto` with no `min-height:0`) breaks the height
13
- chain: the page balloons to content height and its internal scroll never engages.
14
- - The package now ships a **dev-only runtime guard** that logs a console warning when
15
- it detects an unbounded `SubshellContentContainer`, so this mistake is caught while
16
- authoring a route instead of shipping a silently broken page. No-op in production.
17
- - The template `lead-gen/lists.$listId.tsx` now injects a `ListExportButton` through
18
- the page's **`headerActions` slot** (not a wrapper) as the canonical reference for
19
- customizing a shared full-height page.
20
-
21
- ## Applies to
22
-
23
- - All template-derived projects that render shared full-height pages
24
- (`LeadGenListDetailPage`, CRM/delivery/clients detail pages).
25
- - Any project that wrapped a shared page in a `<Stack>` (or similar) to bolt on
26
- extra UI -> that page's scroll is broken; switch to the page's slot props.
27
-
28
- ## Required actions
29
-
30
- - Bump `@elevasis/ui` to `^2.61.2` (or later) and install. (The ship train's
31
- `external-sync` stage does this automatically via the package-cascade baseline;
32
- manual `pnpm update` is not required.)
33
- - If any route wraps a shared full-height page, remove the wrapper and pass the
34
- extra UI through the page's slot props (`headerActions` / `tabs` / `footer`). The
35
- template `lead-gen/lists.$listId.tsx` is the canonical reference.
36
- - Heed the new dev console warning if it appears; do not silence it.
37
-
38
- ## Verification
39
-
40
- - `pnpm -C ui check-types` passes against `@elevasis/ui@^2.61.2`.
41
- - Open a shared detail page (e.g. `/lead-gen/lists/:listId`): the page scrolls
42
- internally, the bottom is reachable, and no scroll-contract console warning fires.
43
- - Wrapping the page in a `<Stack>` produces the dev warning (negative check).
44
-
45
- ## Not handled by /git-sync
46
-
47
- - `/git-sync` surfaces this note and pulls the template `lists.$listId.tsx` +
48
- `ListExportButton` baseline, but a diverged tenant copy is preserved
49
- (merge-managed) -- you must manually remove any page wrapper and adopt the slot
50
- pattern.
51
- - The dev guard ships inside `@elevasis/ui`; no tenant source change is required to
52
- receive it beyond the dependency-baseline bump.
@@ -1,47 +0,0 @@
1
- # Lead Gen Overview — OM-derived telemetry (NaN fix)
2
-
3
- ## Why this note exists
4
-
5
- The published `@elevasis/ui` Lead Gen **Overview** page previously hardcoded the
6
- pre-migration canonical pipeline stage keys (`populated, extracted, qualified,
7
- discovered, verified, personalized, uploaded`) in its telemetry reducer. Any tenant
8
- whose Organization Model declares a different stage set got `undefined` stage reads
9
- and rendered `NaN` in the header and the **Ready Contacts** stat card.
10
-
11
- `@elevasis/ui@2.62.0` (paired with `@elevasis/core@0.54.0`) makes the Overview render
12
- generically over the OM-declared stage catalog. Telemetry now derives entirely from
13
- `getLeadGenStageCatalog()` + `ListTelemetry.stageCounts`; an absent stage contributes
14
- `0`, never `NaN`. The "ready / next focus" backlog moved from hardcoded
15
- `personalized − uploaded` to a declared OM descriptor.
16
-
17
- ## Applies to
18
-
19
- - Every template-derived project that consumes `@elevasis/ui` for the Lead Gen
20
- Overview surface and whose pipeline diverges from the old canonical stage set.
21
- - This is a **package-cascade-only** change: no template SOURCE edits are required.
22
- The fix is bundled in the published packages; tenants only need the new baselines.
23
-
24
- ## Required actions
25
-
26
- - Take the dependency baseline bump propagated by this train:
27
- - `@elevasis/core` → `0.54.0`
28
- - `@elevasis/ui` → `2.62.0`
29
- - Reinstall so the new bundles are live (`pnpm install` in the project's `ui/`
30
- workspace) and clear any stale Vite optimize cache
31
- (`node_modules/.vite`) before restarting a running dev server.
32
-
33
- ## Verification
34
-
35
- - After the baseline bump + install, open the Lead Gen Overview for a list on a
36
- divergent pipeline: the header summary and the three stat cards render finite
37
- numbers, with no `NaN` and no reference to retired stages.
38
- - `pnpm sync:verify -- <project>` confirms the project is on the new baselines.
39
-
40
- ## Not handled by /git-sync
41
-
42
- - **Optional OM authoring (tenant-owned, NOT shipped here):** a tenant MAY declare
43
- `readinessTarget: true` on one stage in its `core/config/organization-model.ts`
44
- stage catalog to restore a semantic "Ready: \<stage\>" stat. Until declared, the UI
45
- correctly falls back to a generic last-incomplete-stage backlog. This is an
46
- enhancement done via a separate `/om` cycle, never auto-propagated.
47
- - The visual confirmation that `NaN` is gone on a running tenant page (a human check).
@@ -1,75 +0,0 @@
1
- # Agent Scaffold Hardening — deploy default, rule paths, ownership split
2
-
3
- ## Why this note exists
4
-
5
- Three corrections in this train change guidance agents were previously following
6
- incorrectly. The first is safety-relevant and is the reason this note exists.
7
-
8
- **1. Plain `deploy` targets PRODUCTION, not dev.** `resolveApiUrl` in the SDK CLI
9
- falls through to `https://api.elevasis.io` unless `NODE_ENV === 'development'` is
10
- set. The template `CLAUDE.md` Commands table and the bundled `deployment.md` both
11
- stated that plain `deploy` targeted dev. Both were wrong, and every derived project
12
- inherited the wrong statement. The full resolution order is now documented:
13
- `--api-url` > `--prod` > `ELEVASIS_API_URL` > `NODE_ENV === 'development'` >
14
- production fallthrough. `resolveApiKey` follows a separate rule and is documented
15
- alongside it.
16
-
17
- If your project has no `NODE_ENV=development` in its environment, it has **no
18
- working dev target** — `deploy` and `deploy:prod` resolve to the same production
19
- API. Verify before your next deploy rather than assuming.
20
-
21
- **2. Bundled rule paths were wrong fleet-wide.** Every drill-down pointer said
22
- `node_modules/@elevasis/sdk/reference/...`. The SDK actually installs at
23
- `operations/node_modules/@elevasis/sdk/reference/...`; the project root has no
24
- `@elevasis` packages at all.
25
-
26
- **3. `ui.md` documented three import surfaces that do not exist.**
27
-
28
- | Was documented | Actual |
29
- | ------------------------------------------------------------ | --------------------------------------------------------- |
30
- | `useApiClient` from `@/lib/hooks/useApiClient` | `@elevasis/ui/api`, and it takes `API_URL` as an argument |
31
- | `ProtectedRoute` from `ui/src/features/auth/` | `@elevasis/ui/auth` — that directory does not exist |
32
- | `sseConnectionManager` from `@/lib/sse/SSEConnectionManager` | `@/lib/sse` (`ui/src/lib/sse.ts`) |
33
-
34
- ## Applies to
35
-
36
- - Every template-derived project. All three corrections ship inside the
37
- `@elevasis/sdk` reference bundle, so they arrive with the dependency baseline —
38
- no source edits required to receive them.
39
- - `CLAUDE.md` also changed shape this train. Template-structural guidance (project
40
- structure, stack, commands, slash-command surface) moved into
41
- `.claude/Overview.md`, which is replace-managed and propagates by sync.
42
- `CLAUDE.md` is now project-owned identity only and remains never-touch.
43
-
44
- ## Required actions
45
-
46
- - Take the `@elevasis/sdk` dependency baseline bump propagated by this train, then
47
- reinstall in `operations/` so `reference/rules/` carries the corrected canon.
48
- - Read the new `OPERATIONS.md` at your project root. It is tenant-owned, never
49
- synced, and is the sanctioned home for operational facts that contradict generic
50
- guidance — starting with your real deploy target.
51
- - Once this train's `.claude/Overview.md` has landed, remove template-structural
52
- prose from your project's `CLAUDE.md`. Keep your identity sections verbatim.
53
-
54
- ## Verification
55
-
56
- - `grep -n "elevasis/ui/api" operations/node_modules/@elevasis/sdk/reference/rules/ui.md`
57
- returns a match, and `@/lib/hooks/useApiClient` returns none.
58
- - The bundled `deployment.md` leads with a Dev vs Prod section stating the
59
- production default.
60
- - `.claude/Overview.md` contains Project Structure, Stack, and Commands sections.
61
- - `pnpm sync:verify -- <project>` confirms the project is on the new baseline.
62
-
63
- ## Not handled by /git-sync
64
-
65
- - **The `CLAUDE.md` migration is manual and tenant-specific.** The file is
66
- never-touch by design, so nothing overwrites it. Lifting stale template prose out
67
- while preserving your identity sections is a per-project edit.
68
- - **Literal `{CLIENT_CONTEXT}` / `{USER_PREFERENCES}` placeholders must stay
69
- literal** if setup has not run for your project. Setup only fills them while they
70
- are still literal; replacing them with stub prose permanently marks an
71
- unconfigured project as configured.
72
- - **One-time EOL renormalization.** This train adds `.gitattributes` (LF in-repo).
73
- After it lands, run `git add --renormalize .` once in your project repo. Until
74
- then the CRLF/LF false-drift persists in existing checkouts — it accounted for
75
- roughly 95% of apparent `.claude/` drift before this change.