@elevasis/sdk 1.21.0 → 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 (160) hide show
  1. package/dist/cli.cjs +951 -171
  2. package/dist/index.d.ts +632 -341
  3. package/dist/index.js +3102 -142
  4. package/dist/node/index.d.ts +1 -0
  5. package/dist/node/index.js +19 -1
  6. package/dist/test-utils/index.d.ts +313 -4
  7. package/dist/test-utils/index.js +3246 -281
  8. package/dist/worker/index.js +3041 -80
  9. package/package.json +3 -3
  10. package/reference/claude-config/hooks/post-edit-validate.mjs +98 -98
  11. package/reference/claude-config/hooks/scaffold-registry-reminder.mjs +188 -188
  12. package/reference/claude-config/hooks/tool-failure-recovery.mjs +73 -73
  13. package/reference/claude-config/registries/graph-skills.json +4 -4
  14. package/reference/claude-config/registries/knowledge-flags.json +0 -2
  15. package/reference/claude-config/rules/active-change-index.md +80 -80
  16. package/reference/claude-config/rules/agent-start-here.md +277 -277
  17. package/reference/claude-config/rules/deployment.md +57 -57
  18. package/reference/claude-config/rules/error-handling.md +56 -56
  19. package/reference/claude-config/rules/execution.md +40 -40
  20. package/reference/claude-config/rules/frontend.md +4 -4
  21. package/reference/claude-config/rules/observability.md +31 -31
  22. package/reference/claude-config/rules/operations.md +29 -17
  23. package/reference/claude-config/rules/organization-model.md +110 -84
  24. package/reference/claude-config/rules/organization-os.md +115 -113
  25. package/reference/claude-config/rules/package-taxonomy.md +33 -33
  26. package/reference/claude-config/rules/platform.md +42 -42
  27. package/reference/claude-config/rules/shared-types.md +49 -46
  28. package/reference/claude-config/rules/task-tracking.md +47 -47
  29. package/reference/claude-config/rules/ui.md +200 -200
  30. package/reference/claude-config/rules/vibe.md +235 -235
  31. package/reference/claude-config/scripts/statusline-command.js +18 -18
  32. package/reference/claude-config/settings.json +34 -34
  33. package/reference/claude-config/skills/deploy/{SKILL.md → skill.md} +156 -156
  34. package/reference/claude-config/skills/dsp/SKILL.md +66 -66
  35. package/reference/claude-config/skills/elevasis/SKILL.md +235 -235
  36. package/reference/claude-config/skills/explore/SKILL.md +6 -6
  37. package/reference/claude-config/skills/git-sync/SKILL.md +126 -126
  38. package/reference/claude-config/skills/knowledge/SKILL.md +314 -299
  39. package/reference/claude-config/skills/knowledge/operations/codify-level-a.md +100 -100
  40. package/reference/claude-config/skills/knowledge/operations/codify-level-b.md +159 -159
  41. package/reference/claude-config/skills/knowledge/operations/customers.md +109 -109
  42. package/reference/claude-config/skills/knowledge/operations/features.md +76 -76
  43. package/reference/claude-config/skills/knowledge/operations/goals.md +118 -118
  44. package/reference/claude-config/skills/knowledge/operations/identity.md +93 -93
  45. package/reference/claude-config/skills/knowledge/operations/labels.md +94 -94
  46. package/reference/claude-config/skills/knowledge/operations/offerings.md +109 -109
  47. package/reference/claude-config/skills/knowledge/operations/roles.md +99 -99
  48. package/reference/claude-config/skills/knowledge/operations/techStack.md +30 -30
  49. package/reference/claude-config/skills/project/SKILL.md +1088 -1088
  50. package/reference/claude-config/skills/run-ui/SKILL.md +73 -73
  51. package/reference/claude-config/skills/save/SKILL.md +3 -3
  52. package/reference/claude-config/skills/setup/SKILL.md +275 -275
  53. package/reference/claude-config/skills/status/SKILL.md +59 -59
  54. package/reference/claude-config/skills/submit-request/SKILL.md +180 -180
  55. package/reference/claude-config/skills/sync/SKILL.md +47 -47
  56. package/reference/claude-config/skills/tutorial/SKILL.md +259 -259
  57. package/reference/claude-config/skills/tutorial/progress-template.md +74 -74
  58. package/reference/claude-config/skills/tutorial/technical.md +1303 -1303
  59. package/reference/claude-config/skills/tutorial/vibe-coder.md +890 -890
  60. package/reference/claude-config/sync-notes/2026-04-22-git-sync-and-sync-notes.md +27 -27
  61. package/reference/claude-config/sync-notes/2026-04-22-lead-gen-deliverability-removal.md +30 -30
  62. package/reference/claude-config/sync-notes/2026-04-24-test-utils-and-template-tests.md +73 -73
  63. package/reference/claude-config/sync-notes/2026-04-24-ui-consolidation-and-sdk-cli-train.md +86 -86
  64. package/reference/claude-config/sync-notes/2026-04-25-auth-role-system-and-settings-roles.md +55 -55
  65. package/reference/claude-config/sync-notes/2026-04-27-crm-hitl-action-layer-cutover.md +97 -97
  66. package/reference/claude-config/sync-notes/2026-04-27-lead-gen-substrate-train.md +112 -112
  67. package/reference/claude-config/sync-notes/2026-04-29-crm-state-and-lead-gen-processing-status.md +93 -93
  68. package/reference/claude-config/sync-notes/2026-05-02-crm-ownership-next-action.md +58 -58
  69. package/reference/claude-config/sync-notes/2026-05-02-template-hardcode-workos-config.md +56 -56
  70. package/reference/claude-config/sync-notes/2026-05-04-elevasis-workspace.md +71 -71
  71. package/reference/claude-config/sync-notes/2026-05-04-knowledge-bundle.md +83 -83
  72. package/reference/claude-config/sync-notes/2026-05-04-template-skills-run-ui-and-tutorial.md +59 -59
  73. package/reference/claude-config/sync-notes/2026-05-05-list-builder.md +42 -42
  74. package/reference/claude-config/sync-notes/2026-05-06-crm-spine.md +60 -60
  75. package/reference/claude-config/sync-notes/2026-05-06-sdk-changes-release-train.md +37 -37
  76. package/reference/claude-config/sync-notes/2026-05-07-sdk-changes-release-train.md +34 -34
  77. package/reference/claude-config/sync-notes/2026-05-08-resource-governance-scaffold-guidance.md +38 -38
  78. package/reference/claude-config/sync-notes/2026-05-09-clients-domain.md +32 -32
  79. package/reference/claude-config/sync-notes/2026-05-09-command-system.md +33 -33
  80. package/reference/claude-config/sync-notes/2026-05-09-resource-governance-and-misc.md +69 -69
  81. package/reference/claude-config/sync-notes/2026-05-12-sdk-ready-release-train.md +30 -30
  82. package/reference/claude-config/sync-notes/2026-05-14-organization-model-ontology-refactor.md +42 -0
  83. package/reference/claude-config/sync-notes/README.md +43 -43
  84. package/reference/cli.mdx +808 -808
  85. package/reference/concepts.mdx +146 -146
  86. package/reference/deployment/api.mdx +297 -297
  87. package/reference/deployment/command-center.mdx +209 -209
  88. package/reference/deployment/index.mdx +195 -195
  89. package/reference/deployment/provided-features.mdx +107 -107
  90. package/reference/deployment/ui-execution.mdx +250 -250
  91. package/reference/examples/organization-model.ts +146 -83
  92. package/reference/framework/agent.mdx +156 -156
  93. package/reference/framework/index.mdx +195 -195
  94. package/reference/framework/interaction-guidance.mdx +182 -182
  95. package/reference/framework/memory.mdx +326 -326
  96. package/reference/framework/project-structure.mdx +282 -282
  97. package/reference/framework/tutorial-system.mdx +135 -135
  98. package/reference/getting-started.mdx +142 -142
  99. package/reference/index.mdx +106 -106
  100. package/reference/packages/core/src/README.md +14 -14
  101. package/reference/packages/core/src/business/README.md +2 -2
  102. package/reference/packages/core/src/knowledge/README.md +32 -32
  103. package/reference/packages/core/src/organization-model/README.md +149 -149
  104. package/reference/packages/core/src/test-utils/README.md +37 -37
  105. package/reference/packages/ui/src/api/README.md +18 -18
  106. package/reference/packages/ui/src/app/README.md +24 -24
  107. package/reference/packages/ui/src/auth/README.md +18 -18
  108. package/reference/packages/ui/src/components/README.md +24 -24
  109. package/reference/packages/ui/src/execution/README.md +16 -16
  110. package/reference/packages/ui/src/features/README.md +28 -28
  111. package/reference/packages/ui/src/graph/README.md +16 -16
  112. package/reference/packages/ui/src/hooks/README.md +23 -23
  113. package/reference/packages/ui/src/initialization/README.md +19 -19
  114. package/reference/packages/ui/src/knowledge/README.md +31 -31
  115. package/reference/packages/ui/src/organization/README.md +18 -18
  116. package/reference/packages/ui/src/profile/README.md +19 -19
  117. package/reference/packages/ui/src/provider/README.md +32 -32
  118. package/reference/packages/ui/src/router/README.md +18 -18
  119. package/reference/packages/ui/src/sse/README.md +13 -13
  120. package/reference/packages/ui/src/test-utils/README.md +7 -7
  121. package/reference/packages/ui/src/theme/README.md +23 -23
  122. package/reference/packages/ui/src/theme/presets/README.md +19 -19
  123. package/reference/packages/ui/src/types/README.md +16 -16
  124. package/reference/packages/ui/src/utils/README.md +18 -18
  125. package/reference/packages/ui/src/zustand/README.md +18 -18
  126. package/reference/platform-tools/adapters-integration.mdx +301 -301
  127. package/reference/platform-tools/adapters-platform.mdx +553 -553
  128. package/reference/platform-tools/index.mdx +217 -217
  129. package/reference/platform-tools/type-safety.mdx +82 -82
  130. package/reference/resources/index.mdx +349 -349
  131. package/reference/resources/patterns.mdx +449 -449
  132. package/reference/resources/types.mdx +116 -116
  133. package/reference/roadmap.mdx +165 -165
  134. package/reference/runtime.mdx +173 -173
  135. package/reference/scaffold/core/organization-graph.mdx +110 -90
  136. package/reference/scaffold/core/organization-model.mdx +226 -219
  137. package/reference/scaffold/index.mdx +67 -67
  138. package/reference/scaffold/operations/propagation-pipeline.md +77 -77
  139. package/reference/scaffold/operations/scaffold-maintenance.md +12 -12
  140. package/reference/scaffold/operations/workflow-recipes.md +138 -138
  141. package/reference/scaffold/recipes/add-a-feature.md +308 -88
  142. package/reference/scaffold/recipes/add-a-resource.md +134 -110
  143. package/reference/scaffold/recipes/customize-knowledge-browser.md +5 -5
  144. package/reference/scaffold/recipes/customize-organization-model.md +273 -138
  145. package/reference/scaffold/recipes/extend-a-base-entity.md +8 -8
  146. package/reference/scaffold/recipes/extend-crm.md +3 -3
  147. package/reference/scaffold/recipes/extend-lead-gen.md +400 -400
  148. package/reference/scaffold/recipes/gate-by-feature-or-admin.md +118 -118
  149. package/reference/scaffold/recipes/index.md +46 -46
  150. package/reference/scaffold/recipes/query-the-knowledge-graph.md +197 -170
  151. package/reference/scaffold/reference/contracts.md +2101 -2096
  152. package/reference/scaffold/reference/glossary.md +76 -76
  153. package/reference/scaffold/ui/composition-extensibility.mdx +233 -233
  154. package/reference/scaffold/ui/customization.md +243 -243
  155. package/reference/scaffold/ui/feature-flags-and-gating.md +46 -46
  156. package/reference/scaffold/ui/feature-shell.mdx +72 -72
  157. package/reference/scaffold/ui/recipes.md +221 -214
  158. package/reference/spine/spine-primer.md +96 -96
  159. package/reference/templates/index.mdx +47 -47
  160. package/reference/troubleshooting.mdx +223 -223
@@ -1,209 +1,209 @@
1
- ---
2
- title: Command Center
3
- description: Post-deployment UI reference -- what each page does, the resource graph model, relationships, validation, and how SDK concepts map to Command Center actions
4
- loadWhen: "User asks about the Command Center UI, post-deployment workflow, monitoring, or the resource graph"
5
- ---
6
-
7
- The Command Center is the browser UI for interacting with deployed resources. After you run `elevasis-sdk deploy`, this is where you run workflows, monitor executions, manage approvals, schedule tasks, and review logs.
8
-
9
- ---
10
-
11
- ## Quick Reference
12
-
13
- | Task | Page | Path |
14
- | -------------------------------------------------- | -------------- | ----------------------- |
15
- | Browse deployed resources, view the resource graph | Command View | `/command-view` |
16
- | Approve or reject pending HITL requests | Command Queue | `/queue` |
17
- | Search execution history across all resources | Execution Logs | `/logs` |
18
- | Create API key and OAuth credentials | Credentials | `/settings/credentials` |
19
- | View deployment history and active version | Deployments | `/settings/deployments` |
20
-
21
- ---
22
-
23
- ## Command View
24
-
25
- The Command View is a visual graph of your deployed resources. Each node is a resource (workflow, agent, trigger, integration). Edges are the relationships you declared in `DeploymentSpec`.
26
-
27
- **What you can do here:**
28
-
29
- - See all deployed resources at a glance
30
- - Trace data flow between resources via declared relationships
31
- - Identify which resources depend on which integrations
32
- - Click a node to view resource details (ID, status, type)
33
-
34
- ### Node Types
35
-
36
- Every resource you deploy becomes a node in the graph. Some nodes are executable; others are visual-only.
37
-
38
- **Executable nodes:**
39
-
40
- | Type | What It Does | Deployed By |
41
- | -------- | ------------------------------------------------- | --------------------- |
42
- | Workflow | Runs step handlers in sequence or branching paths | `elevasis-sdk deploy` |
43
- | Agent | Autonomous LLM-powered resource with tools | `elevasis-sdk deploy` |
44
-
45
- **Visual-only nodes** (no runtime behavior -- exist for the graph):
46
-
47
- | Type | What It Represents | Why It Exists |
48
- | ----------------- | --------------------------------------------------- | --------------------------------------------- |
49
- | Trigger | A webhook or schedule that starts a workflow | Shows how executions begin |
50
- | Integration | A credential reference (provider + credential name) | Shows which external services a resource uses |
51
- | External Resource | A third-party automation (n8n, Make, Zapier) | Documents automations outside the platform |
52
- | Human Checkpoint | A point where a human makes a decision | Shows where HITL approval gates exist |
53
-
54
- ### Relationships
55
-
56
- Relationships are edges in the graph. Declare them in `DeploymentSpec`:
57
-
58
- ```typescript
59
- const org: DeploymentSpec = {
60
- workflows: [scoreLeadWorkflow, sendProposalWorkflow],
61
- relationships: {
62
- 'score-lead': {
63
- triggers: {
64
- workflows: ['send-proposal'],
65
- },
66
- uses: {
67
- integrations: ['attio-integration'],
68
- },
69
- },
70
- },
71
- };
72
- ```
73
-
74
- | Field | Type | Meaning |
75
- | -------------------- | ---------- | ------------------------------------- |
76
- | `triggers.workflows` | `string[]` | Workflows this resource starts |
77
- | `triggers.agents` | `string[]` | Agents this resource starts |
78
- | `uses.integrations` | `string[]` | Integrations this resource depends on |
79
-
80
- **Relationships are declarations, not routing.** Declaring that workflow A triggers workflow B does not route A's output to B -- your handler must explicitly invoke B via the `execution` adapter. The graph can drift from reality if declarations don't match code.
81
-
82
- ### What Is Enforced vs Decorative
83
-
84
- | Category | Validated at Deploy | Matches Runtime | Status |
85
- | ---------------------------------------- | ---------------------------- | --------------- | -------------- |
86
- | Resource IDs unique | Yes | Yes | **Enforced** |
87
- | Input schema matches execution interface | Yes | Yes | **Enforced** |
88
- | Relationship targets exist | Yes | No | **Decorative** |
89
- | Trigger routing | No | No | **Decorative** |
90
- | Tool availability per agent | No | No | **Decorative** |
91
- | Model config | Yes (provider + model valid) | No | **Decorative** |
92
-
93
- Keep relationships in sync with your handler code. When you add an `execution.trigger()` call, add the corresponding relationship declaration.
94
-
95
- ### Deploy-Time Validation
96
-
97
- `elevasis-sdk deploy` and `elevasis-sdk check` both validate:
98
-
99
- - Duplicate resource IDs
100
- - Relationship targets must exist in the same `DeploymentSpec`
101
- - Agent model params (provider, model name, temperature bounds)
102
- - Workflow step chains (`next.target` must point to existing step names)
103
-
104
- **Validation error examples:**
105
-
106
- ```
107
- ERROR Relationship target 'send-proposal' not found in organization resources
108
- ERROR Duplicate resource ID 'score-lead' in deployment
109
- ```
110
-
111
- ### Graph Serialization
112
-
113
- The platform converts your definitions into `CommandViewNode` (one per resource) and `CommandViewEdge` (one per relationship) structures. `buildEdges()` reads your `relationships` declarations and produces edges as a pure transformation -- no runtime behavior is inferred.
114
-
115
- > **SDK takeaway:** Declare relationships in `DeploymentSpec` to keep the Command View accurate as your system grows. Update declarations whenever you add or remove `execution.trigger()` calls.
116
-
117
- ---
118
-
119
- ## Command Queue
120
-
121
- The Command Queue surfaces all pending Human-in-the-Loop (HITL) approval requests from running workflows.
122
-
123
- **What you can do here:**
124
-
125
- - View pending approval requests with context provided by the workflow
126
- - Filter by resource, status, or date
127
- - Approve or reject with an optional comment
128
- - See the history of past decisions
129
-
130
- **How it connects to your code:** Approval requests appear when a workflow step calls `approval.create()`. The workflow pauses at that step and waits for a decision.
131
-
132
- ```typescript
133
- import { approval } from '@elevasis/sdk/worker'
134
-
135
- const task = await approval.create({
136
- actions: [
137
- { id: 'approve', label: 'Approve', type: 'primary' },
138
- { id: 'reject', label: 'Reject', type: 'danger' },
139
- ],
140
- context: { dealId, proposalUrl },
141
- description: 'Approve proposal before sending',
142
- })
143
- ```
144
-
145
- > **SDK takeaway:** Use `approval.create()` to create approval gates. Provide rich `context` so reviewers have what they need to decide.
146
-
147
- ---
148
-
149
- ## Execution Logs
150
-
151
- The Execution Logs page shows the history of all executions across every deployed resource.
152
-
153
- **What you can do here:**
154
-
155
- - Search and filter by resource, status (completed/failed/running), date range
156
- - Click any execution to view full detail: input, output, step-level trace, duration
157
- - Identify failed executions and see error messages with stack traces
158
- - Navigate from a log entry directly to the resource in Command View
159
-
160
- **Filtering tips:**
161
-
162
- - Filter by resource name to debug a specific workflow
163
- - Filter by `failed` status to triage production issues
164
- - Use date range to narrow down incidents
165
-
166
- > **SDK takeaway:** Every `elevasis-sdk exec` and every scheduled run appears here. Use this page to verify behavior after deploy and to diagnose failures before opening code.
167
-
168
- ---
169
-
170
- ## Credentials
171
-
172
- The Credentials page manages encrypted API keys and OAuth tokens used by your workflows at runtime.
173
-
174
- **What you can do here:**
175
-
176
- - Create API key and webhook-secret credentials via a form
177
- - Connect OAuth providers (Google Sheets, Dropbox) via browser flow
178
- - View existing credentials (values are never shown after creation)
179
- - Delete credentials that are no longer needed
180
-
181
- **Two credential types:**
182
-
183
- | Type | Created via | Notes |
184
- | ------------------------ | -------------------------------------------- | ------------------------------------------------------ |
185
- | API key / webhook secret | CLI (`elevasis-sdk creds create`) or UI form | Either method works |
186
- | OAuth | UI only | Requires browser redirect -- cannot be created via CLI |
187
-
188
- > **SDK takeaway:** Reference credentials in your code by name (`credential: 'my-cred-name'`). Create API keys via CLI or UI; OAuth credentials require this page.
189
-
190
- ---
191
-
192
- ## Deployments
193
-
194
- The Deployments page shows the history of all deployments for your organization.
195
-
196
- **What you can do here:**
197
-
198
- - View a chronological list of past deployments
199
- - See which resources changed in each deployment
200
- - Identify the currently active version
201
- - Compare resource counts across deployments
202
-
203
- **How it connects to your code:** Each `elevasis-sdk deploy` run creates a new deployment entry. The platform activates the new version atomically -- in-flight executions complete against the previous version while new executions start against the new one.
204
-
205
- > **SDK takeaway:** Check this page after `elevasis-sdk deploy` to confirm your resources are active.
206
-
207
- ---
208
-
209
- **Last Updated:** 2026-03-06
1
+ ---
2
+ title: Command Center
3
+ description: Post-deployment UI reference -- what each page does, the resource graph model, relationships, validation, and how SDK concepts map to Command Center actions
4
+ loadWhen: "User asks about the Command Center UI, post-deployment workflow, monitoring, or the resource graph"
5
+ ---
6
+
7
+ The Command Center is the browser UI for interacting with deployed resources. After you run `elevasis-sdk deploy`, this is where you run workflows, monitor executions, manage approvals, schedule tasks, and review logs.
8
+
9
+ ---
10
+
11
+ ## Quick Reference
12
+
13
+ | Task | Page | Path |
14
+ | -------------------------------------------------- | -------------- | ----------------------- |
15
+ | Browse deployed resources, view the resource graph | Command View | `/command-view` |
16
+ | Approve or reject pending HITL requests | Command Queue | `/queue` |
17
+ | Search execution history across all resources | Execution Logs | `/logs` |
18
+ | Create API key and OAuth credentials | Credentials | `/settings/credentials` |
19
+ | View deployment history and active version | Deployments | `/settings/deployments` |
20
+
21
+ ---
22
+
23
+ ## Command View
24
+
25
+ The Command View is a visual graph of your deployed resources. Each node is a resource (workflow, agent, trigger, integration). Edges are the relationships you declared in `DeploymentSpec`.
26
+
27
+ **What you can do here:**
28
+
29
+ - See all deployed resources at a glance
30
+ - Trace data flow between resources via declared relationships
31
+ - Identify which resources depend on which integrations
32
+ - Click a node to view resource details (ID, status, type)
33
+
34
+ ### Node Types
35
+
36
+ Every resource you deploy becomes a node in the graph. Some nodes are executable; others are visual-only.
37
+
38
+ **Executable nodes:**
39
+
40
+ | Type | What It Does | Deployed By |
41
+ | -------- | ------------------------------------------------- | --------------------- |
42
+ | Workflow | Runs step handlers in sequence or branching paths | `elevasis-sdk deploy` |
43
+ | Agent | Autonomous LLM-powered resource with tools | `elevasis-sdk deploy` |
44
+
45
+ **Visual-only nodes** (no runtime behavior -- exist for the graph):
46
+
47
+ | Type | What It Represents | Why It Exists |
48
+ | ----------------- | --------------------------------------------------- | --------------------------------------------- |
49
+ | Trigger | A webhook or schedule that starts a workflow | Shows how executions begin |
50
+ | Integration | A credential reference (provider + credential name) | Shows which external services a resource uses |
51
+ | External Resource | A third-party automation (n8n, Make, Zapier) | Documents automations outside the platform |
52
+ | Human Checkpoint | A point where a human makes a decision | Shows where HITL approval gates exist |
53
+
54
+ ### Relationships
55
+
56
+ Relationships are edges in the graph. Declare them in `DeploymentSpec`:
57
+
58
+ ```typescript
59
+ const org: DeploymentSpec = {
60
+ workflows: [scoreLeadWorkflow, sendProposalWorkflow],
61
+ relationships: {
62
+ 'score-lead': {
63
+ triggers: {
64
+ workflows: ['send-proposal'],
65
+ },
66
+ uses: {
67
+ integrations: ['attio-integration'],
68
+ },
69
+ },
70
+ },
71
+ };
72
+ ```
73
+
74
+ | Field | Type | Meaning |
75
+ | -------------------- | ---------- | ------------------------------------- |
76
+ | `triggers.workflows` | `string[]` | Workflows this resource starts |
77
+ | `triggers.agents` | `string[]` | Agents this resource starts |
78
+ | `uses.integrations` | `string[]` | Integrations this resource depends on |
79
+
80
+ **Relationships are declarations, not routing.** Declaring that workflow A triggers workflow B does not route A's output to B -- your handler must explicitly invoke B via the `execution` adapter. The graph can drift from reality if declarations don't match code.
81
+
82
+ ### What Is Enforced vs Decorative
83
+
84
+ | Category | Validated at Deploy | Matches Runtime | Status |
85
+ | ---------------------------------------- | ---------------------------- | --------------- | -------------- |
86
+ | Resource IDs unique | Yes | Yes | **Enforced** |
87
+ | Input schema matches execution interface | Yes | Yes | **Enforced** |
88
+ | Relationship targets exist | Yes | No | **Decorative** |
89
+ | Trigger routing | No | No | **Decorative** |
90
+ | Tool availability per agent | No | No | **Decorative** |
91
+ | Model config | Yes (provider + model valid) | No | **Decorative** |
92
+
93
+ Keep relationships in sync with your handler code. When you add an `execution.trigger()` call, add the corresponding relationship declaration.
94
+
95
+ ### Deploy-Time Validation
96
+
97
+ `elevasis-sdk deploy` and `elevasis-sdk check` both validate:
98
+
99
+ - Duplicate resource IDs
100
+ - Relationship targets must exist in the same `DeploymentSpec`
101
+ - Agent model params (provider, model name, temperature bounds)
102
+ - Workflow step chains (`next.target` must point to existing step names)
103
+
104
+ **Validation error examples:**
105
+
106
+ ```
107
+ ERROR Relationship target 'send-proposal' not found in organization resources
108
+ ERROR Duplicate resource ID 'score-lead' in deployment
109
+ ```
110
+
111
+ ### Graph Serialization
112
+
113
+ The platform converts your definitions into `CommandViewNode` (one per resource) and `CommandViewEdge` (one per relationship) structures. `buildEdges()` reads your `relationships` declarations and produces edges as a pure transformation -- no runtime behavior is inferred.
114
+
115
+ > **SDK takeaway:** Declare relationships in `DeploymentSpec` to keep the Command View accurate as your system grows. Update declarations whenever you add or remove `execution.trigger()` calls.
116
+
117
+ ---
118
+
119
+ ## Command Queue
120
+
121
+ The Command Queue surfaces all pending Human-in-the-Loop (HITL) approval requests from running workflows.
122
+
123
+ **What you can do here:**
124
+
125
+ - View pending approval requests with context provided by the workflow
126
+ - Filter by resource, status, or date
127
+ - Approve or reject with an optional comment
128
+ - See the history of past decisions
129
+
130
+ **How it connects to your code:** Approval requests appear when a workflow step calls `approval.create()`. The workflow pauses at that step and waits for a decision.
131
+
132
+ ```typescript
133
+ import { approval } from '@elevasis/sdk/worker'
134
+
135
+ const task = await approval.create({
136
+ actions: [
137
+ { id: 'approve', label: 'Approve', type: 'primary' },
138
+ { id: 'reject', label: 'Reject', type: 'danger' },
139
+ ],
140
+ context: { dealId, proposalUrl },
141
+ description: 'Approve proposal before sending',
142
+ })
143
+ ```
144
+
145
+ > **SDK takeaway:** Use `approval.create()` to create approval gates. Provide rich `context` so reviewers have what they need to decide.
146
+
147
+ ---
148
+
149
+ ## Execution Logs
150
+
151
+ The Execution Logs page shows the history of all executions across every deployed resource.
152
+
153
+ **What you can do here:**
154
+
155
+ - Search and filter by resource, status (completed/failed/running), date range
156
+ - Click any execution to view full detail: input, output, step-level trace, duration
157
+ - Identify failed executions and see error messages with stack traces
158
+ - Navigate from a log entry directly to the resource in Command View
159
+
160
+ **Filtering tips:**
161
+
162
+ - Filter by resource name to debug a specific workflow
163
+ - Filter by `failed` status to triage production issues
164
+ - Use date range to narrow down incidents
165
+
166
+ > **SDK takeaway:** Every `elevasis-sdk exec` and every scheduled run appears here. Use this page to verify behavior after deploy and to diagnose failures before opening code.
167
+
168
+ ---
169
+
170
+ ## Credentials
171
+
172
+ The Credentials page manages encrypted API keys and OAuth tokens used by your workflows at runtime.
173
+
174
+ **What you can do here:**
175
+
176
+ - Create API key and webhook-secret credentials via a form
177
+ - Connect OAuth providers (Google Sheets, Dropbox) via browser flow
178
+ - View existing credentials (values are never shown after creation)
179
+ - Delete credentials that are no longer needed
180
+
181
+ **Two credential types:**
182
+
183
+ | Type | Created via | Notes |
184
+ | ------------------------ | -------------------------------------------- | ------------------------------------------------------ |
185
+ | API key / webhook secret | CLI (`elevasis-sdk creds create`) or UI form | Either method works |
186
+ | OAuth | UI only | Requires browser redirect -- cannot be created via CLI |
187
+
188
+ > **SDK takeaway:** Reference credentials in your code by name (`credential: 'my-cred-name'`). Create API keys via CLI or UI; OAuth credentials require this page.
189
+
190
+ ---
191
+
192
+ ## Deployments
193
+
194
+ The Deployments page shows the history of all deployments for your organization.
195
+
196
+ **What you can do here:**
197
+
198
+ - View a chronological list of past deployments
199
+ - See which resources changed in each deployment
200
+ - Identify the currently active version
201
+ - Compare resource counts across deployments
202
+
203
+ **How it connects to your code:** Each `elevasis-sdk deploy` run creates a new deployment entry. The platform activates the new version atomically -- in-flight executions complete against the previous version while new executions start against the new one.
204
+
205
+ > **SDK takeaway:** Check this page after `elevasis-sdk deploy` to confirm your resources are active.
206
+
207
+ ---
208
+
209
+ **Last Updated:** 2026-03-06