@elevasis/sdk 0.5.9 → 0.5.11

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
@@ -43694,7 +43694,7 @@ function wrapAction(commandName, fn) {
43694
43694
  } catch (error46) {
43695
43695
  const errorMessage = error46 instanceof Error ? error46.message : String(error46);
43696
43696
  console.error(source_default.red("\nError:"), errorMessage);
43697
- console.error(source_default.gray(`Run "elevasis ${commandName} --help" for more information`));
43697
+ console.error(source_default.gray(`Run "elevasis-sdk ${commandName} --help" for more information`));
43698
43698
  process.exit(1);
43699
43699
  }
43700
43700
  };
@@ -43729,18 +43729,21 @@ function resolveApiKey(prod) {
43729
43729
  }
43730
43730
 
43731
43731
  // src/cli/api-client.ts
43732
- function getApiKey() {
43733
- const key = process.env.ELEVASIS_PLATFORM_KEY;
43732
+ function getApiKey(apiUrl) {
43733
+ const isProd = !apiUrl.includes("localhost");
43734
+ const key = resolveApiKey(isProd);
43734
43735
  if (!key) {
43736
+ const varName = isProd ? "ELEVASIS_PLATFORM_KEY" : "ELEVASIS_PLATFORM_KEY_DEV";
43735
43737
  throw new Error(
43736
- "ELEVASIS_PLATFORM_KEY environment variable is required.\nSet it in your .env file: ELEVASIS_PLATFORM_KEY=sk_..."
43738
+ `${varName} environment variable is required.
43739
+ Set it in your .env file: ${varName}=sk_...`
43737
43740
  );
43738
43741
  }
43739
43742
  return key;
43740
43743
  }
43741
43744
  async function apiGet(endpoint, apiUrl = resolveApiUrl()) {
43742
43745
  const response = await fetch(`${apiUrl}${endpoint}`, {
43743
- headers: { Authorization: `Bearer ${getApiKey()}` }
43746
+ headers: { Authorization: `Bearer ${getApiKey(apiUrl)}` }
43744
43747
  });
43745
43748
  if (!response.ok) {
43746
43749
  const errorText = await response.text();
@@ -43758,7 +43761,7 @@ async function apiPost(endpoint, body, apiUrl = resolveApiUrl()) {
43758
43761
  const response = await fetch(`${apiUrl}${endpoint}`, {
43759
43762
  method: "POST",
43760
43763
  headers: {
43761
- Authorization: `Bearer ${getApiKey()}`,
43764
+ Authorization: `Bearer ${getApiKey(apiUrl)}`,
43762
43765
  "Content-Type": "application/json"
43763
43766
  },
43764
43767
  body: JSON.stringify(body)
@@ -43776,7 +43779,7 @@ async function apiPatch(endpoint, body, apiUrl = resolveApiUrl()) {
43776
43779
  const response = await fetch(`${apiUrl}${endpoint}`, {
43777
43780
  method: "PATCH",
43778
43781
  headers: {
43779
- Authorization: `Bearer ${getApiKey()}`,
43782
+ Authorization: `Bearer ${getApiKey(apiUrl)}`,
43780
43783
  "Content-Type": "application/json"
43781
43784
  },
43782
43785
  body: JSON.stringify(body)
@@ -43793,7 +43796,7 @@ async function apiPatch(endpoint, body, apiUrl = resolveApiUrl()) {
43793
43796
  async function apiDelete(endpoint, apiUrl = resolveApiUrl()) {
43794
43797
  const response = await fetch(`${apiUrl}${endpoint}`, {
43795
43798
  method: "DELETE",
43796
- headers: { Authorization: `Bearer ${getApiKey()}` }
43799
+ headers: { Authorization: `Bearer ${getApiKey(apiUrl)}` }
43797
43800
  });
43798
43801
  if (!response.ok) {
43799
43802
  const errorText = await response.text();
@@ -43808,12 +43811,10 @@ async function apiDelete(endpoint, apiUrl = resolveApiUrl()) {
43808
43811
  // package.json
43809
43812
  var package_default = {
43810
43813
  name: "@elevasis/sdk",
43811
- version: "0.5.9",
43814
+ version: "0.5.11",
43812
43815
  description: "SDK for building Elevasis organization resources",
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.",
43814
43816
  type: "module",
43815
43817
  bin: {
43816
- elevasis: "./dist/cli.cjs",
43817
43818
  "elevasis-sdk": "./dist/cli.cjs"
43818
43819
  },
43819
43820
  exports: {
@@ -43939,7 +43940,7 @@ async function generateResourceMap(org) {
43939
43940
  "",
43940
43941
  "# Resource Map",
43941
43942
  "",
43942
- "> Auto-generated by `elevasis deploy`. Do not edit manually.",
43943
+ "> Auto-generated by `elevasis-sdk deploy`. Do not edit manually.",
43943
43944
  ""
43944
43945
  ];
43945
43946
  if (workflows.length > 0) {
@@ -43995,7 +43996,7 @@ async function generateProjectMap(org) {
43995
43996
  "",
43996
43997
  "# Project Map",
43997
43998
  "",
43998
- "> Auto-generated by `elevasis deploy` and `/meta fix`. Do not edit manually.",
43999
+ "> Auto-generated by `elevasis-sdk deploy` and `/meta fix`. Do not edit manually.",
43999
44000
  "",
44000
44001
  "## Project Overview",
44001
44002
  "",
@@ -44327,7 +44328,7 @@ async function generateProjectMap(org) {
44327
44328
  await (0, import_promises.writeFile)((0, import_path.resolve)("docs/project-map.mdx"), lines.join("\n"), "utf-8");
44328
44329
  }
44329
44330
  function registerDeployCommand(program3) {
44330
- 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) => {
44331
+ 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) => {
44331
44332
  const startTime = Date.now();
44332
44333
  const apiUrl = resolveApiUrl(options2.apiUrl, options2.prod);
44333
44334
  const env2 = resolveEnvironment(options2.prod);
@@ -44575,7 +44576,7 @@ startWorker(org)
44575
44576
  // src/cli/commands/check.ts
44576
44577
  var import_meta2 = {};
44577
44578
  function registerCheckCommand(program3) {
44578
- 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) => {
44579
+ 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) => {
44579
44580
  const entryPath = options2.entry ?? "./src/index.ts";
44580
44581
  const spinner = ora("Validating resources...").start();
44581
44582
  try {
@@ -44729,7 +44730,7 @@ async function pollForCompletion(resourceId, executionId, apiUrl) {
44729
44730
  }
44730
44731
  function registerExecCommand(program3) {
44731
44732
  program3.command("exec <resourceId>").description(`Execute a deployed resource
44732
- 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) => {
44733
+ 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) => {
44733
44734
  const input = options2.input ? JSON.parse(options2.input) : {};
44734
44735
  const apiUrl = resolveApiUrl(options2.apiUrl);
44735
44736
  if (options2.async) {
@@ -44811,7 +44812,7 @@ function registerResourcesCommand(program3) {
44811
44812
  }
44812
44813
  if (data.resources.length === 0) {
44813
44814
  console.log(source_default.yellow("No deployed resources found."));
44814
- console.log(source_default.gray("Deploy with: elevasis deploy"));
44815
+ console.log(source_default.gray("Deploy with: elevasis-sdk deploy"));
44815
44816
  return;
44816
44817
  }
44817
44818
  const workflows = data.resources.filter((r) => r.resourceType === "workflow");
@@ -44842,7 +44843,7 @@ function registerResourcesCommand(program3) {
44842
44843
 
44843
44844
  // src/cli/commands/executions.ts
44844
44845
  function registerExecutionsCommand(program3) {
44845
- 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) => {
44846
+ 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) => {
44846
44847
  const apiUrl = resolveApiUrl(options2.apiUrl);
44847
44848
  const spinner = ora(`Fetching executions for ${resourceId}...`).start();
44848
44849
  const params = new URLSearchParams();
@@ -44892,7 +44893,7 @@ function registerExecutionsCommand(program3) {
44892
44893
  console.log();
44893
44894
  console.log(
44894
44895
  source_default.dim("Use"),
44895
- source_default.cyan(`elevasis execution ${resourceId} <execution-id>`),
44896
+ source_default.cyan(`elevasis-sdk execution ${resourceId} <execution-id>`),
44896
44897
  source_default.dim("to view details")
44897
44898
  );
44898
44899
  }));
@@ -44900,7 +44901,7 @@ function registerExecutionsCommand(program3) {
44900
44901
 
44901
44902
  // src/cli/commands/execution.ts
44902
44903
  function registerExecutionCommand(program3) {
44903
- 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) => {
44904
+ 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) => {
44904
44905
  const apiUrl = resolveApiUrl(options2.apiUrl);
44905
44906
  const spinner = ora("Fetching execution details...").start();
44906
44907
  const execution = await apiGet(
@@ -45016,7 +45017,7 @@ function registerDeploymentsCommand(program3) {
45016
45017
  }
45017
45018
  if (data.deployments.length === 0) {
45018
45019
  console.log(source_default.yellow("No deployments found."));
45019
- console.log(source_default.gray("Deploy with: elevasis deploy"));
45020
+ console.log(source_default.gray("Deploy with: elevasis-sdk deploy"));
45020
45021
  return;
45021
45022
  }
45022
45023
  for (const [index, dep] of data.deployments.entries()) {
@@ -45062,7 +45063,7 @@ function registerDeploymentsCommand(program3) {
45062
45063
 
45063
45064
  // src/cli/commands/describe.ts
45064
45065
  function registerDescribeCommand(program3) {
45065
- 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) => {
45066
+ 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) => {
45066
45067
  const apiUrl = resolveApiUrl(options2.apiUrl);
45067
45068
  const spinner = ora("Fetching resource definition...").start();
45068
45069
  const definition = await apiGet(
@@ -45102,7 +45103,7 @@ var import_path3 = require("path");
45102
45103
  var import_promises2 = require("fs/promises");
45103
45104
 
45104
45105
  // src/cli/commands/templates/core/workspace.ts
45105
- var TEMPLATE_VERSION = 22;
45106
+ var TEMPLATE_VERSION = 24;
45106
45107
  function configTemplate() {
45107
45108
  return `import type { ElevasConfig } from '@elevasis/sdk'
45108
45109
 
@@ -45120,8 +45121,8 @@ function packageJsonTemplate(organization) {
45120
45121
  type: "module",
45121
45122
  scripts: {
45122
45123
  "check-types": "tsc --noEmit",
45123
- check: "elevasis check",
45124
- deploy: "elevasis deploy"
45124
+ check: "elevasis-sdk check",
45125
+ deploy: "elevasis-sdk deploy"
45125
45126
  },
45126
45127
  dependencies: {
45127
45128
  "@elevasis/sdk": `^${SDK_VERSION}`
@@ -45172,6 +45173,7 @@ dist/
45172
45173
  __elevasis_worker.ts
45173
45174
  .claude/settings.local.json
45174
45175
  .claude/memory/
45176
+ package-lock.json
45175
45177
  `;
45176
45178
  if (ctx.hasUI) {
45177
45179
  content += `ui/node_modules/
@@ -45206,12 +45208,12 @@ ELEVASIS_PLATFORM_KEY=sk_...
45206
45208
  ## Development
45207
45209
 
45208
45210
  \`\`\`bash
45209
- elevasis check # Validate resource definitions
45210
- elevasis deploy # Bundle and deploy to platform
45211
- elevasis exec <resourceId> --input '...' # Execute a resource
45212
- elevasis resources # List deployed resources
45213
- elevasis describe <resourceId> # Show resource definition + schemas
45214
- elevasis executions <resourceId> # View execution history
45211
+ elevasis-sdk check # Validate resource definitions
45212
+ elevasis-sdk deploy # Bundle and deploy to platform
45213
+ elevasis-sdk exec <resourceId> --input '...' # Execute a resource
45214
+ elevasis-sdk resources # List deployed resources
45215
+ elevasis-sdk describe <resourceId> # Show resource definition + schemas
45216
+ elevasis-sdk executions <resourceId> # View execution history
45215
45217
  \`\`\`
45216
45218
 
45217
45219
  ## Project Structure
@@ -45232,7 +45234,7 @@ A multi-step workflow that queries platform status and compiles a natural langua
45232
45234
  summary using an LLM. Demonstrates platform API usage with the \`llm\` typed adapter and \`platform.call()\`.
45233
45235
 
45234
45236
  \`\`\`bash
45235
- elevasis exec platform-status --input '{"timeRange": "24h"}'
45237
+ elevasis-sdk exec platform-status --input '{"timeRange": "24h"}'
45236
45238
  \`\`\`
45237
45239
 
45238
45240
  **Input:** \`{ "timeRange": "1h" | "24h" | "7d" }\`
@@ -45244,7 +45246,7 @@ A simple workflow that echoes the input message back. Use it as a starter patter
45244
45246
  for new workflows:
45245
45247
 
45246
45248
  \`\`\`bash
45247
- elevasis exec echo --input '{"message": "hello"}'
45249
+ elevasis-sdk exec echo --input '{"message": "hello"}'
45248
45250
  \`\`\`
45249
45251
 
45250
45252
  **Input:** \`{ "message": string }\`
@@ -45256,6 +45258,10 @@ elevasis exec echo --input '{"message": "hello"}'
45256
45258
  function claudeSettingsTemplate() {
45257
45259
  return JSON.stringify({
45258
45260
  autoCompact: false,
45261
+ statusLine: {
45262
+ type: "command",
45263
+ command: "node .claude/scripts/statusline-command.js"
45264
+ },
45259
45265
  hooks: {
45260
45266
  PreToolUse: [
45261
45267
  {
@@ -45271,6 +45277,29 @@ function claudeSettingsTemplate() {
45271
45277
  }
45272
45278
  }, null, 2) + "\n";
45273
45279
  }
45280
+ function claudeStatuslineScriptTemplate() {
45281
+ return `#!/usr/bin/env node
45282
+ let input = '';
45283
+ process.stdin.on('data', chunk => input += chunk);
45284
+ process.stdin.on('end', () => {
45285
+ const data = JSON.parse(input);
45286
+ const model = data.model?.display_name || '?';
45287
+ const pct = Math.floor(data.context_window?.used_percentage || 0);
45288
+
45289
+ const DIM = '\\x1b[90m', RESET = '\\x1b[0m';
45290
+ const GREEN = '\\x1b[32m', YELLOW = '\\x1b[33m', RED = '\\x1b[31m';
45291
+
45292
+ const color = pct >= 90 ? RED : pct >= 70 ? YELLOW : GREEN;
45293
+
45294
+ const width = 20;
45295
+ const filled = Math.floor(pct * width / 100);
45296
+ const empty = width - filled;
45297
+ const bar = '#'.repeat(filled) + '-'.repeat(empty);
45298
+
45299
+ console.log(\`\${DIM}[\${RESET}\${model}\${DIM}]\${RESET} \${color}\${bar}\${RESET} \${pct}%\`);
45300
+ });
45301
+ `;
45302
+ }
45274
45303
  function claudeSdkBoundaryHookTemplate() {
45275
45304
  return String.raw`#!/usr/bin/env node
45276
45305
  // enforce-sdk-boundary.mjs
@@ -45470,13 +45499,13 @@ All \`reference/\` paths resolve to \`node_modules/@elevasis/sdk/reference/\`.
45470
45499
 
45471
45500
  ## Elevasis CLI
45472
45501
 
45473
- **MANDATORY:** Use the \`elevasis\` CLI for all execution/platform operations -- never \`npx\`, \`curl\`, or any other tool.
45502
+ **MANDATORY:** Use the \`elevasis-sdk\` CLI for all execution/platform operations -- never \`npx\`, \`curl\`, or any other tool.
45474
45503
 
45475
- - \`elevasis exec <resource-id> --input '{...}'\` -- run a resource synchronously
45476
- - \`elevasis exec <resource-id> --input '{...}' --async\` -- run async, returns execution ID
45477
- - \`elevasis execution <resource-id> <execution-id>\` -- inspect execution detail
45478
- - \`elevasis check\` -- validate resource definitions without deploying
45479
- - \`elevasis deploy\` -- deploy to the platform
45504
+ - \`elevasis-sdk exec <resource-id> --input '{...}'\` -- run a resource synchronously
45505
+ - \`elevasis-sdk exec <resource-id> --input '{...}' --async\` -- run async, returns execution ID
45506
+ - \`elevasis-sdk execution <resource-id> <execution-id>\` -- inspect execution detail
45507
+ - \`elevasis-sdk check\` -- validate resource definitions without deploying
45508
+ - \`elevasis-sdk deploy\` -- deploy to the platform
45480
45509
 
45481
45510
  Organization is derived from your API key -- no org prefix needed in the resource ID.
45482
45511
  For full CLI reference: \`reference/cli/index.mdx\`
@@ -45687,7 +45716,7 @@ When automation is none:
45687
45716
  Skip the file tour. Start with what Elevasis does for their business -- use analogies
45688
45717
  from \`reference/developer/interaction-guidance.mdx\` (recipe, assembly line, kitchen
45689
45718
  appliance). Explain deployment plainly: "You write the recipe here, then deploy it so
45690
- it's live." Deploy the starter echo workflow (\`elevasis check\` + \`elevasis deploy\`),
45719
+ it's live." Deploy the starter echo workflow (\`elevasis-sdk check\` + \`elevasis-sdk deploy\`),
45691
45720
  THEN tour the Command Center so the user sees populated pages, not empty ones. Tour:
45692
45721
  Command View (echo node), Execution Logs (result).
45693
45722
  Observation focus: automation value understanding, Command Center comfort.
@@ -45696,7 +45725,7 @@ When automation is low-code or custom:
45696
45725
  Tour project files: src/index.ts (registry), src/example/echo.ts (starter
45697
45726
  workflow), src/operations/platform-status.ts (platform API example),
45698
45727
  elevasis.config.ts, .env, docs/. Explain the execution model.
45699
- Verify: run \`elevasis resources\`. Then open the Command Center and tour the
45728
+ Verify: run \`elevasis-sdk resources\`. Then open the Command Center and tour the
45700
45729
  main pages: Command View (resource graph), Execution Logs.
45701
45730
  Point out the echo workflow node in Command View.
45702
45731
  Observation focus: cloud deployment model, UI navigation comfort.
@@ -45706,14 +45735,14 @@ Observation focus: cloud deployment model, UI navigation comfort.
45706
45735
  When automation is none:
45707
45736
  Frame the workflow as "a recipe." Use plain language: "settings" not "config",
45708
45737
  "what data it needs" not "contract", "instructions" not "steps", "where it starts"
45709
- not "entryPoint." Agent writes all code changes. Agent runs \`elevasis exec\` to verify
45738
+ not "entryPoint." Agent writes all code changes. Agent runs \`elevasis-sdk exec\` to verify
45710
45739
  and narrates the result in plain terms.
45711
45740
  Observation focus: recipe-to-result connection.
45712
45741
 
45713
45742
  When automation is low-code or custom:
45714
45743
  Modify the echo workflow. Walk through each part: config, contract, steps,
45715
- entryPoint. Deploy: \`elevasis check\` then \`elevasis deploy\`. Test with
45716
- \`elevasis exec echo --input '{"message":"hello"}'\`. Then open the Execution
45744
+ entryPoint. Deploy: \`elevasis-sdk check\` then \`elevasis-sdk deploy\`. Test with
45745
+ \`elevasis-sdk exec echo --input '{"message":"hello"}'\`. Then open the Execution
45717
45746
  Runner in the Command Center, find the echo workflow, fill out the form, and
45718
45747
  run it from the UI. Compare the result to the CLI output.
45719
45748
  Observation focus: deployment-to-execution loop, TypeScript syntax comfort.
@@ -45724,20 +45753,20 @@ When automation is none:
45724
45753
  Frame as "What information does your automation need?" Describe types in plain English:
45725
45754
  text, number, yes/no, a choice from a list. NO Zod, no z.string(), no z.infer(), no
45726
45755
  code shown. Agent reads identity.md goals and writes the workflow schema. Agent runs
45727
- \`elevasis exec\` with sample input and narrates the result.
45756
+ \`elevasis-sdk exec\` with sample input and narrates the result.
45728
45757
  Observation focus: data-to-input connection, required vs optional understanding.
45729
45758
 
45730
45759
  When automation is low-code:
45731
45760
  "Field mapping like Zapier, but with validation." Show Zod types briefly. Demonstrate
45732
45761
  how \`.describe()\` documents each field. Build schema based on identity.md goals.
45733
- After deploy, run with \`elevasis exec --input '{...}'\` to verify each field.
45762
+ After deploy, run with \`elevasis-sdk exec --input '{...}'\` to verify each field.
45734
45763
  Observation focus: schema-to-input mapping, optional fields, types.
45735
45764
 
45736
45765
  When automation is custom:
45737
45766
  Explain schemas in plain English (concepts page). Show common Zod types.
45738
45767
  Explain \`z.infer\`. Build a new workflow with real-world input schema based
45739
45768
  on the user's goals (read .claude/memory/profile/identity.md). After deploy,
45740
- run with \`elevasis exec --input '{...}'\` to verify the schema and inspect
45769
+ run with \`elevasis-sdk exec --input '{...}'\` to verify the schema and inspect
45741
45770
  the execution output.
45742
45771
  Observation focus: schema-to-input mapping, optional fields, types.
45743
45772
 
@@ -45768,7 +45797,7 @@ Observation focus: credential setup (CLI + UI), async/await.
45768
45797
  When automation is none:
45769
45798
  Frame as "Step 1 passes its result to Step 2, like a relay race." Command View is
45770
45799
  PRIMARY teaching tool -- show the visual graph before explaining code. Agent builds
45771
- the 2-step workflow. Agent runs \`elevasis exec\` to verify and shows output flow.
45800
+ the 2-step workflow. Agent runs \`elevasis-sdk exec\` to verify and shows output flow.
45772
45801
  User opens Command View to see the two nodes + arrow. Code is secondary.
45773
45802
  Observation focus: relay-race concept, visual graph comprehension.
45774
45803
 
@@ -45784,7 +45813,7 @@ Observation focus: data flow reasoning, relationship visualization.
45784
45813
  When automation is none:
45785
45814
  Frame as "If the customer is VIP, do this -- otherwise, do that." No StepType.CONDITIONAL
45786
45815
  jargon -- focus on the concept, not the implementation. Agent adds the condition.
45787
- Agent runs \`elevasis exec\` for both paths. Open Execution Logs to see which
45816
+ Agent runs \`elevasis-sdk exec\` for both paths. Open Execution Logs to see which
45788
45817
  path ran. Guide log navigation step-by-step.
45789
45818
  Observation focus: branching concept understanding, log navigation.
45790
45819
 
@@ -45809,7 +45838,7 @@ Change status from dev to production. Cover error handling: try/catch,
45809
45838
  ExecutionError, PlatformToolError. Create a schedule in Task Scheduler (use
45810
45839
  Recurring type for a cron schedule). If docs/ has pages, show Knowledge Base.
45811
45840
  Open Deployments page to confirm the latest version is active. Show CLI
45812
- monitoring: elevasis executions, elevasis execution. Suggest next steps.
45841
+ monitoring: elevasis-sdk executions, elevasis-sdk execution. Suggest next steps.
45813
45842
  Observation focus: readiness for independent operation (CLI + UI).
45814
45843
 
45815
45844
  ## Module Menu
@@ -45897,7 +45926,7 @@ Read: \`reference/framework/agent.mdx\`.
45897
45926
  Build: Create an agent definition with tools. Configure LLM tool calling.
45898
45927
  Compare agent vs workflow for a task.
45899
45928
  Key concepts: agent definition, tool registration, LLM tool calling, execution trace.
45900
- Verify: Run agent with \`elevasis exec\`, review tool call trace in Execution Logs.
45929
+ Verify: Run agent with \`elevasis-sdk exec\`, review tool call trace in Execution Logs.
45901
45930
 
45902
45931
  ## Meta-Framework Track
45903
45932
 
@@ -46020,7 +46049,7 @@ Observation focus: customization concept, owned vs managed files.
46020
46049
 
46021
46050
  When automation is low-code:
46022
46051
  Show the \`.claude/rules/\` directory. Explain the two types: sdk-patterns.md (MANAGED --
46023
- updated by elevasis update) and workspace-patterns.md (INIT_ONLY -- yours to edit).
46052
+ updated by elevasis-sdk update) and workspace-patterns.md (INIT_ONLY -- yours to edit).
46024
46053
  Explain path-scoping briefly: "These rules only activate when the agent is working on
46025
46054
  certain file types." Show an example rule with WRONG/RIGHT pattern. Explain error
46026
46055
  promotion: if something goes wrong 3+ times, add it here.
@@ -46050,7 +46079,7 @@ Next steps: point to reference docs in docs/, encourage using /work for new task
46050
46079
  Observation focus: update model concept, project map as navigation aid.
46051
46080
 
46052
46081
  When automation is low-code:
46053
- Explain MANAGED (auto-updated by elevasis update) vs INIT_ONLY (set once, yours).
46082
+ Explain MANAGED (auto-updated by elevasis-sdk update) vs INIT_ONLY (set once, yours).
46054
46083
  Show how /meta fix applies SDK updates with conflict handling: "If a file changed,
46055
46084
  it shows you both versions and lets you decide."
46056
46085
  Show \`docs/project-map.mdx\` and explain what it contains: resources, commands,
@@ -46074,7 +46103,7 @@ Observation focus: full template lifecycle, conflict resolution pattern.
46074
46103
 
46075
46104
  **automation: none**
46076
46105
  Use the non-technical variant for each lesson. Agent writes all code -- user
46077
- never types code. Agent runs \`elevasis exec\` for verification and narrates results.
46106
+ never types code. Agent runs \`elevasis-sdk exec\` for verification and narrates results.
46078
46107
  Avoid all jargon; use analogies. CLI is the primary verification tool.
46079
46108
  Always deploy before directing the user to the Command Center.
46080
46109
 
@@ -46170,7 +46199,7 @@ by the \`<!-- initialized: false -->\` flag in CLAUDE.md, or run manually.
46170
46199
  \`\`\`
46171
46200
  No other keys (no \`NODE_ENV\`, no extras). The \`.env\` file must contain
46172
46201
  only \`ELEVASIS_PLATFORM_KEY\`.
46173
- Validate the key works: run \`elevasis resources\` (should return an empty
46202
+ Validate the key works: run \`elevasis-sdk resources\` (should return an empty
46174
46203
  list, not an auth error). If auth fails, tell the user their key appears
46175
46204
  invalid and ask them to check it in the Elevasis dashboard.
46176
46205
 
@@ -46231,7 +46260,7 @@ by the \`<!-- initialized: false -->\` flag in CLAUDE.md, or run manually.
46231
46260
  - If git remote exists: note remote URL in memory/profile/preferences.md
46232
46261
 
46233
46262
  5. **Verify project**
46234
- Run \`elevasis check\` to confirm the starter resource is valid.
46263
+ Run \`elevasis-sdk check\` to confirm the starter resource is valid.
46235
46264
  Optionally deploy the echo workflow.
46236
46265
 
46237
46266
  6. **Report**
@@ -46260,7 +46289,7 @@ Detect and repair all drift. Optionally upgrades the SDK first.
46260
46289
 
46261
46290
  0. **SDK version check** -- Compare installed \`@elevasis/sdk\` against the latest
46262
46291
  available. If behind, offer to run \`pnpm update @elevasis/sdk\` before
46263
- continuing. If the user accepts, run it, then run \`elevasis update\` to add
46292
+ continuing. If the user accepts, run it, then run \`elevasis-sdk update\` to add
46264
46293
  any new managed files and flag conflicts. For each flagged file:
46265
46294
  - Read the current project file and the new template from \`@elevasis/sdk/templates\`
46266
46295
  - Add new sections that don't exist; preserve user customizations
@@ -46289,7 +46318,7 @@ Detect and repair all drift. Optionally upgrades the SDK first.
46289
46318
  suggest adding patterns. Surface suggestions only -- do not auto-generate.
46290
46319
  8. **Project map freshness:** Check whether \`docs/project-map.mdx\` reflects the
46291
46320
  current project state (resources, commands, rules, skills, memory files).
46292
- Compare filesystem state against the map. If stale, run \`elevasis deploy\`
46321
+ Compare filesystem state against the map. If stale, run \`elevasis-sdk deploy\`
46293
46322
  to regenerate, or patch inline for minor drift.
46294
46323
 
46295
46324
  Each step reports its result. Steps 1-8 run even if step 0 is skipped.
@@ -46299,11 +46328,11 @@ Each step reports its result. Steps 1-8 run even if step 0 is skipped.
46299
46328
  0. Read \`reference/deployment/command-view.mdx\` -- understand the Command View
46300
46329
  model, relationship declarations, and what deploy-time validation checks.
46301
46330
  This context is essential for diagnosing validation failures in steps 1-2.
46302
- 1. Run \`elevasis check\` (validation)
46331
+ 1. Run \`elevasis-sdk check\` (validation)
46303
46332
  2. Type check if \`tsconfig.json\` exists
46304
46333
  3. Verify docs reflect current resources
46305
46334
  4. If git configured: stage changes, commit with deploy message
46306
- 5. Run \`elevasis deploy\`
46335
+ 5. Run \`elevasis-sdk deploy\`
46307
46336
  6. \`docs/project-map.mdx\` is auto-regenerated by deploy (no manual bump needed)
46308
46337
  7. Verify deployment via platform
46309
46338
  8. Update \`memory/deployment-state.md\` with count, timestamp, inventory
@@ -46816,7 +46845,7 @@ occurred multiple times or represent a deliberate convention -- not speculative
46816
46845
  ## Rule File Ownership
46817
46846
 
46818
46847
  This file is yours. The other \`.claude/rules/\` files are SDK-owned and updated by
46819
- \`elevasis update\` -- do not add project-specific notes to them, add them here instead:
46848
+ \`elevasis-sdk update\` -- do not add project-specific notes to them, add them here instead:
46820
46849
 
46821
46850
  - \`sdk-patterns.md\` -- SDK imports, source structure, runtime, adapter patterns
46822
46851
  - \`docs-authoring.md\` -- MDX escaping, frontmatter, docs conventions
@@ -46901,10 +46930,10 @@ description: Project map conventions -- auto-generated, do not edit, maintained
46901
46930
 
46902
46931
  # Project Map
46903
46932
 
46904
- - \`docs/project-map.mdx\` and \`docs/resource-map.mdx\` are fully auto-generated by \`elevasis deploy\`
46933
+ - \`docs/project-map.mdx\` and \`docs/resource-map.mdx\` are fully auto-generated by \`elevasis-sdk deploy\`
46905
46934
  - Do not edit either file manually -- changes are overwritten on next deploy
46906
46935
  - \`/meta fix\` step 8 checks for drift and patches the map
46907
- - If a new command, rule, skill, or memory file is added, run \`/meta fix\` or \`elevasis deploy\` to update
46936
+ - If a new command, rule, skill, or memory file is added, run \`/meta fix\` or \`elevasis-sdk deploy\` to update
46908
46937
  `;
46909
46938
  }
46910
46939
  function claudeTaskTrackingRuleTemplate() {
@@ -47124,6 +47153,7 @@ function getManagedTemplates(ctx = {}) {
47124
47153
  ".gitignore": () => gitignoreTemplate(ctx),
47125
47154
  "CLAUDE.md": () => claudeMdTemplate(ctx),
47126
47155
  ".claude/settings.json": claudeSettingsTemplate,
47156
+ ".claude/scripts/statusline-command.js": claudeStatuslineScriptTemplate,
47127
47157
  ".claude/hooks/enforce-sdk-boundary.mjs": claudeSdkBoundaryHookTemplate,
47128
47158
  ".claude/commands/tutorial.md": claudeTutorialCommandTemplate,
47129
47159
  ".claude/commands/meta.md": claudeMetaCommandTemplate,
@@ -47341,11 +47371,12 @@ var MANAGED_FILES = [
47341
47371
  ".claude/rules/docs-authoring.md",
47342
47372
  ".claude/rules/memory-conventions.md",
47343
47373
  ".claude/rules/project-map.md",
47344
- ".claude/rules/task-tracking.md"
47374
+ ".claude/rules/task-tracking.md",
47375
+ ".claude/scripts/statusline-command.js"
47345
47376
  ];
47346
47377
  var SCAFFOLD_FILES = [...INIT_ONLY_FILES, ...MANAGED_FILES];
47347
47378
  function registerInitCommand(program3) {
47348
- 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) => {
47379
+ 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) => {
47349
47380
  const targetDir = directory ? (0, import_path3.resolve)(directory) : process.cwd();
47350
47381
  const orgSlug = toSlug((0, import_path3.basename)(targetDir));
47351
47382
  if (!options2.force) {
@@ -47372,6 +47403,7 @@ function registerInitCommand(program3) {
47372
47403
  await (0, import_promises2.mkdir)((0, import_path3.resolve)(targetDir, "src/shared"), { recursive: true });
47373
47404
  await (0, import_promises2.mkdir)((0, import_path3.resolve)(targetDir, "docs/in-progress"), { recursive: true });
47374
47405
  await (0, import_promises2.mkdir)((0, import_path3.resolve)(targetDir, ".claude/hooks"), { recursive: true });
47406
+ await (0, import_promises2.mkdir)((0, import_path3.resolve)(targetDir, ".claude/scripts"), { recursive: true });
47375
47407
  await (0, import_promises2.mkdir)((0, import_path3.resolve)(targetDir, ".claude/commands"), { recursive: true });
47376
47408
  await (0, import_promises2.mkdir)((0, import_path3.resolve)(targetDir, ".claude/skills/creds"), { recursive: true });
47377
47409
  await (0, import_promises2.mkdir)((0, import_path3.resolve)(targetDir, ".claude/rules"), { recursive: true });
@@ -47408,7 +47440,8 @@ function registerInitCommand(program3) {
47408
47440
  ".claude/rules/docs-authoring.md": claudeDocsAuthoringRuleTemplate(),
47409
47441
  ".claude/rules/memory-conventions.md": claudeMemoryConventionsRuleTemplate(),
47410
47442
  ".claude/rules/project-map.md": claudeProjectMapRuleTemplate(),
47411
- ".claude/rules/task-tracking.md": claudeTaskTrackingRuleTemplate()
47443
+ ".claude/rules/task-tracking.md": claudeTaskTrackingRuleTemplate(),
47444
+ ".claude/scripts/statusline-command.js": claudeStatuslineScriptTemplate()
47412
47445
  };
47413
47446
  if (options2.ui) {
47414
47447
  Object.assign(files, getUIFiles(orgSlug));
@@ -47424,8 +47457,8 @@ function registerInitCommand(program3) {
47424
47457
  }
47425
47458
  console.log(source_default.gray(" pnpm install"));
47426
47459
  console.log(source_default.gray(" # Copy .env.example to .env and add your API key"));
47427
- console.log(source_default.gray(" elevasis check"));
47428
- console.log(source_default.gray(" elevasis deploy"));
47460
+ console.log(source_default.gray(" elevasis-sdk check"));
47461
+ console.log(source_default.gray(" elevasis-sdk deploy"));
47429
47462
  if (options2.ui) {
47430
47463
  console.log("");
47431
47464
  console.log(source_default.gray(" UI app:"));
@@ -47738,7 +47771,7 @@ async function listCreds(apiUrl, json2) {
47738
47771
  }
47739
47772
  if (data.credentials.length === 0) {
47740
47773
  console.log(source_default.yellow("No credentials found."));
47741
- console.log(source_default.gray("Create one with: elevasis creds create --name my-key --type api-key"));
47774
+ console.log(source_default.gray("Create one with: elevasis-sdk creds create --name my-key --type api-key"));
47742
47775
  return;
47743
47776
  }
47744
47777
  console.log(source_default.cyan(`
@@ -47830,7 +47863,7 @@ Example: --value '{"apiKey":"sk-new-key"}'`
47830
47863
  spinner.stop();
47831
47864
  throw new Error(
47832
47865
  `Credential '${name}' not found.
47833
- Run "elevasis creds list" to see available credentials.`
47866
+ Run "elevasis-sdk creds list" to see available credentials.`
47834
47867
  );
47835
47868
  }
47836
47869
  await apiPatch(`/api/external/credentials/${credential.id}`, { value }, apiUrl);
@@ -47857,7 +47890,7 @@ async function renameCreds(apiUrl, name, newName) {
47857
47890
  spinner.stop();
47858
47891
  throw new Error(
47859
47892
  `Credential '${name}' not found.
47860
- Run "elevasis creds list" to see available credentials.`
47893
+ Run "elevasis-sdk creds list" to see available credentials.`
47861
47894
  );
47862
47895
  }
47863
47896
  const conflict = data.credentials.find((c) => c.name === newName);
@@ -47891,7 +47924,7 @@ async function deleteCreds(apiUrl, name, force) {
47891
47924
  spinner.stop();
47892
47925
  throw new Error(
47893
47926
  `Credential '${name}' not found.
47894
- Run "elevasis creds list" to see available credentials.`
47927
+ Run "elevasis-sdk creds list" to see available credentials.`
47895
47928
  );
47896
47929
  }
47897
47930
  spinner.stop();
@@ -47940,22 +47973,22 @@ function registerCredsCommand(program3) {
47940
47973
  // src/cli/index.ts
47941
47974
  (0, import_dotenv.config)({ path: (0, import_path5.resolve)(process.cwd(), ".env"), override: true });
47942
47975
  var program2 = new Command();
47943
- program2.name("elevasis").description(
47976
+ program2.name("elevasis-sdk").description(
47944
47977
  source_default.cyan("Elevasis SDK CLI") + `
47945
47978
 
47946
47979
  Commands:
47947
- elevasis check Validate project resources
47948
- elevasis deploy Bundle and deploy to platform
47949
- elevasis resources List deployed resources
47950
- elevasis describe <resourceId> Describe a resource
47951
- elevasis exec <resourceId> -i '{}' Execute a resource
47952
- elevasis executions <resourceId> List execution history
47953
- elevasis execution <resourceId> <id> Get execution details
47954
- elevasis deployments List deployments
47955
- elevasis update Update workspace scaffold to latest template
47956
- elevasis init [directory] Scaffold a new workspace
47957
-
47958
- Use "elevasis <command> --help" for more information about a command.`
47980
+ elevasis-sdk check Validate project resources
47981
+ elevasis-sdk deploy Bundle and deploy to platform
47982
+ elevasis-sdk resources List deployed resources
47983
+ elevasis-sdk describe <resourceId> Describe a resource
47984
+ elevasis-sdk exec <resourceId> -i '{}' Execute a resource
47985
+ elevasis-sdk executions <resourceId> List execution history
47986
+ elevasis-sdk execution <resourceId> <id> Get execution details
47987
+ elevasis-sdk deployments List deployments
47988
+ elevasis-sdk update Update workspace scaffold to latest template
47989
+ elevasis-sdk init [directory] Scaffold a new workspace
47990
+
47991
+ Use "elevasis-sdk <command> --help" for more information about a command.`
47959
47992
  ).version(SDK_VERSION);
47960
47993
  registerCheckCommand(program2);
47961
47994
  registerDeployCommand(program2);
package/dist/index.d.ts CHANGED
@@ -6334,7 +6334,7 @@ type ResourceStatus = 'dev' | 'prod';
6334
6334
  * Organization is derived from the ELEVASIS_PLATFORM_KEY -- not configured here.
6335
6335
  */
6336
6336
  interface ElevasConfig {
6337
- /** Managed by `elevasis init` and `elevasis update`. Do not set manually. */
6337
+ /** Managed by `elevasis-sdk init` and `elevasis-sdk update`. Do not set manually. */
6338
6338
  templateVersion?: number;
6339
6339
  defaultStatus?: ResourceStatus;
6340
6340
  dev?: {