@elevasis/sdk 1.48.0 → 1.49.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 (46) hide show
  1. package/dist/cli.cjs +742 -231
  2. package/dist/index.d.ts +685 -47
  3. package/dist/index.js +274 -40
  4. package/dist/node/index.d.ts +108 -24
  5. package/dist/test-utils/index.d.ts +647 -34
  6. package/dist/test-utils/index.js +240 -38
  7. package/dist/worker/index.d.ts +663 -39
  8. package/dist/worker/index.js +115 -6
  9. package/package.json +4 -4
  10. package/reference/_navigation.md +4 -4
  11. package/reference/_reference-manifest.json +1 -1
  12. package/reference/core/index.mdx +6 -4
  13. package/reference/index.mdx +11 -5
  14. package/reference/packages/core/src/README.md +46 -44
  15. package/reference/packages/core/src/content/README.md +13 -12
  16. package/reference/rules/ui.md +1 -1
  17. package/reference/rules/vibe-intents.md +2 -2
  18. package/reference/rules/vibe.md +30 -10
  19. package/reference/scaffold/recipes/extend-content.md +82 -3
  20. package/reference/sdk/cli-management.mdx +184 -41
  21. package/reference/sdk/cli.mdx +103 -64
  22. package/reference/sdk/define-builders.mdx +1 -1
  23. package/reference/sdk/deployment/command-center.mdx +2 -2
  24. package/reference/sdk/deployment/index.mdx +1 -1
  25. package/reference/sdk/exports.mdx +4 -4
  26. package/reference/sdk/framework/agent.mdx +4 -3
  27. package/reference/sdk/framework/index.mdx +1 -1
  28. package/reference/sdk/framework/project-structure.mdx +34 -23
  29. package/reference/sdk/framework/tutorial-system.mdx +1 -1
  30. package/reference/sdk/getting-started.mdx +25 -52
  31. package/reference/sdk/index.mdx +3 -3
  32. package/reference/sdk/platform-tools/adapters-integration.mdx +1 -1
  33. package/reference/sdk/platform-tools/adapters-platform.mdx +1 -1
  34. package/reference/sdk/platform-tools/type-safety.mdx +1 -1
  35. package/reference/sdk/resources/patterns.mdx +10 -11
  36. package/reference/sdk/resources/types.mdx +15 -9
  37. package/reference/sdk/templates/data-enrichment.mdx +1 -1
  38. package/reference/sdk/templates/email-sender.mdx +1 -1
  39. package/reference/sdk/templates/index.mdx +47 -47
  40. package/reference/sdk/templates/lead-scorer.mdx +1 -1
  41. package/reference/sdk/templates/pdf-generator.mdx +42 -24
  42. package/reference/sdk/templates/recurring-job.mdx +20 -15
  43. package/reference/sdk/templates/text-classifier.mdx +1 -1
  44. package/reference/sdk/templates/web-scraper.mdx +9 -5
  45. package/reference/ui/exports.mdx +1 -1
  46. package/reference/ui/index.mdx +2 -2
@@ -13,7 +13,7 @@ pnpm add @elevasis/sdk
13
13
 
14
14
  After installation, the `elevasis-sdk` binary is available in your project's `node_modules/.bin/`. Most commands require `ELEVASIS_PLATFORM_KEY` to be set in your environment or a `.env` file.
15
15
 
16
- For management commands (project:\*, note:\*, acquisition:\*, client:\*, agent:\*, session:\*, queue:\*, schedule:\*, om:\*, ui:\*, skill:\*), see [CLI Management](cli-management.mdx).
16
+ For management commands (project:\*, note:\*, error:\*, acquisition:\*, client:\*, agent:\*, session:\*, queue:\*, schedule:\*, om:\*, ui:\*, skill:\*, content:\*, request:\*, grant:\*), see [CLI Management](cli-management.mdx).
17
17
 
18
18
  ---
19
19
 
@@ -41,6 +41,13 @@ elevasis-sdk check
41
41
 
42
42
  `check` declares no `--api-url` flag -- it validates project source locally and never calls the API, so there is no base URL to override.
43
43
 
44
+ **Flags:**
45
+
46
+ | Flag | Description |
47
+ | ------------------ | -------------------------------------------------- |
48
+ | `--entry <path>` | Path to the entry file (default: `./src/index.ts`) |
49
+ | `--skip-coverage` | Skip the skill coverage gate |
50
+
44
51
  **Example output (success):**
45
52
 
46
53
  ```
@@ -84,10 +91,14 @@ elevasis-sdk deploy
84
91
 
85
92
  **Flags:**
86
93
 
87
- | Flag | Description |
88
- | ------------------- | ---------------------------------------------------------- |
89
- | `--api-url <url>` | Override the API base URL (default: production) |
90
- | `--prod` | Force production target, overriding `NODE_ENV=development` |
94
+ | Flag | Description |
95
+ | ------------------- | ------------------------------------------------------------ |
96
+ | `--api-url <url>` | Override the API base URL (default: production) |
97
+ | `--entry <path>` | Path to the entry file (default: `./src/index.ts`) |
98
+ | `--prod` | Force production target, overriding `NODE_ENV=development` |
99
+ | `--major` | Bump the major version before deploying (`1.0.0` -> `2.0.0`) |
100
+ | `--minor` | Bump the minor version before deploying (`1.0.0` -> `1.1.0`) |
101
+ | `--patch` | Bump the patch version before deploying (`1.0.0` -> `1.0.1`) |
91
102
 
92
103
  **Environment variables:**
93
104
 
@@ -141,15 +152,20 @@ elevasis-sdk exec <resource> --input '{...}'
141
152
  - Use `--async` to return an `executionId` immediately and poll for completion
142
153
  - `--input` accepts a JSON string matching the resource's `inputSchema`
143
154
  - Organization is derived from your API key -- no org prefix needed
155
+ - On a lost connection during a synchronous run, the CLI looks up the most recent running execution for the resource and resumes polling rather than failing outright
144
156
 
145
157
  **Flags:**
146
158
 
147
- | Flag | Description |
148
- | ------------------- | ------------------------------------------------------- |
149
- | `--input <json>` | JSON input matching the resource's input schema |
150
- | `--async` | Execute asynchronously, return execution ID immediately |
151
- | `--json` | Output raw JSON instead of formatted display |
152
- | `--api-url <url>` | Override the API base URL |
159
+ | Flag | Description |
160
+ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
161
+ | `-i, --input <json>` | JSON input matching the resource's input schema |
162
+ | `-f, --input-file <path>` | Read input from a JSON file instead of `--input` (avoids shell escaping). Relative paths resolve against the project root |
163
+ | `--async` | Execute asynchronously, return execution ID immediately |
164
+ | `--cleanup-input` | Delete the input file after a successful execution (only files under `<projectRoot>/tmp/` are eligible) |
165
+ | `--prod` | Target production (overrides `NODE_ENV=development`) |
166
+ | `--api-url <url>` | Override the API base URL |
167
+
168
+ `exec` does not declare a `--json` flag -- output is always the formatted display shown below.
153
169
 
154
170
  **Example:**
155
171
 
@@ -240,7 +256,7 @@ elevasis-sdk executions [resource]
240
256
 
241
257
  | Flag | Description |
242
258
  | --------------------- | --------------------------------------------------------------- |
243
- | `--limit <n>` | Maximum number of executions to return (default: 20) |
259
+ | `--limit <n>` | Maximum number of executions to return (default: 50) |
244
260
  | `--status <status>` | Filter by status: `running`, `completed`, `failed`, `cancelled` |
245
261
  | `--json` | Output raw JSON |
246
262
  | `--api-url <url>` | Override the API base URL |
@@ -273,15 +289,21 @@ elevasis-sdk execution <resource> <id>
273
289
 
274
290
  **Behavior:**
275
291
 
276
- - Shows the complete execution record: input, output, logs, duration, and error (if any)
292
+ - Shows the complete execution record: input, result, logs, duration, and error (if any)
293
+ - `--input` and `--result` force those sections to print even when the CLI would otherwise omit them; both print automatically when the execution carries input data, or is `completed` with a result
294
+ - `--logs-only` prints only the execution logs and skips the rest of the record
277
295
  - Use `--json` to get the raw JSON response for programmatic use
278
296
 
279
297
  **Flags:**
280
298
 
281
- | Flag | Description |
282
- | ------------------- | ------------------------- |
283
- | `--json` | Output raw JSON |
284
- | `--api-url <url>` | Override the API base URL |
299
+ | Flag | Description |
300
+ | ------------------- | ---------------------------------------------------- |
301
+ | `--logs-only` | Show only execution logs |
302
+ | `--input` | Force the Input section to print |
303
+ | `--result` | Force the Result section to print |
304
+ | `--prod` | Target production (overrides `NODE_ENV=development`) |
305
+ | `--json` | Output raw JSON response |
306
+ | `--api-url <url>` | Override the API base URL |
285
307
 
286
308
  **Example:**
287
309
 
@@ -290,10 +312,12 @@ elevasis-sdk execution onboard-client exec_abc001
290
312
  ```
291
313
 
292
314
  ```
293
- Resource: onboard-client
294
- Status: completed
295
- Started: 2026-02-25 14:32:01
296
- Duration: 1.2s
315
+ Resource: onboard-client
316
+ Execution ID: exec_abc001
317
+ Status: COMPLETED
318
+ Started: 2026-02-25 14:32:01
319
+ Ended: 2026-02-25 14:32:02
320
+ Duration: 1.2s
297
321
 
298
322
  Input:
299
323
  {
@@ -301,17 +325,20 @@ elevasis-sdk execution onboard-client exec_abc001
301
325
  "email": "jane@example.com"
302
326
  }
303
327
 
304
- Output:
328
+ Result:
305
329
  {
306
330
  "success": true,
307
331
  "clientId": "client_1708521600000",
308
332
  "welcomeEmailSent": true
309
333
  }
310
334
 
311
- Logs:
335
+ Execution Logs:
336
+
312
337
  [14:32:01.123] Starting onboard-client workflow
313
338
  [14:32:01.456] Created client record
314
339
  [14:32:01.891] Welcome email sent to jane@example.com
340
+
341
+ Total logs: 3
315
342
  ```
316
343
 
317
344
  ---
@@ -406,24 +433,31 @@ elevasis-sdk deployments
406
433
 
407
434
  **Behavior:**
408
435
 
409
- - Shows deployment history with status, timestamp, and resource count
410
- - Active deployment is marked; previous deployments show as `stopped`
436
+ - Shows deployment history with status, SDK version, and creation timestamp
437
+ - Status is one of `deploying`, `active`, `failed`, `rolled_back`, or `stopped`
411
438
 
412
439
  **Flags:**
413
440
 
414
- | Flag | Description |
415
- | ------------------- | ------------------------- |
416
- | `--json` | Output raw JSON |
417
- | `--api-url <url>` | Override the API base URL |
441
+ | Flag | Description |
442
+ | ------------------- | ---------------------------------------------------- |
443
+ | `--prod` | Target production (overrides `NODE_ENV=development`) |
444
+ | `--json` | Output raw JSON |
445
+ | `--api-url <url>` | Override the API base URL |
418
446
 
419
447
  **Example output:**
420
448
 
421
449
  ```
422
450
  $ elevasis-sdk deployments
423
451
 
424
- deploy_abc123 active 2026-02-25 14:00:00 4 resources
425
- deploy_abc122 stopped 2026-02-24 09:30:00 3 resources
426
- deploy_abc121 stopped 2026-02-23 11:15:00 3 resources
452
+ 1. [ACTIVE] deploy_abc123
453
+ SDK Version: 1.45.0
454
+ Created: 2/25/2026, 2:00:00 PM
455
+
456
+ 2. [STOPPED] deploy_abc122
457
+ SDK Version: 1.44.2
458
+ Created: 2/24/2026, 9:30:00 AM
459
+
460
+ 2 deployment(s)
427
461
  ```
428
462
 
429
463
  ---
@@ -495,21 +529,24 @@ elevasis-sdk creds delete <name> [--force]
495
529
  **Subcommands:**
496
530
 
497
531
  - `list` -- display all credentials (metadata only, no secret values)
498
- - `create` -- create a new credential; `--name` and `--type` are required; `--value` is an optional JSON string for the initial value
532
+ - `create` -- create a new credential; `--name`, `--type`, and `--value` are all required
499
533
  - `update <name>` -- replace the value of an existing credential; `--value` (JSON) is required
500
534
  - `rename <name>` -- rename a credential; `--to <newName>` is required
501
535
  - `delete <name>` -- delete a credential; pass `--force` to skip the confirmation prompt
502
536
 
503
537
  **Flags:**
504
538
 
505
- | Flag | Description |
506
- | ------------------- | -------------------------------------------------- |
507
- | `--name <name>` | Credential name (create: required) |
508
- | `--type <type>` | Credential type, e.g. `api-key` (create: required) |
509
- | `--value <json>` | Credential value as a JSON string |
510
- | `--to <newName>` | New name (rename: required) |
511
- | `--force` | Skip confirmation prompt (delete) |
512
- | `--api-url <url>` | Override the API base URL |
539
+ | Flag | Description |
540
+ | ------------------- | ------------------------------------------------------------------------------- |
541
+ | `--name <name>` | Credential name: lowercase letters, digits, and hyphens only (create: required) |
542
+ | `--type <type>` | Credential type: `api-key` or `webhook-secret` (create: required) |
543
+ | `--value <json>` | Credential value as a JSON string (create and update: required) |
544
+ | `--to <newName>` | New name (rename: required) |
545
+ | `--force` | Skip confirmation prompt (delete) |
546
+ | `--prod` | Target production (overrides `NODE_ENV=development`) |
547
+ | `--api-url <url>` | Override the API base URL |
548
+
549
+ OAuth credentials cannot be created through the CLI -- they require the Command Center's browser OAuth flow. See [Command Center](deployment/command-center.mdx#credentials).
513
550
 
514
551
  **Examples:**
515
552
 
@@ -540,16 +577,16 @@ elevasis-sdk rename <old-id> --to <new-id> [--execute] [--prod]
540
577
  - Dry-run by default -- shows all affected rows per table without modifying any data
541
578
  - Pass `--execute` to perform the rename
542
579
  - Org-scoped: only updates rows belonging to your organization
543
- - Updates resource references across 6 tables:
580
+ - Refuses to run if the new resource ID already has execution history in your organization, to prevent a data collision
581
+ - Updates resource references across 5 tables:
544
582
 
545
- | Table | Column(s) updated |
546
- | -------------------- | ----------------- |
547
- | `executions` | `resource_id` |
548
- | `sessions` | `resource_id` |
549
- | `workflow_configs` | `resource_id` |
550
- | `workflow_schedules` | `resource_id` |
551
- | `execution_events` | `resource_id` |
552
- | `session_events` | `resource_id` |
583
+ | Table | Column(s) updated |
584
+ | ------------------- | ------------------------------------------ |
585
+ | `execution_logs` | `resource_id` |
586
+ | `execution_metrics` | `resource_id` |
587
+ | `sessions` | `resource_id` |
588
+ | `command_queue` | `origin_resource_id` |
589
+ | `task_schedules` | `origin_resource_id`, `target_resource_id` |
553
590
 
554
591
  **Flags:**
555
592
 
@@ -570,14 +607,13 @@ elevasis-sdk rename ist-upload-workflow --to ist-upload-contacts-workflow
570
607
  Dry run — no changes made.
571
608
 
572
609
  Rows that would be updated:
573
- executions 6
574
- sessions 0
575
- workflow_configs 0
576
- workflow_schedules 0
577
- execution_events 0
578
- session_events 0
610
+ execution_logs 6
611
+ execution_metrics 6
612
+ sessions 0
613
+ command_queue 0
614
+ task_schedules 0
579
615
 
580
- Total: 6 rows
616
+ Total: 12 rows
581
617
 
582
618
  Re-run with --execute to apply changes.
583
619
  ```
@@ -659,12 +695,13 @@ elevasis-sdk doctor [--verbose] [--prod]
659
695
 
660
696
  **Behavior:**
661
697
 
662
- Runs four sequential checks and reports `[OK]` / `[FAIL]` / `[WARN]` for each. Exits with code 1 if any check fails. Later checks are skipped when a prerequisite fails.
698
+ Runs five sequential checks and reports `[OK]` / `[FAIL]` / `[WARN]` for each. Exits with code 1 if any check fails. Later checks are skipped when a prerequisite fails.
663
699
 
664
700
  1. Project root resolved -- locates the `.elevasis` marker file from the current working directory
665
701
  2. `.env` found at project root
666
702
  3. `ELEVASIS_PLATFORM_KEY` present and non-empty
667
703
  4. API reachable and key valid -- calls `GET /api/external/health`
704
+ 5. Systems roster -- every platform-cataloged System Interface, checked against the deployed readiness snapshot. Reuses the key and connectivity Check 4 already proved. A System the project has not adopted renders `[WARN]`, never `[FAIL]` -- partial adoption is the designed opt-out. `[FAIL]` is reserved for adopted-but-broken Systems.
668
705
 
669
706
  **Flags:**
670
707
 
@@ -683,6 +720,8 @@ Running Elevasis SDK doctor checks...
683
720
  [OK] API key: Set (length: 56)
684
721
  [OK] API: Reachable. Workspace: Acme Corp (ws_abc123)
685
722
  [WARN] SDK compat: server minSdkVersion is 1.25.0; check is advisory in v1.
723
+ [OK] Systems: platform.projects/delivery: ready
724
+ [WARN] Systems: sales.crm/pipeline: not adopted
686
725
 
687
726
  All checks passed. Your Elevasis project is correctly configured.
688
727
  ```
@@ -695,11 +734,11 @@ All checks passed. Your Elevasis project is correctly configured.
695
734
 
696
735
  These flags are accepted by all commands:
697
736
 
698
- | Flag | Description |
699
- | ------------------- | --------------------------------------------------------------------------------------------------- |
700
- | `--api-url <url>` | Override the API base URL. Priority: flag > `ELEVASIS_API_URL` env var > `NODE_ENV`-based default |
701
- | `--json` | Output raw JSON (available on most commands) |
702
- | `--prod` | Target production, overriding `NODE_ENV=development` |
737
+ | Flag | Description |
738
+ | ------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
739
+ | `--api-url <url>` | Override the API base URL. Priority: `--api-url` flag > `--prod` flag > `ELEVASIS_API_URL` env var > `NODE_ENV`-based default |
740
+ | `--json` | Output raw JSON (available on most commands) |
741
+ | `--prod` | Target production, overriding `NODE_ENV=development` |
703
742
 
704
743
  **API base URL resolution:**
705
744
 
@@ -710,4 +749,4 @@ These flags are accepted by all commands:
710
749
 
711
750
  ---
712
751
 
713
- **Last Updated:** 2026-08-12
752
+ **Last Updated:** 2026-08-17
@@ -23,7 +23,7 @@ export function defineWorkflow<TWorkflow extends WorkflowDefinition>(workflow: T
23
23
 
24
24
  What it buys you is narrower inference. Annotate a literal `const echo: WorkflowDefinition = { ... }` and TypeScript widens every field to the interface's declared type -- `config.resourceId` becomes `string`, not `'echo'`. Pass the same object to `defineWorkflow({ ... })` with no annotation and `TWorkflow` is inferred from the literal you wrote, so `defineWorkflow(...).config.resourceId` keeps the literal type `'echo'`. That distinction only matters if something downstream reads the value back and wants the narrower type -- a test asserting on `resourceId`, a lookup table keyed by it, a second resource that imports the first and needs its literal id. A workflow file that is only ever consumed by the deploy pipeline, which just needs it to satisfy `WorkflowDefinition`, gets nothing extra from the wrapper.
25
25
 
26
- That is a real, but narrow, upside -- and it is honestly reflected in what ships. The scaffolded template's own workflow files (`echo.ts`, `email-notification.ts`) use the plain annotated-literal form, not `defineWorkflow`. The builder is real, exported, and demonstrated in the SDK's own test fixtures with exactly the calling convention above -- it is simply not the house style the template ships with. Use the annotated literal by default, matching what a scaffolded project already contains; reach for `defineWorkflow` / `defineStep` / `defineContract` specifically when you want the object's literal types preserved past its own definition.
26
+ That is a real, but narrow, upside -- and it is honestly reflected in what ships. The scaffolded template's own workflow files (`example/echo.ts`, `email-notification/index.ts`) use the plain annotated-literal form, not `defineWorkflow`. The builder is real, exported, and demonstrated in the SDK's own test fixtures with exactly the calling convention above -- it is simply not the house style the template ships with. Use the annotated literal by default, matching what a scaffolded project already contains; reach for `defineWorkflow` / `defineStep` / `defineContract` specifically when you want the object's literal types preserved past its own definition.
27
27
 
28
28
  `defineWorkflowConfig` is a different kind of helper in this same group -- it derives `config` fields from an Organization Model resource descriptor instead of preserving literal types. It has its own page: see [The Deployment Spec Pattern](project-deployment-spec.mdx#defineworkflowconfig-deriving-config-from-one-om-descriptor).
29
29
 
@@ -105,8 +105,8 @@ Keep relationships in sync with your handler code. When you add an `execution.tr
105
105
  **Validation error examples:**
106
106
 
107
107
  ```
108
- ERROR Relationship target 'send-proposal' not found in organization resources
109
- ERROR Duplicate resource ID 'score-lead' in deployment
108
+ ERROR [acme-corp] Resource 'score-lead' triggers non-existent workflow: send-proposal
109
+ ERROR Duplicate resource ID 'score-lead' in deployment. Each resource must have a unique ID.
110
110
  ```
111
111
 
112
112
  ### Graph Serialization
@@ -288,4 +288,4 @@ Dashboard appears before Business in the primary sidebar. Business is a navigati
288
288
 
289
289
  - [Command Center](command-center.mdx) - Resource graph, relationships, node types, and post-deployment UI reference
290
290
  - [Execution Reference](execution-reference.mdx) - REST endpoints for executing resources, managing deployments, and React UI components for custom Run dialogs
291
- - [Platform Adapters](../platform-tools/adapters-platform.mdx) - `approval.create()` and all platform service adapters
291
+ - [Platform Adapters](../platform-tools/adapters-platform.mdx) - `approval.create()` and the full platform service adapter catalog
@@ -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 | Default entry: defineWorkflow, defineStep, defineContract, contract-ref resolution, shared types, and workflow utilities. |
12
+ | `@elevasis/sdk/worker` | Worker Runtime | Runtime | worker_threads runtime plus the typed platform and integration adapters a step handler calls at execution time. |
13
+ | `@elevasis/sdk/test-utils` | Test Utils | Testing | Workflow test harness, resource registry helpers, and mock adapters for unit-testing definitions without the platform. |
14
+ | `@elevasis/sdk/node` | Node Build Tooling | Tooling | Node-only build-time codegen for knowledge nodes and bodies. Requires fs/path/process -- not browser-safe. |
@@ -36,6 +36,7 @@ The template ships these skills, all committed to version control:
36
36
  | Skill | Purpose |
37
37
  | ----------------- | ------------------------------------------------------------------------------------------------ |
38
38
  | `/client` | Client portfolio management -- list, resolve, inspect, and maintain client records |
39
+ | `/content` | Content pipeline operations -- list items, inspect, board view, review queue, distributions |
39
40
  | `/deploy` | Test, build, fix issues, then commit and push |
40
41
  | `/dsp` | Dispatch subagents in parallel for implementation tasks |
41
42
  | `/elevasis` | SDK operations -- check, deploy, execute, inspect, and debug resources |
@@ -77,11 +78,11 @@ The gate is **outgoing commits**, checked with `git rev-list --count @{u}..HEAD`
77
78
 
78
79
  ## The Ambient Vibe Layer
79
80
 
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.
81
+ 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 eight intents (Capture, Query, Describe, Transition, Navigate, Codify, Toggle, Operate) before the agent responds. Codify and Toggle detect intent and delegate immediately to `/om`; Operate delegates to `/elevasis` (`elevasis-sdk describe` then a confirmed `exec`); the classifier never runs the organization-model ceremony or executes a deployed resource itself. The full classifier definition and fixture tables ship with the SDK at `operations/node_modules/@elevasis/sdk/reference/rules/vibe.md` and the per-intent detail at `operations/node_modules/@elevasis/sdk/reference/rules/vibe-intents.md`. Vibe is explicitly off inside the monorepo, which uses the task-class routing in `agent-start-here.md` instead.
81
82
 
82
83
  ## The Rules Layer
83
84
 
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).
85
+ `.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. The bundle carries 19 rules: `agent-start-here.md` (always-loaded), `vibe.md` (always-loaded), `vibe-intents.md`, `agent-runtime.md`, `content.md`, `organization-os.md`, `deployment.md`, `error-handling.md`, `execution.md`, `frontend.md`, `observability.md`, `operations.md`, `organization-model.md`, `package-taxonomy.md`, `platform.md`, `shared-types.md`, `task-tracking.md`, `ui.md`, and `active-change-index.md` (which flags areas under active platform change). The template also ships a small number of project-authored, System-specific rules directly under `.claude/rules/` -- for example `crm.md` and `lead-gen.md` -- that are not part of the bundled set.
85
86
 
86
87
  ## Template Version Tracking
87
88
 
@@ -89,4 +90,4 @@ The scaffold's version marker is `templateVersion` in the project-root `.elevasi
89
90
 
90
91
  ---
91
92
 
92
- **Last Updated:** 2026-08-06
93
+ **Last Updated:** 2026-08-17
@@ -83,7 +83,7 @@ See [Tutorial System](tutorial-system.mdx) for the full lesson breakdown, track
83
83
 
84
84
  ## Documentation
85
85
 
86
- - [Project Structure](project-structure.mdx) - Directory-by-directory walkthrough of the scaffolded project
86
+ - [Project Structure](project-structure.mdx) - Directory-by-directory walkthrough of the scaffolded project's structure and layout
87
87
  - [Agent System](agent.mdx) - Skill inventory, rules layer, ambient vibe classifier, and session bootstrap
88
88
  - [Tutorial System](tutorial-system.mdx) - Two-track onboarding (8 vibe-coder + 19 technical lessons), track persistence, and progress tracking
89
89
 
@@ -22,7 +22,7 @@ The scaffold is a workspace with `ui/`, `operations/`, and `core/` packages plus
22
22
  ├── .env / .env.example # ELEVASIS_PLATFORM_KEY and other root-level environment values
23
23
  ├── .gitattributes # Line-ending normalization
24
24
  ├── .gitignore # Excludes node_modules, dist, .env, .tanstack, and more
25
- ├── .npmrc # auto-install-peers = true (Zod is a peer dependency)
25
+ ├── .npmrc # ignore-workspace-root-check + auto-install-peers (Zod is a peer dependency)
26
26
  ├── CLAUDE.md # Project-owned identity and preferences (never overwritten by sync)
27
27
  ├── CONNECTIONS.md # Tenant-owned production wiring values (never overwritten)
28
28
  ├── OPERATIONS.md # Tenant-owned operational quirks (never overwritten, outranks generic guidance)
@@ -43,11 +43,17 @@ Cross-runtime types, schemas, constants, and organization-model configuration sh
43
43
  ```
44
44
  core/
45
45
  ├── config/
46
- │ ├── organization-model.ts # Canonical model + resource descriptor resolvers
46
+ │ ├── organization-model.ts # Entry barrel -- assembly, public exports, knowledge wiring
47
+ │ ├── organization-model/
48
+ │ │ ├── profile.ts # defineOrganizationModel() body (/om codify target)
49
+ │ │ ├── systems.ts # Operational graph, resource descriptors, governance model
50
+ │ │ └── navigation.ts # Sidebar tree, projectTemplateNavigationSurfaces
47
51
  │ ├── organization-model.test.ts
48
52
  │ ├── organization-model.contract.test.ts
49
- │ ├── extensions/ # Project-specific model extensions
50
- │ ├── knowledge/ # Knowledge graph nodes
53
+ │ ├── extensions/ # Project-specific model extensions (deal-ecom.ts.example, index.ts)
54
+ │ ├── knowledge/
55
+ │ │ ├── nodes/ # Hand-authored knowledge node MDX (welcome.mdx)
56
+ │ │ └── _generated/ # Compiled knowledge bodies and search index -- do not edit
51
57
  │ └── README.md
52
58
  ├── test-utils/
53
59
  │ └── core-contract-factories.ts
@@ -63,7 +69,7 @@ core/
63
69
 
64
70
  ### `core/config/organization-model.ts`
65
71
 
66
- Defines and resolves the canonical organization model (`canonicalOrganizationModel`) plus the resource-descriptor getters (`getTemplateWorkflowResourceDescriptor`, `getTemplateAgentResourceDescriptor`) that `operations/src/index.ts` imports. Direct edits are discouraged -- the file's own resolver (`resolveOrganizationModel()`) runs Zod cross-reference validation that a syntactically valid edit can still fail. All edits go through `/om`.
72
+ The entry file for the organization model, split into a thin assembly barrel plus three sibling files under `core/config/organization-model/`: `profile.ts` (the `/om` codify target -- identity, customers, offerings, roles, goals), `systems.ts` (the operational graph: Systems, resources, the resource-descriptor getters `getTemplateWorkflowResourceDescriptor` and `getTemplateAgentResourceDescriptor`, and governance model), and `navigation.ts` (the sidebar tree). `organization-model.ts` resolves the canonical model (`canonicalOrganizationModel`, via `resolveOrganizationModel()`) and re-exports every public symbol from the split files so `operations/src/index.ts` and other consumers keep importing from the single entry path. Direct edits to any of these files are discouraged -- the resolver runs Zod cross-reference validation that a syntactically valid edit can still fail. All edits go through `/om`.
67
73
 
68
74
  ### `core/types/index.ts`
69
75
 
@@ -86,13 +92,18 @@ operations/
86
92
  │ ├── metadata.ts # Trigger/integration/human-checkpoint metadata (starts empty)
87
93
  │ ├── resource-registry.test.ts
88
94
  │ ├── README.md
95
+ │ ├── __tests__/
96
+ │ │ └── sdk-test-utils.compat.ts # Shared test helpers -- assertResourceRegistry, runWorkflow
89
97
  │ ├── example/
90
98
  │ │ ├── echo.ts # Starter workflow
99
+ │ │ ├── echo.test.ts
91
100
  │ │ ├── example-agent.ts # Starter agent
101
+ │ │ ├── example-agent.test.ts
92
102
  │ │ └── index.ts # Domain barrel (exports workflows + agents)
93
103
  │ ├── email-notification/
94
104
  │ │ ├── exports.ts # Domain barrel
95
105
  │ │ ├── index.ts # Multi-step workflow using the notifications adapter
106
+ │ │ ├── email-notification.test.ts
96
107
  │ │ └── adapter-contract.test.ts
97
108
  │ └── shared/ # Empty by default (.gitkeep) -- code shared across domains
98
109
  ├── elevasis.config.ts # Project-level SDK config
@@ -111,7 +122,7 @@ Convention seed for deployment mechanics that are not resource identity: trigger
111
122
 
112
123
  ### `operations/src/example/echo.ts`
113
124
 
114
- The starter workflow: one workflow per file with its own `config`, Zod `contract`, `steps` map, and `entryPoint`. Replace this domain with your own when ready. `operations/src/example/example-agent.ts` is the equivalent starter for an agent resource.
125
+ The starter workflow: one workflow per file with its own `config`, Zod `contract`, `steps` map, and `entryPoint`. Replace this domain with your own when ready. `operations/src/example/example-agent.ts` is the equivalent starter for an agent resource -- a minimal single-shot (non-session) `AgentDefinition` with no tools and no memory. Each has a matching `*.test.ts` file exercising it through the shared test helpers in `operations/src/__tests__/sdk-test-utils.compat.ts`.
115
126
 
116
127
  ### `operations/src/email-notification/index.ts`
117
128
 
@@ -173,7 +184,7 @@ The `.claude/` directory and `CLAUDE.md` give Claude Code full awareness of the
173
184
  ├── hooks/ # post-edit-validate.mjs, scaffold-registry-reminder.mjs, tool-failure-recovery.mjs
174
185
  ├── skills/ # One directory per slash command, each with a SKILL.md
175
186
  ├── rules/ # Path-scoped pointers to rule bodies bundled with @elevasis/sdk
176
- ├── registries/ # Scaffold, skill-coverage, and knowledge registry data
187
+ ├── registries/ # Skill-coverage and knowledge registry data (skill-coverage.json, graph-skills.json, knowledge-flags.json)
177
188
  └── logs/ # Hook-written runtime state
178
189
  ```
179
190
 
@@ -183,7 +194,7 @@ The `.claude/` directory and `CLAUDE.md` give Claude Code full awareness of the
183
194
 
184
195
  ## `elevasis-sdk deploy` Scope
185
196
 
186
- `elevasis-sdk deploy` (run as `pnpm -C operations deploy` or `pnpm -C operations deploy:prod`) bundles `operations/src/` into a single file via esbuild and uploads it. There is no documentation-upload step in the current deploy path -- `ui/`, `core/`, and `.claude/` are not touched by deploy.
197
+ `elevasis-sdk deploy` (run as `pnpm -C operations run deploy` or `pnpm -C operations run deploy:prod` -- the explicit `run` matters, because `pnpm -C operations deploy` without it invokes pnpm's own builtin `deploy` command instead of the project script) bundles `operations/src/` into a single file via esbuild and uploads it. There is no documentation-upload step in the current deploy path -- `ui/`, `core/`, and `.claude/` are not touched by deploy.
187
198
 
188
199
  ---
189
200
 
@@ -199,29 +210,29 @@ Contains `ELEVASIS_PLATFORM_KEY` (and optionally `ELEVASIS_PLATFORM_KEY_DEV`). G
199
210
 
200
211
  ### `.npmrc`
201
212
 
202
- Sets `auto-install-peers = true`. The SDK uses Zod as a peer dependency, so this ensures Zod installs automatically.
213
+ Sets `ignore-workspace-root-check=true` (isolates this project so pnpm does not walk up and find the monorepo's `pnpm-workspace.yaml`) and `auto-install-peers=true` (the SDK uses Zod as a peer dependency, so this ensures Zod installs automatically).
203
214
 
204
215
  ### `.gitignore`
205
216
 
206
- Excludes `node_modules/`, `dist/`, `*.tsbuildinfo`, `.tanstack/`, `.env` and `.env.*` (except `.env.example`), `*.log`, `.claude/settings.local.json`, hook-written state in `.claude/logs/*.state.json`, `operations/dist/`, `operations/__elevasis_worker.ts` (a temporary file generated during deployment), and `tmp/*` (except `.gitkeep`).
217
+ Excludes `node_modules/`, `dist/`, `*.tsbuildinfo`, `.tanstack/`, `.env` and `.env.*` (except `.env.example`), `*.log`, `.DS_Store`, `.claude/settings.local.json`, hook-written state in `.claude/logs/*.state.json`, `operations/dist/`, `operations/__elevasis_worker.ts` (a temporary file generated during deployment), `tmp/*` (except `.gitkeep`), and `.vercel`.
207
218
 
208
219
  ---
209
220
 
210
221
  ## File Reference
211
222
 
212
- | File / Directory | When You Edit It |
213
- | ----------------------------------- | ---------------------------------------------------------------------- |
214
- | `operations/src/index.ts` | Adding or removing resources, wiring a new domain |
215
- | `operations/src/<domain>/*.ts` | Writing and modifying workflow or agent logic |
216
- | `operations/src/metadata.ts` | Adding triggers, integrations, or human-checkpoint queue metadata |
217
- | `core/types/index.ts` | Defining or changing a workflow's Zod contract |
218
- | `core/config/organization-model.ts` | Never directly -- run `/om` instead |
219
- | `operations/elevasis.config.ts` | Changing project-level SDK settings (`defaultStatus`, `dev.port`) |
220
- | `.elevasis` | Never manually -- updated by `/git-sync` and platform tooling |
221
- | `.env` | Adding environment variables |
222
- | `CLAUDE.md` | Rarely -- project identity and preferences, mostly written by `/setup` |
223
- | `.claude/skills/*/SKILL.md` | Never in a derived project -- these arrive via `/git-sync` |
223
+ | File / Directory | When You Edit It |
224
+ | --------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
225
+ | `operations/src/index.ts` | Adding or removing resources, wiring a new domain |
226
+ | `operations/src/<domain>/*.ts` | Writing and modifying workflow or agent logic |
227
+ | `operations/src/metadata.ts` | Adding triggers, integrations, or human-checkpoint queue metadata |
228
+ | `core/types/index.ts` | Defining or changing a workflow's Zod contract |
229
+ | `core/config/organization-model.ts` and `core/config/organization-model/**` | Never directly -- run `/om` instead |
230
+ | `operations/elevasis.config.ts` | Changing project-level SDK settings (`defaultStatus`, `dev.port`) |
231
+ | `.elevasis` | Never manually -- updated by `/git-sync` and platform tooling |
232
+ | `.env` | Adding environment variables |
233
+ | `CLAUDE.md` | Rarely -- project identity and preferences, mostly written by `/setup` |
234
+ | `.claude/skills/*/SKILL.md` | Never in a derived project -- these arrive via `/git-sync` |
224
235
 
225
236
  ---
226
237
 
227
- **Last Updated:** 2026-08-06
238
+ **Last Updated:** 2026-08-17
@@ -82,7 +82,7 @@ SECTION C -- The Organization Model (3 items)
82
82
  10 Systems, actions, and labels [ ]
83
83
  11 Entity extensions -- BaseProject, BaseDeal [ ]
84
84
 
85
- SECTION D -- Modules (load on demand) (~6 items)
85
+ SECTION D -- Modules (load on demand) (6 items)
86
86
  12 HITL [ ]
87
87
  13 Schedules [ ]
88
88
  14 Notifications + integrations [ ]