@elevasis/sdk 0.5.6 → 0.5.8
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 +105 -35
- package/dist/index.d.ts +14 -3
- package/dist/index.js +15 -0
- package/dist/templates.js +76 -21
- package/package.json +1 -1
- package/reference/developer/interaction-guidance.mdx +3 -3
- package/reference/framework/agent.mdx +6 -6
- package/reference/framework/index.mdx +10 -7
- package/reference/framework/memory.mdx +19 -9
- package/reference/framework/project-structure.mdx +1 -1
- package/reference/getting-started/index.mdx +5 -3
package/dist/cli.cjs
CHANGED
|
@@ -43491,6 +43491,21 @@ var ResourceRegistry = class {
|
|
|
43491
43491
|
}
|
|
43492
43492
|
return false;
|
|
43493
43493
|
}
|
|
43494
|
+
/**
|
|
43495
|
+
* Get the remote config for any resource in an organization.
|
|
43496
|
+
* Used when the specific resource ID is unknown (e.g., to clean up a
|
|
43497
|
+
* temp file before unregistering an org -- all resources share one config).
|
|
43498
|
+
*
|
|
43499
|
+
* @param orgName - Organization name
|
|
43500
|
+
* @returns Remote config or null if org has no remote resources
|
|
43501
|
+
*/
|
|
43502
|
+
getAnyRemoteConfig(orgName) {
|
|
43503
|
+
const prefix = `${orgName}/`;
|
|
43504
|
+
for (const [key, config3] of this.remoteResources) {
|
|
43505
|
+
if (key.startsWith(prefix)) return config3;
|
|
43506
|
+
}
|
|
43507
|
+
return null;
|
|
43508
|
+
}
|
|
43494
43509
|
// ============================================================================
|
|
43495
43510
|
// Resource Manifest Accessors
|
|
43496
43511
|
// ============================================================================
|
|
@@ -43708,17 +43723,17 @@ function resolveEnvironment(prod) {
|
|
|
43708
43723
|
}
|
|
43709
43724
|
function resolveApiKey(prod) {
|
|
43710
43725
|
if (!prod && process.env.NODE_ENV === "development") {
|
|
43711
|
-
return process.env.
|
|
43726
|
+
return process.env.ELEVASIS_PLATFORM_KEY_DEV ?? process.env.ELEVASIS_PLATFORM_KEY ?? "";
|
|
43712
43727
|
}
|
|
43713
|
-
return process.env.
|
|
43728
|
+
return process.env.ELEVASIS_PLATFORM_KEY ?? "";
|
|
43714
43729
|
}
|
|
43715
43730
|
|
|
43716
43731
|
// src/cli/api-client.ts
|
|
43717
43732
|
function getApiKey() {
|
|
43718
|
-
const key = process.env.
|
|
43733
|
+
const key = process.env.ELEVASIS_PLATFORM_KEY;
|
|
43719
43734
|
if (!key) {
|
|
43720
43735
|
throw new Error(
|
|
43721
|
-
"
|
|
43736
|
+
"ELEVASIS_PLATFORM_KEY environment variable is required.\nSet it in your .env file: ELEVASIS_PLATFORM_KEY=sk_..."
|
|
43722
43737
|
);
|
|
43723
43738
|
}
|
|
43724
43739
|
return key;
|
|
@@ -43730,7 +43745,7 @@ async function apiGet(endpoint, apiUrl = resolveApiUrl()) {
|
|
|
43730
43745
|
if (!response.ok) {
|
|
43731
43746
|
const errorText = await response.text();
|
|
43732
43747
|
if (response.status === 401) {
|
|
43733
|
-
throw new Error(`401 Unauthorized: Invalid or missing
|
|
43748
|
+
throw new Error(`401 Unauthorized: Invalid or missing ELEVASIS_PLATFORM_KEY. Check your .env file.`);
|
|
43734
43749
|
}
|
|
43735
43750
|
throw new Error(`API request failed (${response.status}): ${errorText}`);
|
|
43736
43751
|
}
|
|
@@ -43793,7 +43808,7 @@ async function apiDelete(endpoint, apiUrl = resolveApiUrl()) {
|
|
|
43793
43808
|
// package.json
|
|
43794
43809
|
var package_default = {
|
|
43795
43810
|
name: "@elevasis/sdk",
|
|
43796
|
-
version: "0.5.
|
|
43811
|
+
version: "0.5.8",
|
|
43797
43812
|
description: "SDK for building Elevasis organization resources",
|
|
43798
43813
|
"comment:bin": "IMPORTANT: This package shares the 'elevasis' binary name with @repo/cli. They never conflict because @elevasis/sdk must NEVER be added as a dependency of any workspace package (apps/*, packages/*, organizations/*). Workspace projects use @repo/cli for the 'elevasis' binary. External developers (outside the workspace) get this SDK's binary via npm install.",
|
|
43799
43814
|
type: "module",
|
|
@@ -44293,7 +44308,7 @@ async function generateProjectMap(org) {
|
|
|
44293
44308
|
let nodeEnv = "not set";
|
|
44294
44309
|
try {
|
|
44295
44310
|
const envContent = await (0, import_promises.readFile)((0, import_path.resolve)(".env"), "utf-8");
|
|
44296
|
-
const apiKeyMatch = envContent.match(/^
|
|
44311
|
+
const apiKeyMatch = envContent.match(/^ELEVASIS_PLATFORM_KEY=(.+)$/m);
|
|
44297
44312
|
if (apiKeyMatch && apiKeyMatch[1].trim()) apiKeySet = "yes";
|
|
44298
44313
|
const nodeEnvMatch = envContent.match(/^NODE_ENV=(.+)$/m);
|
|
44299
44314
|
if (nodeEnvMatch && nodeEnvMatch[1].trim()) nodeEnv = nodeEnvMatch[1].trim();
|
|
@@ -44329,7 +44344,7 @@ function registerDeployCommand(program3) {
|
|
|
44329
44344
|
authSpinner.fail(source_default.red("Authentication failed"));
|
|
44330
44345
|
const errMsg = error46 instanceof Error ? error46.message : String(error46);
|
|
44331
44346
|
if (errMsg.includes("401") || errMsg.toLowerCase().includes("unauthorized")) {
|
|
44332
|
-
const keyVar = !options2.prod && process.env.NODE_ENV === "development" && process.env.
|
|
44347
|
+
const keyVar = !options2.prod && process.env.NODE_ENV === "development" && process.env.ELEVASIS_PLATFORM_KEY_DEV ? "ELEVASIS_PLATFORM_KEY_DEV" : "ELEVASIS_PLATFORM_KEY";
|
|
44333
44348
|
console.error(source_default.red(" Invalid API key."));
|
|
44334
44349
|
console.error(source_default.gray(` Your ${keyVar} was rejected by the server.`));
|
|
44335
44350
|
console.error(source_default.gray(" Check your .env file and verify the key in the Elevasis dashboard."));
|
|
@@ -44469,7 +44484,7 @@ startWorker(org)
|
|
|
44469
44484
|
entryPoints: [wrapperPath],
|
|
44470
44485
|
bundle: true,
|
|
44471
44486
|
platform: "node",
|
|
44472
|
-
format: "
|
|
44487
|
+
format: "cjs",
|
|
44473
44488
|
outfile: bundleOutfile
|
|
44474
44489
|
});
|
|
44475
44490
|
await (0, import_promises.unlink)(wrapperPath);
|
|
@@ -44494,9 +44509,9 @@ startWorker(org)
|
|
|
44494
44509
|
uploadSpinner.fail(source_default.red("Missing API key environment variable"));
|
|
44495
44510
|
console.error(source_default.gray(" Set it in your .env file or shell environment:"));
|
|
44496
44511
|
if (!options2.prod && process.env.NODE_ENV === "development") {
|
|
44497
|
-
console.error(source_default.gray("
|
|
44512
|
+
console.error(source_default.gray(" ELEVASIS_PLATFORM_KEY_DEV=sk_... (or ELEVASIS_PLATFORM_KEY as fallback)"));
|
|
44498
44513
|
} else {
|
|
44499
|
-
console.error(source_default.gray("
|
|
44514
|
+
console.error(source_default.gray(" ELEVASIS_PLATFORM_KEY=sk_..."));
|
|
44500
44515
|
}
|
|
44501
44516
|
throw new Error("Missing API key environment variable");
|
|
44502
44517
|
}
|
|
@@ -45139,11 +45154,11 @@ function tsconfigTemplate() {
|
|
|
45139
45154
|
}, null, 2) + "\n";
|
|
45140
45155
|
}
|
|
45141
45156
|
function envTemplate() {
|
|
45142
|
-
return `
|
|
45157
|
+
return `ELEVASIS_PLATFORM_KEY=
|
|
45143
45158
|
`;
|
|
45144
45159
|
}
|
|
45145
45160
|
function envExampleTemplate() {
|
|
45146
|
-
return `
|
|
45161
|
+
return `ELEVASIS_PLATFORM_KEY=sk_your_key_here
|
|
45147
45162
|
`;
|
|
45148
45163
|
}
|
|
45149
45164
|
function npmrcTemplate() {
|
|
@@ -45185,7 +45200,7 @@ pnpm install
|
|
|
45185
45200
|
Copy \`.env.example\` to \`.env\` and add your API key:
|
|
45186
45201
|
|
|
45187
45202
|
\`\`\`
|
|
45188
|
-
|
|
45203
|
+
ELEVASIS_PLATFORM_KEY=sk_...
|
|
45189
45204
|
\`\`\`
|
|
45190
45205
|
|
|
45191
45206
|
## Development
|
|
@@ -45409,7 +45424,7 @@ At the start of every session:
|
|
|
45409
45424
|
2. Read \`.claude/memory/index.md\` -- drill into relevant topic files as needed.
|
|
45410
45425
|
Balance context relevance against token usage.
|
|
45411
45426
|
3. Check installed \`@elevasis/sdk\` template version against \`templateVersion\`
|
|
45412
|
-
in \`elevasis.config.ts\`. If newer, notify and suggest \`/meta
|
|
45427
|
+
in \`elevasis.config.ts\`. If newer, notify and suggest \`/meta fix\`.
|
|
45413
45428
|
4. If \`.claude/memory/\` does not exist, suggest \`/meta init\`.
|
|
45414
45429
|
5. If user Platform Navigation level is none (from skills.md) and
|
|
45415
45430
|
\`.claude/memory/tutorial-progress.md\` does not exist, suggest \`/tutorial\`.
|
|
@@ -45437,7 +45452,7 @@ proactivity -- to their assessed levels.
|
|
|
45437
45452
|
| Workspace concepts | \`reference/concepts/index.mdx\` | User asks "what is...?" or needs conceptual grounding |
|
|
45438
45453
|
| SDK patterns and examples | \`reference/resources/patterns.mdx\` | Building or modifying a workflow |
|
|
45439
45454
|
| Platform tool catalog | \`reference/platform-tools/index.mdx\` | Connecting to external services |
|
|
45440
|
-
| CLI reference | \`reference/cli/index.mdx\` | Running
|
|
45455
|
+
| CLI reference | \`reference/cli/index.mdx\` | Running execution/platform operations |
|
|
45441
45456
|
| Credential model | \`reference/security/credentials.mdx\` | Setting up integrations or tool access |
|
|
45442
45457
|
| Interaction guidance | \`reference/developer/interaction-guidance.mdx\` | Unsure how to adapt for a skill combination |
|
|
45443
45458
|
| Error history | \`.claude/memory/errors/index.md\` | Debugging errors, checking past fixes |
|
|
@@ -45455,7 +45470,7 @@ All \`reference/\` paths resolve to \`node_modules/@elevasis/sdk/reference/\`.
|
|
|
45455
45470
|
|
|
45456
45471
|
## Elevasis CLI
|
|
45457
45472
|
|
|
45458
|
-
**MANDATORY:** Use the \`elevasis\` CLI for all operations -- never \`npx\`, \`curl\`, or any other tool.
|
|
45473
|
+
**MANDATORY:** Use the \`elevasis\` CLI for all execution/platform operations -- never \`npx\`, \`curl\`, or any other tool.
|
|
45459
45474
|
|
|
45460
45475
|
- \`elevasis exec <resource-id> --input '{...}'\` -- run a resource synchronously
|
|
45461
45476
|
- \`elevasis exec <resource-id> --input '{...}' --async\` -- run async, returns execution ID
|
|
@@ -46080,17 +46095,49 @@ for intermediate/advanced users.
|
|
|
46080
46095
|
|
|
46081
46096
|
## Progress Format
|
|
46082
46097
|
|
|
46083
|
-
|
|
46084
|
-
|
|
46085
|
-
|
|
46086
|
-
|
|
46087
|
-
|
|
46088
|
-
|
|
46089
|
-
|
|
46090
|
-
|
|
46091
|
-
|
|
46092
|
-
|
|
46093
|
-
|
|
46098
|
+
On first \`/tutorial\` invocation, if \`.claude/memory/tutorial-progress.md\` does not exist,
|
|
46099
|
+
create it with this exact format:
|
|
46100
|
+
|
|
46101
|
+
\`\`\`markdown
|
|
46102
|
+
# Tutorial Progress
|
|
46103
|
+
|
|
46104
|
+
Current: Not started
|
|
46105
|
+
Started: {today's date}
|
|
46106
|
+
Last Session: {today's date}
|
|
46107
|
+
|
|
46108
|
+
## Completed Lessons
|
|
46109
|
+
|
|
46110
|
+
| Lesson | Title | Completed | Duration |
|
|
46111
|
+
| --- | --- | --- | --- |
|
|
46112
|
+
|
|
46113
|
+
## Completed Modules
|
|
46114
|
+
|
|
46115
|
+
| Module | Title | Completed | Duration |
|
|
46116
|
+
| --- | --- | --- | --- |
|
|
46117
|
+
|
|
46118
|
+
## Completed MF Lessons
|
|
46119
|
+
|
|
46120
|
+
| Lesson | Title | Completed | Notes |
|
|
46121
|
+
| --- | --- | --- | --- |
|
|
46122
|
+
|
|
46123
|
+
## Capability Observations
|
|
46124
|
+
|
|
46125
|
+
| Source | Observation |
|
|
46126
|
+
| --- | --- |
|
|
46127
|
+
|
|
46128
|
+
## Assessment Notes
|
|
46129
|
+
|
|
46130
|
+
(none yet)
|
|
46131
|
+
\`\`\`
|
|
46132
|
+
|
|
46133
|
+
Update rules:
|
|
46134
|
+
- \`Current\`: free-form, e.g. "L4: Using Platform Tools" or "M:integrations" or "MF2"
|
|
46135
|
+
- \`Last Session\`: update to today's date on each \`/tutorial\` invocation
|
|
46136
|
+
- Completed tables: add a row when a lesson/module/MF lesson finishes
|
|
46137
|
+
- Capability Observations: prefix source with L# for lessons, M:<id> for modules, MF# for MF lessons
|
|
46138
|
+
- Assessment Notes: bullet points of general skill observations
|
|
46139
|
+
|
|
46140
|
+
Backward-compatible: missing Completed Modules or Completed MF Lessons sections treated as empty.
|
|
46094
46141
|
`;
|
|
46095
46142
|
}
|
|
46096
46143
|
function claudeMetaCommandTemplate() {
|
|
@@ -46115,14 +46162,14 @@ by the \`<!-- initialized: false -->\` flag in CLAUDE.md, or run manually.
|
|
|
46115
46162
|
Run \`pnpm install\`. Wait for completion. Report any errors.
|
|
46116
46163
|
|
|
46117
46164
|
2. **Setup environment**
|
|
46118
|
-
Read \`.env\`. It should contain only a single line: \`
|
|
46119
|
-
If \`
|
|
46165
|
+
Read \`.env\`. It should contain only a single line: \`ELEVASIS_PLATFORM_KEY=\`.
|
|
46166
|
+
If \`ELEVASIS_PLATFORM_KEY\` is empty or missing, ask the user: "What is your
|
|
46120
46167
|
Elevasis API key?" When the user provides it, write \`.env\` with exactly:
|
|
46121
46168
|
\`\`\`
|
|
46122
|
-
|
|
46169
|
+
ELEVASIS_PLATFORM_KEY=<value they provided>
|
|
46123
46170
|
\`\`\`
|
|
46124
46171
|
No other keys (no \`NODE_ENV\`, no extras). The \`.env\` file must contain
|
|
46125
|
-
only \`
|
|
46172
|
+
only \`ELEVASIS_PLATFORM_KEY\`.
|
|
46126
46173
|
Validate the key works: run \`elevasis resources\` (should return an empty
|
|
46127
46174
|
list, not an auth error). If auth fails, tell the user their key appears
|
|
46128
46175
|
invalid and ask them to check it in the Elevasis dashboard.
|
|
@@ -46145,6 +46192,12 @@ by the \`<!-- initialized: false -->\` flag in CLAUDE.md, or run manually.
|
|
|
46145
46192
|
Zapier/Make flows -> automation: low-code
|
|
46146
46193
|
Custom scripts -> automation: custom
|
|
46147
46194
|
|
|
46195
|
+
Inferred dimensions (do NOT ask, derive from answers above):
|
|
46196
|
+
- apiIntegration: automation: none -> none, low-code -> basic, custom -> proficient.
|
|
46197
|
+
Override: if tools answer includes API services (Stripe API, webhook, REST), upgrade one level.
|
|
46198
|
+
- domainExpertise: if goals are specific (names processes, metrics, edge cases) -> high.
|
|
46199
|
+
If goals are vague -> low.
|
|
46200
|
+
|
|
46148
46201
|
Communication (1 question):
|
|
46149
46202
|
- "Step-by-step explanations or concise answers?"
|
|
46150
46203
|
|
|
@@ -46152,7 +46205,24 @@ by the \`<!-- initialized: false -->\` flag in CLAUDE.md, or run manually.
|
|
|
46152
46205
|
- Create \`.claude/memory/index.md\` (root index)
|
|
46153
46206
|
- Create \`.claude/memory/profile/index.md\` (profile index)
|
|
46154
46207
|
- Create \`.claude/memory/profile/identity.md\` (org, goals, tools)
|
|
46155
|
-
- Create \`.claude/memory/profile/skills.md\`
|
|
46208
|
+
- Create \`.claude/memory/profile/skills.md\` using this exact format:
|
|
46209
|
+
|
|
46210
|
+
\`\`\`markdown
|
|
46211
|
+
# Skills
|
|
46212
|
+
|
|
46213
|
+
| Dimension | Level | Since |
|
|
46214
|
+
| --- | --- | --- |
|
|
46215
|
+
| platformNavigation | {level} | {date} |
|
|
46216
|
+
| apiIntegration | {level} | {date} |
|
|
46217
|
+
| automation | {level} | {date} |
|
|
46218
|
+
| domainExpertise | {level} | {date} |
|
|
46219
|
+
|
|
46220
|
+
## Growth Log
|
|
46221
|
+
|
|
46222
|
+
| Date | Observation | Dimension | Change |
|
|
46223
|
+
| --- | --- | --- | --- |
|
|
46224
|
+
\`\`\`
|
|
46225
|
+
|
|
46156
46226
|
- Create \`.claude/memory/profile/preferences.md\` (verbosity, guidance)
|
|
46157
46227
|
|
|
46158
46228
|
4. **Git check**
|
|
@@ -46610,7 +46680,7 @@ organization. They are used by workflows and agents at runtime via \`platform.ge
|
|
|
46610
46680
|
or the \`credential:\` field on tool steps.
|
|
46611
46681
|
|
|
46612
46682
|
The SDK CLI (\`elevasis-sdk creds\`) manages credentials via API key authentication.
|
|
46613
|
-
Your \`
|
|
46683
|
+
Your \`ELEVASIS_PLATFORM_KEY\` in \`.env\` determines the organization.
|
|
46614
46684
|
|
|
46615
46685
|
## Credential Types
|
|
46616
46686
|
|
|
@@ -46710,7 +46780,7 @@ description: Elevasis SDK patterns -- imports, source structure, runtime, and pl
|
|
|
46710
46780
|
|
|
46711
46781
|
## Runtime
|
|
46712
46782
|
|
|
46713
|
-
- \`.env\` contains only \`
|
|
46783
|
+
- \`.env\` contains only \`ELEVASIS_PLATFORM_KEY\` for CLI auth -- never deployed, never in worker memory
|
|
46714
46784
|
- Integration credentials are managed via the \`creds\` skill or Command Center UI
|
|
46715
46785
|
|
|
46716
46786
|
## Platform Tools
|
package/dist/index.d.ts
CHANGED
|
@@ -2973,10 +2973,12 @@ interface CreateNotificationParams {
|
|
|
2973
2973
|
* worker thread execution branching and credential management.
|
|
2974
2974
|
*/
|
|
2975
2975
|
interface RemoteOrgConfig {
|
|
2976
|
-
/**
|
|
2977
|
-
|
|
2976
|
+
/** Supabase Storage path: "{orgId}/{deploymentId}/bundle.js" */
|
|
2977
|
+
storagePath: string;
|
|
2978
2978
|
/** Deployment record ID */
|
|
2979
2979
|
deploymentId: string;
|
|
2980
|
+
/** OS temp path to bundle -- set after first download, used by worker threads */
|
|
2981
|
+
cachedTempPath?: string;
|
|
2980
2982
|
/** Platform tool name -> credential name mapping */
|
|
2981
2983
|
toolCredentials?: Record<string, string>;
|
|
2982
2984
|
/** SDK version used to deploy this bundle */
|
|
@@ -3107,6 +3109,15 @@ declare class ResourceRegistry {
|
|
|
3107
3109
|
* @returns true if the org has at least one runtime-registered resource
|
|
3108
3110
|
*/
|
|
3109
3111
|
isRemote(orgName: string): boolean;
|
|
3112
|
+
/**
|
|
3113
|
+
* Get the remote config for any resource in an organization.
|
|
3114
|
+
* Used when the specific resource ID is unknown (e.g., to clean up a
|
|
3115
|
+
* temp file before unregistering an org -- all resources share one config).
|
|
3116
|
+
*
|
|
3117
|
+
* @param orgName - Organization name
|
|
3118
|
+
* @returns Remote config or null if org has no remote resources
|
|
3119
|
+
*/
|
|
3120
|
+
getAnyRemoteConfig(orgName: string): RemoteOrgConfig | null;
|
|
3110
3121
|
/**
|
|
3111
3122
|
* Get triggers for an organization
|
|
3112
3123
|
* @param organizationName - Organization name
|
|
@@ -6320,7 +6331,7 @@ type ResourceStatus = 'dev' | 'prod';
|
|
|
6320
6331
|
/**
|
|
6321
6332
|
* Project configuration for an external developer project.
|
|
6322
6333
|
* Defined in elevasis.config.ts at the project root.
|
|
6323
|
-
* Organization is derived from the
|
|
6334
|
+
* Organization is derived from the ELEVASIS_PLATFORM_KEY -- not configured here.
|
|
6324
6335
|
*/
|
|
6325
6336
|
interface ElevasConfig {
|
|
6326
6337
|
/** Managed by `elevasis init` and `elevasis update`. Do not set manually. */
|
package/dist/index.js
CHANGED
|
@@ -3423,6 +3423,21 @@ var ResourceRegistry = class {
|
|
|
3423
3423
|
}
|
|
3424
3424
|
return false;
|
|
3425
3425
|
}
|
|
3426
|
+
/**
|
|
3427
|
+
* Get the remote config for any resource in an organization.
|
|
3428
|
+
* Used when the specific resource ID is unknown (e.g., to clean up a
|
|
3429
|
+
* temp file before unregistering an org -- all resources share one config).
|
|
3430
|
+
*
|
|
3431
|
+
* @param orgName - Organization name
|
|
3432
|
+
* @returns Remote config or null if org has no remote resources
|
|
3433
|
+
*/
|
|
3434
|
+
getAnyRemoteConfig(orgName) {
|
|
3435
|
+
const prefix = `${orgName}/`;
|
|
3436
|
+
for (const [key, config] of this.remoteResources) {
|
|
3437
|
+
if (key.startsWith(prefix)) return config;
|
|
3438
|
+
}
|
|
3439
|
+
return null;
|
|
3440
|
+
}
|
|
3426
3441
|
// ============================================================================
|
|
3427
3442
|
// Resource Manifest Accessors
|
|
3428
3443
|
// ============================================================================
|
package/dist/templates.js
CHANGED
|
@@ -200,7 +200,7 @@ At the start of every session:
|
|
|
200
200
|
2. Read \`.claude/memory/index.md\` -- drill into relevant topic files as needed.
|
|
201
201
|
Balance context relevance against token usage.
|
|
202
202
|
3. Check installed \`@elevasis/sdk\` template version against \`templateVersion\`
|
|
203
|
-
in \`elevasis.config.ts\`. If newer, notify and suggest \`/meta
|
|
203
|
+
in \`elevasis.config.ts\`. If newer, notify and suggest \`/meta fix\`.
|
|
204
204
|
4. If \`.claude/memory/\` does not exist, suggest \`/meta init\`.
|
|
205
205
|
5. If user Platform Navigation level is none (from skills.md) and
|
|
206
206
|
\`.claude/memory/tutorial-progress.md\` does not exist, suggest \`/tutorial\`.
|
|
@@ -228,7 +228,7 @@ proactivity -- to their assessed levels.
|
|
|
228
228
|
| Workspace concepts | \`reference/concepts/index.mdx\` | User asks "what is...?" or needs conceptual grounding |
|
|
229
229
|
| SDK patterns and examples | \`reference/resources/patterns.mdx\` | Building or modifying a workflow |
|
|
230
230
|
| Platform tool catalog | \`reference/platform-tools/index.mdx\` | Connecting to external services |
|
|
231
|
-
| CLI reference | \`reference/cli/index.mdx\` | Running
|
|
231
|
+
| CLI reference | \`reference/cli/index.mdx\` | Running execution/platform operations |
|
|
232
232
|
| Credential model | \`reference/security/credentials.mdx\` | Setting up integrations or tool access |
|
|
233
233
|
| Interaction guidance | \`reference/developer/interaction-guidance.mdx\` | Unsure how to adapt for a skill combination |
|
|
234
234
|
| Error history | \`.claude/memory/errors/index.md\` | Debugging errors, checking past fixes |
|
|
@@ -246,7 +246,7 @@ All \`reference/\` paths resolve to \`node_modules/@elevasis/sdk/reference/\`.
|
|
|
246
246
|
|
|
247
247
|
## Elevasis CLI
|
|
248
248
|
|
|
249
|
-
**MANDATORY:** Use the \`elevasis\` CLI for all operations -- never \`npx\`, \`curl\`, or any other tool.
|
|
249
|
+
**MANDATORY:** Use the \`elevasis\` CLI for all execution/platform operations -- never \`npx\`, \`curl\`, or any other tool.
|
|
250
250
|
|
|
251
251
|
- \`elevasis exec <resource-id> --input '{...}'\` -- run a resource synchronously
|
|
252
252
|
- \`elevasis exec <resource-id> --input '{...}' --async\` -- run async, returns execution ID
|
|
@@ -871,17 +871,49 @@ for intermediate/advanced users.
|
|
|
871
871
|
|
|
872
872
|
## Progress Format
|
|
873
873
|
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
874
|
+
On first \`/tutorial\` invocation, if \`.claude/memory/tutorial-progress.md\` does not exist,
|
|
875
|
+
create it with this exact format:
|
|
876
|
+
|
|
877
|
+
\`\`\`markdown
|
|
878
|
+
# Tutorial Progress
|
|
879
|
+
|
|
880
|
+
Current: Not started
|
|
881
|
+
Started: {today's date}
|
|
882
|
+
Last Session: {today's date}
|
|
883
|
+
|
|
884
|
+
## Completed Lessons
|
|
885
|
+
|
|
886
|
+
| Lesson | Title | Completed | Duration |
|
|
887
|
+
| --- | --- | --- | --- |
|
|
888
|
+
|
|
889
|
+
## Completed Modules
|
|
890
|
+
|
|
891
|
+
| Module | Title | Completed | Duration |
|
|
892
|
+
| --- | --- | --- | --- |
|
|
893
|
+
|
|
894
|
+
## Completed MF Lessons
|
|
895
|
+
|
|
896
|
+
| Lesson | Title | Completed | Notes |
|
|
897
|
+
| --- | --- | --- | --- |
|
|
898
|
+
|
|
899
|
+
## Capability Observations
|
|
900
|
+
|
|
901
|
+
| Source | Observation |
|
|
902
|
+
| --- | --- |
|
|
903
|
+
|
|
904
|
+
## Assessment Notes
|
|
905
|
+
|
|
906
|
+
(none yet)
|
|
907
|
+
\`\`\`
|
|
908
|
+
|
|
909
|
+
Update rules:
|
|
910
|
+
- \`Current\`: free-form, e.g. "L4: Using Platform Tools" or "M:integrations" or "MF2"
|
|
911
|
+
- \`Last Session\`: update to today's date on each \`/tutorial\` invocation
|
|
912
|
+
- Completed tables: add a row when a lesson/module/MF lesson finishes
|
|
913
|
+
- Capability Observations: prefix source with L# for lessons, M:<id> for modules, MF# for MF lessons
|
|
914
|
+
- Assessment Notes: bullet points of general skill observations
|
|
915
|
+
|
|
916
|
+
Backward-compatible: missing Completed Modules or Completed MF Lessons sections treated as empty.
|
|
885
917
|
`;
|
|
886
918
|
}
|
|
887
919
|
function claudeMetaCommandTemplate() {
|
|
@@ -906,14 +938,14 @@ by the \`<!-- initialized: false -->\` flag in CLAUDE.md, or run manually.
|
|
|
906
938
|
Run \`pnpm install\`. Wait for completion. Report any errors.
|
|
907
939
|
|
|
908
940
|
2. **Setup environment**
|
|
909
|
-
Read \`.env\`. It should contain only a single line: \`
|
|
910
|
-
If \`
|
|
941
|
+
Read \`.env\`. It should contain only a single line: \`ELEVASIS_PLATFORM_KEY=\`.
|
|
942
|
+
If \`ELEVASIS_PLATFORM_KEY\` is empty or missing, ask the user: "What is your
|
|
911
943
|
Elevasis API key?" When the user provides it, write \`.env\` with exactly:
|
|
912
944
|
\`\`\`
|
|
913
|
-
|
|
945
|
+
ELEVASIS_PLATFORM_KEY=<value they provided>
|
|
914
946
|
\`\`\`
|
|
915
947
|
No other keys (no \`NODE_ENV\`, no extras). The \`.env\` file must contain
|
|
916
|
-
only \`
|
|
948
|
+
only \`ELEVASIS_PLATFORM_KEY\`.
|
|
917
949
|
Validate the key works: run \`elevasis resources\` (should return an empty
|
|
918
950
|
list, not an auth error). If auth fails, tell the user their key appears
|
|
919
951
|
invalid and ask them to check it in the Elevasis dashboard.
|
|
@@ -936,6 +968,12 @@ by the \`<!-- initialized: false -->\` flag in CLAUDE.md, or run manually.
|
|
|
936
968
|
Zapier/Make flows -> automation: low-code
|
|
937
969
|
Custom scripts -> automation: custom
|
|
938
970
|
|
|
971
|
+
Inferred dimensions (do NOT ask, derive from answers above):
|
|
972
|
+
- apiIntegration: automation: none -> none, low-code -> basic, custom -> proficient.
|
|
973
|
+
Override: if tools answer includes API services (Stripe API, webhook, REST), upgrade one level.
|
|
974
|
+
- domainExpertise: if goals are specific (names processes, metrics, edge cases) -> high.
|
|
975
|
+
If goals are vague -> low.
|
|
976
|
+
|
|
939
977
|
Communication (1 question):
|
|
940
978
|
- "Step-by-step explanations or concise answers?"
|
|
941
979
|
|
|
@@ -943,7 +981,24 @@ by the \`<!-- initialized: false -->\` flag in CLAUDE.md, or run manually.
|
|
|
943
981
|
- Create \`.claude/memory/index.md\` (root index)
|
|
944
982
|
- Create \`.claude/memory/profile/index.md\` (profile index)
|
|
945
983
|
- Create \`.claude/memory/profile/identity.md\` (org, goals, tools)
|
|
946
|
-
- Create \`.claude/memory/profile/skills.md\`
|
|
984
|
+
- Create \`.claude/memory/profile/skills.md\` using this exact format:
|
|
985
|
+
|
|
986
|
+
\`\`\`markdown
|
|
987
|
+
# Skills
|
|
988
|
+
|
|
989
|
+
| Dimension | Level | Since |
|
|
990
|
+
| --- | --- | --- |
|
|
991
|
+
| platformNavigation | {level} | {date} |
|
|
992
|
+
| apiIntegration | {level} | {date} |
|
|
993
|
+
| automation | {level} | {date} |
|
|
994
|
+
| domainExpertise | {level} | {date} |
|
|
995
|
+
|
|
996
|
+
## Growth Log
|
|
997
|
+
|
|
998
|
+
| Date | Observation | Dimension | Change |
|
|
999
|
+
| --- | --- | --- | --- |
|
|
1000
|
+
\`\`\`
|
|
1001
|
+
|
|
947
1002
|
- Create \`.claude/memory/profile/preferences.md\` (verbosity, guidance)
|
|
948
1003
|
|
|
949
1004
|
4. **Git check**
|
|
@@ -1401,7 +1456,7 @@ organization. They are used by workflows and agents at runtime via \`platform.ge
|
|
|
1401
1456
|
or the \`credential:\` field on tool steps.
|
|
1402
1457
|
|
|
1403
1458
|
The SDK CLI (\`elevasis-sdk creds\`) manages credentials via API key authentication.
|
|
1404
|
-
Your \`
|
|
1459
|
+
Your \`ELEVASIS_PLATFORM_KEY\` in \`.env\` determines the organization.
|
|
1405
1460
|
|
|
1406
1461
|
## Credential Types
|
|
1407
1462
|
|
|
@@ -1501,7 +1556,7 @@ description: Elevasis SDK patterns -- imports, source structure, runtime, and pl
|
|
|
1501
1556
|
|
|
1502
1557
|
## Runtime
|
|
1503
1558
|
|
|
1504
|
-
- \`.env\` contains only \`
|
|
1559
|
+
- \`.env\` contains only \`ELEVASIS_PLATFORM_KEY\` for CLI auth -- never deployed, never in worker memory
|
|
1505
1560
|
- Integration credentials are managed via the \`creds\` skill or Command Center UI
|
|
1506
1561
|
|
|
1507
1562
|
## Platform Tools
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elevasis/sdk",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.8",
|
|
4
4
|
"description": "SDK for building Elevasis organization resources",
|
|
5
5
|
"comment:bin": "IMPORTANT: This package shares the 'elevasis' binary name with @repo/cli. They never conflict because @elevasis/sdk must NEVER be added as a dependency of any workspace package (apps/*, packages/*, organizations/*). Workspace projects use @repo/cli for the 'elevasis' binary. External developers (outside the workspace) get this SDK's binary via npm install.",
|
|
6
6
|
"type": "module",
|
|
@@ -149,11 +149,11 @@ Do not automatically update the skill profile for every observation. Update when
|
|
|
149
149
|
When updating `.claude/memory/profile/skills.md` Growth Log:
|
|
150
150
|
|
|
151
151
|
```
|
|
152
|
-
| Date | Observation |
|
|
153
|
-
| 2026-03-01 | Navigated to Execution Logs and filtered by resource without direction |
|
|
152
|
+
| Date | Observation | Dimension | Change |
|
|
153
|
+
| 2026-03-01 | Navigated to Execution Logs and filtered by resource without direction | platformNavigation | none -> oriented |
|
|
154
154
|
```
|
|
155
155
|
|
|
156
|
-
Also update the dimension's Level
|
|
156
|
+
Also update the dimension's Level and Since fields in the Dimensions table.
|
|
157
157
|
|
|
158
158
|
### Celebration
|
|
159
159
|
|
|
@@ -18,7 +18,7 @@ The file is instruction-driven by design. Non-technical developers should never
|
|
|
18
18
|
|
|
19
19
|
The generated `CLAUDE.md` contains these sections:
|
|
20
20
|
|
|
21
|
-
- **Session Initialization** -- Checks the `<!-- initialized: false -->` auto-init flag; if false, runs `/meta init` automatically. Otherwise reads `memory/profile/skills.md` for adaptive behavior, reads `memory/index.md` for project context, checks if the template version is current, and suggests `/tutorial` for
|
|
21
|
+
- **Session Initialization** -- Checks the `<!-- initialized: false -->` auto-init flag; if false, runs `/meta init` automatically. Otherwise reads `memory/profile/skills.md` for adaptive behavior, reads `memory/index.md` for project context, checks if the template version is current, and suggests `/tutorial` for users with no Platform Navigation experience.
|
|
22
22
|
- **Identity** -- Project orientation: what an Elevasis SDK project is, the developer's role, and how to adapt to non-technical users.
|
|
23
23
|
- **Navigation** -- A table mapping concepts to file paths with load conditions (when to load each file). Includes SDK reference docs, credential model, error history, `docs/project-map.mdx`, and `docs/priorities.mdx`.
|
|
24
24
|
- **Rules** -- Points to auto-loaded rule files in `.claude/rules/`. SDK patterns load automatically; project-specific patterns live in `workspace-patterns.md`. Includes error handling protocol.
|
|
@@ -36,7 +36,7 @@ At the start of every session the agent runs these steps silently before respond
|
|
|
36
36
|
2. Read `.claude/memory/index.md` if it exists -- drill into relevant topic files as needed, balancing context relevance against token usage.
|
|
37
37
|
3. Check the installed `@elevasis/sdk` template version against `templateVersion` in `elevasis.config.ts`. If the SDK has a newer version, notify the user and suggest running `/meta fix`.
|
|
38
38
|
4. If `.claude/memory/` does not exist, suggest running `/meta init` to set up the project.
|
|
39
|
-
5. If the user's
|
|
39
|
+
5. If the user's Platform Navigation level is none (from skills.md) and `.claude/memory/tutorial-progress.md` does not exist, suggest `/tutorial`.
|
|
40
40
|
|
|
41
41
|
## Slash Commands
|
|
42
42
|
|
|
@@ -91,10 +91,10 @@ The developer profile is stored in `.claude/memory/profile/` as a set of markdow
|
|
|
91
91
|
|
|
92
92
|
### Onboarding Flow
|
|
93
93
|
|
|
94
|
-
Profile data is created during `/meta init`. The command runs a
|
|
94
|
+
Profile data is created during `/meta init`. The command runs a 6-question assessment and writes the responses to `memory/profile/`:
|
|
95
95
|
|
|
96
96
|
- **Identity & Goals (3 questions):** What the business does, what to automate, which tools are already in use.
|
|
97
|
-
- **Competency (2
|
|
97
|
+
- **Competency (2 questions):** Command Center familiarity (maps to `platformNavigation`), automation tool familiarity (maps to `automation`). Two additional dimensions (`apiIntegration`, `domainExpertise`) are inferred from these answers.
|
|
98
98
|
- **Communication (1 question):** Step-by-step explanations vs. concise answers.
|
|
99
99
|
|
|
100
100
|
### Profile Structure
|
|
@@ -103,11 +103,11 @@ Profile data is created during `/meta init`. The command runs a competency asses
|
|
|
103
103
|
.claude/memory/profile/
|
|
104
104
|
├── index.md # Profile summary with links to sub-files
|
|
105
105
|
├── identity.md # Organization, industry, goals, integrations
|
|
106
|
-
├── skills.md #
|
|
106
|
+
├── skills.md # Skill dimensions (platformNavigation, apiIntegration, automation, domainExpertise)
|
|
107
107
|
└── preferences.md # Verbosity, guidance style, interaction patterns
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
-
`identity.md` records the organization name, industry, size, project goals, and known tool integrations. `skills.md` stores
|
|
110
|
+
`identity.md` records the organization name, industry, size, project goals, and known tool integrations. `skills.md` stores four skill dimensions as structured values (`platformNavigation`, `apiIntegration`, `automation`, `domainExpertise`) along with a Growth Log table. See [Interaction Guidance](../developer/interaction-guidance.mdx) for the full set of per-dimension adaptation rules. `preferences.md` stores verbosity (`detailed / concise`) and proactive guidance preference.
|
|
111
111
|
|
|
112
112
|
### Auto-Update Triggers
|
|
113
113
|
|
|
@@ -79,15 +79,18 @@ See [Documentation](documentation.mdx) for writing MDX docs, file limits, and th
|
|
|
79
79
|
|
|
80
80
|
## Adaptive Guidance
|
|
81
81
|
|
|
82
|
-
The agent adapts its communication based on
|
|
82
|
+
The agent adapts its communication based on four independent skill dimensions stored in `memory/profile/skills.md`:
|
|
83
83
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
84
|
+
| Dimension | Levels | Assessment |
|
|
85
|
+
| --- | --- | --- |
|
|
86
|
+
| Platform Navigation | none / oriented / comfortable | Direct question |
|
|
87
|
+
| API & Integration | none / basic / proficient | Inferred from automation + tools |
|
|
88
|
+
| Automation Concepts | none / low-code / custom | Direct question |
|
|
89
|
+
| Domain Expertise | high / low | Inferred from identity answers |
|
|
89
90
|
|
|
90
|
-
Each dimension
|
|
91
|
+
Each dimension has its own adaptation rules in the [Interaction Guidance](../developer/interaction-guidance.mdx) reference. A user who has deep Zapier experience (automation: low-code) but has never called an API directly (apiIntegration: none) will get credential walkthroughs every time while having automation concepts treated as familiar ground.
|
|
92
|
+
|
|
93
|
+
`/meta init` runs a 6-question assessment: 3 identity questions, 2 competency questions, and 1 communication preference. Platform Navigation and Automation are assessed directly. API & Integration is inferred from the automation level and tools the user already uses. Domain Expertise is inferred from how specifically the user describes their goals.
|
|
91
94
|
|
|
92
95
|
See [Agent System](agent.mdx) for the full assessment question set, dimensional interaction rules, and communication principles.
|
|
93
96
|
|
|
@@ -38,7 +38,7 @@ After `/meta init` and a first deployment, the structure looks like this:
|
|
|
38
38
|
├── profile/ # Developer profile (created by /meta init)
|
|
39
39
|
│ ├── index.md # Profile summary with links to sub-files
|
|
40
40
|
│ ├── identity.md # Organization, industry, goals, integrations
|
|
41
|
-
│ ├── skills.md #
|
|
41
|
+
│ ├── skills.md # Skill dimensions and Growth Log
|
|
42
42
|
│ └── preferences.md # Verbosity, guidance style, interaction patterns
|
|
43
43
|
├── deployment-state.md # Deploy IDs, resource inventory, org info
|
|
44
44
|
├── environment.md # Credentials, API keys, env vars
|
|
@@ -85,7 +85,7 @@ The `profile/` directory stores the developer's personal context -- organization
|
|
|
85
85
|
.claude/memory/profile/
|
|
86
86
|
├── index.md # Profile summary with links to sub-files
|
|
87
87
|
├── identity.md # Organization, industry, goals, integrations
|
|
88
|
-
├── skills.md #
|
|
88
|
+
├── skills.md # Skill dimensions and Growth Log
|
|
89
89
|
└── preferences.md # Verbosity, guidance style, interaction patterns
|
|
90
90
|
```
|
|
91
91
|
|
|
@@ -113,22 +113,32 @@ The `profile/` directory stores the developer's personal context -- organization
|
|
|
113
113
|
- Google Sheets (reporting)
|
|
114
114
|
```
|
|
115
115
|
|
|
116
|
-
**`skills.md`** stores skill
|
|
116
|
+
**`skills.md`** stores four skill dimensions as structured values so the Adaptive Guidance rules in [Interaction Guidance](../developer/interaction-guidance.mdx) can apply them consistently. It also tracks a Growth Log so the agent can detect when a level upgrade is warranted. Example:
|
|
117
117
|
|
|
118
118
|
```markdown
|
|
119
119
|
# Skills
|
|
120
120
|
|
|
121
|
-
|
|
|
121
|
+
| Dimension | Level | Since |
|
|
122
122
|
| --- | --- | --- |
|
|
123
|
-
|
|
|
124
|
-
|
|
|
123
|
+
| platformNavigation | oriented | 2026-02-25 |
|
|
124
|
+
| apiIntegration | basic | 2026-02-25 |
|
|
125
|
+
| automation | low-code | 2026-02-25 |
|
|
126
|
+
| domainExpertise | high | 2026-02-25 |
|
|
125
127
|
|
|
126
|
-
## Growth
|
|
128
|
+
## Growth Log
|
|
127
129
|
|
|
128
|
-
| Date |
|
|
129
|
-
| --- | --- | --- |
|
|
130
|
+
| Date | Observation | Dimension | Change |
|
|
131
|
+
| --- | --- | --- | --- |
|
|
132
|
+
| 2026-03-01 | Navigated to Execution Logs and filtered by resource without direction | platformNavigation | none -> oriented |
|
|
130
133
|
```
|
|
131
134
|
|
|
135
|
+
Valid levels per dimension:
|
|
136
|
+
|
|
137
|
+
- `platformNavigation`: none / oriented / comfortable
|
|
138
|
+
- `apiIntegration`: none / basic / proficient
|
|
139
|
+
- `automation`: none / low-code / custom
|
|
140
|
+
- `domainExpertise`: high / low
|
|
141
|
+
|
|
132
142
|
**`preferences.md`** stores verbosity and proactive guidance settings. Example:
|
|
133
143
|
|
|
134
144
|
```markdown
|
|
@@ -216,7 +216,7 @@ Created when you run `/meta init` in Claude Code. The agent asks six onboarding
|
|
|
216
216
|
├── profile/ # Developer profile (created by /meta init)
|
|
217
217
|
│ ├── index.md
|
|
218
218
|
│ ├── identity.md # Organization, goals, integrations
|
|
219
|
-
│ ├── skills.md #
|
|
219
|
+
│ ├── skills.md # Skill dimensions and Growth Log
|
|
220
220
|
│ └── preferences.md # Verbosity and guidance style
|
|
221
221
|
├── deployment-state.md # Latest deployment outcomes
|
|
222
222
|
├── decisions.md # Architecture decisions recorded over time
|
|
@@ -98,7 +98,9 @@ The `.env.example` file provides the same template and is safe to commit. The ac
|
|
|
98
98
|
|
|
99
99
|
### Guided Setup with Claude Code
|
|
100
100
|
|
|
101
|
-
After scaffolding, open the project in Claude Code
|
|
101
|
+
After scaffolding, open the project in Claude Code. The agent detects that the project is new and automatically walks you through setup: installing dependencies, configuring `.env`, creating your developer profile in `.claude/memory/`, and optionally running your first deploy. No commands needed -- just answer the questions.
|
|
102
|
+
|
|
103
|
+
If the automatic setup doesn't trigger, you can start it manually with `/meta init`.
|
|
102
104
|
|
|
103
105
|
---
|
|
104
106
|
|
|
@@ -145,13 +147,13 @@ Replace `<execution-id>` with the ID returned from the executions list.
|
|
|
145
147
|
|
|
146
148
|
## Next Steps
|
|
147
149
|
|
|
148
|
-
- **
|
|
150
|
+
- **Open in Claude Code** -- Setup runs automatically on first session (installs deps, configures `.env`, creates your developer profile)
|
|
149
151
|
- [Development Framework](../framework/index.mdx) -- How Claude Code helps you build
|
|
150
152
|
- [Resources](../resources/index.mdx) -- Define workflows and agents
|
|
151
153
|
- [CLI Reference](../cli/index.mdx) -- Full command reference with flags
|
|
152
154
|
- [Deployment](../deployment/index.mdx) -- Deployment lifecycle and environment variables
|
|
153
155
|
|
|
154
|
-
When a new SDK version is released, run
|
|
156
|
+
When a new SDK version is released, run `/meta fix` in Claude Code for an interactive upgrade that includes SDK update, drift repair, and documentation verification. Alternatively, run `elevasis update` from the terminal to update managed files (CLAUDE.md, slash commands, `.gitignore`) without agent interaction.
|
|
155
157
|
|
|
156
158
|
---
|
|
157
159
|
|