@elevasis/sdk 1.8.0 → 1.8.2
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 +15 -7
- package/package.json +2 -2
- package/reference/claude-config/logs/scaffold-registry-reminder.log +18 -0
- package/reference/claude-config/skills/configure/operations/features.md +9 -8
- package/reference/claude-config/skills/deploy/SKILL.md +1 -1
- package/reference/claude-config/skills/elevasis/SKILL.md +24 -24
- package/reference/claude-config/skills/project/SKILL.md +32 -0
- package/reference/claude-config/skills/save/SKILL.md +3 -3
- package/reference/claude-config/skills/submit-request/SKILL.md +5 -5
- package/reference/scaffold/reference/contracts.md +5 -1
- package/reference/scaffold/ui/feature-shell.mdx +1 -0
package/dist/cli.cjs
CHANGED
|
@@ -40507,12 +40507,12 @@ function wrapAction(commandName, fn) {
|
|
|
40507
40507
|
return async (...args) => {
|
|
40508
40508
|
try {
|
|
40509
40509
|
await fn(...args);
|
|
40510
|
-
process.
|
|
40510
|
+
process.exitCode = 0;
|
|
40511
40511
|
} catch (error46) {
|
|
40512
40512
|
const errorMessage = error46 instanceof Error ? error46.message : String(error46);
|
|
40513
40513
|
console.error(source_default.red("\nError:"), errorMessage);
|
|
40514
40514
|
console.error(source_default.gray(`Run "elevasis-sdk ${commandName} --help" for more information`));
|
|
40515
|
-
process.
|
|
40515
|
+
process.exitCode = 1;
|
|
40516
40516
|
}
|
|
40517
40517
|
};
|
|
40518
40518
|
}
|
|
@@ -40520,7 +40520,7 @@ function wrapAction(commandName, fn) {
|
|
|
40520
40520
|
// package.json
|
|
40521
40521
|
var package_default = {
|
|
40522
40522
|
name: "@elevasis/sdk",
|
|
40523
|
-
version: "1.8.
|
|
40523
|
+
version: "1.8.2",
|
|
40524
40524
|
description: "SDK for building Elevasis organization resources",
|
|
40525
40525
|
type: "module",
|
|
40526
40526
|
bin: {
|
|
@@ -40950,17 +40950,25 @@ var POLL_INTERVAL_MS = 3e3;
|
|
|
40950
40950
|
async function pollForCompletion(resourceId, executionId, apiUrl) {
|
|
40951
40951
|
const pollSpinner = ora("Waiting for completion...").start();
|
|
40952
40952
|
const startTime = Date.now();
|
|
40953
|
+
let interrupted = false;
|
|
40953
40954
|
const cleanup = () => {
|
|
40955
|
+
interrupted = true;
|
|
40956
|
+
process.removeListener("SIGINT", cleanup);
|
|
40954
40957
|
pollSpinner.stop();
|
|
40955
40958
|
console.log();
|
|
40956
40959
|
console.log(source_default.yellow("Polling stopped. Execution continues on server."));
|
|
40957
40960
|
console.log(source_default.gray(" Execution ID:"), source_default.cyan(executionId));
|
|
40958
40961
|
console.log(source_default.dim(" Check status manually or re-run with --async"));
|
|
40959
|
-
process.exit(0);
|
|
40960
40962
|
};
|
|
40961
40963
|
process.on("SIGINT", cleanup);
|
|
40962
40964
|
while (true) {
|
|
40965
|
+
if (interrupted) {
|
|
40966
|
+
return;
|
|
40967
|
+
}
|
|
40963
40968
|
await new Promise((resolve5) => setTimeout(resolve5, POLL_INTERVAL_MS));
|
|
40969
|
+
if (interrupted) {
|
|
40970
|
+
return;
|
|
40971
|
+
}
|
|
40964
40972
|
const elapsed = Math.round((Date.now() - startTime) / 1e3);
|
|
40965
40973
|
pollSpinner.text = `Waiting for completion... (${elapsed}s)`;
|
|
40966
40974
|
try {
|
|
@@ -41078,7 +41086,7 @@ function registerExecCommand(program3) {
|
|
|
41078
41086
|
console.log(source_default.yellow("Could not recover. The execution may still be running on the server."));
|
|
41079
41087
|
console.log(source_default.dim(" Check status manually or re-run with --async"));
|
|
41080
41088
|
}
|
|
41081
|
-
|
|
41089
|
+
return;
|
|
41082
41090
|
}
|
|
41083
41091
|
spinner.fail(source_default.red("Execution failed"));
|
|
41084
41092
|
throw error46;
|
|
@@ -42293,7 +42301,7 @@ function registerTaskGet(program3) {
|
|
|
42293
42301
|
program3.command("project:task:get <id>").description("Get a task by ID\n Example: elevasis-sdk project:task:get <uuid>").option("--api-url <url>", "API base URL").option("--pretty", "Render human-readable output instead of raw JSON").action(
|
|
42294
42302
|
wrapAction("project:task:get", async (id, options) => {
|
|
42295
42303
|
const apiUrl = resolveApiUrl(options.apiUrl);
|
|
42296
|
-
const result = await apiGet(`/api/external/tasks/${id}`, apiUrl);
|
|
42304
|
+
const result = await apiGet(`/api/external/project-tasks/${id}`, apiUrl);
|
|
42297
42305
|
if (options.pretty) {
|
|
42298
42306
|
const t = result.task;
|
|
42299
42307
|
console.log(source_default.cyan(`
|
|
@@ -42423,7 +42431,7 @@ function registerTaskResume(program3) {
|
|
|
42423
42431
|
).option("--api-url <url>", "API base URL").option("--pretty", "Render a human-readable resume briefing instead of raw JSON").action(
|
|
42424
42432
|
wrapAction("project:task:resume", async (id, options) => {
|
|
42425
42433
|
const apiUrl = resolveApiUrl(options.apiUrl);
|
|
42426
|
-
const result = await apiGet(`/api/external/tasks/${id}`, apiUrl);
|
|
42434
|
+
const result = await apiGet(`/api/external/project-tasks/${id}`, apiUrl);
|
|
42427
42435
|
const task = result.task;
|
|
42428
42436
|
const ctx = task.resume_context ?? {};
|
|
42429
42437
|
if (options.pretty) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elevasis/sdk",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.2",
|
|
4
4
|
"description": "SDK for building Elevasis organization resources",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"tsup": "^8.0.0",
|
|
45
45
|
"typescript": "5.9.2",
|
|
46
46
|
"zod": "^4.1.0",
|
|
47
|
-
"@repo/core": "0.7.
|
|
47
|
+
"@repo/core": "0.7.1",
|
|
48
48
|
"@repo/typescript-config": "0.0.0"
|
|
49
49
|
},
|
|
50
50
|
"scripts": {
|
|
@@ -15,3 +15,21 @@
|
|
|
15
15
|
[2026-04-21T02:40:59.696Z] SKIP — registry not found (pre-SDK-delivery)
|
|
16
16
|
[2026-04-21T02:46:47.986Z] SKIP — registry not found (pre-SDK-delivery)
|
|
17
17
|
[2026-04-21T02:46:54.532Z] SKIP — registry not found (pre-SDK-delivery)
|
|
18
|
+
[2026-04-21T07:44:32.528Z] SKIP — registry not found (pre-SDK-delivery)
|
|
19
|
+
[2026-04-21T07:52:53.483Z] SKIP — registry not found (pre-SDK-delivery)
|
|
20
|
+
[2026-04-21T07:54:29.656Z] SKIP — registry not found (pre-SDK-delivery)
|
|
21
|
+
[2026-04-21T07:54:33.615Z] SKIP — registry not found (pre-SDK-delivery)
|
|
22
|
+
[2026-04-21T07:57:28.696Z] SKIP — registry not found (pre-SDK-delivery)
|
|
23
|
+
[2026-04-21T08:00:48.300Z] SKIP — registry not found (pre-SDK-delivery)
|
|
24
|
+
[2026-04-21T08:00:49.082Z] SKIP — registry not found (pre-SDK-delivery)
|
|
25
|
+
[2026-04-21T08:00:50.494Z] SKIP — registry not found (pre-SDK-delivery)
|
|
26
|
+
[2026-04-21T08:00:56.735Z] SKIP — registry not found (pre-SDK-delivery)
|
|
27
|
+
[2026-04-21T08:00:58.798Z] SKIP — registry not found (pre-SDK-delivery)
|
|
28
|
+
[2026-04-21T08:01:07.662Z] SKIP — registry not found (pre-SDK-delivery)
|
|
29
|
+
[2026-04-21T08:01:19.062Z] SKIP — registry not found (pre-SDK-delivery)
|
|
30
|
+
[2026-04-21T08:01:24.353Z] SKIP — registry not found (pre-SDK-delivery)
|
|
31
|
+
[2026-04-21T08:01:42.662Z] SKIP — registry not found (pre-SDK-delivery)
|
|
32
|
+
[2026-04-21T08:12:30.121Z] SKIP — registry not found (pre-SDK-delivery)
|
|
33
|
+
[2026-04-21T08:14:55.475Z] SKIP — registry not found (pre-SDK-delivery)
|
|
34
|
+
[2026-04-21T08:17:01.426Z] SKIP — registry not found (pre-SDK-delivery)
|
|
35
|
+
[2026-04-21T08:36:02.820Z] SKIP — registry not found (pre-SDK-delivery)
|
|
@@ -11,10 +11,10 @@ This operation handles both toggling existing features and introducing custom fe
|
|
|
11
11
|
|
|
12
12
|
## Background: Level A vs Level B
|
|
13
13
|
|
|
14
|
-
- **Level A (config-only edit):** The feature exists in the platform defaults
|
|
15
|
-
|
|
16
|
-
`foundations/config/organization-model.ts` overrides its `enabled` flag or
|
|
17
|
-
No new TypeScript files needed.
|
|
14
|
+
- **Level A (config-only edit):** The feature exists in the platform defaults (see
|
|
15
|
+
`node_modules/@elevasis/sdk/reference/scaffold/reference/contracts.md` for the default feature
|
|
16
|
+
set). The adapter in `foundations/config/organization-model.ts` overrides its `enabled` flag or
|
|
17
|
+
adjusts metadata. No new TypeScript files needed.
|
|
18
18
|
|
|
19
19
|
- **Level B (new extension file):** The feature does not exist in platform defaults. A new
|
|
20
20
|
feature ID and manifest need to be declared. This requires a new TypeScript file under
|
|
@@ -23,7 +23,8 @@ This operation handles both toggling existing features and introducing custom fe
|
|
|
23
23
|
|
|
24
24
|
## Schema reference
|
|
25
25
|
|
|
26
|
-
Source: `
|
|
26
|
+
Source: `node_modules/@elevasis/core/organization-model` (published types) or
|
|
27
|
+
`node_modules/@elevasis/sdk/reference/scaffold/reference/contracts.md` (auto-generated shapes)
|
|
27
28
|
|
|
28
29
|
```typescript
|
|
29
30
|
FeatureSchema = z.object({
|
|
@@ -40,7 +41,7 @@ FeatureSchema = z.object({
|
|
|
40
41
|
})
|
|
41
42
|
```
|
|
42
43
|
|
|
43
|
-
Platform default feature IDs (from `
|
|
44
|
+
Platform default feature IDs (from `node_modules/@elevasis/sdk/reference/scaffold/reference/contracts.md`):
|
|
44
45
|
`crm`, `lead-gen`, `projects`, `operations`, `monitoring`, `settings`, `seo`
|
|
45
46
|
|
|
46
47
|
Where this lands in the adapter: `foundations/config/organization-model.ts` under the `features`
|
|
@@ -54,8 +55,8 @@ merge), so the adapter must redeclare all features it wants to override.
|
|
|
54
55
|
### Step 1: Read current state
|
|
55
56
|
|
|
56
57
|
Read `foundations/config/organization-model.ts` and extract the current `features` array from the
|
|
57
|
-
adapter. Also read `
|
|
58
|
-
defaults look like.
|
|
58
|
+
adapter. Also read `node_modules/@elevasis/sdk/reference/scaffold/reference/contracts.md` to see
|
|
59
|
+
what the platform defaults look like.
|
|
59
60
|
|
|
60
61
|
Present a combined view:
|
|
61
62
|
|
|
@@ -132,7 +132,7 @@ After a successful push, mark any linked project task as `submitted`. This is a
|
|
|
132
132
|
2. **Fire the transition** (only when a single confident task ID is resolved):
|
|
133
133
|
|
|
134
134
|
```bash
|
|
135
|
-
pnpm
|
|
135
|
+
pnpm elevasis-sdk project:task:update <task-id> --status submitted
|
|
136
136
|
```
|
|
137
137
|
|
|
138
138
|
3. **Failure handling.** If the CLI call errors, no task ID can be resolved, or the user declines, emit a single warning line and continue:
|
|
@@ -40,7 +40,7 @@ For dev vs prod targeting:
|
|
|
40
40
|
Validate all resource definitions (schemas, contracts, config):
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
|
-
pnpm
|
|
43
|
+
pnpm elevasis-sdk check
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
Reports: resource count, validation errors, schema serialization warnings. Exit code 0 = pass.
|
|
@@ -50,7 +50,7 @@ Reports: resource count, validation errors, schema serialization warnings. Exit
|
|
|
50
50
|
Bundle and deploy resources to the Elevasis platform.
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
|
-
pnpm
|
|
53
|
+
pnpm elevasis-sdk deploy [--prod]
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
Replace `[--prod]` with `--prod` when targeting production.
|
|
@@ -68,10 +68,10 @@ Deploy replaces the previous active deployment. Resources become executable imme
|
|
|
68
68
|
**Always run before executing.** Shows resource metadata, input/output schemas, and step chain:
|
|
69
69
|
|
|
70
70
|
```bash
|
|
71
|
-
pnpm
|
|
71
|
+
pnpm elevasis-sdk describe <resourceId>
|
|
72
72
|
|
|
73
73
|
# JSON output for programmatic use
|
|
74
|
-
pnpm
|
|
74
|
+
pnpm elevasis-sdk describe <resourceId> --json
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
Output includes: type, name, version, status, domains, input schema (required/optional fields with types), output schema, step definitions with entry point and routing.
|
|
@@ -82,14 +82,14 @@ Run a deployed resource. **Always `describe` first to see the input schema.**
|
|
|
82
82
|
|
|
83
83
|
```bash
|
|
84
84
|
# Simple input (inline JSON)
|
|
85
|
-
pnpm
|
|
85
|
+
pnpm elevasis-sdk exec <resourceId> -i '{"key": "value"}'
|
|
86
86
|
|
|
87
87
|
# Complex input (temp file -- PREFERRED for non-trivial payloads)
|
|
88
88
|
# Write input to a temp file first, then reference it with -f
|
|
89
|
-
pnpm
|
|
89
|
+
pnpm elevasis-sdk exec <resourceId> -f .tmp-input.json
|
|
90
90
|
|
|
91
91
|
# Async execution (for long-running workflows -- polls until complete)
|
|
92
|
-
pnpm
|
|
92
|
+
pnpm elevasis-sdk exec <resourceId> -f .tmp-input.json --async
|
|
93
93
|
```
|
|
94
94
|
|
|
95
95
|
**When to use `-f` (file input):**
|
|
@@ -118,10 +118,10 @@ pnpm -C operations exec elevasis-sdk exec <resourceId> -f .tmp-input.json --asyn
|
|
|
118
118
|
View all deployed resources:
|
|
119
119
|
|
|
120
120
|
```bash
|
|
121
|
-
pnpm
|
|
121
|
+
pnpm elevasis-sdk resources
|
|
122
122
|
|
|
123
123
|
# JSON output
|
|
124
|
-
pnpm
|
|
124
|
+
pnpm elevasis-sdk resources --json
|
|
125
125
|
```
|
|
126
126
|
|
|
127
127
|
Shows: resource ID, type (workflow/agent), name, description, status.
|
|
@@ -132,19 +132,19 @@ View past executions for a resource:
|
|
|
132
132
|
|
|
133
133
|
```bash
|
|
134
134
|
# List recent executions (default: last 50)
|
|
135
|
-
pnpm
|
|
135
|
+
pnpm elevasis-sdk executions <resourceId>
|
|
136
136
|
|
|
137
137
|
# Filter by status
|
|
138
|
-
pnpm
|
|
138
|
+
pnpm elevasis-sdk executions <resourceId> --status failed --limit 10
|
|
139
139
|
|
|
140
140
|
# View specific execution (full detail with logs)
|
|
141
|
-
pnpm
|
|
141
|
+
pnpm elevasis-sdk execution <resourceId> <executionId>
|
|
142
142
|
|
|
143
143
|
# Logs only (skip metadata)
|
|
144
|
-
pnpm
|
|
144
|
+
pnpm elevasis-sdk execution <resourceId> <executionId> --logs-only
|
|
145
145
|
|
|
146
146
|
# Include input and result data
|
|
147
|
-
pnpm
|
|
147
|
+
pnpm elevasis-sdk execution <resourceId> <executionId> --input --result
|
|
148
148
|
```
|
|
149
149
|
|
|
150
150
|
**`executions` flags:** `--limit <n>` (default 50), `--status running|completed|failed`, `--json`
|
|
@@ -158,7 +158,7 @@ Execution detail shows: status, start/end times, duration, input, result, error
|
|
|
158
158
|
View deployment history:
|
|
159
159
|
|
|
160
160
|
```bash
|
|
161
|
-
pnpm
|
|
161
|
+
pnpm elevasis-sdk deployments
|
|
162
162
|
```
|
|
163
163
|
|
|
164
164
|
Shows: deployment ID, SDK version, status (active/deploying/failed/stopped), created timestamp.
|
|
@@ -169,19 +169,19 @@ Manage integration credentials (API keys, webhook secrets):
|
|
|
169
169
|
|
|
170
170
|
```bash
|
|
171
171
|
# List credentials (metadata only, secrets not exposed)
|
|
172
|
-
pnpm
|
|
172
|
+
pnpm elevasis-sdk creds list
|
|
173
173
|
|
|
174
174
|
# Create a credential
|
|
175
|
-
pnpm
|
|
175
|
+
pnpm elevasis-sdk creds create --name my-api-key --type api-key --value '{"apiKey":"sk-..."}'
|
|
176
176
|
|
|
177
177
|
# Update a credential value
|
|
178
|
-
pnpm
|
|
178
|
+
pnpm elevasis-sdk creds update my-api-key --value '{"apiKey":"new-key"}'
|
|
179
179
|
|
|
180
180
|
# Rename a credential
|
|
181
|
-
pnpm
|
|
181
|
+
pnpm elevasis-sdk creds rename old-name --to new-name
|
|
182
182
|
|
|
183
183
|
# Delete a credential
|
|
184
|
-
pnpm
|
|
184
|
+
pnpm elevasis-sdk creds delete my-api-key --force
|
|
185
185
|
```
|
|
186
186
|
|
|
187
187
|
Credential names: lowercase, digits, hyphens only (`^[a-z0-9]+(-[a-z0-9]+)*$`). Types: `api-key`, `webhook-secret`.
|
|
@@ -192,10 +192,10 @@ Rename a resource ID across all platform tables:
|
|
|
192
192
|
|
|
193
193
|
```bash
|
|
194
194
|
# Dry run (preview only)
|
|
195
|
-
pnpm
|
|
195
|
+
pnpm elevasis-sdk rename old-id --to new-id
|
|
196
196
|
|
|
197
197
|
# Apply rename
|
|
198
|
-
pnpm
|
|
198
|
+
pnpm elevasis-sdk rename old-id --to new-id --execute
|
|
199
199
|
```
|
|
200
200
|
|
|
201
201
|
Always dry-run first to see affected tables and row counts.
|
|
@@ -206,10 +206,10 @@ Mark execution errors as resolved:
|
|
|
206
206
|
|
|
207
207
|
```bash
|
|
208
208
|
# Resolve a specific error
|
|
209
|
-
pnpm
|
|
209
|
+
pnpm elevasis-sdk error resolve <errorId>
|
|
210
210
|
|
|
211
211
|
# Resolve all errors for an execution
|
|
212
|
-
pnpm
|
|
212
|
+
pnpm elevasis-sdk error resolve-execution <executionId>
|
|
213
213
|
```
|
|
214
214
|
|
|
215
215
|
## Standard Workflow
|
|
@@ -35,6 +35,38 @@ allowed-tools: Bash, Read, Write, Edit, Glob, Grep
|
|
|
35
35
|
- `/project checklist <client> "<milestone>"` — View checklist for a milestone.
|
|
36
36
|
- `/project delete <client>` — Delete project (cascades milestones, tasks, notes).
|
|
37
37
|
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Ambient Vibe Integration
|
|
41
|
+
|
|
42
|
+
This skill is the landing point for three of the seven vibe intent types. Agents arriving from the ambient layer should behave identically to a direct invocation — vibe is a classifier, not a different code path.
|
|
43
|
+
|
|
44
|
+
| Vibe intent | What vibe detected | What to do here |
|
|
45
|
+
|---|---|---|
|
|
46
|
+
| **Capture** | "add a task", "remember to", "track this" | Draft the task/note, confirm with user, then `project:task:create` or `project:note:create` |
|
|
47
|
+
| **Transition** | "done", "stuck", "blocked", "finished" | Resolve current task from session context, confirm status, then `project:task:update --status <new>` |
|
|
48
|
+
| **Navigate** | "focus on", "switch to", "back to" | Resolve target via `project:resolve <query>` or `project:work <query>`, update scope, narrate new context |
|
|
49
|
+
|
|
50
|
+
**The full continuity loop** — how work flows across sessions:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
vibe (Capture) → /project task:create → task in DB
|
|
54
|
+
↓
|
|
55
|
+
work happens
|
|
56
|
+
↓
|
|
57
|
+
/save → project:task:save → prj_tasks.resume_context
|
|
58
|
+
↓
|
|
59
|
+
next session: /project work <query>
|
|
60
|
+
↓
|
|
61
|
+
project:work → resume brief (current state + next steps)
|
|
62
|
+
↓
|
|
63
|
+
agent picks up exactly where it left off
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
When a session begins with an ambiguous opening, check `project:work` before asking the user to re-explain. The resume brief is the canonical continuity payload — trust it.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
38
70
|
## Prerequisites
|
|
39
71
|
|
|
40
72
|
**Run from the project root** (the directory containing `.elevasis`). Before issuing any other commands, run:
|
|
@@ -19,7 +19,7 @@ Auto-manage project documentation from conversation context, and fan out convers
|
|
|
19
19
|
|
|
20
20
|
Before doing anything else, determine the active project / task:
|
|
21
21
|
|
|
22
|
-
1. Look for an active task-doc frontmatter in the current conversation or the most recently edited file
|
|
22
|
+
1. Look for an active task-doc frontmatter in the current conversation or the most recently edited file. Expected frontmatter:
|
|
23
23
|
|
|
24
24
|
```yaml
|
|
25
25
|
---
|
|
@@ -56,7 +56,7 @@ Review the current conversation to identify:
|
|
|
56
56
|
|
|
57
57
|
### Step 3: Update Knowledge Docs
|
|
58
58
|
|
|
59
|
-
Scan
|
|
59
|
+
Scan for unindexed or stale knowledge docs and draft creates / updates / moves. This template does not have a `docs/` tree — look for any local knowledge files (`.claude/rules/`, `operations/src/README.md`, `foundations/`, or project-specific docs the user has created). All edits are on knowledge/architecture/feature docs -- NOT on task resume state (that flows to the DB in Step 4).
|
|
60
60
|
|
|
61
61
|
Determine what needs to happen:
|
|
62
62
|
|
|
@@ -155,7 +155,7 @@ If no signal rises to note-worthy, skip this step entirely. Do not create filler
|
|
|
155
155
|
Run this ONLY when Step 5 created a `blocker` note AND Step 1 resolved a task ID. It's the second half of the "I'm stuck" fanout: the note captures the why, this call flips the task's lifecycle state so it surfaces as blocked in portfolio views.
|
|
156
156
|
|
|
157
157
|
```bash
|
|
158
|
-
pnpm
|
|
158
|
+
pnpm elevasis-sdk project:task:update <task-uuid> --status blocked
|
|
159
159
|
```
|
|
160
160
|
|
|
161
161
|
Rules:
|
|
@@ -148,16 +148,16 @@ Auto-submit (`--auto`) skips this confirmation entirely — use only when the ca
|
|
|
148
148
|
|
|
149
149
|
## Submit
|
|
150
150
|
|
|
151
|
-
Once confirmed (or `--auto`), write the assembled JSON body to a temp file then submit via the SDK CLI:
|
|
151
|
+
Once confirmed (or `--auto`), write the assembled JSON body to a temp file under the project-root `tmp/` directory, then submit via the SDK CLI:
|
|
152
152
|
|
|
153
153
|
```bash
|
|
154
|
-
# Write the report body to
|
|
155
|
-
#
|
|
154
|
+
# Write the report body to tmp/request-report.json from the project root
|
|
155
|
+
# The template keeps tmp/ gitignored for transient CLI payloads
|
|
156
156
|
|
|
157
|
-
pnpm elevasis-sdk request:submit
|
|
157
|
+
pnpm elevasis-sdk request:submit -f tmp/request-report.json --cleanup-input --pretty
|
|
158
158
|
```
|
|
159
159
|
|
|
160
|
-
|
|
160
|
+
`--cleanup-input` removes the temp file automatically after a successful submission. If the command fails, leave the file in `tmp/` for inspection.
|
|
161
161
|
|
|
162
162
|
## Report Back
|
|
163
163
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- Auto-generated on 2026-04-
|
|
1
|
+
<!-- Auto-generated on 2026-04-21 by scripts/monorepo/generate-scaffold-contracts.js -->
|
|
2
2
|
---
|
|
3
3
|
title: Reference Contracts
|
|
4
4
|
description: Auto-generated TypeScript contracts for SDK consumers. Do not edit manually.
|
|
@@ -363,6 +363,8 @@ export interface ElevasisFeaturesProviderProps {
|
|
|
363
363
|
timeRange?: TimeRange
|
|
364
364
|
operationsApiUrl?: string
|
|
365
365
|
operationsSSEManager?: SSEConnectionManagerLike
|
|
366
|
+
deliveryApiUrl?: string
|
|
367
|
+
deliverySSEManager?: SSEConnectionManagerLike
|
|
366
368
|
disabledSubsectionPaths?: string[]
|
|
367
369
|
children: ReactNode
|
|
368
370
|
}
|
|
@@ -381,6 +383,8 @@ export interface ElevasisFeaturesContextValue {
|
|
|
381
383
|
timeRange?: TimeRange
|
|
382
384
|
operationsApiUrl?: string
|
|
383
385
|
operationsSSEManager?: SSEConnectionManagerLike
|
|
386
|
+
deliveryApiUrl?: string
|
|
387
|
+
deliverySSEManager?: SSEConnectionManagerLike
|
|
384
388
|
disabledSubsectionPaths: string[]
|
|
385
389
|
isFeatureEnabled: (key: string) => boolean
|
|
386
390
|
getResolvedFeature: (key: string) => ResolvedFeatureModule | undefined
|
|
@@ -130,6 +130,7 @@ Consumer nav derivation runs locally from `shellModel.navItems`; the provider no
|
|
|
130
130
|
- `enabledResolvedFeatures` -- filtered to `access.enabled === true`
|
|
131
131
|
- `timeRange`
|
|
132
132
|
- `operationsApiUrl`, `operationsSSEManager`
|
|
133
|
+
- `deliveryApiUrl`, `deliverySSEManager`
|
|
133
134
|
- `organizationModel`
|
|
134
135
|
- `organizationGraph` (resolved from `operations.organization-graph` surface; see [Organization Graph](../core/organization-graph.mdx))
|
|
135
136
|
- `disabledSubsectionPaths` -- used by consumers like `_template` to hide specific subsections (e.g., `/settings/appearance`)
|