@elevasis/sdk 1.8.0 → 1.8.1
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 +3 -3
- package/package.json +1 -1
- package/reference/claude-config/logs/scaffold-registry-reminder.log +17 -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/scaffold/reference/contracts.md +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -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.1",
|
|
40524
40524
|
description: "SDK for building Elevasis organization resources",
|
|
40525
40525
|
type: "module",
|
|
40526
40526
|
bin: {
|
|
@@ -42293,7 +42293,7 @@ function registerTaskGet(program3) {
|
|
|
42293
42293
|
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
42294
|
wrapAction("project:task:get", async (id, options) => {
|
|
42295
42295
|
const apiUrl = resolveApiUrl(options.apiUrl);
|
|
42296
|
-
const result = await apiGet(`/api/external/tasks/${id}`, apiUrl);
|
|
42296
|
+
const result = await apiGet(`/api/external/project-tasks/${id}`, apiUrl);
|
|
42297
42297
|
if (options.pretty) {
|
|
42298
42298
|
const t = result.task;
|
|
42299
42299
|
console.log(source_default.cyan(`
|
|
@@ -42423,7 +42423,7 @@ function registerTaskResume(program3) {
|
|
|
42423
42423
|
).option("--api-url <url>", "API base URL").option("--pretty", "Render a human-readable resume briefing instead of raw JSON").action(
|
|
42424
42424
|
wrapAction("project:task:resume", async (id, options) => {
|
|
42425
42425
|
const apiUrl = resolveApiUrl(options.apiUrl);
|
|
42426
|
-
const result = await apiGet(`/api/external/tasks/${id}`, apiUrl);
|
|
42426
|
+
const result = await apiGet(`/api/external/project-tasks/${id}`, apiUrl);
|
|
42427
42427
|
const task = result.task;
|
|
42428
42428
|
const ctx = task.resume_context ?? {};
|
|
42429
42429
|
if (options.pretty) {
|
package/package.json
CHANGED
|
@@ -15,3 +15,20 @@
|
|
|
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)
|
|
@@ -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:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- Auto-generated on 2026-04-
|
|
1
|
+
<!-- Auto-generated on 2026-04-21T08:23:05.375Z 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.
|