@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.
- package/dist/cli.cjs +35026 -30226
- package/dist/index.d.ts +1786 -808
- package/dist/index.js +789 -739
- package/dist/node/index.d.ts +105 -181
- package/dist/node/index.js +2 -2
- package/dist/test-utils/index.d.ts +901 -359
- package/dist/test-utils/index.js +587 -824
- package/dist/worker/index.d.ts +12685 -0
- package/dist/worker/index.js +188 -216
- package/package.json +4 -7
- package/reference/_navigation.md +161 -22
- package/reference/_reference-manifest.json +228 -4
- package/reference/claude-config.md +8 -0
- package/reference/core/exports.mdx +2 -0
- package/reference/core/index.mdx +3 -3
- package/reference/examples/organization-model.ts +117 -111
- package/reference/index.mdx +4 -4
- package/reference/packages/core/src/business/README.md +4 -1
- package/reference/packages/core/src/content/README.md +19 -0
- package/reference/packages/core/src/organization-model/README.md +148 -149
- package/reference/packages/core/src/organization-model/readiness/README.md +42 -0
- package/reference/packages/ui/src/features/README.md +28 -28
- package/reference/rules/active-change-index.md +40 -54
- package/reference/rules/agent-runtime.md +81 -0
- package/reference/rules/agent-start-here.md +71 -163
- package/reference/rules/deployment.md +33 -10
- package/reference/rules/error-handling.md +26 -0
- package/reference/rules/execution.md +13 -0
- package/reference/rules/frontend.md +10 -3
- package/reference/rules/observability.md +9 -1
- package/reference/rules/operations.md +26 -17
- package/reference/rules/organization-model.md +74 -88
- package/reference/rules/organization-os.md +71 -88
- package/reference/rules/package-taxonomy.md +11 -2
- package/reference/rules/platform.md +13 -7
- package/reference/rules/shared-types.md +36 -0
- package/reference/rules/task-tracking.md +30 -5
- package/reference/rules/ui.md +145 -3
- package/reference/rules/vibe-intents.md +271 -0
- package/reference/rules/vibe.md +17 -243
- package/reference/scaffold/core/organization-graph.mdx +112 -99
- package/reference/scaffold/core/organization-model.mdx +231 -215
- package/reference/scaffold/operations/propagation-pipeline.md +16 -17
- package/reference/scaffold/operations/scaffold-maintenance.md +22 -20
- package/reference/scaffold/operations/workflow-recipes.md +72 -20
- package/reference/scaffold/recipes/add-a-feature.md +156 -146
- package/reference/scaffold/recipes/add-a-resource.md +123 -117
- package/reference/scaffold/recipes/customize-crm-actions.md +28 -13
- package/reference/scaffold/recipes/customize-knowledge-browser.md +52 -117
- package/reference/scaffold/recipes/customize-organization-model.md +161 -149
- package/reference/scaffold/recipes/extend-a-base-entity.md +156 -140
- package/reference/scaffold/recipes/extend-content.md +265 -0
- package/reference/scaffold/recipes/extend-crm.md +16 -11
- package/reference/scaffold/recipes/extend-lead-gen.md +37 -21
- package/reference/scaffold/recipes/gate-by-feature-or-admin.md +160 -118
- package/reference/scaffold/recipes/index.md +6 -3
- package/reference/scaffold/recipes/query-the-knowledge-graph.md +23 -23
- package/reference/scaffold/reference/contracts.md +30 -56
- package/reference/scaffold/reference/feature-registry.md +3 -0
- package/reference/scaffold/reference/glossary.md +4 -4
- package/reference/scaffold/reference/system-interface-capabilities.md +5 -4
- package/reference/scaffold/ui/composition-extensibility.mdx +271 -232
- package/reference/scaffold/ui/customization.md +2 -2
- package/reference/scaffold/ui/feature-flags-and-gating.md +14 -6
- package/reference/scaffold/ui/feature-shell.mdx +277 -62
- package/reference/scaffold/ui/recipes.md +229 -197
- package/reference/sdk/cli-management.mdx +166 -33
- package/reference/sdk/cli.mdx +90 -13
- package/reference/sdk/concepts.mdx +2 -0
- package/reference/sdk/define-builders.mdx +76 -0
- package/reference/sdk/deployment/command-center.mdx +6 -2
- package/reference/sdk/deployment/execution-reference.mdx +64 -186
- package/reference/sdk/deployment/index.mdx +2 -0
- package/reference/sdk/exports.mdx +4 -4
- package/reference/sdk/framework/agent.mdx +52 -116
- package/reference/sdk/framework/index.mdx +46 -65
- package/reference/sdk/framework/project-structure.mdx +150 -205
- package/reference/sdk/framework/tutorial-system.mdx +2 -2
- package/reference/sdk/human-in-the-loop.mdx +152 -0
- package/reference/sdk/index.mdx +6 -7
- package/reference/sdk/platform-tools/adapters-platform.mdx +3 -1
- package/reference/sdk/platform-tools/index.mdx +12 -0
- package/reference/sdk/platform-tools/type-safety.mdx +4 -0
- package/reference/sdk/project-deployment-spec.mdx +131 -0
- package/reference/sdk/resources/index.mdx +21 -7
- package/reference/sdk/resources/patterns.mdx +54 -24
- package/reference/sdk/resources/types.mdx +7 -4
- package/reference/sdk/templates/data-enrichment.mdx +7 -3
- package/reference/sdk/templates/email-sender.mdx +139 -135
- package/reference/sdk/templates/lead-scorer.mdx +5 -1
- package/reference/sdk/templates/pdf-generator.mdx +155 -151
- package/reference/sdk/templates/recurring-job.mdx +195 -189
- package/reference/sdk/templates/text-classifier.mdx +4 -0
- package/reference/sdk/templates/web-scraper.mdx +139 -135
- package/reference/spine/spine-primer.md +135 -96
- package/reference/ui/exports.mdx +1 -0
- package/reference/ui/index.mdx +14 -7
- package/dist/types/worker/adapters/anymailfinder.d.ts +0 -14
- package/dist/types/worker/adapters/apify.d.ts +0 -14
- package/dist/types/worker/adapters/approval.d.ts +0 -23
- package/dist/types/worker/adapters/attio.d.ts +0 -22
- package/dist/types/worker/adapters/clickup.d.ts +0 -22
- package/dist/types/worker/adapters/create-adapter.d.ts +0 -41
- package/dist/types/worker/adapters/crm.d.ts +0 -20
- package/dist/types/worker/adapters/dropbox.d.ts +0 -14
- package/dist/types/worker/adapters/email.d.ts +0 -25
- package/dist/types/worker/adapters/execution.d.ts +0 -22
- package/dist/types/worker/adapters/gmail.d.ts +0 -14
- package/dist/types/worker/adapters/google-sheets.d.ts +0 -14
- package/dist/types/worker/adapters/index.d.ts +0 -33
- package/dist/types/worker/adapters/instantly.d.ts +0 -14
- package/dist/types/worker/adapters/lead.d.ts +0 -28
- package/dist/types/worker/adapters/list.d.ts +0 -9
- package/dist/types/worker/adapters/llm.d.ts +0 -45
- package/dist/types/worker/adapters/millionverifier.d.ts +0 -14
- package/dist/types/worker/adapters/notification.d.ts +0 -28
- package/dist/types/worker/adapters/pdf.d.ts +0 -22
- package/dist/types/worker/adapters/projects.d.ts +0 -20
- package/dist/types/worker/adapters/resend.d.ts +0 -14
- package/dist/types/worker/adapters/scheduler.d.ts +0 -25
- package/dist/types/worker/adapters/signature-api.d.ts +0 -14
- package/dist/types/worker/adapters/storage.d.ts +0 -33
- package/dist/types/worker/adapters/stripe.d.ts +0 -14
- package/dist/types/worker/adapters/tomba.d.ts +0 -14
- package/dist/types/worker/index.d.ts +0 -60
- package/dist/types/worker/platform.d.ts +0 -90
- package/dist/types/worker/utils.d.ts +0 -9
- package/reference/claude-config/Overview.md +0 -230
- package/reference/claude-config/hooks/post-edit-validate.mjs +0 -98
- package/reference/claude-config/hooks/scaffold-registry-reminder.mjs +0 -187
- package/reference/claude-config/hooks/tool-failure-recovery.mjs +0 -73
- package/reference/claude-config/registries/graph-skills.json +0 -4
- package/reference/claude-config/registries/knowledge-flags.json +0 -154
- package/reference/claude-config/registries/skill-coverage.json +0 -20
- package/reference/claude-config/rules/active-change-index.md +0 -22
- package/reference/claude-config/rules/agent-start-here.md +0 -22
- package/reference/claude-config/rules/deployment.md +0 -22
- package/reference/claude-config/rules/error-handling.md +0 -22
- package/reference/claude-config/rules/execution.md +0 -22
- package/reference/claude-config/rules/frontend.md +0 -22
- package/reference/claude-config/rules/observability.md +0 -22
- package/reference/claude-config/rules/operations.md +0 -22
- package/reference/claude-config/rules/organization-model.md +0 -22
- package/reference/claude-config/rules/organization-os.md +0 -22
- package/reference/claude-config/rules/package-taxonomy.md +0 -22
- package/reference/claude-config/rules/platform.md +0 -22
- package/reference/claude-config/rules/shared-types.md +0 -22
- package/reference/claude-config/rules/task-tracking.md +0 -22
- package/reference/claude-config/rules/topbar-actions.md +0 -70
- package/reference/claude-config/rules/ui.md +0 -22
- package/reference/claude-config/rules/vibe.md +0 -22
- package/reference/claude-config/scripts/statusline-command.js +0 -18
- package/reference/claude-config/settings.json +0 -30
- package/reference/claude-config/skills/client/SKILL.md +0 -201
- package/reference/claude-config/skills/deploy/SKILL.md +0 -159
- package/reference/claude-config/skills/dsp/SKILL.md +0 -66
- package/reference/claude-config/skills/elevasis/SKILL.md +0 -251
- package/reference/claude-config/skills/explore/SKILL.md +0 -78
- package/reference/claude-config/skills/git-sync/SKILL.md +0 -166
- package/reference/claude-config/skills/om/SKILL.md +0 -475
- package/reference/claude-config/skills/om/operations/build.md +0 -237
- package/reference/claude-config/skills/om/operations/codify-level-a.md +0 -109
- package/reference/claude-config/skills/om/operations/codify-level-b.md +0 -159
- package/reference/claude-config/skills/om/operations/customers.md +0 -114
- package/reference/claude-config/skills/om/operations/features.md +0 -88
- package/reference/claude-config/skills/om/operations/goals.md +0 -123
- package/reference/claude-config/skills/om/operations/identity.md +0 -97
- package/reference/claude-config/skills/om/operations/labels.md +0 -110
- package/reference/claude-config/skills/om/operations/offerings.md +0 -114
- package/reference/claude-config/skills/om/operations/roles.md +0 -104
- package/reference/claude-config/skills/om/operations/scaffold.md +0 -163
- package/reference/claude-config/skills/om/operations/techStack.md +0 -38
- package/reference/claude-config/skills/project/SKILL.md +0 -1114
- package/reference/claude-config/skills/run-ui/SKILL.md +0 -73
- package/reference/claude-config/skills/save/SKILL.md +0 -183
- package/reference/claude-config/skills/setup/SKILL.md +0 -290
- package/reference/claude-config/skills/status/SKILL.md +0 -59
- package/reference/claude-config/skills/submit-request/SKILL.md +0 -180
- package/reference/claude-config/skills/sync/SKILL.md +0 -47
- package/reference/claude-config/skills/tutorial/SKILL.md +0 -259
- package/reference/claude-config/skills/tutorial/progress-template.md +0 -74
- package/reference/claude-config/skills/tutorial/technical.md +0 -1303
- package/reference/claude-config/skills/tutorial/vibe-coder.md +0 -890
- package/reference/claude-config/sync-notes/2026-04-22-git-sync-and-sync-notes.md +0 -27
- package/reference/claude-config/sync-notes/2026-04-22-lead-gen-deliverability-removal.md +0 -30
- package/reference/claude-config/sync-notes/2026-04-24-test-utils-and-template-tests.md +0 -73
- package/reference/claude-config/sync-notes/2026-04-24-ui-consolidation-and-sdk-cli-train.md +0 -86
- package/reference/claude-config/sync-notes/2026-04-25-auth-role-system-and-settings-roles.md +0 -55
- package/reference/claude-config/sync-notes/2026-04-27-crm-hitl-action-layer-cutover.md +0 -97
- package/reference/claude-config/sync-notes/2026-04-27-lead-gen-substrate-train.md +0 -112
- package/reference/claude-config/sync-notes/2026-04-29-crm-state-and-lead-gen-processing-status.md +0 -93
- package/reference/claude-config/sync-notes/2026-05-02-crm-ownership-next-action.md +0 -58
- package/reference/claude-config/sync-notes/2026-05-02-template-hardcode-workos-config.md +0 -56
- package/reference/claude-config/sync-notes/2026-05-04-elevasis-workspace.md +0 -71
- package/reference/claude-config/sync-notes/2026-05-04-knowledge-bundle.md +0 -83
- package/reference/claude-config/sync-notes/2026-05-04-template-skills-run-ui-and-tutorial.md +0 -59
- package/reference/claude-config/sync-notes/2026-05-05-list-builder.md +0 -42
- package/reference/claude-config/sync-notes/2026-05-06-crm-spine.md +0 -60
- package/reference/claude-config/sync-notes/2026-05-06-sdk-changes-release-train.md +0 -37
- package/reference/claude-config/sync-notes/2026-05-07-sdk-changes-release-train.md +0 -34
- package/reference/claude-config/sync-notes/2026-05-08-resource-governance-scaffold-guidance.md +0 -38
- package/reference/claude-config/sync-notes/2026-05-09-clients-domain.md +0 -32
- package/reference/claude-config/sync-notes/2026-05-09-command-system.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-09-resource-governance-and-misc.md +0 -69
- package/reference/claude-config/sync-notes/2026-05-12-sdk-ready-release-train.md +0 -30
- package/reference/claude-config/sync-notes/2026-05-14-organization-model-ontology-refactor.md +0 -45
- package/reference/claude-config/sync-notes/2026-05-15-om-skill-rename-and-write-family.md +0 -52
- package/reference/claude-config/sync-notes/2026-05-17-sdk-boundary-consolidation.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-20-om-define-helpers.md +0 -32
- package/reference/claude-config/sync-notes/2026-05-22-access-model-and-right-panel.md +0 -43
- package/reference/claude-config/sync-notes/2026-05-22-lead-gen-tenant-config.md +0 -40
- package/reference/claude-config/sync-notes/2026-05-22-org-model-multi-file-split.md +0 -61
- package/reference/claude-config/sync-notes/2026-05-23-branding-names-to-identity.md +0 -49
- package/reference/claude-config/sync-notes/2026-05-23-lead-gen-manage-access.md +0 -31
- package/reference/claude-config/sync-notes/2026-05-23-om-deployment-drift-detection.md +0 -42
- package/reference/claude-config/sync-notes/2026-05-23-om-full-model-deploy-contract.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-23-ui-sdk-package-fixes.md +0 -37
- package/reference/claude-config/sync-notes/2026-05-24-platform-invite-router-core-baseline.md +0 -28
- package/reference/claude-config/sync-notes/2026-05-24-system-interface-readiness.md +0 -43
- package/reference/claude-config/sync-notes/2026-05-25-invitation-login-loader.md +0 -26
- package/reference/claude-config/sync-notes/2026-05-25-om-topbar-requests.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-25-system-interface-profile-registry-and-substrate.md +0 -35
- package/reference/claude-config/sync-notes/2026-05-25-tenant-om-scaffold-cli.md +0 -49
- package/reference/claude-config/sync-notes/2026-05-25-vibe-operate-intent.md +0 -47
- package/reference/claude-config/sync-notes/2026-05-28-om-snapshot-sdk-workflow-config.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-30-client-source-and-om-profiles.md +0 -39
- package/reference/claude-config/sync-notes/2026-06-02-knowledge-nested-group-routing.md +0 -27
- package/reference/claude-config/sync-notes/2026-06-02-nest-projects-under-platform.md +0 -45
- package/reference/claude-config/sync-notes/2026-06-03-skill-autogen-and-client-skill.md +0 -34
- package/reference/claude-config/sync-notes/2026-06-04-scaffold-registry-lane-severity.md +0 -34
- package/reference/claude-config/sync-notes/2026-06-05-appearance-app-mode-decouple.md +0 -29
- package/reference/claude-config/sync-notes/2026-06-05-ontology-endpoint-rename-and-knowledge-browser-ui.md +0 -86
- package/reference/claude-config/sync-notes/2026-06-06-om-build-systems-scaffold.md +0 -47
- package/reference/claude-config/sync-notes/2026-06-06-om-item-copy-references.md +0 -50
- package/reference/claude-config/sync-notes/2026-06-08-knowledge-base-page-not-found-fix.md +0 -76
- package/reference/claude-config/sync-notes/2026-06-09-agent-sessions-public-agent-chat-route.md +0 -75
- package/reference/claude-config/sync-notes/2026-06-09-sdk-cli-load-org-model-resolution.md +0 -42
- package/reference/claude-config/sync-notes/2026-06-12-agent-grants-visualizer-operations.md +0 -30
- package/reference/claude-config/sync-notes/2026-06-14-session-ux-and-project-cli-json.md +0 -33
- package/reference/claude-config/sync-notes/2026-06-14-shared-session-conversation-view.md +0 -26
- package/reference/claude-config/sync-notes/2026-06-15-session-chat-zero-wiring.md +0 -46
- package/reference/claude-config/sync-notes/2026-06-17-agent-session-ux-features.md +0 -34
- package/reference/claude-config/sync-notes/2026-06-25-shared-page-scroll-contract-guard.md +0 -52
- package/reference/claude-config/sync-notes/2026-06-26-leadgen-overview-om-telemetry.md +0 -47
- package/reference/claude-config/sync-notes/2026-07-21-agent-scaffold-hardening.md +0 -75
- package/reference/claude-config/sync-notes/2026-07-23-agent-session-memory.md +0 -49
- package/reference/claude-config/sync-notes/2026-07-23-workos-org-marker.md +0 -50
- package/reference/claude-config/sync-notes/2026-07-24-claude-5-models-and-session-surface-fixes.md +0 -116
- package/reference/claude-config/sync-notes/2026-07-27-agent-strict-output-and-turn-drift.md +0 -73
- package/reference/claude-config/sync-notes/2026-07-28-agent-reply-is-its-own-field.md +0 -84
- package/reference/claude-config/sync-notes/2026-07-30-login-screen-and-member-provisioning-state.md +0 -114
- package/reference/claude-config/sync-notes/2026-08-02-auth-guard-defaults-and-truncation-fix.md +0 -122
- package/reference/claude-config/sync-notes/2026-08-03-agent-prose-escape-normalization.md +0 -88
- package/reference/claude-config/sync-notes/2026-08-03-cli-gateway-errors-and-request-timeout.md +0 -120
- package/reference/claude-config/sync-notes/README.md +0 -43
- package/reference/sdk/framework/interaction-guidance.mdx +0 -182
- package/reference/sdk/framework/memory.mdx +0 -326
- package/reference/sdk/framework/resource-documentation.mdx +0 -90
- package/reference/sdk/roadmap.mdx +0 -164
|
@@ -290,227 +290,105 @@ The SDK CLI wraps all execution endpoints. Use these commands instead of calling
|
|
|
290
290
|
|
|
291
291
|
## UI Execution
|
|
292
292
|
|
|
293
|
-
`@elevasis/ui` ships
|
|
293
|
+
`@elevasis/ui` ships components and hooks that let your custom React pages trigger workflow and agent executions without wiring up API calls manually. This section is for template users building interactive resource pages who want to add Run buttons, input forms, and execution result displays.
|
|
294
294
|
|
|
295
|
-
|
|
295
|
+
Two published pieces cover triggering: `useExecuteAsync` (the mutation) and `ExecuteWorkflowModal` (the modal chrome). You supply the input UI -- there is no built-in form renderer. `@elevasis/ui/features/operations` also publishes ready-made panels (`ExecutionPanel`, `WorkflowExecutionPanel`, `AgentExecutionPanel`) for when you want an execution history view rather than a trigger.
|
|
296
296
|
|
|
297
|
-
###
|
|
297
|
+
### `useExecuteAsync`
|
|
298
298
|
|
|
299
|
-
`
|
|
299
|
+
`useExecuteAsync()` is a TanStack Query mutation that POSTs to the execution engine and resolves to `{ executionId, status, resourceId }`.
|
|
300
300
|
|
|
301
301
|
```tsx
|
|
302
|
-
import {
|
|
303
|
-
import { Button } from '@mantine/core'
|
|
304
|
-
import { ResourceExecuteDialog } from '@elevasis/ui/features/operations'
|
|
305
|
-
import { useNavigate } from '@tanstack/react-router'
|
|
306
|
-
|
|
307
|
-
const resource = {
|
|
308
|
-
resourceId: 'qualify-lead-workflow',
|
|
309
|
-
resourceType: 'workflow' as const,
|
|
310
|
-
name: 'Qualify Lead',
|
|
311
|
-
formSchema: {
|
|
312
|
-
fields: [
|
|
313
|
-
{ name: 'email', label: 'Lead email', type: 'text', required: true },
|
|
314
|
-
{ name: 'company', label: 'Company', type: 'text', required: false },
|
|
315
|
-
],
|
|
316
|
-
},
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
export function QualifyLeadPage() {
|
|
320
|
-
const [opened, setOpened] = useState(false)
|
|
321
|
-
const navigate = useNavigate()
|
|
302
|
+
import { useExecuteAsync } from '@elevasis/ui/hooks'
|
|
322
303
|
|
|
323
|
-
|
|
324
|
-
<>
|
|
325
|
-
<Button onClick={() => setOpened(true)}>Run</Button>
|
|
304
|
+
const { mutateAsync, mutate, isPending, error, data, reset } = useExecuteAsync()
|
|
326
305
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
navigate({ to: '/logs/$executionId', params: { executionId } })
|
|
333
|
-
}
|
|
334
|
-
/>
|
|
335
|
-
</>
|
|
336
|
-
)
|
|
337
|
-
}
|
|
306
|
+
await mutateAsync({
|
|
307
|
+
resourceId: 'qualify-lead-workflow',
|
|
308
|
+
resourceType: 'workflow',
|
|
309
|
+
input: { email: 'lead@example.com' }
|
|
310
|
+
})
|
|
338
311
|
```
|
|
339
312
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
- A modal opens titled "Run workflow" with the resource ID displayed.
|
|
343
|
-
- The form renders one field per entry in `formSchema.fields`. Required fields show validation errors on submit.
|
|
344
|
-
- On submit, a loading overlay appears while the POST is in flight.
|
|
345
|
-
- On success, a teal confirmation card shows the execution ID. A "View execution" button calls `onViewExecution` with that ID.
|
|
346
|
-
- On error, a red alert shows the error message with a "Try again" option.
|
|
313
|
+
`ExecuteAsyncParams`:
|
|
347
314
|
|
|
348
|
-
|
|
315
|
+
| Field | Type | Notes |
|
|
316
|
+
| -------------- | -------------- | -------------------------------------------------------- |
|
|
317
|
+
| `resourceId` | `string` | Deployed resource ID |
|
|
318
|
+
| `resourceType` | `ResourceType` | `'workflow'` or `'agent'` |
|
|
319
|
+
| `input` | `unknown` | Passed through to the resource's input schema |
|
|
320
|
+
| `listId` | `string` | Optional; also attaches the execution to a lead-gen list |
|
|
349
321
|
|
|
350
|
-
|
|
322
|
+
On success it invalidates the executions list query keyed by organization plus `resourceId`, so any `useExecutions` query on the page refreshes automatically.
|
|
351
323
|
|
|
352
|
-
|
|
353
|
-
| --------------- | ------------------------------------------ | ----------------------------------------------------------------------------------------------- |
|
|
354
|
-
| Convenience | `ResourceExecuteDialog` | One-tag Run button + modal + form. Parent only manages `opened` state. |
|
|
355
|
-
| Controlled form | `ResourceExecuteForm` | Custom modal chrome; parent owns the mutation and decides where to show results. |
|
|
356
|
-
| Low-level | `ExecuteWorkflowModal` + `useExecuteAsync` | Fully custom rendering, non-standard modal behavior, or composing execution into a larger flow. |
|
|
324
|
+
### `ExecuteWorkflowModal`
|
|
357
325
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
### Controlled Usage with `ResourceExecuteForm`
|
|
361
|
-
|
|
362
|
-
Use `ResourceExecuteForm` when you want to own the modal or display the result somewhere outside the dialog -- for example, rendering the execution ID inline on the page after submission.
|
|
363
|
-
|
|
364
|
-
`ResourceExecuteForm` accepts `onSubmit` and `isPending` from the parent. The parent calls `useExecuteAsync()` directly and passes `mutateAsync` as the submit handler.
|
|
326
|
+
`ExecuteWorkflowModal` is a Mantine Modal pre-wired with a loading overlay, a success card (execution ID plus a "View execution" button), and an error alert. Pass your input UI as `children`.
|
|
365
327
|
|
|
366
328
|
```tsx
|
|
367
329
|
import { useState } from 'react'
|
|
368
|
-
import {
|
|
369
|
-
import {
|
|
330
|
+
import { Button, TextInput } from '@mantine/core'
|
|
331
|
+
import { ExecuteWorkflowModal } from '@elevasis/ui/features/operations'
|
|
370
332
|
import { useExecuteAsync } from '@elevasis/ui/hooks'
|
|
333
|
+
import { useNavigate } from '@tanstack/react-router'
|
|
371
334
|
|
|
372
|
-
|
|
373
|
-
fields: [
|
|
374
|
-
{ name: 'topic', label: 'Topic', type: 'text', required: true },
|
|
375
|
-
],
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
export function CustomRunPanel() {
|
|
335
|
+
export function QualifyLeadPage() {
|
|
379
336
|
const [opened, setOpened] = useState(false)
|
|
380
|
-
const
|
|
381
|
-
|
|
382
|
-
const
|
|
383
|
-
await mutation.mutateAsync({
|
|
384
|
-
resourceId: 'research-agent',
|
|
385
|
-
resourceType: 'agent',
|
|
386
|
-
input,
|
|
387
|
-
})
|
|
388
|
-
}
|
|
337
|
+
const [email, setEmail] = useState('')
|
|
338
|
+
const navigate = useNavigate()
|
|
339
|
+
const { mutateAsync, isPending, error, data, reset } = useExecuteAsync()
|
|
389
340
|
|
|
390
341
|
return (
|
|
391
342
|
<>
|
|
392
|
-
<Button onClick={() => setOpened(true)}>Run
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
343
|
+
<Button onClick={() => setOpened(true)}>Run</Button>
|
|
344
|
+
|
|
345
|
+
<ExecuteWorkflowModal
|
|
346
|
+
opened={opened}
|
|
347
|
+
onClose={() => setOpened(false)}
|
|
348
|
+
resource={{ resourceId: 'qualify-lead-workflow', resourceType: 'workflow', name: 'Qualify Lead' }}
|
|
349
|
+
isPending={isPending}
|
|
350
|
+
error={error}
|
|
351
|
+
result={data ?? null}
|
|
352
|
+
onReset={reset}
|
|
353
|
+
onViewExecution={(executionId) => navigate({ to: '/logs/$executionId', params: { executionId } })}
|
|
354
|
+
>
|
|
355
|
+
<TextInput label="Lead email" value={email} onChange={(e) => setEmail(e.currentTarget.value)} />
|
|
356
|
+
<Button
|
|
357
|
+
mt="md"
|
|
358
|
+
loading={isPending}
|
|
359
|
+
onClick={() => mutateAsync({ resourceId: 'qualify-lead-workflow', resourceType: 'workflow', input: { email } })}
|
|
360
|
+
>
|
|
361
|
+
Run
|
|
362
|
+
</Button>
|
|
363
|
+
</ExecuteWorkflowModal>
|
|
407
364
|
</>
|
|
408
365
|
)
|
|
409
366
|
}
|
|
410
367
|
```
|
|
411
368
|
|
|
412
|
-
`
|
|
413
|
-
|
|
414
|
-
| Prop | Type | Default | Notes |
|
|
415
|
-
| ------------- | ------------------------------------ | -------- | ------------------------------------ |
|
|
416
|
-
| `formSchema` | `SerializedExecutionFormSchema` | required | Drives field rendering |
|
|
417
|
-
| `onSubmit` | `(input) => void | Promise<void>` | required | Called with mapped field values |
|
|
418
|
-
| `isPending` | `boolean` | `false` | Shows loading state on submit button |
|
|
419
|
-
| `disabled` | `boolean` | `false` | Disables all fields and button |
|
|
420
|
-
| `submitLabel` | `string` | `'Run'` | Button label when not pending |
|
|
421
|
-
|
|
422
|
-
### Low-Level: Hooks and `ExecuteWorkflowModal`
|
|
423
|
-
|
|
424
|
-
For complete rendering control, use `useExecuteAsync` and `ExecuteWorkflowModal` independently. `ExecuteWorkflowModal` is a Mantine Modal pre-wired with a loading overlay, a success card (execution ID + "View execution" button), and an error alert. You pass `children` for the input area.
|
|
425
|
-
|
|
426
|
-
```tsx
|
|
427
|
-
import { ExecuteWorkflowModal } from '@elevasis/ui/features/operations'
|
|
428
|
-
import { useExecuteAsync } from '@elevasis/ui/hooks'
|
|
369
|
+
`ExecuteWorkflowModalProps`:
|
|
429
370
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
>
|
|
442
|
-
{/* your custom form or content here */}
|
|
443
|
-
</ExecuteWorkflowModal>
|
|
444
|
-
```
|
|
371
|
+
| Prop | Type | Default | Notes |
|
|
372
|
+
| ----------------- | ------------------------------- | -------- | ---------------------------------------------------- |
|
|
373
|
+
| `opened` | `boolean` | required | Modal visibility |
|
|
374
|
+
| `onClose` | `() => void` | required | Ignored while `isPending` |
|
|
375
|
+
| `resource` | `ExecuteWorkflowModalResource` | required | `{ resourceId, resourceType, name? }` |
|
|
376
|
+
| `isPending` | `boolean` | `false` | Shows the loading overlay and locks dismissal |
|
|
377
|
+
| `error` | `Error | null` | -- | Renders the error alert |
|
|
378
|
+
| `result` | `ExecuteAsyncResult | null` | -- | Renders the success card |
|
|
379
|
+
| `onViewExecution` | `(executionId: string) => void` | -- | Adds the "View execution" button to the success card |
|
|
380
|
+
| `onReset` | `() => void` | -- | Backs the "Try again" action |
|
|
381
|
+
| `children` | `ReactNode` | -- | Your input UI |
|
|
445
382
|
|
|
446
383
|
The modal locks close interactions (click-outside, Escape, close button) while `isPending` is true, preventing accidental dismissal mid-execution.
|
|
447
384
|
|
|
448
|
-
Source: `packages/ui/src/features/operations/executions/ExecuteWorkflowModal.tsx`, `packages/ui/src/hooks/executions/useExecuteAsync.ts`
|
|
449
|
-
|
|
450
|
-
### Zod-Validated Execution with `useExecuteWorkflow`
|
|
451
|
-
|
|
452
|
-
`useExecuteWorkflow` wraps `useExecuteAsync` with a Zod parse step before the POST. Use it when you are constructing input programmatically (not from a form) and want to catch schema mismatches before they reach the API.
|
|
453
|
-
|
|
454
|
-
```tsx
|
|
455
|
-
import { z } from 'zod'
|
|
456
|
-
import { useExecuteWorkflow } from '@elevasis/ui/hooks'
|
|
457
|
-
|
|
458
|
-
const inputSchema = z.object({
|
|
459
|
-
email: z.string().email(),
|
|
460
|
-
score: z.number().min(0).max(100),
|
|
461
|
-
})
|
|
462
|
-
|
|
463
|
-
function useScoredExecution() {
|
|
464
|
-
return useExecuteWorkflow({ schema: inputSchema })
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
// In a component:
|
|
468
|
-
const { execute, isPending, data, error } = useScoredExecution()
|
|
469
|
-
|
|
470
|
-
await execute({
|
|
471
|
-
resourceId: 'score-lead-workflow',
|
|
472
|
-
resourceType: 'workflow',
|
|
473
|
-
input: { email: 'lead@example.com', score: 72 },
|
|
474
|
-
})
|
|
475
|
-
```
|
|
476
|
-
|
|
477
|
-
If `input` fails the Zod parse, `execute` throws synchronously with the message `"Invalid workflow input: ..."` before making any network request. The `mutation` object on the return value is the underlying `useExecuteAsync` mutation, giving you full TanStack Query state if needed.
|
|
478
|
-
|
|
479
|
-
Prefer `useExecuteWorkflow` over raw `useExecuteAsync` when:
|
|
480
|
-
|
|
481
|
-
- Input is assembled from multiple sources (not a single form submit).
|
|
482
|
-
- You want TypeScript inference on the input shape via `z.infer`.
|
|
483
|
-
- You want a clear validation error message rather than a 400 from the API.
|
|
484
|
-
|
|
485
|
-
Source: `packages/ui/src/hooks/executions/useExecuteWorkflow.ts`
|
|
486
|
-
|
|
487
|
-
### Input Forms
|
|
488
|
-
|
|
489
|
-
`ResourceExecuteDialog` and `ResourceExecuteForm` auto-render form fields from `formSchema.fields`. Each field is a `SerializedFormField` with at minimum `name`, `label`, and `type`.
|
|
490
|
-
|
|
491
|
-
Supported field types:
|
|
492
|
-
|
|
493
|
-
- `text` -- single-line text input
|
|
494
|
-
- `textarea` -- multi-line text input
|
|
495
|
-
- `number` -- numeric input
|
|
496
|
-
- `select` -- dropdown with `options` array
|
|
497
|
-
- `checkbox` -- boolean toggle; defaults to `false`
|
|
498
|
-
- `radio` -- radio group with `options` array
|
|
499
|
-
- `richtext` -- rich text editor
|
|
500
|
-
|
|
501
|
-
Required fields (`required: true`) are validated on submit. Custom field-to-input-key remapping is supported via `formSchema.fieldMappings` -- a `Record<string, string>` that renames field values before they are passed to `onSubmit`.
|
|
502
|
-
|
|
503
|
-
If `formSchema` is undefined, an empty object, or has `fields: []`, the form skips rendering fields entirely and shows "This workflow takes no input." with a single Run button.
|
|
504
|
-
|
|
505
385
|
### Error and Result Handling
|
|
506
386
|
|
|
507
|
-
Mutation state flows
|
|
387
|
+
Mutation state flows into the modal chrome automatically:
|
|
508
388
|
|
|
509
389
|
- **Success** -- a teal alert card displays the execution ID from `result.executionId`. If `onViewExecution` is provided, a "View execution" button calls it with the ID. This is the recommended way to deep-link to the Execution Logs page.
|
|
510
|
-
- **Error** -- a red alert displays `error.message`. A "Try again" button calls `onReset`, which clears the mutation state and re-shows the
|
|
511
|
-
- **Pending** -- a blur overlay covers the
|
|
512
|
-
|
|
513
|
-
`useExecuteAsync` also invalidates the executions list query on success (keyed by `organizationId` + `resourceId`), so any `useExecutions` query on the page refreshes automatically.
|
|
390
|
+
- **Error** -- a red alert displays `error.message`. A "Try again" button calls `onReset`, which clears the mutation state and re-shows the children.
|
|
391
|
+
- **Pending** -- a blur overlay covers the content area while the POST is in flight. The modal cannot be dismissed during this state.
|
|
514
392
|
|
|
515
393
|
---
|
|
516
394
|
|
|
@@ -248,6 +248,8 @@ Host apps still own TanStack route registration, topbar behavior, branding, auth
|
|
|
248
248
|
|
|
249
249
|
Manifest `systemId` values must match Organization Model System IDs. Sidebar placement is authored in the Organization Model navigation domain:
|
|
250
250
|
|
|
251
|
+
{/* doc-snippet:skip: illustrative excerpt, not a standalone compilable file */}
|
|
252
|
+
|
|
251
253
|
```ts
|
|
252
254
|
systems: {
|
|
253
255
|
dashboard: { id: 'dashboard', order: 10, label: 'Dashboard', lifecycle: 'active' },
|
|
@@ -8,7 +8,7 @@ description: "Auto-generated catalog of all published @elevasis/sdk subpath expo
|
|
|
8
8
|
|
|
9
9
|
| Import | Title | Group | Description |
|
|
10
10
|
| --- | --- | --- | --- |
|
|
11
|
-
| `@elevasis/sdk` | SDK | Getting Started |
|
|
12
|
-
| `@elevasis/sdk/worker` | Worker Runtime | Runtime |
|
|
13
|
-
| `@elevasis/sdk/test-utils` | Test Utils | Testing |
|
|
14
|
-
| `@elevasis/sdk/node` | Node Build Tooling | Tooling |
|
|
11
|
+
| `@elevasis/sdk` | SDK | Getting Started | |
|
|
12
|
+
| `@elevasis/sdk/worker` | Worker Runtime | Runtime | |
|
|
13
|
+
| `@elevasis/sdk/test-utils` | Test Utils | Testing | |
|
|
14
|
+
| `@elevasis/sdk/node` | Node Build Tooling | Tooling | |
|
|
@@ -1,156 +1,92 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Agent System
|
|
3
|
-
description:
|
|
3
|
+
description: The template's skill layer, the always-on ambient vibe classifier, the rules layer, and how project continuity is tracked through the elevasis-sdk project CLI, not files
|
|
4
4
|
loadWhen: "Configuring agent behavior or capabilities"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
The agent system is the set of files that shape how Claude Code behaves in your SDK project. It consists of
|
|
7
|
+
The agent system is the set of files that shape how Claude Code behaves in your SDK project. It consists of three parts: the skill layer (`.claude/skills/`, slash-command entry points), the rules layer (path-scoped operating context, mostly bundled with the installed `@elevasis/sdk` package), and the ambient vibe layer (an always-on natural-language intent classifier). `CLAUDE.md` carries only project identity and preferences -- session bootstrap belongs to the rules layer, not to `CLAUDE.md`.
|
|
8
8
|
|
|
9
9
|
Nothing here requires configuration. The agent reads these files at session start and adapts automatically.
|
|
10
10
|
|
|
11
|
-
## CLAUDE.md
|
|
11
|
+
## CLAUDE.md and Overview.md
|
|
12
12
|
|
|
13
|
-
`CLAUDE.md` is
|
|
13
|
+
`CLAUDE.md` is project-owned and never overwritten by sync. It routes the agent to `agent-start-here.md` for session bootstrap, points to `.claude/Overview.md` for the full skill/rule/command surface, and carries two project-specific sections: **Client Context** and **User Preferences**. These are populated by `/setup` during first-time bootstrap and are not re-written on subsequent runs.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
`.claude/Overview.md` is template-owned and replaced on every `/git-sync`. It is the authoritative routing map: skill inventory, rule inventory, project structure, stack table, and command reference. When a user asks what skills or commands are available, the agent reads this file (or runs `elevasis-sdk cli` for live capability) rather than answering from memory.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
`OPERATIONS.md` and `CONNECTIONS.md` are also project-owned and never overwritten. `OPERATIONS.md` records tenant-specific operational quirks that override generic guidance -- for example, whether this tenant even has a working dev deploy target. `CONNECTIONS.md` records production wiring values (URLs, IDs, non-secret connection facts).
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
### Session Bootstrap
|
|
20
20
|
|
|
21
|
-
-
|
|
22
|
-
- **Identity** -- Project orientation: what an Elevasis SDK project is, the developer's role, and how to adapt to non-technical users.
|
|
23
|
-
- **Navigation** -- A table mapping concepts to file paths with load conditions (when to load each file). Includes SDK reference docs, credential model, error history, `docs/project-map.mdx`, and `docs/priorities.mdx`.
|
|
24
|
-
- **Rules** -- Points to auto-loaded rule files in `.claude/rules/`. SDK patterns load automatically; project-specific patterns live in `workspace-patterns.md`. Includes error handling protocol.
|
|
25
|
-
- **Interaction Guidance** -- Per-dimension behavior rules derived from `memory/profile/skills.md`. Covers vocabulary, code completeness, explanation depth, and growth logging.
|
|
26
|
-
- **Commands** -- Table of the 4 slash commands (`/meta`, `/docs`, `/work`, `/tutorial`) with one-line purpose descriptions.
|
|
27
|
-
- **Skills** -- Auto-trigger conditions for the `creds` skill.
|
|
28
|
-
- **Maintaining Memory** -- Hierarchical structure, pruning rules, and what belongs in memory vs. `docs/` vs. `.claude/rules/`.
|
|
21
|
+
`.claude/rules/agent-start-here.md` is a thin pointer to the canonical rule body bundled with the installed SDK: `operations/node_modules/@elevasis/sdk/reference/rules/agent-start-here.md`. It is always-loaded and owns session bootstrap. The invariants it establishes:
|
|
29
22
|
|
|
30
|
-
|
|
23
|
+
- **Project context is DB-canonical.** Milestones, tasks, and resume notes are read and written only through `elevasis-sdk project:*` -- never through files. A session opens with `project:list --status active --pretty`, then `--status blocked`, and resolves "continue" or "pick up" requests with `project:work <query>`.
|
|
24
|
+
- **`OPERATIONS.md` outranks generic guidance.** Trust order: tenant `OPERATIONS.md`, then source and published package docs, then co-located boundary docs, then generated maps, then hand-authored template guidance.
|
|
25
|
+
- **Never answer "what can you do" from memory.** Skill inventory is `.claude/Overview.md`; live CLI capability is `elevasis-sdk cli`.
|
|
26
|
+
- **A missing `ui/` or `core/config/organization-model.ts` is not broken scaffolding.** Operations-only projects legitimately have neither.
|
|
31
27
|
|
|
32
|
-
|
|
28
|
+
There is no `<!-- initialized: false -->` flag and no `/meta init` flow in the current template. First-time bootstrap is the `/setup` skill (see below), which hands off to `/om` for organization-model configuration.
|
|
33
29
|
|
|
34
|
-
|
|
35
|
-
1. Read `.claude/memory/profile/skills.md` -- adapt all responses to the user's assessed skill levels (see Interaction Guidance below).
|
|
36
|
-
2. Read `.claude/memory/index.md` if it exists -- drill into relevant topic files as needed, balancing context relevance against token usage.
|
|
37
|
-
3. Check the installed `@elevasis/sdk` template version against `templateVersion` in `elevasis.config.ts`. If the SDK has a newer version, notify the user and suggest running `/meta fix`.
|
|
38
|
-
4. If `.claude/memory/` does not exist, suggest running `/meta init` to set up the project.
|
|
39
|
-
5. If the user's Platform Navigation level is none (from skills.md) and `.claude/memory/tutorial-progress.md` does not exist, suggest `/tutorial`.
|
|
40
|
-
|
|
41
|
-
## Slash Commands
|
|
30
|
+
## The Skill Layer
|
|
42
31
|
|
|
43
32
|
Skills are Markdown instruction files in `.claude/skills/`. When you type `/skill-name` in a Claude Code session, the agent reads the corresponding `SKILL.md` and follows its instructions.
|
|
44
33
|
|
|
45
|
-
The
|
|
46
|
-
|
|
47
|
-
| Skill
|
|
48
|
-
|
|
|
49
|
-
| `/
|
|
50
|
-
| `/
|
|
51
|
-
| `/
|
|
52
|
-
| `/
|
|
53
|
-
| `/
|
|
54
|
-
| `/
|
|
55
|
-
| `/
|
|
56
|
-
| `/
|
|
57
|
-
| `/
|
|
58
|
-
| `/save`
|
|
59
|
-
| `/
|
|
34
|
+
The template ships these skills, all committed to version control:
|
|
35
|
+
|
|
36
|
+
| Skill | Purpose |
|
|
37
|
+
| ----------------- | ------------------------------------------------------------------------------------------------ |
|
|
38
|
+
| `/client` | Client portfolio management -- list, resolve, inspect, and maintain client records |
|
|
39
|
+
| `/deploy` | Test, build, fix issues, then commit and push |
|
|
40
|
+
| `/dsp` | Dispatch subagents in parallel for implementation tasks |
|
|
41
|
+
| `/elevasis` | SDK operations -- check, deploy, execute, inspect, and debug resources |
|
|
42
|
+
| `/explore` | Codebase exploration anchored to project documentation |
|
|
43
|
+
| `/git-sync` | Pull latest changes, install when the dependency baseline moved, run baseline verification |
|
|
44
|
+
| `/om` | Organization Model ceremony -- read, codify, toggle, layered flow |
|
|
45
|
+
| `/project` | Portfolio- and project-level work management via `elevasis-sdk project:*` |
|
|
46
|
+
| `/run-ui` | Start the Vite UI dev server on port 4300 in the background |
|
|
47
|
+
| `/save` | Auto-manage project documentation and persist task resume context from conversation |
|
|
48
|
+
| `/setup` | First-time project setup -- placeholder replacement, deps, build verification, hand off to `/om` |
|
|
49
|
+
| `/status` | Quick project health check |
|
|
50
|
+
| `/submit-request` | Submit a structured request (bug, feature, support) to the platform |
|
|
51
|
+
| `/sync` | Fresh reinstall and cache reset after local dependency or cache drift |
|
|
52
|
+
| `/tutorial` | Persona-aware onboarding -- vibe-coder or technical track |
|
|
53
|
+
|
|
54
|
+
There is no `/meta`, `/docs`, or `/work` skill. The template's own boundary guidance splits overlapping responsibilities this way: `/project` updates or inspects shared project records, `/save` captures implementation progress and conversation-derived docs, and `/elevasis` (or the monorepo-side `/adev`) handles resource execution and debugging.
|
|
60
55
|
|
|
61
56
|
### Key Skills
|
|
62
57
|
|
|
63
|
-
**`/setup`** -- First-time project
|
|
64
|
-
|
|
65
|
-
**`/deploy`** -- Full deploy pipeline: type-check, validate resources, commit, deploy (auto-regenerates `docs/index.md` and `docs/resources.md`), verify platform, and optionally push.
|
|
66
|
-
|
|
67
|
-
**`/elevasis`** -- SDK operations entry point: `check` validates resource definitions, `deploy` bundles and uploads, `exec` runs a resource with input.
|
|
68
|
-
|
|
69
|
-
**`/work`** -- File-based task lifecycle. Creates, resumes, saves, and completes task docs in `docs/in-progress/`. It tracks in-progress work state, not project records.
|
|
70
|
-
|
|
71
|
-
**`/status`** -- Quick project health check: shows SDK version, deployed resources, last deploy date, and environment status.
|
|
72
|
-
|
|
73
|
-
**`/save`** -- Auto-manages docs from conversation context: writes or updates docs based on what was discussed in the session.
|
|
74
|
-
|
|
75
|
-
**`/explore`** -- Codebase exploration anchored to `docs/`. Reads the doc map first, then drills into source as needed.
|
|
76
|
-
|
|
77
|
-
**`/continue`** -- Resumes in-progress work by reading `docs/in-progress/` and picking up where the last session left off.
|
|
78
|
-
|
|
79
|
-
**`/project`** -- Project-management routing for milestones, tasks, notes, and status. It should call the canonical `elevasis-sdk project:*` CLI surface rather than inventing a parallel workflow.
|
|
80
|
-
|
|
81
|
-
That routing is interface-first, not a separate semantic model. `/project` should treat the SDK CLI as the operational entrypoint for the Organization OS delivery/projects contract: `deliveryManifest` in the shared UI, `PROJECTS_SYSTEM_ID` (`platform.projects`) in the organization model, and `organizationModel.delivery` for project/milestone/task status semantics.
|
|
82
|
-
|
|
83
|
-
When these command families overlap conceptually, use this boundary:
|
|
84
|
-
|
|
85
|
-
- `/project` -- update or inspect project data in the shared Projects system
|
|
86
|
-
- `/work` -- capture implementation progress and resume context in docs
|
|
87
|
-
- `/adev` -- build, debug, test, or execute resources
|
|
88
|
-
|
|
89
|
-
**`/dsp`** -- Dispatches subagents in parallel for implementation tasks that can run concurrently.
|
|
90
|
-
|
|
91
|
-
**`/sync`** -- Pulls latest changes, wipes all `node_modules` and caches, and runs a fresh reinstall.
|
|
92
|
-
|
|
93
|
-
## Developer Profile
|
|
94
|
-
|
|
95
|
-
The developer profile is stored in `.claude/memory/profile/` as a set of markdown files. It is gitignored -- personal to each developer, not shared with collaborators. Profile data lives in the memory system alongside error patterns, deployment state, and decisions.
|
|
96
|
-
|
|
97
|
-
### Onboarding Flow
|
|
98
|
-
|
|
99
|
-
Profile data is created during `/meta init`. The command runs a 6-question assessment and writes the responses to `memory/profile/`:
|
|
100
|
-
|
|
101
|
-
- **Identity & Goals (3 questions):** What the business does, what to automate, which tools are already in use.
|
|
102
|
-
- **Competency (2 questions):** Command Center familiarity (maps to `platformNavigation`), automation tool familiarity (maps to `automation`). Two additional dimensions (`apiIntegration`, `domainExpertise`) are inferred from these answers.
|
|
103
|
-
- **Communication (1 question):** Step-by-step explanations vs. concise answers.
|
|
104
|
-
|
|
105
|
-
### Profile Structure
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
.claude/memory/profile/
|
|
109
|
-
├── index.md # Profile summary with links to sub-files
|
|
110
|
-
├── identity.md # Organization, industry, goals, integrations
|
|
111
|
-
├── skills.md # Skill dimensions (platformNavigation, apiIntegration, automation, domainExpertise)
|
|
112
|
-
└── preferences.md # Verbosity, guidance style, interaction patterns
|
|
113
|
-
```
|
|
58
|
+
**`/setup`** -- First-time project bootstrap. Detects whether the project still has template placeholders (`__PROJECT_NAME__`, `__PROJECT_SLUG__`, and similar), collects project and client identity conversationally, replaces placeholders (everything under `.claude/` is explicitly excluded from replacement), fills the `CLAUDE.md` **Client Context** and **User Preferences** sections, writes `identity.clientBrief` in the organization model, installs dependencies, verifies the build, then hands off to `/om` for full organization-model configuration. All of its writes are idempotent -- re-running `/setup` on an already-bootstrapped project skips replacement and offers to re-verify only.
|
|
114
59
|
|
|
115
|
-
|
|
60
|
+
**`/om`** -- The only path to edits in `core/config/organization-model.ts`. Runs a snapshot-propose-confirm-write-validate-rollback ceremony rather than a direct file edit, because a change that passes TypeScript can still fail the model's Zod cross-reference validation (`resolveOrganizationModel()`).
|
|
116
61
|
|
|
117
|
-
|
|
62
|
+
**`/deploy`** -- Test, build, commit, push pipeline.
|
|
118
63
|
|
|
119
|
-
|
|
64
|
+
**`/elevasis`** -- SDK operations entry point: `check` validates resource definitions, `deploy` bundles and uploads, `exec` runs a resource with input, plus `describe`, `logs`, and `creds`.
|
|
120
65
|
|
|
121
|
-
-
|
|
122
|
-
- The user mentions new tools or integrations not in `identity.md`
|
|
123
|
-
- The user explicitly asks to change preferences
|
|
66
|
+
**`/project`** -- Primary work-tracking entry point: portfolio orientation, intent detection (resume vs. new), and project/milestone/task/note lifecycle, all routed through the `elevasis-sdk project:*` CLI rather than files.
|
|
124
67
|
|
|
125
|
-
|
|
68
|
+
**`/git-sync`** -- Pulls the latest template changes, checks the installed `@elevasis/sdk` version against the declared range, reinstalls if the dependency baseline changed, and runs baseline verification (`ui check-types`, `ui build`, `operations check`, `operations check-types`). It stops after verifying -- it never auto-reconciles template drift or overwrites project-owned files. Release guidance is not delivered here; it ships inside the `@elevasis/sdk` reference bundle, which is always current for your installed version.
|
|
126
69
|
|
|
127
|
-
|
|
70
|
+
On a green verification it also **bumps your app version**. The literal lives in `ui/src/config/app-version.ts` (exported as `APP_VERSION`, consumed by `ui/src/config/app-config.ts` and rendered in the topbar), and the agent picks the segment by judging the whole run: **minor** for new capability or a changed `@elevasis/*` dependency baseline, **patch** for everything else. **Major is never automatic** -- if a run genuinely looks major the report says so and leaves the version alone.
|
|
128
71
|
|
|
129
|
-
|
|
72
|
+
The gate is **outgoing commits**, checked with `git rev-list --count @{u}..HEAD` before the bump commit is written. Nothing deploys off a run with nothing to push, so a pull-only run reports `Version: unchanged (nothing to push)` while a run with local commits and an empty pull does bump. The bump lands as its own `chore(ui): bump app version to x.y.z` commit and is not pushed. It is skipped when there is no upstream, when the pull or verification failed, when the project has no `ui/src/config/app-version.ts`, and inside the template itself.
|
|
130
73
|
|
|
131
|
-
|
|
74
|
+
`app-version.ts` is a separate file from `app-config.ts` deliberately. It is registered `never-touch` / `verify-only`, so the sync engine protects your value; folding it back into `app-config.ts` -- a critical manual-merge surface -- would flag every project as behind the template on every sync for a difference that is working as intended.
|
|
132
75
|
|
|
133
|
-
|
|
134
|
-
- **`error-handling.md`** -- Error types (`ExecutionError`, `PlatformToolError`), retry behavior.
|
|
135
|
-
- **`execution.md`** -- Worker thread model, timeouts, concurrency, org isolation.
|
|
136
|
-
- **`observability.md`** -- Logging with `context.logger`, step-level auto-logging, debugging.
|
|
137
|
-
- **`deployment.md`** -- Deploy commands, dev vs prod, version bumping, common errors.
|
|
76
|
+
**`/tutorial`** -- Persona-aware onboarding; see [Tutorial System](tutorial-system.mdx) for the full lesson breakdown.
|
|
138
77
|
|
|
139
|
-
|
|
78
|
+
## The Ambient Vibe Layer
|
|
140
79
|
|
|
141
|
-
-
|
|
142
|
-
- **`task-tracking.md`** -- Task doc conventions, injected for in-progress files.
|
|
80
|
+
External projects run an always-on natural-language intent classifier -- there is no `/vibe` command and no activation phrase. Every message is silently classified into one of seven intents (Capture, Query, Describe, Transition, Navigate, Codify, Toggle) before the agent responds. Codify and Toggle detect intent and delegate immediately to `/om`; the classifier never runs the organization-model ceremony itself. The full classifier definition and fixture tables ship with the SDK at `operations/node_modules/@elevasis/sdk/reference/rules/vibe.md`. Vibe is explicitly off inside the monorepo, which uses the task-class routing in `agent-start-here.md` instead.
|
|
143
81
|
|
|
144
|
-
|
|
82
|
+
## The Rules Layer
|
|
145
83
|
|
|
146
|
-
-
|
|
147
|
-
- **`shared-types.md`** -- Cross-runtime type conventions, injected for foundations files.
|
|
148
|
-
- **`organization-os.md`** -- Organization model and feature shell conventions.
|
|
84
|
+
`.claude/rules/` in the git-tracked template holds short pointer files with `paths:` frontmatter that Claude Code auto-loads for matching files. The authoritative rule bodies ship with the installed `@elevasis/sdk` package at `operations/node_modules/@elevasis/sdk/reference/rules/` and update whenever the SDK dependency is bumped. Rules include `agent-start-here.md` (always-loaded), `vibe.md` (always-loaded), `organization-os.md`, `deployment.md`, `error-handling.md`, `execution.md`, `frontend.md`, `observability.md`, `operations.md`, `organization-model.md`, `platform.md`, `shared-types.md`, `task-tracking.md`, `ui.md`, and `active-change-index.md` (which flags areas under active platform change).
|
|
149
85
|
|
|
150
|
-
##
|
|
86
|
+
## Template Version Tracking
|
|
151
87
|
|
|
152
|
-
The `
|
|
88
|
+
The scaffold's version marker is `templateVersion` in the project-root `.elevasis` file (a flat YAML-like marker file, not `elevasis.config.ts`). `elevasis.config.ts` (`operations/elevasis.config.ts`) only accepts `defaultStatus` and `dev.port` -- it has no version field. To pull a template update, run `/git-sync`, not `/meta fix` (which does not exist in this template).
|
|
153
89
|
|
|
154
90
|
---
|
|
155
91
|
|
|
156
|
-
**Last Updated:** 2026-
|
|
92
|
+
**Last Updated:** 2026-08-06
|