@elevasis/sdk 0.5.10 → 0.5.12

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 CHANGED
@@ -40164,18 +40164,6 @@ var DOMAIN_MAP = {
40164
40164
  [DOMAINS.DIAGNOSTIC]: DIAGNOSTIC_DOMAIN
40165
40165
  };
40166
40166
 
40167
- // ../core/src/execution/core/server/environment.ts
40168
- function detectEnvironment() {
40169
- const env2 = process.env.NODE_ENV || "development";
40170
- if (env2 === "production") return "production";
40171
- if (env2 === "staging") return "staging";
40172
- return "development";
40173
- }
40174
- function canExecuteResource(resource, environment) {
40175
- const env2 = environment || detectEnvironment();
40176
- return env2 === "production" ? resource.status === "prod" : true;
40177
- }
40178
-
40179
40167
  // ../core/src/execution/engine/base/errors.ts
40180
40168
  var ExecutionError = class extends Error {
40181
40169
  /**
@@ -43293,9 +43281,8 @@ var ResourceRegistry = class {
43293
43281
  * List all resources for an organization
43294
43282
  * Returns ResourceDefinition metadata (not full definitions)
43295
43283
  *
43296
- * Environment filtering (automatic):
43297
- * - Development: Returns all resources (dev + prod)
43298
- * - Production: Returns only prod resources (filters out dev)
43284
+ * All resources are returned regardless of server environment.
43285
+ * Pass an explicit `environment` filter to get only 'dev' or 'prod' resources.
43299
43286
  */
43300
43287
  listResourcesForOrganization(organizationName, environment) {
43301
43288
  const orgResources = this.registry[organizationName];
@@ -43308,7 +43295,6 @@ var ResourceRegistry = class {
43308
43295
  environment
43309
43296
  };
43310
43297
  }
43311
- const currentEnv = detectEnvironment();
43312
43298
  const workflows = (orgResources.workflows || []).map((def) => ({
43313
43299
  resourceId: def.config.resourceId,
43314
43300
  name: def.config.name,
@@ -43317,12 +43303,7 @@ var ResourceRegistry = class {
43317
43303
  type: def.config.type,
43318
43304
  status: def.config.status,
43319
43305
  origin: this.remoteResources.has(`${organizationName}/${def.config.resourceId}`) ? "remote" : "local"
43320
- })).filter((resource) => {
43321
- if (environment) {
43322
- return resource.status === environment;
43323
- }
43324
- return canExecuteResource(resource, currentEnv);
43325
- });
43306
+ })).filter((resource) => !environment || resource.status === environment);
43326
43307
  const agents = (orgResources.agents || []).map((def) => ({
43327
43308
  resourceId: def.config.resourceId,
43328
43309
  name: def.config.name,
@@ -43332,18 +43313,13 @@ var ResourceRegistry = class {
43332
43313
  status: def.config.status,
43333
43314
  sessionCapable: def.config.sessionCapable ?? false,
43334
43315
  origin: this.remoteResources.has(`${organizationName}/${def.config.resourceId}`) ? "remote" : "local"
43335
- })).filter((resource) => {
43336
- if (environment) {
43337
- return resource.status === environment;
43338
- }
43339
- return canExecuteResource(resource, currentEnv);
43340
- });
43316
+ })).filter((resource) => !environment || resource.status === environment);
43341
43317
  return {
43342
43318
  workflows,
43343
43319
  agents,
43344
43320
  total: workflows.length + agents.length,
43345
43321
  organizationName,
43346
- environment: environment || (currentEnv === "production" ? "prod" : void 0)
43322
+ environment
43347
43323
  };
43348
43324
  }
43349
43325
  /**
@@ -43694,7 +43670,7 @@ function wrapAction(commandName, fn) {
43694
43670
  } catch (error46) {
43695
43671
  const errorMessage = error46 instanceof Error ? error46.message : String(error46);
43696
43672
  console.error(source_default.red("\nError:"), errorMessage);
43697
- console.error(source_default.gray(`Run "elevasis ${commandName} --help" for more information`));
43673
+ console.error(source_default.gray(`Run "elevasis-sdk ${commandName} --help" for more information`));
43698
43674
  process.exit(1);
43699
43675
  }
43700
43676
  };
@@ -43811,12 +43787,10 @@ async function apiDelete(endpoint, apiUrl = resolveApiUrl()) {
43811
43787
  // package.json
43812
43788
  var package_default = {
43813
43789
  name: "@elevasis/sdk",
43814
- version: "0.5.10",
43790
+ version: "0.5.12",
43815
43791
  description: "SDK for building Elevasis organization resources",
43816
- "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.",
43817
43792
  type: "module",
43818
43793
  bin: {
43819
- elevasis: "./dist/cli.cjs",
43820
43794
  "elevasis-sdk": "./dist/cli.cjs"
43821
43795
  },
43822
43796
  exports: {
@@ -43942,7 +43916,7 @@ async function generateResourceMap(org) {
43942
43916
  "",
43943
43917
  "# Resource Map",
43944
43918
  "",
43945
- "> Auto-generated by `elevasis deploy`. Do not edit manually.",
43919
+ "> Auto-generated by `elevasis-sdk deploy`. Do not edit manually.",
43946
43920
  ""
43947
43921
  ];
43948
43922
  if (workflows.length > 0) {
@@ -43998,7 +43972,7 @@ async function generateProjectMap(org) {
43998
43972
  "",
43999
43973
  "# Project Map",
44000
43974
  "",
44001
- "> Auto-generated by `elevasis deploy` and `/meta fix`. Do not edit manually.",
43975
+ "> Auto-generated by `elevasis-sdk deploy` and `/meta fix`. Do not edit manually.",
44002
43976
  "",
44003
43977
  "## Project Overview",
44004
43978
  "",
@@ -44330,7 +44304,7 @@ async function generateProjectMap(org) {
44330
44304
  await (0, import_promises.writeFile)((0, import_path.resolve)("docs/project-map.mdx"), lines.join("\n"), "utf-8");
44331
44305
  }
44332
44306
  function registerDeployCommand(program3) {
44333
- program3.command("deploy").description("Validate, bundle, upload, and deploy project resources\n Example: elevasis deploy --api-url http://localhost:5170").option("--api-url <url>", "API URL").option("--entry <path>", "Path to entry file (default: ./src/index.ts)").option("--prod", "Deploy to production (overrides NODE_ENV=development)").action(wrapAction("deploy", async (options2) => {
44307
+ program3.command("deploy").description("Validate, bundle, upload, and deploy project resources\n Example: elevasis-sdk deploy --api-url http://localhost:5170").option("--api-url <url>", "API URL").option("--entry <path>", "Path to entry file (default: ./src/index.ts)").option("--prod", "Deploy to production (overrides NODE_ENV=development)").action(wrapAction("deploy", async (options2) => {
44334
44308
  const startTime = Date.now();
44335
44309
  const apiUrl = resolveApiUrl(options2.apiUrl, options2.prod);
44336
44310
  const env2 = resolveEnvironment(options2.prod);
@@ -44578,7 +44552,7 @@ startWorker(org)
44578
44552
  // src/cli/commands/check.ts
44579
44553
  var import_meta2 = {};
44580
44554
  function registerCheckCommand(program3) {
44581
- program3.command("check").description("Validate project resources against the ResourceRegistry\n Example: elevasis check --entry ./src/index.ts").option("--entry <path>", "Path to entry file (default: ./src/index.ts)").action(wrapAction("check", async (options2) => {
44555
+ program3.command("check").description("Validate project resources against the ResourceRegistry\n Example: elevasis-sdk check --entry ./src/index.ts").option("--entry <path>", "Path to entry file (default: ./src/index.ts)").action(wrapAction("check", async (options2) => {
44582
44556
  const entryPath = options2.entry ?? "./src/index.ts";
44583
44557
  const spinner = ora("Validating resources...").start();
44584
44558
  try {
@@ -44732,7 +44706,7 @@ async function pollForCompletion(resourceId, executionId, apiUrl) {
44732
44706
  }
44733
44707
  function registerExecCommand(program3) {
44734
44708
  program3.command("exec <resourceId>").description(`Execute a deployed resource
44735
- Example: elevasis exec my-workflow -i '{"key":"value"}'`).option("-i, --input <json>", "Input data as JSON string").option("--async", "Execute asynchronously with polling").option("--api-url <url>", "API URL").action(wrapAction("exec", async (resourceId, options2) => {
44709
+ Example: elevasis-sdk exec my-workflow -i '{"key":"value"}'`).option("-i, --input <json>", "Input data as JSON string").option("--async", "Execute asynchronously with polling").option("--api-url <url>", "API URL").action(wrapAction("exec", async (resourceId, options2) => {
44736
44710
  const input = options2.input ? JSON.parse(options2.input) : {};
44737
44711
  const apiUrl = resolveApiUrl(options2.apiUrl);
44738
44712
  if (options2.async) {
@@ -44814,7 +44788,7 @@ function registerResourcesCommand(program3) {
44814
44788
  }
44815
44789
  if (data.resources.length === 0) {
44816
44790
  console.log(source_default.yellow("No deployed resources found."));
44817
- console.log(source_default.gray("Deploy with: elevasis deploy"));
44791
+ console.log(source_default.gray("Deploy with: elevasis-sdk deploy"));
44818
44792
  return;
44819
44793
  }
44820
44794
  const workflows = data.resources.filter((r) => r.resourceType === "workflow");
@@ -44845,7 +44819,7 @@ function registerResourcesCommand(program3) {
44845
44819
 
44846
44820
  // src/cli/commands/executions.ts
44847
44821
  function registerExecutionsCommand(program3) {
44848
- program3.command("executions <resourceId>").description("List execution history for a resource\n Example: elevasis executions my-workflow --limit 10").option("--api-url <url>", "API URL").option("--json", "Output as JSON").option("--limit <number>", "Limit number of results (default: 50)").option("--status <status>", "Filter by status (running|completed|failed)").action(wrapAction("executions", async (resourceId, options2) => {
44822
+ program3.command("executions <resourceId>").description("List execution history for a resource\n Example: elevasis-sdk executions my-workflow --limit 10").option("--api-url <url>", "API URL").option("--json", "Output as JSON").option("--limit <number>", "Limit number of results (default: 50)").option("--status <status>", "Filter by status (running|completed|failed)").action(wrapAction("executions", async (resourceId, options2) => {
44849
44823
  const apiUrl = resolveApiUrl(options2.apiUrl);
44850
44824
  const spinner = ora(`Fetching executions for ${resourceId}...`).start();
44851
44825
  const params = new URLSearchParams();
@@ -44895,7 +44869,7 @@ function registerExecutionsCommand(program3) {
44895
44869
  console.log();
44896
44870
  console.log(
44897
44871
  source_default.dim("Use"),
44898
- source_default.cyan(`elevasis execution ${resourceId} <execution-id>`),
44872
+ source_default.cyan(`elevasis-sdk execution ${resourceId} <execution-id>`),
44899
44873
  source_default.dim("to view details")
44900
44874
  );
44901
44875
  }));
@@ -44903,7 +44877,7 @@ function registerExecutionsCommand(program3) {
44903
44877
 
44904
44878
  // src/cli/commands/execution.ts
44905
44879
  function registerExecutionCommand(program3) {
44906
- program3.command("execution <resourceId> <executionId>").description("Get detailed information about a specific execution\n Example: elevasis execution my-workflow abc-123-uuid --logs-only").option("--api-url <url>", "API URL").option("--json", "Output raw JSON response").option("--logs-only", "Show only execution logs").option("--input", "Include input data in output").option("--result", "Include result data in output").action(wrapAction("execution", async (resourceId, executionId, options2) => {
44880
+ program3.command("execution <resourceId> <executionId>").description("Get detailed information about a specific execution\n Example: elevasis-sdk execution my-workflow abc-123-uuid --logs-only").option("--api-url <url>", "API URL").option("--json", "Output raw JSON response").option("--logs-only", "Show only execution logs").option("--input", "Include input data in output").option("--result", "Include result data in output").action(wrapAction("execution", async (resourceId, executionId, options2) => {
44907
44881
  const apiUrl = resolveApiUrl(options2.apiUrl);
44908
44882
  const spinner = ora("Fetching execution details...").start();
44909
44883
  const execution = await apiGet(
@@ -45019,7 +44993,7 @@ function registerDeploymentsCommand(program3) {
45019
44993
  }
45020
44994
  if (data.deployments.length === 0) {
45021
44995
  console.log(source_default.yellow("No deployments found."));
45022
- console.log(source_default.gray("Deploy with: elevasis deploy"));
44996
+ console.log(source_default.gray("Deploy with: elevasis-sdk deploy"));
45023
44997
  return;
45024
44998
  }
45025
44999
  for (const [index, dep] of data.deployments.entries()) {
@@ -45065,7 +45039,7 @@ function registerDeploymentsCommand(program3) {
45065
45039
 
45066
45040
  // src/cli/commands/describe.ts
45067
45041
  function registerDescribeCommand(program3) {
45068
- program3.command("describe <resourceId>").description("Show resource definition (metadata + schemas)\n Example: elevasis describe my-workflow").option("--api-url <url>", "API URL").option("--json", "Output raw JSON response").action(wrapAction("describe", async (resourceId, options2) => {
45042
+ program3.command("describe <resourceId>").description("Show resource definition (metadata + schemas)\n Example: elevasis-sdk describe my-workflow").option("--api-url <url>", "API URL").option("--json", "Output raw JSON response").action(wrapAction("describe", async (resourceId, options2) => {
45069
45043
  const apiUrl = resolveApiUrl(options2.apiUrl);
45070
45044
  const spinner = ora("Fetching resource definition...").start();
45071
45045
  const definition = await apiGet(
@@ -45105,13 +45079,13 @@ var import_path3 = require("path");
45105
45079
  var import_promises2 = require("fs/promises");
45106
45080
 
45107
45081
  // src/cli/commands/templates/core/workspace.ts
45108
- var TEMPLATE_VERSION = 23;
45082
+ var TEMPLATE_VERSION = 27;
45109
45083
  function configTemplate() {
45110
45084
  return `import type { ElevasConfig } from '@elevasis/sdk'
45111
45085
 
45112
45086
  export default {
45113
45087
  templateVersion: ${TEMPLATE_VERSION},
45114
- // defaultStatus: 'dev', // Default status for new resources ('dev' | 'production')
45088
+ // defaultStatus: 'dev', // Default status for new resources ('dev' | 'prod')
45115
45089
  // dev: { port: 5170 }, // Local API port (internal development only)
45116
45090
  } satisfies ElevasConfig
45117
45091
  `;
@@ -45123,8 +45097,8 @@ function packageJsonTemplate(organization) {
45123
45097
  type: "module",
45124
45098
  scripts: {
45125
45099
  "check-types": "tsc --noEmit",
45126
- check: "elevasis check",
45127
- deploy: "elevasis deploy"
45100
+ check: "elevasis-sdk check",
45101
+ deploy: "elevasis-sdk deploy"
45128
45102
  },
45129
45103
  dependencies: {
45130
45104
  "@elevasis/sdk": `^${SDK_VERSION}`
@@ -45160,10 +45134,6 @@ function envTemplate() {
45160
45134
  return `ELEVASIS_PLATFORM_KEY=
45161
45135
  `;
45162
45136
  }
45163
- function envExampleTemplate() {
45164
- return `ELEVASIS_PLATFORM_KEY=sk_your_key_here
45165
- `;
45166
- }
45167
45137
  function npmrcTemplate() {
45168
45138
  return `auto-install-peers = true
45169
45139
  `;
@@ -45175,6 +45145,7 @@ dist/
45175
45145
  __elevasis_worker.ts
45176
45146
  .claude/settings.local.json
45177
45147
  .claude/memory/
45148
+ package-lock.json
45178
45149
  `;
45179
45150
  if (ctx.hasUI) {
45180
45151
  content += `ui/node_modules/
@@ -45200,7 +45171,7 @@ An [Elevasis](https://elevasis.io) workspace built with the \`@elevasis/sdk\`.
45200
45171
  pnpm install
45201
45172
  \`\`\`
45202
45173
 
45203
- Copy \`.env.example\` to \`.env\` and add your API key:
45174
+ Add your API key to \`.env\`:
45204
45175
 
45205
45176
  \`\`\`
45206
45177
  ELEVASIS_PLATFORM_KEY=sk_...
@@ -45209,12 +45180,12 @@ ELEVASIS_PLATFORM_KEY=sk_...
45209
45180
  ## Development
45210
45181
 
45211
45182
  \`\`\`bash
45212
- elevasis check # Validate resource definitions
45213
- elevasis deploy # Bundle and deploy to platform
45214
- elevasis exec <resourceId> --input '...' # Execute a resource
45215
- elevasis resources # List deployed resources
45216
- elevasis describe <resourceId> # Show resource definition + schemas
45217
- elevasis executions <resourceId> # View execution history
45183
+ pnpm run check # Validate resource definitions
45184
+ pnpm run deploy # Bundle and deploy to platform
45185
+ pnpm exec elevasis-sdk exec <resourceId> --input '...' # Execute a resource
45186
+ pnpm exec elevasis-sdk resources # List deployed resources
45187
+ pnpm exec elevasis-sdk describe <resourceId> # Show resource definition + schemas
45188
+ pnpm exec elevasis-sdk executions <resourceId> # View execution history
45218
45189
  \`\`\`
45219
45190
 
45220
45191
  ## Project Structure
@@ -45235,7 +45206,7 @@ A multi-step workflow that queries platform status and compiles a natural langua
45235
45206
  summary using an LLM. Demonstrates platform API usage with the \`llm\` typed adapter and \`platform.call()\`.
45236
45207
 
45237
45208
  \`\`\`bash
45238
- elevasis exec platform-status --input '{"timeRange": "24h"}'
45209
+ pnpm exec elevasis-sdk exec platform-status --input '{"timeRange": "24h"}'
45239
45210
  \`\`\`
45240
45211
 
45241
45212
  **Input:** \`{ "timeRange": "1h" | "24h" | "7d" }\`
@@ -45247,7 +45218,7 @@ A simple workflow that echoes the input message back. Use it as a starter patter
45247
45218
  for new workflows:
45248
45219
 
45249
45220
  \`\`\`bash
45250
- elevasis exec echo --input '{"message": "hello"}'
45221
+ pnpm exec elevasis-sdk exec echo --input '{"message": "hello"}'
45251
45222
  \`\`\`
45252
45223
 
45253
45224
  **Input:** \`{ "message": string }\`
@@ -45500,13 +45471,18 @@ All \`reference/\` paths resolve to \`node_modules/@elevasis/sdk/reference/\`.
45500
45471
 
45501
45472
  ## Elevasis CLI
45502
45473
 
45503
- **MANDATORY:** Use the \`elevasis\` CLI for all execution/platform operations -- never \`npx\`, \`curl\`, or any other tool.
45474
+ **MANDATORY:** Use the \`elevasis-sdk\` CLI for all execution/platform operations -- never \`curl\` or any other tool.
45475
+
45476
+ Use pnpm scripts for check and deploy (they resolve the local binary automatically):
45477
+
45478
+ - \`pnpm run check\` -- validate resource definitions without deploying
45479
+ - \`pnpm run deploy\` -- deploy to the platform
45504
45480
 
45505
- - \`elevasis exec <resource-id> --input '{...}'\` -- run a resource synchronously
45506
- - \`elevasis exec <resource-id> --input '{...}' --async\` -- run async, returns execution ID
45507
- - \`elevasis execution <resource-id> <execution-id>\` -- inspect execution detail
45508
- - \`elevasis check\` -- validate resource definitions without deploying
45509
- - \`elevasis deploy\` -- deploy to the platform
45481
+ Use \`pnpm exec elevasis-sdk\` for runtime commands (resolves the locally installed binary):
45482
+
45483
+ - \`pnpm exec elevasis-sdk exec <resource-id> --input '{...}'\` -- run a resource synchronously
45484
+ - \`pnpm exec elevasis-sdk exec <resource-id> --input '{...}' --async\` -- run async, returns execution ID
45485
+ - \`pnpm exec elevasis-sdk execution <resource-id> <execution-id>\` -- inspect execution detail
45510
45486
 
45511
45487
  Organization is derived from your API key -- no org prefix needed in the resource ID.
45512
45488
  For full CLI reference: \`reference/cli/index.mdx\`
@@ -45658,32 +45634,34 @@ Example (first time, no progress):
45658
45634
  Elevasis Tutorial
45659
45635
  ==================
45660
45636
 
45661
- ORCHESTRATION CONCEPTS 0/7
45662
- 1 Welcome & Orientation [ ]
45663
- 2 Your First Custom Workflow [ ]
45664
- 3 Understanding Data (Schemas) [ ]
45665
- 4 Using Platform Tools [ ]
45666
- 5 Multi-Step Workflows [ ]
45667
- 6 Decision Points [ ]
45668
- 7 Going to Production [ ]
45669
-
45670
- EXAMPLES & ADVANCED MODULES 0/9
45671
- 8 Human-in-the-Loop [ ]
45672
- 9 Task Scheduling [ ]
45673
- 10 Notification System [ ]
45674
- 11 Real-World Integrations [ ]
45675
- 12 Error Handling Mastery [ ]
45676
- 13 Advanced Workflows [ ]
45677
- 14 Resource Composition [ ]
45678
- 15 LLM Integration [ ]
45679
- 16 AI Agents [ ]
45680
-
45681
- META-FRAMEWORK 0/5
45682
- 17 The Agent Framework [ ]
45683
- 18 The /meta Command [ ]
45684
- 19 /work and /docs [ ]
45685
- 20 Rules, Memory, and Customization [ ]
45686
- 21 Template Lifecycle [ ]
45637
+ INTRODUCTION 0/4
45638
+ 1 Welcome & Orientation [ ]
45639
+ 2 How This Workspace Works [ ]
45640
+ 3 The /meta Command [ ]
45641
+ 4 /work and /docs [ ]
45642
+
45643
+ CORE CONCEPTS 0/6
45644
+ 5 Your First Custom Workflow [ ]
45645
+ 6 Understanding Data (Schemas) [ ]
45646
+ 7 Using Platform Tools [ ]
45647
+ 8 Multi-Step Workflows [ ]
45648
+ 9 Decision Points [ ]
45649
+ 10 Going to Production [ ]
45650
+
45651
+ ADVANCED MODULES 0/9
45652
+ 11 Human-in-the-Loop [ ]
45653
+ 12 Task Scheduling [ ]
45654
+ 13 Notification System [ ]
45655
+ 14 Real-World Integrations [ ]
45656
+ 15 Error Handling Mastery [ ]
45657
+ 16 Advanced Workflows [ ]
45658
+ 17 Resource Composition [ ]
45659
+ 18 LLM Integration [ ]
45660
+ 19 AI Agents [ ]
45661
+
45662
+ ADVANCED WORKSPACE 0/2
45663
+ 20 Rules, Memory, and Customization [ ]
45664
+ 21 Template Lifecycle [ ]
45687
45665
 
45688
45666
  Pick a number to start.
45689
45667
  \`\`\`
@@ -45696,7 +45674,7 @@ indicators from completed/current state. \`"status"\` -> show the same table.
45696
45674
  1. Read \`.claude/memory/tutorial-progress.md\`
45697
45675
  2. Show the full menu table (## Menu) with progress filled in
45698
45676
  3. User picks a number -> start or resume that lesson or module directly
45699
- 4. After completion: mark done in progress file, show updated menu table
45677
+ 4. After user confirms readiness: mark done in progress file, show updated menu table
45700
45678
  5. All 21 items complete -> congratulate, suggest exploring docs/ or /work
45701
45679
 
45702
45680
  ## Lesson Flow
@@ -45706,18 +45684,18 @@ Each lesson follows this flow:
45706
45684
  2. Explain the concept (read docs per skill level, adapt to user)
45707
45685
  3. Guide user to build or modify something (agent writes all code for automation: none)
45708
45686
  4. Verify it works (CLI primary for all levels; Command Center for visual review -- Command View, Execution Logs)
45709
- 5. Celebrate success, record observations in \`.claude/memory/tutorial-progress.md\`
45710
- 6. Ask: "Ready for the next lesson, or want to practice more?"
45687
+ 5. Celebrate success and ask: "Any questions, or ready to continue?"
45688
+ 6. Once the user confirms, record observations in \`.claude/memory/tutorial-progress.md\`
45711
45689
 
45712
45690
  ## Lessons
45713
45691
 
45714
- **Lesson 1: Welcome & Orientation**
45692
+ **Item 1: Welcome & Orientation**
45715
45693
 
45716
45694
  When automation is none:
45717
45695
  Skip the file tour. Start with what Elevasis does for their business -- use analogies
45718
45696
  from \`reference/developer/interaction-guidance.mdx\` (recipe, assembly line, kitchen
45719
45697
  appliance). Explain deployment plainly: "You write the recipe here, then deploy it so
45720
- it's live." Deploy the starter echo workflow (\`elevasis check\` + \`elevasis deploy\`),
45698
+ it's live." Deploy the starter echo workflow (\`elevasis-sdk check\` + \`elevasis-sdk deploy\`),
45721
45699
  THEN tour the Command Center so the user sees populated pages, not empty ones. Tour:
45722
45700
  Command View (echo node), Execution Logs (result).
45723
45701
  Observation focus: automation value understanding, Command Center comfort.
@@ -45726,52 +45704,153 @@ When automation is low-code or custom:
45726
45704
  Tour project files: src/index.ts (registry), src/example/echo.ts (starter
45727
45705
  workflow), src/operations/platform-status.ts (platform API example),
45728
45706
  elevasis.config.ts, .env, docs/. Explain the execution model.
45729
- Verify: run \`elevasis resources\`. Then open the Command Center and tour the
45707
+ Verify: run \`elevasis-sdk resources\`. Then open the Command Center and tour the
45730
45708
  main pages: Command View (resource graph), Execution Logs.
45731
45709
  Point out the echo workflow node in Command View.
45732
45710
  Observation focus: cloud deployment model, UI navigation comfort.
45733
45711
 
45734
- **Lesson 2: Your First Custom Workflow**
45712
+ **Item 2: How This Workspace Works**
45713
+
45714
+ When automation is none:
45715
+ "This workspace comes with a built-in assistant that knows your project, your tools,
45716
+ and your goals. Let me show you how it's set up." Open CLAUDE.md and explain in
45717
+ plain terms: it's the agent's instruction sheet. Point out the commands in the
45718
+ Commands table. Show /meta, /tutorial, /work. Explain the creds skill as
45719
+ "the assistant automatically helps when you mention API keys." Tour the memory folder
45720
+ at a high level -- "this is where the agent stores what it learns about your project."
45721
+ Verify: Ask the user a question about their business goal and show how the agent
45722
+ references their profile in the answer.
45723
+ Observation focus: agent-as-assistant concept, CLAUDE.md as instruction sheet.
45724
+
45725
+ When automation is low-code:
45726
+ Read CLAUDE.md and walk through each section. Explain: what the agent reads on
45727
+ session start, how the navigation table works, what the Skills section means.
45728
+ Explain the four commands briefly. Show that the agent has memory: open
45729
+ \`.claude/memory/profile/skills.md\` and show their own profile -- "every session,
45730
+ the agent reads this and adapts." Explain the initialized flag.
45731
+ Verify: Run /meta to see project status.
45732
+ Observation focus: memory system concept, session initialization flow.
45733
+
45734
+ When automation is custom:
45735
+ Read CLAUDE.md in full. Explain the session initialization sequence: CLAUDE.md ->
45736
+ navigation table -> memory files -> context loading. Walk through: Commands section
45737
+ (4 commands + creds skill), Rules section (auto-loaded based on file paths), Skills
45738
+ section (auto-triggered by content patterns). Point out the initialized flag and
45739
+ explain how /meta init set it.
45740
+ Verify: Run /meta to see project status; observe which fields it reports.
45741
+ Observation focus: initialization model, command-vs-rule-vs-skill distinction.
45742
+
45743
+ **Item 3: The /meta Command**
45744
+
45745
+ When automation is none:
45746
+ "Think of /meta as your project dashboard -- it shows what's healthy and what needs
45747
+ attention." Run /meta (no arguments) and narrate the output in plain language: what
45748
+ each field means. Explain /meta fix as "the agent tidies up and applies updates."
45749
+ Explain /meta deploy as "the agent publishes your changes in one step." Briefly note
45750
+ /meta health shows what happened when something goes wrong.
45751
+ Verify: Run /meta (no arguments). Narrate the output together.
45752
+ Observation focus: project lifecycle concept, dashboard reading.
45753
+
45754
+ When automation is low-code:
45755
+ Show all /meta operations with their purpose. Map to familiar concepts: /meta fix is
45756
+ like "repair this Zap" in Zapier; /meta deploy is a one-command publish pipeline.
45757
+ Walk through the /meta (no-args) output: template version (SDK template your workspace
45758
+ uses), SDK version (installed package), profile summary, drift check.
45759
+ Verify: Run /meta and interpret each field together.
45760
+ Observation focus: deploy pipeline understanding, version tracking.
45761
+
45762
+ When automation is custom:
45763
+ Read \`.claude/commands/meta.md\`. Walk through each operation: init (first-run setup
45764
+ with assessment), (no-args) (status dashboard), fix (drift repair + SDK upgrade +
45765
+ rules health), deploy (7-step pipeline: check, typecheck, docs, git, deploy,
45766
+ project-map, verify), health (runtime diagnostics). Explain the merge strategy for
45767
+ CLAUDE.md and commands. Note the template access model: templates read from
45768
+ @elevasis/sdk/templates subpath.
45769
+ Verify: Run /meta to see project status. Identify what a version mismatch looks like.
45770
+ Observation focus: full lifecycle coverage, pipeline internals.
45771
+
45772
+ **Item 4: /work and /docs**
45773
+
45774
+ When automation is none:
45775
+ "You can ask the assistant to track work across conversations. When you start something
45776
+ complex, use /work create to save your place. Next session, /work resume picks up where
45777
+ you left off." Walk through the concept without deep command details. Then introduce /docs:
45778
+ "When a task is finished, /work complete moves it to docs/ permanently. After that, /docs
45779
+ helps you find and read what's there -- like a notebook for your project." Run /docs (no
45780
+ args) to show the docs/ overview together.
45781
+ Verify: Create a task with \`/work create "practice task"\`, then run /work to see it listed.
45782
+ Then run /docs to see the docs/ structure.
45783
+ Observation focus: persistence concept, cross-session continuity, docs as permanent notes.
45784
+
45785
+ When automation is low-code:
45786
+ Show /work operations: create (task doc with frontmatter + sections), save (updates
45787
+ Progress + Resume Context), resume (loads context for next session), complete (moves
45788
+ to permanent docs/).
45789
+ Then introduce /docs: "/docs is for permanent knowledge -- things that don't expire. Use
45790
+ /docs create to document a workflow or integration. Use /docs verify to check if your
45791
+ docs match the current code." Explain the boundary: /work manages in-progress/, /docs
45792
+ manages permanent docs/.
45793
+ Verify: Create a task with \`/work create "practice task"\`, run /work save, inspect the
45794
+ file. Then run /docs to browse docs/.
45795
+ Observation focus: task tracking workflow, /work vs /docs separation.
45796
+
45797
+ When automation is custom:
45798
+ Read \`.claude/commands/work.md\`. Full /work coverage:
45799
+ /work create (kebab-case filename, frontmatter with status, Objective/Plan/Progress/
45800
+ Resume Context sections), /work save (Progress + Resume Context update), /work resume
45801
+ (multiple-task disambiguation), /work complete (moves to final location).
45802
+ Then read \`.claude/commands/docs.md\`. Cover /docs operations:
45803
+ /docs (default): browse permanent docs/, categorized with read-only auto-generated files
45804
+ separate; /docs create: interview-driven, resource-aware doc creation from src/ code
45805
+ analysis; /docs verify: cross-references resource IDs, schema fields, platform tools in
45806
+ docs against src/ -- standalone analog of /meta fix step 5.
45807
+ Explain the relationship: /work owns docs/in-progress/ (task lifecycle), /work complete
45808
+ moves docs to permanent location, /docs browses and verifies what's there.
45809
+ Verify: Create a task doc, save progress, run /work complete to move it. Then run /docs
45810
+ to see it in the permanent docs/ listing.
45811
+ Observation focus: task doc anatomy, /work-to-/docs handoff, docs verification as standalone tool.
45812
+
45813
+ **Item 5: Your First Custom Workflow**
45735
45814
 
45736
45815
  When automation is none:
45737
45816
  Frame the workflow as "a recipe." Use plain language: "settings" not "config",
45738
45817
  "what data it needs" not "contract", "instructions" not "steps", "where it starts"
45739
- not "entryPoint." Agent writes all code changes. Agent runs \`elevasis exec\` to verify
45818
+ not "entryPoint." Agent writes all code changes. Agent runs \`elevasis-sdk exec\` to verify
45740
45819
  and narrates the result in plain terms.
45741
45820
  Observation focus: recipe-to-result connection.
45742
45821
 
45743
45822
  When automation is low-code or custom:
45744
45823
  Modify the echo workflow. Walk through each part: config, contract, steps,
45745
- entryPoint. Deploy: \`elevasis check\` then \`elevasis deploy\`. Test with
45746
- \`elevasis exec echo --input '{"message":"hello"}'\`. Then open the Execution
45824
+ entryPoint. Deploy: \`elevasis-sdk check\` then \`elevasis-sdk deploy\`. Test with
45825
+ \`elevasis-sdk exec echo --input '{"message":"hello"}'\`. Then open the Execution
45747
45826
  Runner in the Command Center, find the echo workflow, fill out the form, and
45748
45827
  run it from the UI. Compare the result to the CLI output.
45749
45828
  Observation focus: deployment-to-execution loop, TypeScript syntax comfort.
45750
45829
 
45751
- **Lesson 3: Understanding Data (Schemas)**
45830
+ **Item 6: Understanding Data (Schemas)**
45752
45831
 
45753
45832
  When automation is none:
45754
45833
  Frame as "What information does your automation need?" Describe types in plain English:
45755
45834
  text, number, yes/no, a choice from a list. NO Zod, no z.string(), no z.infer(), no
45756
45835
  code shown. Agent reads identity.md goals and writes the workflow schema. Agent runs
45757
- \`elevasis exec\` with sample input and narrates the result.
45836
+ \`elevasis-sdk exec\` with sample input and narrates the result.
45758
45837
  Observation focus: data-to-input connection, required vs optional understanding.
45759
45838
 
45760
45839
  When automation is low-code:
45761
45840
  "Field mapping like Zapier, but with validation." Show Zod types briefly. Demonstrate
45762
45841
  how \`.describe()\` documents each field. Build schema based on identity.md goals.
45763
- After deploy, run with \`elevasis exec --input '{...}'\` to verify each field.
45842
+ After deploy, run with \`elevasis-sdk exec --input '{...}'\` to verify each field.
45764
45843
  Observation focus: schema-to-input mapping, optional fields, types.
45765
45844
 
45766
45845
  When automation is custom:
45767
45846
  Explain schemas in plain English (concepts page). Show common Zod types.
45768
45847
  Explain \`z.infer\`. Build a new workflow with real-world input schema based
45769
45848
  on the user's goals (read .claude/memory/profile/identity.md). After deploy,
45770
- run with \`elevasis exec --input '{...}'\` to verify the schema and inspect
45849
+ run with \`elevasis-sdk exec --input '{...}'\` to verify the schema and inspect
45771
45850
  the execution output.
45772
45851
  Observation focus: schema-to-input mapping, optional fields, types.
45773
45852
 
45774
- **Lesson 4: Using Platform Tools**
45853
+ **Item 7: Using Platform Tools**
45775
45854
 
45776
45855
  When automation is none:
45777
45856
  Frame as "Connecting your automation to a service you already use." Pick ONE
@@ -45793,12 +45872,12 @@ If using the approval tool, note that pending requests surface in Command Queue.
45793
45872
  See reference/platform-tools/adapters.mdx for full API.
45794
45873
  Observation focus: credential setup (CLI + UI), async/await.
45795
45874
 
45796
- **Lesson 5: Multi-Step Workflows**
45875
+ **Item 8: Multi-Step Workflows**
45797
45876
 
45798
45877
  When automation is none:
45799
45878
  Frame as "Step 1 passes its result to Step 2, like a relay race." Command View is
45800
45879
  PRIMARY teaching tool -- show the visual graph before explaining code. Agent builds
45801
- the 2-step workflow. Agent runs \`elevasis exec\` to verify and shows output flow.
45880
+ the 2-step workflow. Agent runs \`elevasis-sdk exec\` to verify and shows output flow.
45802
45881
  User opens Command View to see the two nodes + arrow. Code is secondary.
45803
45882
  Observation focus: relay-race concept, visual graph comprehension.
45804
45883
 
@@ -45809,12 +45888,12 @@ relationship edges between resources. Explain how declared relationships map
45809
45888
  to the visual graph.
45810
45889
  Observation focus: data flow reasoning, relationship visualization.
45811
45890
 
45812
- **Lesson 6: Decision Points**
45891
+ **Item 9: Decision Points**
45813
45892
 
45814
45893
  When automation is none:
45815
45894
  Frame as "If the customer is VIP, do this -- otherwise, do that." No StepType.CONDITIONAL
45816
45895
  jargon -- focus on the concept, not the implementation. Agent adds the condition.
45817
- Agent runs \`elevasis exec\` for both paths. Open Execution Logs to see which
45896
+ Agent runs \`elevasis-sdk exec\` for both paths. Open Execution Logs to see which
45818
45897
  path ran. Guide log navigation step-by-step.
45819
45898
  Observation focus: branching concept understanding, log navigation.
45820
45899
 
@@ -45825,7 +45904,7 @@ Execution Logs in the Command Center, filter by the resource, and show how
45825
45904
  each path appears in the log detail (step trace, input/output).
45826
45905
  Observation focus: branching logic reasoning, execution log interpretation.
45827
45906
 
45828
- **Lesson 7: Going to Production**
45907
+ **Item 10: Going to Production**
45829
45908
 
45830
45909
  When automation is none:
45831
45910
  Frame as "draft vs live" not "dev vs production." Error handling: "when something
@@ -45839,12 +45918,12 @@ Change status from dev to production. Cover error handling: try/catch,
45839
45918
  ExecutionError, PlatformToolError. Create a schedule in Task Scheduler (use
45840
45919
  Recurring type for a cron schedule). If docs/ has pages, show Knowledge Base.
45841
45920
  Open Deployments page to confirm the latest version is active. Show CLI
45842
- monitoring: elevasis executions, elevasis execution. Suggest next steps.
45921
+ monitoring: elevasis-sdk executions, elevasis-sdk execution. Suggest next steps.
45843
45922
  Observation focus: readiness for independent operation (CLI + UI).
45844
45923
 
45845
45924
  ## Module Menu
45846
45925
 
45847
- Module order (items 8-16 in the main menu): hitl, schedules, notifications,
45926
+ Module order (items 11-19 in the main menu): hitl, schedules, notifications,
45848
45927
  integrations, error-handling, workflows, composition, llm, agents.
45849
45928
 
45850
45929
  After completing a module, show the updated full menu table (## Menu).
@@ -45927,116 +46006,16 @@ Read: \`reference/framework/agent.mdx\`.
45927
46006
  Build: Create an agent definition with tools. Configure LLM tool calling.
45928
46007
  Compare agent vs workflow for a task.
45929
46008
  Key concepts: agent definition, tool registration, LLM tool calling, execution trace.
45930
- Verify: Run agent with \`elevasis exec\`, review tool call trace in Execution Logs.
45931
-
45932
- ## Meta-Framework Track
45933
-
45934
- The Meta-Framework track teaches you how the Claude Code workspace works -- the commands,
45935
- rules, memory system, and customization model. It is independent of the core path and
45936
- can be taken in any order.
45937
-
45938
- **MF1: The Agent Framework -- How This Workspace Works**
45939
-
45940
- When automation is none:
45941
- "This workspace comes with a built-in assistant that knows your project, your tools,
45942
- and your goals. Let me show you how it's set up." Open CLAUDE.md and explain in
45943
- plain terms: it's the agent's instruction sheet. Point out the commands in the
45944
- Commands table. Show /meta, /tutorial, /work. Explain the creds skill as
45945
- "the assistant automatically helps when you mention API keys." Tour the memory folder
45946
- at a high level -- "this is where the agent stores what it learns about your project."
45947
- Verify: Ask the user a question about their business goal and show how the agent
45948
- references their profile in the answer.
45949
- Observation focus: agent-as-assistant concept, CLAUDE.md as instruction sheet.
45950
-
45951
- When automation is low-code:
45952
- Read CLAUDE.md and walk through each section. Explain: what the agent reads on
45953
- session start, how the navigation table works, what the Skills section means.
45954
- Explain the four commands briefly. Show that the agent has memory: open
45955
- \`.claude/memory/profile/skills.md\` and show their own profile -- "every session,
45956
- the agent reads this and adapts." Explain the initialized flag.
45957
- Verify: Run /meta to see project status.
45958
- Observation focus: memory system concept, session initialization flow.
45959
-
45960
- When automation is custom:
45961
- Read CLAUDE.md in full. Explain the session initialization sequence: CLAUDE.md ->
45962
- navigation table -> memory files -> context loading. Walk through: Commands section
45963
- (4 commands + creds skill), Rules section (auto-loaded based on file paths), Skills
45964
- section (auto-triggered by content patterns). Point out the initialized flag and
45965
- explain how /meta init set it.
45966
- Verify: Run /meta to see project status; observe which fields it reports.
45967
- Observation focus: initialization model, command-vs-rule-vs-skill distinction.
45968
-
45969
- **MF2: The /meta Command -- Project Lifecycle**
45970
-
45971
- When automation is none:
45972
- "Think of /meta as your project dashboard -- it shows what's healthy and what needs
45973
- attention." Run /meta (no arguments) and narrate the output in plain language: what
45974
- each field means. Explain /meta fix as "the agent tidies up and applies updates."
45975
- Explain /meta deploy as "the agent publishes your changes in one step." Briefly note
45976
- /meta health shows what happened when something goes wrong.
45977
- Verify: Run /meta (no arguments). Narrate the output together.
45978
- Observation focus: project lifecycle concept, dashboard reading.
45979
-
45980
- When automation is low-code:
45981
- Show all /meta operations with their purpose. Map to familiar concepts: /meta fix is
45982
- like "repair this Zap" in Zapier; /meta deploy is a one-command publish pipeline.
45983
- Walk through the /meta (no-args) output: template version (SDK template your workspace
45984
- uses), SDK version (installed package), profile summary, drift check.
45985
- Verify: Run /meta and interpret each field together.
45986
- Observation focus: deploy pipeline understanding, version tracking.
46009
+ Verify: Run agent with \`elevasis-sdk exec\`, review tool call trace in Execution Logs.
45987
46010
 
45988
- When automation is custom:
45989
- Read \`.claude/commands/meta.md\`. Walk through each operation: init (first-run setup
45990
- with assessment), (no-args) (status dashboard), fix (drift repair + SDK upgrade +
45991
- rules health), deploy (7-step pipeline: check, typecheck, docs, git, deploy,
45992
- project-map, verify), health (runtime diagnostics). Explain the merge strategy for
45993
- CLAUDE.md and commands. Note the template access model: templates read from
45994
- @elevasis/sdk/templates subpath.
45995
- Verify: Run /meta to see project status. Identify what a version mismatch looks like.
45996
- Observation focus: full lifecycle coverage, pipeline internals.
46011
+ ## Advanced Workspace Track
45997
46012
 
45998
- **MF3: /work and /docs -- Task and Documentation Lifecycle**
46013
+ The Advanced Workspace track teaches power-user workspace customization and maintenance --
46014
+ rules, memory, and the template lifecycle. Independent of the core path; can be taken at any time.
45999
46015
 
46000
- When automation is none:
46001
- "You can ask the assistant to track work across conversations. When you start something
46002
- complex, use /work create to save your place. Next session, /work resume picks up where
46003
- you left off." Walk through the concept without deep command details. Then introduce /docs:
46004
- "When a task is finished, /work complete moves it to docs/ permanently. After that, /docs
46005
- helps you find and read what's there -- like a notebook for your project." Run /docs (no
46006
- args) to show the docs/ overview together.
46007
- Verify: Create a task with \`/work create "practice task"\`, then run /work to see it listed.
46008
- Then run /docs to see the docs/ structure.
46009
- Observation focus: persistence concept, cross-session continuity, docs as permanent notes.
46016
+ Each item follows the same flow as core lessons: announce, explain per skill level, verify, record observations.
46010
46017
 
46011
- When automation is low-code:
46012
- Show /work operations: create (task doc with frontmatter + sections), save (updates
46013
- Progress + Resume Context), resume (loads context for next session), complete (moves
46014
- to permanent docs/).
46015
- Then introduce /docs: "/docs is for permanent knowledge -- things that don't expire. Use
46016
- /docs create to document a workflow or integration. Use /docs verify to check if your
46017
- docs match the current code." Explain the boundary: /work manages in-progress/, /docs
46018
- manages permanent docs/.
46019
- Verify: Create a task with \`/work create "practice task"\`, run /work save, inspect the
46020
- file. Then run /docs to browse docs/.
46021
- Observation focus: task tracking workflow, /work vs /docs separation.
46022
-
46023
- When automation is custom:
46024
- Read \`.claude/commands/work.md\`. Full /work coverage:
46025
- /work create (kebab-case filename, frontmatter with status, Objective/Plan/Progress/
46026
- Resume Context sections), /work save (Progress + Resume Context update), /work resume
46027
- (multiple-task disambiguation), /work complete (moves to final location).
46028
- Then read \`.claude/commands/docs.md\`. Cover /docs operations:
46029
- /docs (default): browse permanent docs/, categorized with read-only auto-generated files
46030
- separate; /docs create: interview-driven, resource-aware doc creation from src/ code
46031
- analysis; /docs verify: cross-references resource IDs, schema fields, platform tools in
46032
- docs against src/ -- standalone analog of /meta fix step 5.
46033
- Explain the relationship: /work owns docs/in-progress/ (task lifecycle), /work complete
46034
- moves docs to permanent location, /docs browses and verifies what's there.
46035
- Verify: Create a task doc, save progress, run /work complete to move it. Then run /docs
46036
- to see it in the permanent docs/ listing.
46037
- Observation focus: task doc anatomy, /work-to-/docs handoff, docs verification as standalone tool.
46038
-
46039
- **MF4: Rules, Memory, and Customization**
46018
+ **Item 20: Rules, Memory, and Customization**
46040
46019
 
46041
46020
  When automation is none:
46042
46021
  "The assistant has a set of reminders specific to your project. Over time, when it
@@ -46050,7 +46029,7 @@ Observation focus: customization concept, owned vs managed files.
46050
46029
 
46051
46030
  When automation is low-code:
46052
46031
  Show the \`.claude/rules/\` directory. Explain the two types: sdk-patterns.md (MANAGED --
46053
- updated by elevasis update) and workspace-patterns.md (INIT_ONLY -- yours to edit).
46032
+ updated by elevasis-sdk update) and workspace-patterns.md (INIT_ONLY -- yours to edit).
46054
46033
  Explain path-scoping briefly: "These rules only activate when the agent is working on
46055
46034
  certain file types." Show an example rule with WRONG/RIGHT pattern. Explain error
46056
46035
  promotion: if something goes wrong 3+ times, add it here.
@@ -46067,7 +46046,7 @@ workspace-patterns.md. Walk through how to add a new rule.
46067
46046
  Verify: Read \`.claude/rules/workspace-patterns.md\`. Add a sample rule entry together.
46068
46047
  Observation focus: MANAGED vs INIT_ONLY lifecycle, rule authoring, memory layout.
46069
46048
 
46070
- **MF5: Advanced -- Template Lifecycle and Extending**
46049
+ **Item 21: Template Lifecycle**
46071
46050
 
46072
46051
  When automation is none:
46073
46052
  "When Elevasis SDK releases updates, the assistant can apply them to your workspace
@@ -46080,7 +46059,7 @@ Next steps: point to reference docs in docs/, encourage using /work for new task
46080
46059
  Observation focus: update model concept, project map as navigation aid.
46081
46060
 
46082
46061
  When automation is low-code:
46083
- Explain MANAGED (auto-updated by elevasis update) vs INIT_ONLY (set once, yours).
46062
+ Explain MANAGED (auto-updated by elevasis-sdk update) vs INIT_ONLY (set once, yours).
46084
46063
  Show how /meta fix applies SDK updates with conflict handling: "If a file changed,
46085
46064
  it shows you both versions and lets you decide."
46086
46065
  Show \`docs/project-map.mdx\` and explain what it contains: resources, commands,
@@ -46104,7 +46083,7 @@ Observation focus: full template lifecycle, conflict resolution pattern.
46104
46083
 
46105
46084
  **automation: none**
46106
46085
  Use the non-technical variant for each lesson. Agent writes all code -- user
46107
- never types code. Agent runs \`elevasis exec\` for verification and narrates results.
46086
+ never types code. Agent runs \`elevasis-sdk exec\` for verification and narrates results.
46108
46087
  Avoid all jargon; use analogies. CLI is the primary verification tool.
46109
46088
  Always deploy before directing the user to the Command Center.
46110
46089
 
@@ -46118,7 +46097,7 @@ for intermediate/advanced users.
46118
46097
 
46119
46098
  **General rules (all levels)**
46120
46099
  - If user is fast, acknowledge and offer to skip ahead within a lesson
46121
- - After each lesson, update \`.claude/memory/tutorial-progress.md\`
46100
+ - After the user confirms readiness at the end of a lesson, update \`.claude/memory/tutorial-progress.md\`
46122
46101
  - If user demonstrates a level change, promote to skills.md Growth Log
46123
46102
  - After completing a module, show the updated full menu table
46124
46103
  - Adapt module depth to skill level as with lessons
@@ -46137,7 +46116,7 @@ Last Session: {today's date}
46137
46116
 
46138
46117
  ## Completed Lessons
46139
46118
 
46140
- | Lesson | Title | Completed | Duration |
46119
+ | Item | Title | Completed | Duration |
46141
46120
  | --- | --- | --- | --- |
46142
46121
 
46143
46122
  ## Completed Modules
@@ -46145,11 +46124,6 @@ Last Session: {today's date}
46145
46124
  | Module | Title | Completed | Duration |
46146
46125
  | --- | --- | --- | --- |
46147
46126
 
46148
- ## Completed MF Lessons
46149
-
46150
- | Lesson | Title | Completed | Notes |
46151
- | --- | --- | --- | --- |
46152
-
46153
46127
  ## Capability Observations
46154
46128
 
46155
46129
  | Source | Observation |
@@ -46161,13 +46135,14 @@ Last Session: {today's date}
46161
46135
  \`\`\`
46162
46136
 
46163
46137
  Update rules:
46164
- - \`Current\`: free-form, e.g. "L4: Using Platform Tools" or "M:integrations" or "MF2"
46138
+ - \`Current\`: free-form, e.g. "4: Using Platform Tools" or "M:integrations" or "20: Rules, Memory, and Customization"
46165
46139
  - \`Last Session\`: update to today's date on each \`/tutorial\` invocation
46166
- - Completed tables: add a row when a lesson/module/MF lesson finishes
46167
- - Capability Observations: prefix source with L# for lessons, M:<id> for modules, MF# for MF lessons
46140
+ - Completed Lessons: add a row when any numbered item (1-10, 20-21) finishes
46141
+ - Completed Modules: add a row when any module (items 11-19) finishes
46142
+ - Capability Observations: prefix source with item number for lessons (#), M:<id> for modules
46168
46143
  - Assessment Notes: bullet points of general skill observations
46169
46144
 
46170
- Backward-compatible: missing Completed Modules or Completed MF Lessons sections treated as empty.
46145
+ Backward-compatible: missing Completed Modules treated as empty. Old files with Completed MF Lessons: map entries to items 2-4 and 20-21 by lesson title match.
46171
46146
  `;
46172
46147
  }
46173
46148
  function claudeMetaCommandTemplate() {
@@ -46200,7 +46175,7 @@ by the \`<!-- initialized: false -->\` flag in CLAUDE.md, or run manually.
46200
46175
  \`\`\`
46201
46176
  No other keys (no \`NODE_ENV\`, no extras). The \`.env\` file must contain
46202
46177
  only \`ELEVASIS_PLATFORM_KEY\`.
46203
- Validate the key works: run \`elevasis resources\` (should return an empty
46178
+ Validate the key works: run \`elevasis-sdk resources\` (should return an empty
46204
46179
  list, not an auth error). If auth fails, tell the user their key appears
46205
46180
  invalid and ask them to check it in the Elevasis dashboard.
46206
46181
 
@@ -46261,7 +46236,7 @@ by the \`<!-- initialized: false -->\` flag in CLAUDE.md, or run manually.
46261
46236
  - If git remote exists: note remote URL in memory/profile/preferences.md
46262
46237
 
46263
46238
  5. **Verify project**
46264
- Run \`elevasis check\` to confirm the starter resource is valid.
46239
+ Run \`elevasis-sdk check\` to confirm the starter resource is valid.
46265
46240
  Optionally deploy the echo workflow.
46266
46241
 
46267
46242
  6. **Report**
@@ -46278,8 +46253,7 @@ by the \`<!-- initialized: false -->\` flag in CLAUDE.md, or run manually.
46278
46253
  ### \`/meta\` (no arguments) -- Project Status
46279
46254
 
46280
46255
  Display a project health summary:
46281
- 1. Current template version vs latest available
46282
- 2. SDK package version from package.json
46256
+ 1. Template version (from elevasis.config.ts) and installed SDK version (from package.json). Suggest \`elevasis-sdk update\` to check for updates
46283
46257
  3. Profile summary (from memory/profile/skills.md)
46284
46258
  4. Quick drift check: count of missing managed files, missing gitignore entries
46285
46259
  5. Last deployment status (from memory/deployment-state.md if it exists)
@@ -46290,7 +46264,7 @@ Detect and repair all drift. Optionally upgrades the SDK first.
46290
46264
 
46291
46265
  0. **SDK version check** -- Compare installed \`@elevasis/sdk\` against the latest
46292
46266
  available. If behind, offer to run \`pnpm update @elevasis/sdk\` before
46293
- continuing. If the user accepts, run it, then run \`elevasis update\` to add
46267
+ continuing. If the user accepts, run it, then run \`elevasis-sdk update\` to add
46294
46268
  any new managed files and flag conflicts. For each flagged file:
46295
46269
  - Read the current project file and the new template from \`@elevasis/sdk/templates\`
46296
46270
  - Add new sections that don't exist; preserve user customizations
@@ -46319,7 +46293,7 @@ Detect and repair all drift. Optionally upgrades the SDK first.
46319
46293
  suggest adding patterns. Surface suggestions only -- do not auto-generate.
46320
46294
  8. **Project map freshness:** Check whether \`docs/project-map.mdx\` reflects the
46321
46295
  current project state (resources, commands, rules, skills, memory files).
46322
- Compare filesystem state against the map. If stale, run \`elevasis deploy\`
46296
+ Compare filesystem state against the map. If stale, run \`elevasis-sdk deploy\`
46323
46297
  to regenerate, or patch inline for minor drift.
46324
46298
 
46325
46299
  Each step reports its result. Steps 1-8 run even if step 0 is skipped.
@@ -46329,11 +46303,11 @@ Each step reports its result. Steps 1-8 run even if step 0 is skipped.
46329
46303
  0. Read \`reference/deployment/command-view.mdx\` -- understand the Command View
46330
46304
  model, relationship declarations, and what deploy-time validation checks.
46331
46305
  This context is essential for diagnosing validation failures in steps 1-2.
46332
- 1. Run \`elevasis check\` (validation)
46306
+ 1. Run \`elevasis-sdk check\` (validation)
46333
46307
  2. Type check if \`tsconfig.json\` exists
46334
46308
  3. Verify docs reflect current resources
46335
46309
  4. If git configured: stage changes, commit with deploy message
46336
- 5. Run \`elevasis deploy\`
46310
+ 5. Run \`elevasis-sdk deploy\`
46337
46311
  6. \`docs/project-map.mdx\` is auto-regenerated by deploy (no manual bump needed)
46338
46312
  7. Verify deployment via platform
46339
46313
  8. Update \`memory/deployment-state.md\` with count, timestamp, inventory
@@ -46846,7 +46820,7 @@ occurred multiple times or represent a deliberate convention -- not speculative
46846
46820
  ## Rule File Ownership
46847
46821
 
46848
46822
  This file is yours. The other \`.claude/rules/\` files are SDK-owned and updated by
46849
- \`elevasis update\` -- do not add project-specific notes to them, add them here instead:
46823
+ \`elevasis-sdk update\` -- do not add project-specific notes to them, add them here instead:
46850
46824
 
46851
46825
  - \`sdk-patterns.md\` -- SDK imports, source structure, runtime, adapter patterns
46852
46826
  - \`docs-authoring.md\` -- MDX escaping, frontmatter, docs conventions
@@ -46931,10 +46905,10 @@ description: Project map conventions -- auto-generated, do not edit, maintained
46931
46905
 
46932
46906
  # Project Map
46933
46907
 
46934
- - \`docs/project-map.mdx\` and \`docs/resource-map.mdx\` are fully auto-generated by \`elevasis deploy\`
46908
+ - \`docs/project-map.mdx\` and \`docs/resource-map.mdx\` are fully auto-generated by \`elevasis-sdk deploy\`
46935
46909
  - Do not edit either file manually -- changes are overwritten on next deploy
46936
46910
  - \`/meta fix\` step 8 checks for drift and patches the map
46937
- - If a new command, rule, skill, or memory file is added, run \`/meta fix\` or \`elevasis deploy\` to update
46911
+ - If a new command, rule, skill, or memory file is added, run \`/meta fix\` or \`elevasis-sdk deploy\` to update
46938
46912
  `;
46939
46913
  }
46940
46914
  function claudeTaskTrackingRuleTemplate() {
@@ -47180,8 +47154,7 @@ function getUIFiles(orgSlug) {
47180
47154
  "ui/src/App.tsx": uiAppTsxTemplate(),
47181
47155
  "ui/src/AuthRedirect.tsx": uiAuthRedirectTemplate(),
47182
47156
  "ui/src/vite-env.d.ts": uiViteEnvDtsTemplate(),
47183
- "ui/.env": uiEnvTemplate(),
47184
- "ui/.env.example": uiEnvExampleTemplate()
47157
+ "ui/.env": uiEnvTemplate()
47185
47158
  };
47186
47159
  }
47187
47160
  function uiPackageJsonTemplate(orgSlug) {
@@ -47320,10 +47293,6 @@ function uiEnvTemplate() {
47320
47293
  return `VITE_WORKOS_CLIENT_ID=
47321
47294
  `;
47322
47295
  }
47323
- function uiEnvExampleTemplate() {
47324
- return `VITE_WORKOS_CLIENT_ID=your_workos_client_id
47325
- `;
47326
- }
47327
47296
 
47328
47297
  // src/cli/commands/templates/ui/index.ts
47329
47298
  var UI_INIT_FILES = [
@@ -47335,8 +47304,7 @@ var UI_INIT_FILES = [
47335
47304
  "ui/src/App.tsx",
47336
47305
  "ui/src/AuthRedirect.tsx",
47337
47306
  "ui/src/vite-env.d.ts",
47338
- "ui/.env",
47339
- "ui/.env.example"
47307
+ "ui/.env"
47340
47308
  ];
47341
47309
 
47342
47310
  // src/cli/commands/init.ts
@@ -47345,7 +47313,6 @@ var INIT_ONLY_FILES = [
47345
47313
  "pnpm-workspace.yaml",
47346
47314
  "tsconfig.json",
47347
47315
  ".env",
47348
- ".env.example",
47349
47316
  ".npmrc",
47350
47317
  "src/index.ts",
47351
47318
  "src/operations/platform-status.ts",
@@ -47372,11 +47339,12 @@ var MANAGED_FILES = [
47372
47339
  ".claude/rules/docs-authoring.md",
47373
47340
  ".claude/rules/memory-conventions.md",
47374
47341
  ".claude/rules/project-map.md",
47375
- ".claude/rules/task-tracking.md"
47342
+ ".claude/rules/task-tracking.md",
47343
+ ".claude/scripts/statusline-command.js"
47376
47344
  ];
47377
47345
  var SCAFFOLD_FILES = [...INIT_ONLY_FILES, ...MANAGED_FILES];
47378
47346
  function registerInitCommand(program3) {
47379
- program3.command("init [directory]").description("Scaffold a new Elevasis workspace\n Example: elevasis init my-workspace").option("--force", "Overwrite existing files").option("--ui", "Include a Vite + React UI app in ui/").action(wrapAction("init", async (directory, options2) => {
47347
+ program3.command("init [directory]").description("Scaffold a new Elevasis workspace\n Example: elevasis-sdk init my-workspace").option("--force", "Overwrite existing files").option("--ui", "Include a Vite + React UI app in ui/").action(wrapAction("init", async (directory, options2) => {
47380
47348
  const targetDir = directory ? (0, import_path3.resolve)(directory) : process.cwd();
47381
47349
  const orgSlug = toSlug((0, import_path3.basename)(targetDir));
47382
47350
  if (!options2.force) {
@@ -47403,6 +47371,7 @@ function registerInitCommand(program3) {
47403
47371
  await (0, import_promises2.mkdir)((0, import_path3.resolve)(targetDir, "src/shared"), { recursive: true });
47404
47372
  await (0, import_promises2.mkdir)((0, import_path3.resolve)(targetDir, "docs/in-progress"), { recursive: true });
47405
47373
  await (0, import_promises2.mkdir)((0, import_path3.resolve)(targetDir, ".claude/hooks"), { recursive: true });
47374
+ await (0, import_promises2.mkdir)((0, import_path3.resolve)(targetDir, ".claude/scripts"), { recursive: true });
47406
47375
  await (0, import_promises2.mkdir)((0, import_path3.resolve)(targetDir, ".claude/commands"), { recursive: true });
47407
47376
  await (0, import_promises2.mkdir)((0, import_path3.resolve)(targetDir, ".claude/skills/creds"), { recursive: true });
47408
47377
  await (0, import_promises2.mkdir)((0, import_path3.resolve)(targetDir, ".claude/rules"), { recursive: true });
@@ -47415,7 +47384,6 @@ function registerInitCommand(program3) {
47415
47384
  "pnpm-workspace.yaml": pnpmWorkspaceTemplate(),
47416
47385
  "tsconfig.json": tsconfigTemplate(),
47417
47386
  ".env": envTemplate(),
47418
- ".env.example": envExampleTemplate(),
47419
47387
  ".npmrc": npmrcTemplate(),
47420
47388
  ".gitignore": gitignoreTemplate({ hasUI: options2.ui }),
47421
47389
  "src/index.ts": starterTemplate(),
@@ -47439,7 +47407,8 @@ function registerInitCommand(program3) {
47439
47407
  ".claude/rules/docs-authoring.md": claudeDocsAuthoringRuleTemplate(),
47440
47408
  ".claude/rules/memory-conventions.md": claudeMemoryConventionsRuleTemplate(),
47441
47409
  ".claude/rules/project-map.md": claudeProjectMapRuleTemplate(),
47442
- ".claude/rules/task-tracking.md": claudeTaskTrackingRuleTemplate()
47410
+ ".claude/rules/task-tracking.md": claudeTaskTrackingRuleTemplate(),
47411
+ ".claude/scripts/statusline-command.js": claudeStatuslineScriptTemplate()
47443
47412
  };
47444
47413
  if (options2.ui) {
47445
47414
  Object.assign(files, getUIFiles(orgSlug));
@@ -47454,9 +47423,9 @@ function registerInitCommand(program3) {
47454
47423
  console.log(source_default.gray(` cd ${directory}`));
47455
47424
  }
47456
47425
  console.log(source_default.gray(" pnpm install"));
47457
- console.log(source_default.gray(" # Copy .env.example to .env and add your API key"));
47458
- console.log(source_default.gray(" elevasis check"));
47459
- console.log(source_default.gray(" elevasis deploy"));
47426
+ console.log(source_default.gray(" # Add your API key to .env"));
47427
+ console.log(source_default.gray(" elevasis-sdk check"));
47428
+ console.log(source_default.gray(" elevasis-sdk deploy"));
47460
47429
  if (options2.ui) {
47461
47430
  console.log("");
47462
47431
  console.log(source_default.gray(" UI app:"));
@@ -47769,7 +47738,7 @@ async function listCreds(apiUrl, json2) {
47769
47738
  }
47770
47739
  if (data.credentials.length === 0) {
47771
47740
  console.log(source_default.yellow("No credentials found."));
47772
- console.log(source_default.gray("Create one with: elevasis creds create --name my-key --type api-key"));
47741
+ console.log(source_default.gray("Create one with: elevasis-sdk creds create --name my-key --type api-key"));
47773
47742
  return;
47774
47743
  }
47775
47744
  console.log(source_default.cyan(`
@@ -47861,7 +47830,7 @@ Example: --value '{"apiKey":"sk-new-key"}'`
47861
47830
  spinner.stop();
47862
47831
  throw new Error(
47863
47832
  `Credential '${name}' not found.
47864
- Run "elevasis creds list" to see available credentials.`
47833
+ Run "elevasis-sdk creds list" to see available credentials.`
47865
47834
  );
47866
47835
  }
47867
47836
  await apiPatch(`/api/external/credentials/${credential.id}`, { value }, apiUrl);
@@ -47888,7 +47857,7 @@ async function renameCreds(apiUrl, name, newName) {
47888
47857
  spinner.stop();
47889
47858
  throw new Error(
47890
47859
  `Credential '${name}' not found.
47891
- Run "elevasis creds list" to see available credentials.`
47860
+ Run "elevasis-sdk creds list" to see available credentials.`
47892
47861
  );
47893
47862
  }
47894
47863
  const conflict = data.credentials.find((c) => c.name === newName);
@@ -47922,7 +47891,7 @@ async function deleteCreds(apiUrl, name, force) {
47922
47891
  spinner.stop();
47923
47892
  throw new Error(
47924
47893
  `Credential '${name}' not found.
47925
- Run "elevasis creds list" to see available credentials.`
47894
+ Run "elevasis-sdk creds list" to see available credentials.`
47926
47895
  );
47927
47896
  }
47928
47897
  spinner.stop();
@@ -47971,22 +47940,22 @@ function registerCredsCommand(program3) {
47971
47940
  // src/cli/index.ts
47972
47941
  (0, import_dotenv.config)({ path: (0, import_path5.resolve)(process.cwd(), ".env"), override: true });
47973
47942
  var program2 = new Command();
47974
- program2.name("elevasis").description(
47943
+ program2.name("elevasis-sdk").description(
47975
47944
  source_default.cyan("Elevasis SDK CLI") + `
47976
47945
 
47977
47946
  Commands:
47978
- elevasis check Validate project resources
47979
- elevasis deploy Bundle and deploy to platform
47980
- elevasis resources List deployed resources
47981
- elevasis describe <resourceId> Describe a resource
47982
- elevasis exec <resourceId> -i '{}' Execute a resource
47983
- elevasis executions <resourceId> List execution history
47984
- elevasis execution <resourceId> <id> Get execution details
47985
- elevasis deployments List deployments
47986
- elevasis update Update workspace scaffold to latest template
47987
- elevasis init [directory] Scaffold a new workspace
47988
-
47989
- Use "elevasis <command> --help" for more information about a command.`
47947
+ elevasis-sdk check Validate project resources
47948
+ elevasis-sdk deploy Bundle and deploy to platform
47949
+ elevasis-sdk resources List deployed resources
47950
+ elevasis-sdk describe <resourceId> Describe a resource
47951
+ elevasis-sdk exec <resourceId> -i '{}' Execute a resource
47952
+ elevasis-sdk executions <resourceId> List execution history
47953
+ elevasis-sdk execution <resourceId> <id> Get execution details
47954
+ elevasis-sdk deployments List deployments
47955
+ elevasis-sdk update Update workspace scaffold to latest template
47956
+ elevasis-sdk init [directory] Scaffold a new workspace
47957
+
47958
+ Use "elevasis-sdk <command> --help" for more information about a command.`
47990
47959
  ).version(SDK_VERSION);
47991
47960
  registerCheckCommand(program2);
47992
47961
  registerDeployCommand(program2);