@ashlr/stack 0.1.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Ashlr / Mason Wyatt
3
+ Copyright (c) 2026 AshlrAI, Inc.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @ashlr/stack
2
2
 
3
- > The `stack` CLI — one command to provision, wire, and operate every third-party service in your project. 23 providers, MCP-native, Phantom-backed.
3
+ > The `stack` CLI — configure supported services with Phantom-backed credentials and MCP wiring. This source checkout registers 39 providers; use `stack providers` for your installed catalog.
4
4
 
5
5
  Part of [Ashlr Stack](https://stack.ashlr.ai). See the monorepo at [ashlrai/ashlr-stack](https://github.com/ashlrai/ashlr-stack).
6
6
 
@@ -9,12 +9,12 @@ Part of [Ashlr Stack](https://stack.ashlr.ai). See the monorepo at [ashlrai/ashl
9
9
  `stack` collapses the "spin up ten services" phase of a project into a single command. Instead of tab-hopping between Supabase, Vercel, Sentry, Neon, etc. to create projects and paste secrets into `.env`, you run:
10
10
 
11
11
  ```bash
12
- stack init --template nextjs-supabase-posthog-sentry
12
+ stack init --template nextjs-supabase-posthog
13
13
  ```
14
14
 
15
- Stack does the OAuth dance per provider, creates the upstream resource, stores every secret in [Phantom Secrets](https://phantom.ashlr.ai), writes `.env` + `.mcp.json`, and hands you a project ready for `bun dev`.
15
+ Run from your application's directory. Stack writes configuration, uses provider-specific authentication, provisions where supported, and stores selected credentials through [Phantom Secrets](https://phm.dev/secrets). Vercel prompts for an existing personal access token. Setup does not generate application code or automatically write `.env`; `stack env export --example` separately writes an empty `KEY=` skeleton to `.env.example`.
16
16
 
17
- Secrets never live in Stack — only Phantom. `.stack.toml` is safe to commit; per-developer IDs live in the gitignored `.stack.local.toml`.
17
+ Stack handles credentials in memory during setup. `.stack.toml` stores the service shape; per-developer IDs belong in the gitignored `.stack.local.toml`. Review project configuration and MCP output before sharing them; the CLI is not a general redaction boundary.
18
18
 
19
19
  ## Install
20
20
 
@@ -25,7 +25,7 @@ One-liner (recommended):
25
25
  curl -fsSL stack.ashlr.ai/install.sh | bash
26
26
 
27
27
  # Windows (PowerShell)
28
- irm stack.ashlr.ai/install.ps1 | iex
28
+ irm https://stack.ashlr.ai/install.ps1 | iex
29
29
  ```
30
30
 
31
31
  Or install manually from the registry:
@@ -38,19 +38,21 @@ npm i -g @ashlr/stack ashlr-stack-mcp
38
38
 
39
39
  Prerequisites:
40
40
 
41
- - [Bun](https://bun.sh) >= 1.2 (or Node.js >= 20)
42
- - [Phantom Secrets](https://phantom.ashlr.ai) — the installer sets this up for you
41
+ - [Bun](https://bun.sh) >= 1.2 for the published 0.1.1 CLI/MCP packages, including when launched with `npx`; npm does not supply Bun
42
+ - [Phantom Secrets](https://phm.dev/secrets) — installed and initialized for the intended project before writing setup flows
43
+
44
+ This README describes source version 0.2.1. Registry metadata checked on October 14, 2026 reported CLI/MCP version 0.1.1. Verify your installed `stack --version` and command `--help`; source qualification is separate from publication and provider acceptance.
43
45
 
44
46
  ## Quickstart
45
47
 
46
48
  ```bash
47
49
  stack init # interactive template picker
48
- stack add supabase # OAuth → new project → secrets → .mcp.json
50
+ stack add supabase # provider authentication → setup → vault/config/MCP
49
51
  stack add # no arg = interactive provider picker
50
- stack doctor # verify every wired service is healthy
52
+ stack doctor # inspect the configured-service health report
51
53
  stack doctor --all # run across every registered project
52
54
  stack list # show this project's stack at a glance
53
- stack providers # full catalog of 23 curated providers
55
+ stack providers # catalog registered in your installed release
54
56
  ```
55
57
 
56
58
  Bring Stack to an existing repo:
@@ -59,7 +61,7 @@ Bring Stack to an existing repo:
59
61
  stack scan # detect providers already in the code
60
62
  stack scan --auto # scans, then runs `stack add` for each
61
63
  stack import # inhale an existing .env into Phantom
62
- stack clone github.com/org/repo # clone + scan someone else's project
64
+ stack clone https://github.com/your-org/your-repo # clone + scan someone else's project
63
65
  ```
64
66
 
65
67
  Run your app with secrets injected by Phantom:
@@ -70,35 +72,39 @@ stack exec -- bun dev
70
72
 
71
73
  ## Commands
72
74
 
73
- 22 commands total. A cheat sheet:
75
+ A cheat sheet for the current source interface:
74
76
 
75
77
  | Command | What it does |
76
78
  | --- | --- |
77
- | `stack init [--template]` | Scaffold a new stack from a template |
79
+ | `stack init [--template]` | Write Stack configuration in the current directory; optionally provision preset services |
78
80
  | `stack add [service]` | Add a provider (OAuth + provision + write secrets) |
79
- | `stack remove <service>` | Tear down one service (or `--all` for everything) |
80
- | `stack list` | Show services wired into this project |
81
+ | `stack remove <service>` | Remove local vault entries, MCP wiring and configuration (or use `--all`); this CLI does not deprovision upstream resources |
82
+ | `stack list [--json]` | Show services wired into this project; `--json` prints `ashlr.stack.list/v1` |
81
83
  | `stack info <service>` | Deep-dive on one service (resource, region, docs, MCP name) |
82
- | `stack doctor [--all] [--fix] [--json]` | Healthcheck; `--fix` re-runs setup, `--json` for CI |
84
+ | `stack status [--json]` | Phantom, services and config at a glance; `--json` prints a stable report (schema `ashlr.stack.status/v1`, secret names only) |
85
+ | `stack doctor [--all] [--fix] [--json]` | Inspect health reports; `--fix` attempts supported repair, `--json` formats the report. Without `--all`, a directory with no `.stack.toml` is an error, not a healthy report |
83
86
  | `stack scan [--auto]` | Detect providers from package manifests, configs, `.env.example` |
84
87
  | `stack import [--from <file>]` | Migrate an existing `.env` into Phantom + `.stack.toml` |
85
- | `stack clone <github-url>` | git-clone + scan + next-steps |
86
- | `stack providers` | Browse the full 23-provider catalog |
87
- | `stack templates` | List starter templates |
88
- | `stack deps` | ASCII tree of this stack grouped by category |
88
+ | `stack clone <git-url> [dir]` | git-clone + scan + next-steps |
89
+ | `stack providers [--json]` | Browse your installed provider catalog; `--json` prints `ashlr.stack.providers/v1` |
90
+ | `stack templates list [--json]` | List starter provider presets; `--json` prints `ashlr.stack.templates/v1` with each template's services |
91
+ | `stack deps [--json]` | ASCII tree of this stack grouped by category; `--json` prints `ashlr.stack.deps/v1` |
89
92
  | `stack env show` / `stack env diff` | Effective env-var surface vs vault vs config |
90
- | `stack env set <KEY> <VALUE>` / `stack env unset <KEY>` | Direct secret injection |
91
- | `stack exec -- <cmd>` | Run a command with Phantom secrets in the environment |
92
- | `stack projects list|register|remove|where` | Cross-project registry |
93
- | `stack ci init` | Scaffold a `.github/workflows/stack-ci.yml` |
93
+ | `stack env export --example` | Write a separate `.env.example` with empty values; `--stdout` previews it |
94
+ | `stack exec -- <cmd>` | Forward to the installed `phantom exec` runtime |
95
+ | `stack projects list|register|remove|where` | Cross-project registry; `projects list --json` prints `ashlr.stack.projects/v1` |
96
+ | `stack ci init` | Inspect unavailable CI health workflow generation; exits nonzero without writing a workflow |
94
97
  | `stack completion <bash\|zsh\|fish>` | Emit a shell-completion script |
95
98
  | `stack upgrade` | Check npm for a newer `@ashlr/stack` release |
99
+ | `stack login <provider>` | Refresh credentials for that provider; existing stored credentials are separate from setup staging |
100
+ | `stack sync --platform <name>` | Push through Phantom to a configured Vercel, Railway or Fly target |
101
+ | `stack onboard [--apply] [--undo]` | Detect Codex, Claude Code, Cursor and Gemini CLI and register the Phantom gateway (`ashlr-hub`) in each; plan only without `--apply`, existing config files backed up before writing; `--undo` restores them |
96
102
 
97
103
  Full reference with flags, subcommands, and examples: **[stack.ashlr.ai/docs/cli](https://stack.ashlr.ai/docs/cli)**.
98
104
 
99
105
  ## MCP integration
100
106
 
101
- `stack add` writes to your project's `.mcp.json` so Claude Code / Cursor / Windsurf can use the provider's MCP server immediately. See [ashlr-stack-mcp](https://www.npmjs.com/package/ashlr-stack-mcp) for Stack's own MCP server (17 tools + 3 resources) and [stack.ashlr.ai/docs/mcp](https://stack.ashlr.ai/docs/mcp) for wiring docs.
107
+ Where supported, `stack add` writes a provider entry to the project's `.mcp.json`; client and provider setup still require verification. See [ashlr-stack-mcp](https://www.npmjs.com/package/ashlr-stack-mcp) for Stack's own server (19 declared tools and up to 3 project resources). Tools are a subset of CLI commands; use the advertised input schemas. Results contain CLI text and `isError`, not a universal structured JSON receipt or sandbox guarantee.
102
108
 
103
109
  ## Configuration
104
110
 
@@ -107,7 +113,7 @@ Stack splits config into two files:
107
113
  - `.stack.toml` — **committed**. Service names, secret slots, MCP wirings.
108
114
  - `.stack.local.toml` — **gitignored**. `project_id`, `resource_id`, timestamps. Unique per clone.
109
115
 
110
- Teammates who clone the repo run `stack doctor --fix` and Stack re-authenticates each service for them.
116
+ Teammates can inspect `stack doctor` and use `stack doctor --fix` for supported remediation. Existing vault names can skip repair; name presence is not credential validity or provider acceptance.
111
117
 
112
118
  Full schema: [stack.ashlr.ai/docs/config](https://stack.ashlr.ai/docs/config).
113
119
 
@@ -121,4 +127,4 @@ Full schema: [stack.ashlr.ai/docs/config](https://stack.ashlr.ai/docs/config).
121
127
 
122
128
  ## License
123
129
 
124
- MIT. See [LICENSE](./LICENSE).
130
+ MIT. See the repository [LICENSE](../../LICENSE).