@elevasis/sdk 1.49.0 → 1.51.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.
@@ -37,11 +37,11 @@ Each shell fails at a different layer, so a single inline-quoting fix does not c
37
37
 
38
38
  **Cross-shell rule:** file-based input is shell-agnostic -- only a path crosses the shell boundary. Prefer `@json:<path>` (or `-f` / `--input-file` for `exec` and `request:submit`) for any non-trivial JSON, and write the file with an editor rather than a shell heredoc.
39
39
 
40
- | Shell | Inline JSON | Why | Use instead |
41
- | -------------- | --------------------------------------- | --------------------------------------------- | ------------------------------------ |
40
+ | Shell | Inline JSON | Why | Use instead |
41
+ | -------------- | ------------------------------------- | --------------------------------------------- | ------------------------------------ |
42
42
  | bash | OK if values avoid `( ) & < > | ^ %` | run-script `cmd.exe` re-parses metacharacters | direct exec form, or `@json:<path>` |
43
- | PowerShell 5.1 | Never reliable | strips embedded `"`; `--%` and `\"` both fail | `@json:<path>` |
44
- | either | n/a | path arguments avoid all JSON shell escaping | `@json:<path>` + editor-written file |
43
+ | PowerShell 5.1 | Never reliable | strips embedded `"`; `--%` and `\"` both fail | `@json:<path>` |
44
+ | either | n/a | path arguments avoid all JSON shell escaping | `@json:<path>` + editor-written file |
45
45
 
46
46
  ---
47
47
 
@@ -125,14 +125,14 @@ Task checklist flags are also full replacements. `project:task:create`, `project
125
125
 
126
126
  **`project:task:save` flags:**
127
127
 
128
- | Flag | Description |
129
- | --------------------------- | ----------------------------------------- |
128
+ | Flag | Description |
129
+ | ------------------------- | ----------------------------------------- |
130
130
  | `--current-state <text>` | Required. Current state description |
131
131
  | `--files-modified <json>` | JSON array of modified file paths |
132
132
  | `--next-steps <text>` | Next steps description |
133
133
  | `--key-docs <json>` | JSON array of key doc paths |
134
134
  | `--tools <json>` | JSON array of tool names used |
135
- | `--pretty` | Human-readable output instead of raw JSON |
135
+ | `--pretty` | Human-readable output instead of raw JSON |
136
136
  | `--api-url <url>` | Override the API base URL |
137
137
 
138
138
  ### Notes
@@ -166,13 +166,13 @@ Submits a structured request report to `POST /api/external/requests`. The payloa
166
166
 
167
167
  **Flags:**
168
168
 
169
- | Flag | Description |
170
- | --------------------------- | ----------------------------------------------------------------------------- |
171
- | `-i, --input <json>` | Request body as JSON string |
172
- | `-f, --input-file <path>` | Read body from a JSON file; relative paths resolve against the project root |
173
- | `--pretty` | Human-readable output instead of raw JSON |
174
- | `--cleanup-input` | Delete the input file after success (only files under `<projectRoot>/tmp/`) |
175
- | `--api-url <url>` | Override the API base URL |
169
+ | Flag | Description |
170
+ | ------------------------- | --------------------------------------------------------------------------- |
171
+ | `-i, --input <json>` | Request body as JSON string |
172
+ | `-f, --input-file <path>` | Read body from a JSON file; relative paths resolve against the project root |
173
+ | `--pretty` | Human-readable output instead of raw JSON |
174
+ | `--cleanup-input` | Delete the input file after success (only files under `<projectRoot>/tmp/`) |
175
+ | `--api-url <url>` | Override the API base URL |
176
176
 
177
177
  **Read commands** (added once `request` cleared the 4-point promotion bar):
178
178
 
@@ -183,13 +183,13 @@ elevasis-sdk request:get <id>
183
183
 
184
184
  `request:list` calls `GET /api/external/requests` and `request:get` calls `GET /api/external/requests/:id`. Both default to raw JSON; pass `--pretty` for human-readable output (mirrors `request:submit`). Organization scope is derived from the API key, so `request:get` returns 404 for an id belonging to another tenant -- a cross-tenant id is indistinguishable from a missing one (no existence oracle).
185
185
 
186
- | Flag | Description |
187
- | --------------------- | ----------------------------------------------- |
186
+ | Flag | Description |
187
+ | ------------------- | ----------------------------------------------- |
188
188
  | `--status <status>` | Filter list by status (`RequestStatusEnum`) |
189
189
  | `--severity <sev>` | Filter list by severity (`RequestSeverityEnum`) |
190
190
  | `--project-id <id>` | Filter list by project id |
191
191
  | `--limit <n>` | Max rows (1-200, default 50) |
192
- | `--pretty` | Human-readable output instead of raw JSON |
192
+ | `--pretty` | Human-readable output instead of raw JSON |
193
193
  | `--api-url <url>` | Override the API base URL |
194
194
 
195
195
  **Write-back commands** (amend or withdraw a request you filed):
@@ -201,11 +201,11 @@ elevasis-sdk request:delete <id>
201
201
 
202
202
  `request:update` calls `PATCH /api/external/requests/:id` to backfill fields (for example `project_id` / `task_id` on rows filed before those were populated) -- the payload is validated against `UpdateRequestInputSchema`. `status` is not writable through this command; it is the platform's answer to the request, so poll `request:get` to read it instead. `request:delete` calls `DELETE /api/external/requests/:id` and is permanent -- the row is removed, not archived. Use `request:update` to amend a request instead of deleting and resubmitting.
203
203
 
204
- | Flag | Description |
205
- | --------------------------- | --------------------------------------------------------------------------- |
204
+ | Flag | Description |
205
+ | ------------------------- | --------------------------------------------------------------------------- |
206
206
  | `-i, --input <json>` | Fields to change, as a JSON object (update: required unless `--input-file`) |
207
207
  | `-f, --input-file <path>` | Read the changed fields from a JSON file instead of `--input` |
208
- | `--pretty` | Human-readable output instead of raw JSON |
208
+ | `--pretty` | Human-readable output instead of raw JSON |
209
209
  | `--api-url <url>` | Override the API base URL |
210
210
 
211
211
  ---
@@ -214,9 +214,9 @@ elevasis-sdk request:delete <id>
214
214
 
215
215
  Most `project:*` commands support:
216
216
 
217
- | Flag | Description |
218
- | ------------------- | -------------------------------------------------- |
219
- | `--pretty` | Human-readable terminal output instead of raw JSON |
217
+ | Flag | Description |
218
+ | ----------------- | -------------------------------------------------- |
219
+ | `--pretty` | Human-readable terminal output instead of raw JSON |
220
220
  | `--api-url <url>` | Override the API base URL |
221
221
 
222
222
  For exact required flags and accepted enum values, see the command source under `packages/sdk/src/cli/commands/project/`.
@@ -254,16 +254,16 @@ elevasis-sdk note:create --content <text>
254
254
 
255
255
  **Flags:**
256
256
 
257
- | Flag | Description |
258
- | ------------------------- | ----------------------------------------------------------------------------------------- |
257
+ | Flag | Description |
258
+ | ----------------------- | ----------------------------------------------------------------------------------------- |
259
259
  | `--content <text>` | Required. The note body text |
260
260
  | `--user <email>` | **Required.** Target user email |
261
261
  | `--title <text>` | Optional note title |
262
262
  | `--priority <priority>` | Priority level: `low`, `normal` (default), `high`, or `urgent` |
263
- | `--pinned` | Pin the note to the top of the panel |
263
+ | `--pinned` | Pin the note to the top of the panel |
264
264
  | `--source <id>` | Source identifier -- set this to the workflow or agent ID when calling from agent runtime |
265
265
  | `--api-url <url>` | Override the API base URL |
266
- | `--pretty` | Human-readable terminal output instead of raw JSON |
266
+ | `--pretty` | Human-readable terminal output instead of raw JSON |
267
267
 
268
268
  **Behavior:**
269
269
 
@@ -314,15 +314,15 @@ elevasis-sdk note:list --user <email>
314
314
 
315
315
  **Flags:**
316
316
 
317
- | Flag | Description |
318
- | ------------------------- | -------------------------------------------------------- |
317
+ | Flag | Description |
318
+ | ----------------------- | -------------------------------------------------------- |
319
319
  | `--user <email>` | Required. The user whose notes to retrieve |
320
320
  | `--priority <priority>` | Filter by priority: `low`, `normal`, `high`, or `urgent` |
321
- | `--pinned` | Return only pinned notes |
321
+ | `--pinned` | Return only pinned notes |
322
322
  | `--limit <n>` | Maximum number of results to return |
323
323
  | `--offset <n>` | Pagination offset |
324
324
  | `--api-url <url>` | Override the API base URL |
325
- | `--pretty` | Human-readable terminal output instead of raw JSON |
325
+ | `--pretty` | Human-readable terminal output instead of raw JSON |
326
326
 
327
327
  **Behavior:**
328
328
 
@@ -357,9 +357,9 @@ elevasis-sdk note:list --user ops@acme.com --priority high --pinned --pretty
357
357
 
358
358
  ### Shared Flags
359
359
 
360
- | Flag | Description |
361
- | ------------------- | -------------------------------------------------- |
362
- | `--pretty` | Human-readable terminal output instead of raw JSON |
360
+ | Flag | Description |
361
+ | ----------------- | -------------------------------------------------- |
362
+ | `--pretty` | Human-readable terminal output instead of raw JSON |
363
363
  | `--api-url <url>` | Override the API base URL |
364
364
 
365
365
  ### Command Boundary
@@ -399,9 +399,9 @@ These are space-separated subcommands under the `error` group (`error resolve`,
399
399
 
400
400
  **Flags:**
401
401
 
402
- | Flag | Description |
403
- | ------------------- | ---------------------------------------------------- |
404
- | `--prod` | Target production (overrides `NODE_ENV=development`) |
402
+ | Flag | Description |
403
+ | ----------------- | ---------------------------------------------------- |
404
+ | `--prod` | Target production (overrides `NODE_ENV=development`) |
405
405
  | `--api-url <url>` | Override the API base URL |
406
406
 
407
407
  **Implementation:** `packages/sdk/src/cli/commands/error/`
@@ -447,19 +447,19 @@ JWT-gated routes at the original unprefixed paths remain for the Command Center.
447
447
 
448
448
  **`acquisition:list:get` flags:**
449
449
 
450
- | Flag | Description |
451
- | ------------------------ | -------------------------------------------------- |
452
- | `--no-include-deals` | Exclude thin deal lineage refs from the response |
450
+ | Flag | Description |
451
+ | ---------------------- | -------------------------------------------------- |
452
+ | `--no-include-deals` | Exclude thin deal lineage refs from the response |
453
453
  | `--deal-limit <limit>` | Maximum number of thin deal refs to include |
454
- | `--include-progress` | Include processing progress aggregates |
455
- | `--pretty` | Human-readable terminal output instead of raw JSON |
454
+ | `--include-progress` | Include processing progress aggregates |
455
+ | `--pretty` | Human-readable terminal output instead of raw JSON |
456
456
  | `--api-url <url>` | Override the API base URL |
457
457
 
458
458
  **Shared flags (all other acquisition commands):**
459
459
 
460
- | Flag | Description |
461
- | ------------------- | -------------------------------------------------- |
462
- | `--pretty` | Human-readable terminal output instead of raw JSON |
460
+ | Flag | Description |
461
+ | ----------------- | -------------------------------------------------- |
462
+ | `--pretty` | Human-readable terminal output instead of raw JSON |
463
463
  | `--api-url <url>` | Override the API base URL |
464
464
 
465
465
  **Implementation:** `packages/sdk/src/cli/commands/acquisition/`
@@ -505,9 +505,9 @@ elevasis-sdk client:delete <id>
505
505
 
506
506
  **Flags:**
507
507
 
508
- | Flag | Description |
509
- | ------------------- | -------------------------------------------------- |
510
- | `--pretty` | Human-readable terminal output instead of raw JSON |
508
+ | Flag | Description |
509
+ | ----------------- | -------------------------------------------------- |
510
+ | `--pretty` | Human-readable terminal output instead of raw JSON |
511
511
  | `--api-url <url>` | Override the API base URL |
512
512
 
513
513
  **Implementation:** `packages/sdk/src/cli/commands/client/` (client family)
@@ -530,10 +530,10 @@ elevasis-sdk agent:get <id>
530
530
 
531
531
  **Flags:**
532
532
 
533
- | Flag | Description |
534
- | ------------------- | -------------------------------------------------------- |
535
- | `--json` | Output raw JSON instead of the default formatted display |
536
- | `--prod` | Target production (overrides `NODE_ENV=development`) |
533
+ | Flag | Description |
534
+ | ----------------- | -------------------------------------------------------- |
535
+ | `--json` | Output raw JSON instead of the default formatted display |
536
+ | `--prod` | Target production (overrides `NODE_ENV=development`) |
537
537
  | `--api-url <url>` | Override the API base URL |
538
538
 
539
539
  Note the direction: `agent:*` defaults to a formatted display and opts into JSON with `--json`, the opposite convention from the `--pretty`-to-opt-into-formatted commands elsewhere on this page.
@@ -575,48 +575,48 @@ must be exposed as a separate explicit command.
575
575
 
576
576
  **`session:create` flags:**
577
577
 
578
- | Flag | Description |
579
- | --------------------- | ------------------------------ |
578
+ | Flag | Description |
579
+ | ------------------- | ------------------------------ |
580
580
  | `--user-id <id>` | Optional user ID for session |
581
581
  | `--metadata <json>` | Optional session metadata JSON |
582
- | `--json` | Output as JSON |
582
+ | `--json` | Output as JSON |
583
583
  | `--api-url <url>` | Override the API base URL |
584
584
 
585
585
  **`session:turn` flags:**
586
586
 
587
- | Flag | Description |
588
- | --------------------------- | -------------------------------- |
587
+ | Flag | Description |
588
+ | ------------------------- | -------------------------------- |
589
589
  | `-i, --input <json>` | Turn input as JSON |
590
590
  | `-f, --input-file <path>` | Read turn input from a JSON file |
591
- | `--json` | Output as JSON |
591
+ | `--json` | Output as JSON |
592
592
  | `--api-url <url>` | Override the API base URL |
593
593
 
594
594
  **`session:messages` flags:**
595
595
 
596
- | Flag | Description |
597
- | --------------------- | ----------------------------------------------------------- |
596
+ | Flag | Description |
597
+ | ------------------- | ----------------------------------------------------------- |
598
598
  | `--limit <limit>` | Messages per API page; default comes from the API |
599
599
  | `--cursor <cursor>` | Message index cursor to start after |
600
- | `--page` | Fetch one API page for debugging instead of all pages |
601
- | `--all` | Fetch all pages; this is the default transcript export mode |
602
- | `--json` | Output as JSON |
600
+ | `--page` | Fetch one API page for debugging instead of all pages |
601
+ | `--all` | Fetch all pages; this is the default transcript export mode |
602
+ | `--json` | Output as JSON |
603
603
  | `--api-url <url>` | Override the API base URL |
604
604
 
605
605
  **`session:list` flags:**
606
606
 
607
- | Flag | Description |
608
- | ---------------------- | ------------------------------------ |
607
+ | Flag | Description |
608
+ | -------------------- | ------------------------------------ |
609
609
  | `--resource-id <id>` | Filter by agent resource ID |
610
610
  | `--user-id <id>` | Filter by user ID |
611
611
  | `--limit <limit>` | Maximum number of sessions to return |
612
- | `--json` | Output as JSON |
612
+ | `--json` | Output as JSON |
613
613
  | `--api-url <url>` | Override the API base URL |
614
614
 
615
615
  **Shared flags (`session:get`, `session:end`):**
616
616
 
617
- | Flag | Description |
618
- | ------------------- | ------------------------- |
619
- | `--json` | Output as JSON |
617
+ | Flag | Description |
618
+ | ----------------- | ------------------------- |
619
+ | `--json` | Output as JSON |
620
620
  | `--api-url <url>` | Override the API base URL |
621
621
 
622
622
  **Implementation:** `packages/sdk/src/cli/commands/session/session.ts`
@@ -639,8 +639,8 @@ elevasis-sdk queue:status --pretty
639
639
 
640
640
  **`queue:list` filter flags:**
641
641
 
642
- | Flag | Description |
643
- | --------------------------- | --------------------------------------------------------------------------- |
642
+ | Flag | Description |
643
+ | ------------------------- | --------------------------------------------------------------------------- |
644
644
  | `--status <status>` | Filter by status: `pending`, `processing`, `completed`, `failed`, `expired` |
645
645
  | `--human-checkpoint <id>` | Filter by checkpoint ID, or `ungrouped` for tasks without a checkpoint |
646
646
  | `--time-range <range>` | Filter by created time range: `1h`, `24h`, `7d`, `30d` |
@@ -648,37 +648,37 @@ elevasis-sdk queue:status --pretty
648
648
  | `--priority-max <number>` | Maximum priority, 1-10 |
649
649
  | `--limit <limit>` | Maximum number of tasks to return |
650
650
  | `--offset <offset>` | Number of tasks to skip |
651
- | `--pretty` | Human-readable output instead of raw JSON |
651
+ | `--pretty` | Human-readable output instead of raw JSON |
652
652
  | `--api-url <url>` | Override the API base URL |
653
653
 
654
654
  **`queue:select` flags:**
655
655
 
656
- | Flag | Description |
657
- | -------------------- | ----------------------------------------- |
656
+ | Flag | Description |
657
+ | ------------------ | ----------------------------------------- |
658
658
  | `--action-id <id>` | Required. Action ID to select |
659
659
  | `--payload <json>` | Optional action payload as JSON |
660
660
  | `--notes <notes>` | Optional human decision notes |
661
- | `--pretty` | Human-readable output instead of raw JSON |
661
+ | `--pretty` | Human-readable output instead of raw JSON |
662
662
  | `--api-url <url>` | Override the API base URL |
663
663
 
664
664
  **Shared flags (`queue:get`, `queue:expire`):**
665
665
 
666
- | Flag | Description |
667
- | ------------------- | ----------------------------------------- |
668
- | `--pretty` | Human-readable output instead of raw JSON |
666
+ | Flag | Description |
667
+ | ----------------- | ----------------------------------------- |
668
+ | `--pretty` | Human-readable output instead of raw JSON |
669
669
  | `--api-url <url>` | Override the API base URL |
670
670
 
671
671
  **`queue:status` filter flags:**
672
672
 
673
673
  `queue:status` shares the checkpoint/status view rather than the task list, so it takes its own subset of filters, not the shared flags above:
674
674
 
675
- | Flag | Description |
676
- | --------------------------- | --------------------------------------------------------------------- |
675
+ | Flag | Description |
676
+ | ------------------------- | --------------------------------------------------------------------- |
677
677
  | `--time-range <range>` | Filter by created time range: `1h`, `24h`, `7d`, `30d` |
678
678
  | `--priority-min <number>` | Minimum priority, 1-10 |
679
679
  | `--priority-max <number>` | Maximum priority, 1-10 |
680
680
  | `--status <status>` | Filter checkpoint totals by status: `pending`, `completed`, `expired` |
681
- | `--pretty` | Human-readable output instead of raw JSON |
681
+ | `--pretty` | Human-readable output instead of raw JSON |
682
682
  | `--api-url <url>` | Override the API base URL |
683
683
 
684
684
  **Auth:** Calls `/api/external/command-queue/*` with API-key auth.
@@ -725,14 +725,14 @@ elevasis-sdk schedule:cancel <id> --pretty
725
725
 
726
726
  **`schedule:update` flags:**
727
727
 
728
- | Flag | Description |
729
- | ---------------------------- | ------------------------------------------------------------------------- |
728
+ | Flag | Description |
729
+ | -------------------------- | ------------------------------------------------------------------------- |
730
730
  | `--name <name>` | New schedule name |
731
731
  | `--description <text>` | New schedule description |
732
- | `--clear-description` | Remove the schedule description (mutually exclusive with `--description`) |
732
+ | `--clear-description` | Remove the schedule description (mutually exclusive with `--description`) |
733
733
  | `--schedule-config <json>` | Replacement schedule config JSON |
734
734
  | `--max-retries <number>` | Maximum retry attempts, 0-10 |
735
- | `--pretty` | Human-readable output instead of raw JSON |
735
+ | `--pretty` | Human-readable output instead of raw JSON |
736
736
  | `--api-url <url>` | Override the API base URL |
737
737
 
738
738
  At least one field must be provided. `--description` and `--clear-description` are mutually exclusive.
@@ -754,14 +754,16 @@ Knowledge graph inspection, plus an Organization Model write surface (`om:scaffo
754
754
 
755
755
  **`om:doctor` flags:**
756
756
 
757
- | Flag | Description |
758
- | ------------------------ | ------------------------------------------------------------ |
757
+ | Flag | Description |
758
+ | ---------------------- | ------------------------------------------------------------ |
759
759
  | `--scope <systemPath>` | Limit diagnostics to a system path and its descendants |
760
- | `--skip-deployed` | Structural checks only -- do not ask the API about readiness |
761
- | `--json` | Output as a grouped JSON envelope |
762
- | `--prod` | Target production (overrides `NODE_ENV=development`) |
760
+ | `--skip-deployed` | Structural checks only -- do not ask the API about readiness |
761
+ | `--json` | Output as a grouped JSON envelope |
762
+ | `--prod` | Target production (overrides `NODE_ENV=development`) |
763
763
  | `--api-url <url>` | Override the API base URL |
764
764
 
765
+ The readiness arm enumerates the **platform catalog** of System Interfaces, not only the Systems your own model declares, so a System you have not adopted still appears with diagnostics. An unadopted System is informational and does not affect the exit code; a System you declared locally that is missing from the deployed snapshot is drift and does. For the compact one-line-per-System version of the same data, use [`elevasis-sdk doctor`](cli.mdx#elevasis-sdk-doctor) -- both commands share one fetch.
766
+
765
767
  In tenant projects, SDK read commands load `core/config/organization-model.ts` through the SDK's layout-aware TypeScript loader. The temporary bundle and dependency resolution are anchored at the package root that owns SDK dependencies, so hoisted pnpm workspaces resolve `esbuild` and `@elevasis/core` correctly. Missing org-model files still return the default model; malformed files or files with no usable export emit diagnostics. `knowledge:generate` / `om:generate` is the exception because it reads MDX and codegen inputs directly.
766
768
 
767
769
  **Quick reference:**
@@ -787,12 +789,12 @@ Universal keyword search across the entire Organization Model (systems, resource
787
789
  elevasis-sdk knowledge:search <query> [--limit <n>] [--kinds <list>] [--json] [--ids-only]
788
790
  ```
789
791
 
790
- | Flag | Description |
791
- | ------------------ | ------------------------------------------------------------------------------ |
792
+ | Flag | Description |
793
+ | ---------------- | ------------------------------------------------------------------------------ |
792
794
  | `--limit <n>` | Max hits to return; `0` = unlimited. Default: 10 |
793
795
  | `--kinds <list>` | Comma-separated kinds filter: `system,resource,knowledge,ontology,role,policy` |
794
- | `--json` | Print wrapped JSON envelope `{ query, limit, kinds, count, results }` |
795
- | `--ids-only` | Print one ID per line (for piping) |
796
+ | `--json` | Print wrapped JSON envelope `{ query, limit, kinds, count, results }` |
797
+ | `--ids-only` | Print one ID per line (for piping) |
796
798
 
797
799
  **Examples:**
798
800
 
@@ -839,8 +841,8 @@ Generate Organization Model knowledge nodes from MDX source files. Alias: `om:ge
839
841
  elevasis-sdk knowledge:generate [--source <path>] [--output <path>] [--flags-output <path>]
840
842
  ```
841
843
 
842
- | Flag | Description |
843
- | ------------------------- | ----------------------------------------------------------------------------------------------------- |
844
+ | Flag | Description |
845
+ | ----------------------- | ----------------------------------------------------------------------------------------------------- |
844
846
  | `--source <path>` | MDX source directory relative to project root. Default: `core/config/knowledge/nodes` |
845
847
  | `--output <path>` | Generated TS file path relative to project root. Default: `core/config/knowledge/_generated/nodes.ts` |
846
848
  | `--flags-output <path>` | Generated knowledge flag registry path. Default: `.claude/registries/knowledge-flags.json` |
@@ -870,13 +872,13 @@ elevasis-sdk om:scaffold:fill --gaps tmp/conformance-gaps.json
870
872
 
871
873
  **Splice targets:**
872
874
 
873
- | Subcommand | Writes |
874
- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
875
- | `om:scaffold:system` | Splices `core/config/organization-model/systems.ts` |
876
- | `om:scaffold:resource` | Splices `core/config/organization-model/systems.ts` -- **known-broken, see below** |
877
- | `om:scaffold:role` | Splices `core/config/organization-model/profile.ts` |
875
+ | Subcommand | Writes |
876
+ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
877
+ | `om:scaffold:system` | Splices `core/config/organization-model/systems.ts` |
878
+ | `om:scaffold:resource` | Splices `core/config/organization-model/systems.ts` -- **known-broken, see below** |
879
+ | `om:scaffold:role` | Splices `core/config/organization-model/profile.ts` |
878
880
  | `om:scaffold:knowledge` | Writes a new `core/config/knowledge/nodes/<id>.mdx` file (no splice) |
879
- | `om:scaffold:ontology` | Print-only by design -- writes nothing, and carries no `--write` flag |
881
+ | `om:scaffold:ontology` | Print-only by design -- writes nothing, and carries no `--write` flag |
880
882
  | `om:scaffold:fill` | Writes new `core/config/organization-model/api-interfaces/<systemPath>.ts` const files and splices the import + field into `systems.ts` |
881
883
 
882
884
  **`om:scaffold:resource` is currently non-functional against all three real project layouts.** Its splice anchor never received the anchor-scoping fix that landed for `om:scaffold:role` on 2026-08-11, so it still searches for the resource-descriptors closing brace unscoped -- in a real file that closing-brace shape recurs, and it splices into the wrong one, producing invalid TypeScript. The command's own post-write validation catches this and rolls the file back, so it fails safely, but it does not currently produce a usable result. Do not rely on it until the anchor fix ships.
@@ -915,14 +917,14 @@ elevasis-sdk om:deprecate sales.crm --to archived --force --confirm archive:sale
915
917
 
916
918
  **`om:deprecate <systemPath>` flags:**
917
919
 
918
- | Flag | Description |
919
- | --------------------- | -------------------------------------------------------------------------- |
920
+ | Flag | Description |
921
+ | ------------------- | -------------------------------------------------------------------------- |
920
922
  | `--to <lifecycle>` | Target lifecycle: `deprecated` or `archived`. Default: `deprecated` |
921
- | `--dry-run` | Preview only (default) |
922
- | `--write` | Apply the lifecycle edit and run `om:doctor` |
923
- | `--force` | Allow archiving despite live dependents when paired with exact `--confirm` |
923
+ | `--dry-run` | Preview only (default) |
924
+ | `--write` | Apply the lifecycle edit and run `om:doctor` |
925
+ | `--force` | Allow archiving despite live dependents when paired with exact `--confirm` |
924
926
  | `--confirm <token>` | Exact archive confirmation token: `archive:<systemPath>` |
925
- | `--json` | Output JSON |
927
+ | `--json` | Output JSON |
926
928
 
927
929
  **Implementation:** `packages/sdk/src/cli/commands/om/rename.ts`, `packages/sdk/src/cli/commands/om/deprecate.ts` -- registered in `packages/sdk/src/cli/index.ts`
928
930
 
@@ -984,20 +986,20 @@ Matches the DB-backed namespaces documented above (`project:`, `client:`, `note:
984
986
  ### Reads
985
987
 
986
988
  ```bash
987
- elevasis-sdk content:list --status queued --pipeline-id short-form-repurpose
989
+ elevasis-sdk content:list --status <status> --pipeline-id <pipelineId>
988
990
  elevasis-sdk content:get <itemId>
989
991
  elevasis-sdk content:board <pipelineId> --pretty
990
992
  elevasis-sdk content:queue
991
993
  elevasis-sdk content:pipeline
992
994
  elevasis-sdk content:pipeline <pipelineId>
993
- elevasis-sdk content:distributions --pipeline-id short-form-repurpose
995
+ elevasis-sdk content:distributions --pipeline-id <pipelineId>
994
996
  elevasis-sdk content:source-assets --kind transcript
995
997
  elevasis-sdk content:source-asset <sourceAssetId>
996
998
  ```
997
999
 
998
1000
  - `content:list` -- list content items. Filters: `--status`, `--pillar`, `--pipeline-id`, `--client-id`, `--reviewed-by`, `--search` (matches title), `--limit`, `--offset`.
999
1001
  - `content:get <itemId>` -- one item plus its full attempt history and its distributions, in a single response. Each attempt carries a `sourceExecutionId`, so this call is the item's execution lineage in one hop -- feed any id straight into `elevasis-sdk execution` / `pnpm exec elevasis execution`.
1000
- - `content:board <pipelineId>` -- one pipeline rendered as columns: each declared step in `order`, each card at the first step its `processingState` has not recorded as `success`, and a gate with a waiting count on every `live` or `queued` step. Two buckets sit outside the columns: `done` (every declared step succeeded) and `unplaced` (the item's `processingState` names only steps the pipeline no longer declares). Unplaced items are never folded into column 1, so a non-empty bucket is a real signal that the step catalog moved underneath live items. `--limit` defaults to 100, the API's page ceiling for this route, and the command reports a **partial** board rather than truncating silently when a pipeline holds more items than one page.
1002
+ - `content:board <pipelineId>` -- one pipeline rendered as columns: each declared step in `order`, each card at the first step its `processingState` has not recorded as `success`, and a gate with a waiting count on every step whose `reviewVenue` is not `none`. Each gate reports its venue -- `queue` or `workspace` -- so the board says where the review happens rather than only that one is owed. Two buckets sit outside the columns: `done` (every declared step succeeded) and `unplaced` (the item's `processingState` names only steps the pipeline no longer declares). Unplaced items are never folded into column 1, so a non-empty bucket is a real signal that the step catalog moved underneath live items. `--limit` defaults to 100, the API's page ceiling for this route, and the command reports a **partial** board rather than truncating silently when a pipeline holds more items than one page.
1001
1003
  - `content:queue` -- items sitting on an open `queued`-gate review. Each row prints the item, the `stepKey` of the gate it is waiting on, and the attempt that opened it. This is the list `content:review` reads from -- see "Why `--step` is required" below.
1002
1004
  - `content:pipeline [id]` -- with no id, lists pipeline templates; with an id, returns that pipeline's step contract (step keys and review modes). Read from the **deployed** Organization Model snapshot, not a local project model -- a model edit that has not been redeployed produces a stale-snapshot 503 that looks like a code bug.
1003
1005
  - `content:distributions` -- list distribution rows (one per platform/format target per item). Filters: `--content-item-id`, `--pipeline-id`, `--platform`, `--status`, `--limit`, `--offset`.
@@ -1020,16 +1022,16 @@ elevasis-sdk content:review <itemId> --step <key> (--approve | --reject) --user
1020
1022
 
1021
1023
  **Flags:**
1022
1024
 
1023
- | Flag | Description |
1024
- | --------------------- | ----------------------------------------------------- |
1025
+ | Flag | Description |
1026
+ | ------------------- | ----------------------------------------------------- |
1025
1027
  | `--step <key>` | Required. The `stepKey` of the `queued` gate to clear |
1026
- | `--approve` | Approve the item at that step |
1027
- | `--reject` | Reject the item at that step. Requires `--reason` |
1028
+ | `--approve` | Approve the item at that step |
1029
+ | `--reject` | Reject the item at that step. Requires `--reason` |
1028
1030
  | `--user <email>` | Required. The acting reviewer's email |
1029
1031
  | `--feedback <text>` | Optional reviewer feedback, recorded on the review |
1030
1032
  | `--reason <text>` | Rejection reason. Required when `--reject` is used |
1031
1033
  | `--api-url <url>` | Override the API base URL |
1032
- | `--pretty` | Human-readable output instead of raw JSON |
1034
+ | `--pretty` | Human-readable output instead of raw JSON |
1033
1035
 
1034
1036
  `--approve` and `--reject` are mutually exclusive; exactly one is required.
1035
1037
 
@@ -1079,8 +1081,8 @@ this flag just lets the CLI-created asset point at it, alongside or instead of `
1079
1081
 
1080
1082
  **Flags:**
1081
1083
 
1082
- | Flag | Description |
1083
- | -------------------------- | ------------------------------------------------------------------------------------- |
1084
+ | Flag | Description |
1085
+ | ------------------------ | ------------------------------------------------------------------------------------- |
1084
1086
  | `--kind <kind>` | Required. Source asset kind, validated against the org model catalog |
1085
1087
  | `--title <title>` | Required. Human-readable title (1-500 chars) |
1086
1088
  | `--text <value>` | Inline text, or `@path` to read a local file. Mutually exclusive with `--url` |
@@ -1091,9 +1093,9 @@ this flag just lets the CLI-created asset point at it, alongside or instead of `
1091
1093
  | `--metadata <json>` | Arbitrary metadata as a JSON object string. Mutually exclusive with `--metadata-file` |
1092
1094
  | `--metadata-file <path>` | Path to a JSON file containing metadata. Mutually exclusive with `--metadata` |
1093
1095
  | `--item <itemId>` | Link the new asset to this content item after creating it |
1094
- | `--prod` | Target production (overrides `NODE_ENV=development`) |
1096
+ | `--prod` | Target production (overrides `NODE_ENV=development`) |
1095
1097
  | `--api-url <url>` | Override the API base URL |
1096
- | `--pretty` | Human-readable output instead of raw JSON |
1098
+ | `--pretty` | Human-readable output instead of raw JSON |
1097
1099
 
1098
1100
  **`--text` accepts `@path` to read a local file**, the same convention as `exec --input`. Anything not
1099
1101
  starting with `@` is the literal value. The CLI refuses content over 500KB locally rather than sending
@@ -1152,8 +1154,8 @@ elevasis-sdk grant:disable <slug>
1152
1154
 
1153
1155
  **Flags:**
1154
1156
 
1155
- | Flag | Description |
1156
- | --------------------------- | -------------------------------------------------------------- |
1157
+ | Flag | Description |
1158
+ | ------------------------- | -------------------------------------------------------------- |
1157
1159
  | `--resource <id>` | Agent resource ID to expose (create: required) |
1158
1160
  | `--slug <slug>` | Public slug; defaults to a normalized `--resource` |
1159
1161
  | `--mode <mode>` | Access mode: `public` (default) or `code` |
@@ -1167,10 +1169,10 @@ elevasis-sdk grant:disable <slug>
1167
1169
  | `--tool-policy <json>` | Tool policy JSON object |
1168
1170
  | `--public-base-url <url>` | Base URL used to print the full public URL alongside the grant |
1169
1171
  | `--resource-id <id>` | Filter by agent resource ID (list only) |
1170
- | `--include-disabled` | Include disabled grants (list only) |
1171
- | `--prod` | Target production (overrides `NODE_ENV=development`) |
1172
+ | `--include-disabled` | Include disabled grants (list only) |
1173
+ | `--prod` | Target production (overrides `NODE_ENV=development`) |
1172
1174
  | `--api-url <url>` | Override the API base URL |
1173
- | `--json` | Output as JSON |
1175
+ | `--json` | Output as JSON |
1174
1176
 
1175
1177
  **API routes:** `GET /api/external/agent-access-grants`, `POST /api/external/agent-access-grants`, `PATCH /api/external/agent-access-grants/:slug`, `POST /api/external/agent-access-grants/:slug/disable`.
1176
1178