@allstak/wizard 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -267
- package/dist/cli.js +8 -0
- package/dist/commands/_context.d.ts +1 -0
- package/dist/commands/_context.js +80 -5
- package/dist/registry/index.js +4 -0
- package/dist/util/wizard-version.d.ts +1 -1
- package/dist/util/wizard-version.js +1 -1
- package/package.json +5 -5
- package/dist/api/auth-client.d.ts.map +0 -1
- package/dist/api/auth-client.js.map +0 -1
- package/dist/api/auth.d.ts.map +0 -1
- package/dist/api/auth.js.map +0 -1
- package/dist/api/client.d.ts.map +0 -1
- package/dist/api/client.js.map +0 -1
- package/dist/api/http.d.ts.map +0 -1
- package/dist/api/http.js.map +0 -1
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js.map +0 -1
- package/dist/api/orgs-client.d.ts.map +0 -1
- package/dist/api/orgs-client.js.map +0 -1
- package/dist/api/projects-client.d.ts.map +0 -1
- package/dist/api/projects-client.js.map +0 -1
- package/dist/api/setup-doctor-client.d.ts.map +0 -1
- package/dist/api/setup-doctor-client.js.map +0 -1
- package/dist/api/types.d.ts.map +0 -1
- package/dist/api/types.js.map +0 -1
- package/dist/certification/fixtures.d.ts.map +0 -1
- package/dist/certification/fixtures.js.map +0 -1
- package/dist/certification/gates.d.ts.map +0 -1
- package/dist/certification/gates.js.map +0 -1
- package/dist/certification/index.d.ts.map +0 -1
- package/dist/certification/index.js.map +0 -1
- package/dist/certification/live-backend.d.ts.map +0 -1
- package/dist/certification/live-backend.js.map +0 -1
- package/dist/certification/packages.d.ts.map +0 -1
- package/dist/certification/packages.js.map +0 -1
- package/dist/certification/process.d.ts.map +0 -1
- package/dist/certification/process.js.map +0 -1
- package/dist/certification/report.d.ts.map +0 -1
- package/dist/certification/report.js.map +0 -1
- package/dist/certification/runner.d.ts.map +0 -1
- package/dist/certification/runner.js.map +0 -1
- package/dist/certification/runtime.d.ts.map +0 -1
- package/dist/certification/runtime.js.map +0 -1
- package/dist/certification/types.d.ts.map +0 -1
- package/dist/certification/types.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/commands/_context.d.ts.map +0 -1
- package/dist/commands/_context.js.map +0 -1
- package/dist/commands/certify.d.ts.map +0 -1
- package/dist/commands/certify.js.map +0 -1
- package/dist/commands/config-cmd.d.ts.map +0 -1
- package/dist/commands/config-cmd.js.map +0 -1
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/login.d.ts.map +0 -1
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts.map +0 -1
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/orgs.d.ts.map +0 -1
- package/dist/commands/orgs.js.map +0 -1
- package/dist/commands/projects.d.ts.map +0 -1
- package/dist/commands/projects.js.map +0 -1
- package/dist/commands/repair.d.ts.map +0 -1
- package/dist/commands/repair.js.map +0 -1
- package/dist/commands/restore.d.ts.map +0 -1
- package/dist/commands/restore.js.map +0 -1
- package/dist/commands/security-snapshot.d.ts.map +0 -1
- package/dist/commands/security-snapshot.js.map +0 -1
- package/dist/commands/uninstall.d.ts.map +0 -1
- package/dist/commands/uninstall.js.map +0 -1
- package/dist/commands/whoami.d.ts.map +0 -1
- package/dist/commands/whoami.js.map +0 -1
- package/dist/compat/engine.d.ts.map +0 -1
- package/dist/compat/engine.js.map +0 -1
- package/dist/config/define.d.ts.map +0 -1
- package/dist/config/define.js.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js.map +0 -1
- package/dist/config/loader.d.ts.map +0 -1
- package/dist/config/loader.js.map +0 -1
- package/dist/config/migrations.d.ts.map +0 -1
- package/dist/config/migrations.js.map +0 -1
- package/dist/config/precedence.d.ts.map +0 -1
- package/dist/config/precedence.js.map +0 -1
- package/dist/config/schema.d.ts.map +0 -1
- package/dist/config/schema.js.map +0 -1
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js.map +0 -1
- package/dist/credentials/encrypted-file.d.ts.map +0 -1
- package/dist/credentials/encrypted-file.js.map +0 -1
- package/dist/credentials/error.d.ts.map +0 -1
- package/dist/credentials/error.js.map +0 -1
- package/dist/credentials/index.d.ts.map +0 -1
- package/dist/credentials/index.js.map +0 -1
- package/dist/credentials/keychain-darwin.d.ts.map +0 -1
- package/dist/credentials/keychain-darwin.js.map +0 -1
- package/dist/credentials/keychain-linux.d.ts.map +0 -1
- package/dist/credentials/keychain-linux.js.map +0 -1
- package/dist/credentials/keychain-win.d.ts.map +0 -1
- package/dist/credentials/keychain-win.js.map +0 -1
- package/dist/credentials/types.d.ts.map +0 -1
- package/dist/credentials/types.js.map +0 -1
- package/dist/detect/framework.d.ts.map +0 -1
- package/dist/detect/framework.js.map +0 -1
- package/dist/detect/index.d.ts.map +0 -1
- package/dist/detect/index.js.map +0 -1
- package/dist/detect/monorepo.d.ts.map +0 -1
- package/dist/detect/monorepo.js.map +0 -1
- package/dist/detect/package-manager.d.ts.map +0 -1
- package/dist/detect/package-manager.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/integrations/_scaffold.d.ts.map +0 -1
- package/dist/integrations/_scaffold.js.map +0 -1
- package/dist/integrations/_shared.d.ts.map +0 -1
- package/dist/integrations/_shared.js.map +0 -1
- package/dist/integrations/_simple-scaffold.d.ts.map +0 -1
- package/dist/integrations/_simple-scaffold.js.map +0 -1
- package/dist/integrations/dotnet.d.ts.map +0 -1
- package/dist/integrations/dotnet.js.map +0 -1
- package/dist/integrations/expo/detect.d.ts.map +0 -1
- package/dist/integrations/expo/detect.js.map +0 -1
- package/dist/integrations/expo/doctor.d.ts.map +0 -1
- package/dist/integrations/expo/doctor.js.map +0 -1
- package/dist/integrations/expo/files.d.ts.map +0 -1
- package/dist/integrations/expo/files.js.map +0 -1
- package/dist/integrations/expo/index.d.ts.map +0 -1
- package/dist/integrations/expo/index.js.map +0 -1
- package/dist/integrations/expo/manifest.d.ts.map +0 -1
- package/dist/integrations/expo/manifest.js.map +0 -1
- package/dist/integrations/expo/patch.d.ts.map +0 -1
- package/dist/integrations/expo/patch.js.map +0 -1
- package/dist/integrations/expo/uninstall.d.ts.map +0 -1
- package/dist/integrations/expo/uninstall.js.map +0 -1
- package/dist/integrations/expo.d.ts.map +0 -1
- package/dist/integrations/expo.js.map +0 -1
- package/dist/integrations/fastify/detect.d.ts.map +0 -1
- package/dist/integrations/fastify/detect.js.map +0 -1
- package/dist/integrations/fastify/doctor.d.ts.map +0 -1
- package/dist/integrations/fastify/doctor.js.map +0 -1
- package/dist/integrations/fastify/files.d.ts.map +0 -1
- package/dist/integrations/fastify/files.js.map +0 -1
- package/dist/integrations/fastify/index.d.ts.map +0 -1
- package/dist/integrations/fastify/index.js.map +0 -1
- package/dist/integrations/fastify/manifest.d.ts.map +0 -1
- package/dist/integrations/fastify/manifest.js.map +0 -1
- package/dist/integrations/fastify/patch.d.ts.map +0 -1
- package/dist/integrations/fastify/patch.js.map +0 -1
- package/dist/integrations/fastify/uninstall.d.ts.map +0 -1
- package/dist/integrations/fastify/uninstall.js.map +0 -1
- package/dist/integrations/fastify.d.ts.map +0 -1
- package/dist/integrations/fastify.js.map +0 -1
- package/dist/integrations/flutter.d.ts.map +0 -1
- package/dist/integrations/flutter.js.map +0 -1
- package/dist/integrations/go/index.d.ts.map +0 -1
- package/dist/integrations/go/index.js.map +0 -1
- package/dist/integrations/go.d.ts.map +0 -1
- package/dist/integrations/go.js.map +0 -1
- package/dist/integrations/java/index.d.ts.map +0 -1
- package/dist/integrations/java/index.js.map +0 -1
- package/dist/integrations/java.d.ts.map +0 -1
- package/dist/integrations/java.js.map +0 -1
- package/dist/integrations/js/detect.d.ts.map +0 -1
- package/dist/integrations/js/detect.js.map +0 -1
- package/dist/integrations/js/doctor.d.ts.map +0 -1
- package/dist/integrations/js/doctor.js.map +0 -1
- package/dist/integrations/js/files.d.ts.map +0 -1
- package/dist/integrations/js/files.js.map +0 -1
- package/dist/integrations/js/index.d.ts.map +0 -1
- package/dist/integrations/js/index.js.map +0 -1
- package/dist/integrations/js/manifest.d.ts.map +0 -1
- package/dist/integrations/js/manifest.js.map +0 -1
- package/dist/integrations/js/patch.d.ts.map +0 -1
- package/dist/integrations/js/patch.js.map +0 -1
- package/dist/integrations/js/uninstall.d.ts.map +0 -1
- package/dist/integrations/js/uninstall.js.map +0 -1
- package/dist/integrations/nestjs/detect.d.ts.map +0 -1
- package/dist/integrations/nestjs/detect.js.map +0 -1
- package/dist/integrations/nestjs/doctor.d.ts.map +0 -1
- package/dist/integrations/nestjs/doctor.js.map +0 -1
- package/dist/integrations/nestjs/files.d.ts.map +0 -1
- package/dist/integrations/nestjs/files.js.map +0 -1
- package/dist/integrations/nestjs/index.d.ts.map +0 -1
- package/dist/integrations/nestjs/index.js.map +0 -1
- package/dist/integrations/nestjs/manifest.d.ts.map +0 -1
- package/dist/integrations/nestjs/manifest.js.map +0 -1
- package/dist/integrations/nestjs/patch.d.ts.map +0 -1
- package/dist/integrations/nestjs/patch.js.map +0 -1
- package/dist/integrations/nestjs/uninstall.d.ts.map +0 -1
- package/dist/integrations/nestjs/uninstall.js.map +0 -1
- package/dist/integrations/nestjs.d.ts.map +0 -1
- package/dist/integrations/nestjs.js.map +0 -1
- package/dist/integrations/next/detect.d.ts.map +0 -1
- package/dist/integrations/next/detect.js.map +0 -1
- package/dist/integrations/next/doctor.d.ts.map +0 -1
- package/dist/integrations/next/doctor.js.map +0 -1
- package/dist/integrations/next/files.d.ts.map +0 -1
- package/dist/integrations/next/files.js.map +0 -1
- package/dist/integrations/next/index.d.ts.map +0 -1
- package/dist/integrations/next/index.js.map +0 -1
- package/dist/integrations/next/manifest.d.ts.map +0 -1
- package/dist/integrations/next/manifest.js.map +0 -1
- package/dist/integrations/next/patch.d.ts.map +0 -1
- package/dist/integrations/next/patch.js.map +0 -1
- package/dist/integrations/next/uninstall.d.ts.map +0 -1
- package/dist/integrations/next/uninstall.js.map +0 -1
- package/dist/integrations/otel.d.ts.map +0 -1
- package/dist/integrations/otel.js.map +0 -1
- package/dist/integrations/php.d.ts.map +0 -1
- package/dist/integrations/php.js.map +0 -1
- package/dist/integrations/python/index.d.ts.map +0 -1
- package/dist/integrations/python/index.js.map +0 -1
- package/dist/integrations/python.d.ts.map +0 -1
- package/dist/integrations/python.js.map +0 -1
- package/dist/integrations/react/detect.d.ts.map +0 -1
- package/dist/integrations/react/detect.js.map +0 -1
- package/dist/integrations/react/doctor.d.ts.map +0 -1
- package/dist/integrations/react/doctor.js.map +0 -1
- package/dist/integrations/react/files.d.ts.map +0 -1
- package/dist/integrations/react/files.js.map +0 -1
- package/dist/integrations/react/index.d.ts.map +0 -1
- package/dist/integrations/react/index.js.map +0 -1
- package/dist/integrations/react/manifest.d.ts.map +0 -1
- package/dist/integrations/react/manifest.js.map +0 -1
- package/dist/integrations/react/patch.d.ts.map +0 -1
- package/dist/integrations/react/patch.js.map +0 -1
- package/dist/integrations/react/uninstall.d.ts.map +0 -1
- package/dist/integrations/react/uninstall.js.map +0 -1
- package/dist/integrations/react-native.d.ts.map +0 -1
- package/dist/integrations/react-native.js.map +0 -1
- package/dist/integrations/ruby.d.ts.map +0 -1
- package/dist/integrations/ruby.js.map +0 -1
- package/dist/lifecycle/hooks.d.ts.map +0 -1
- package/dist/lifecycle/hooks.js.map +0 -1
- package/dist/migrations/builtin/dsn-to-api-key.d.ts.map +0 -1
- package/dist/migrations/builtin/dsn-to-api-key.js.map +0 -1
- package/dist/migrations/engine.d.ts.map +0 -1
- package/dist/migrations/engine.js.map +0 -1
- package/dist/migrations/index.d.ts.map +0 -1
- package/dist/migrations/index.js.map +0 -1
- package/dist/output/human.d.ts.map +0 -1
- package/dist/output/human.js.map +0 -1
- package/dist/output/index.d.ts.map +0 -1
- package/dist/output/index.js.map +0 -1
- package/dist/output/json.d.ts.map +0 -1
- package/dist/output/json.js.map +0 -1
- package/dist/output/types.d.ts.map +0 -1
- package/dist/output/types.js.map +0 -1
- package/dist/patchers/env-file.d.ts.map +0 -1
- package/dist/patchers/env-file.js.map +0 -1
- package/dist/patchers/js-ast.d.ts.map +0 -1
- package/dist/patchers/js-ast.js.map +0 -1
- package/dist/patchers/json-file.d.ts.map +0 -1
- package/dist/patchers/json-file.js.map +0 -1
- package/dist/patchers/markers.d.ts.map +0 -1
- package/dist/patchers/markers.js.map +0 -1
- package/dist/patchers/source-block.d.ts.map +0 -1
- package/dist/patchers/source-block.js.map +0 -1
- package/dist/registry/index.d.ts.map +0 -1
- package/dist/registry/index.js.map +0 -1
- package/dist/registry/manifest.d.ts.map +0 -1
- package/dist/registry/manifest.js.map +0 -1
- package/dist/registry/registry.d.ts.map +0 -1
- package/dist/registry/registry.js.map +0 -1
- package/dist/registry/types.d.ts.map +0 -1
- package/dist/registry/types.js.map +0 -1
- package/dist/security-snapshot/builder.d.ts.map +0 -1
- package/dist/security-snapshot/builder.js.map +0 -1
- package/dist/security-snapshot/client.d.ts.map +0 -1
- package/dist/security-snapshot/client.js.map +0 -1
- package/dist/security-snapshot/index.d.ts.map +0 -1
- package/dist/security-snapshot/index.js.map +0 -1
- package/dist/security-snapshot/types.d.ts.map +0 -1
- package/dist/security-snapshot/types.js.map +0 -1
- package/dist/snapshot/restore.d.ts.map +0 -1
- package/dist/snapshot/restore.js.map +0 -1
- package/dist/snapshot/store.d.ts.map +0 -1
- package/dist/snapshot/store.js.map +0 -1
- package/dist/sourcemaps/index.d.ts.map +0 -1
- package/dist/sourcemaps/index.js.map +0 -1
- package/dist/sourcemaps/metro.d.ts.map +0 -1
- package/dist/sourcemaps/metro.js.map +0 -1
- package/dist/sourcemaps/next.d.ts.map +0 -1
- package/dist/sourcemaps/next.js.map +0 -1
- package/dist/sourcemaps/provider.d.ts.map +0 -1
- package/dist/sourcemaps/provider.js.map +0 -1
- package/dist/sourcemaps/vite.d.ts.map +0 -1
- package/dist/sourcemaps/vite.js.map +0 -1
- package/dist/sourcemaps/webpack.d.ts.map +0 -1
- package/dist/sourcemaps/webpack.js.map +0 -1
- package/dist/telemetry/cli-wrap.d.ts.map +0 -1
- package/dist/telemetry/cli-wrap.js.map +0 -1
- package/dist/telemetry/http-provider.d.ts.map +0 -1
- package/dist/telemetry/http-provider.js.map +0 -1
- package/dist/telemetry/index.d.ts.map +0 -1
- package/dist/telemetry/index.js.map +0 -1
- package/dist/telemetry/install-id.d.ts.map +0 -1
- package/dist/telemetry/install-id.js.map +0 -1
- package/dist/telemetry/payload.d.ts.map +0 -1
- package/dist/telemetry/payload.js.map +0 -1
- package/dist/telemetry/provider.d.ts.map +0 -1
- package/dist/telemetry/provider.js.map +0 -1
- package/dist/telemetry/runtime.d.ts.map +0 -1
- package/dist/telemetry/runtime.js.map +0 -1
- package/dist/transaction/tx.d.ts.map +0 -1
- package/dist/transaction/tx.js.map +0 -1
- package/dist/util/error-codes.d.ts.map +0 -1
- package/dist/util/error-codes.js.map +0 -1
- package/dist/util/errors.d.ts.map +0 -1
- package/dist/util/errors.js.map +0 -1
- package/dist/util/log.d.ts.map +0 -1
- package/dist/util/log.js.map +0 -1
- package/dist/util/paths.d.ts.map +0 -1
- package/dist/util/paths.js.map +0 -1
- package/dist/util/version.d.ts.map +0 -1
- package/dist/util/version.js.map +0 -1
- package/dist/util/wizard-version.d.ts.map +0 -1
- package/dist/util/wizard-version.js.map +0 -1
- package/docs/architecture/README.md +0 -58
- package/docs/architecture/dry-run.md +0 -34
- package/docs/architecture/integration-lifecycle.md +0 -77
- package/docs/architecture/patch-pipeline.md +0 -58
- package/docs/architecture/registry.md +0 -52
- package/docs/architecture/rollback.md +0 -47
- package/docs/architecture/sourcemaps.md +0 -53
- package/docs/architecture/stability-levels.md +0 -35
- package/docs/architecture/transaction.md +0 -51
- package/docs/architecture/v02-bare-react-native-spec.md +0 -92
- package/docs/architecture/v02-java-host-fix-spec.md +0 -121
- package/docs/architecture/v02-sourcemaps-e2e-spec.md +0 -157
- package/docs/beta/README.md +0 -17
- package/docs/beta/ci.md +0 -122
- package/docs/beta/config.md +0 -124
- package/docs/beta/doctor.md +0 -79
- package/docs/beta/expo.md +0 -69
- package/docs/beta/fastify.md +0 -62
- package/docs/beta/known-limitations.md +0 -93
- package/docs/beta/nestjs.md +0 -69
- package/docs/beta/next.md +0 -76
- package/docs/beta/node.md +0 -60
- package/docs/beta/privacy.md +0 -99
- package/docs/beta/quickstart.md +0 -89
- package/docs/beta/react.md +0 -91
- package/docs/beta/reliability.md +0 -33
- package/docs/beta/restore.md +0 -84
- package/docs/beta/troubleshooting.md +0 -133
package/docs/beta/README.md
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# `@allstak/wizard@beta` — public beta docs
|
|
2
|
-
|
|
3
|
-
| Doc | What it covers |
|
|
4
|
-
|-----|----------------|
|
|
5
|
-
| [quickstart](./quickstart.md) | Install + run in five minutes |
|
|
6
|
-
| [react](./react.md) | React (Vite or CRA) integration |
|
|
7
|
-
| [next](./next.md) | Next.js 13+ integration |
|
|
8
|
-
| [node](./node.md) | Vanilla Node.js / TypeScript |
|
|
9
|
-
| [doctor](./doctor.md) | Deterministic diagnostics + `--live-probe` |
|
|
10
|
-
| [restore](./restore.md) | Persistent snapshots + rollback |
|
|
11
|
-
| [config](./config.md) | `allstak.config.*` schema + precedence + migrations |
|
|
12
|
-
| [ci](./ci.md) | Running unattended in CI |
|
|
13
|
-
| [privacy](./privacy.md) | Telemetry contract — what we send and how to disable |
|
|
14
|
-
| [known-limitations](./known-limitations.md) | Honest list of what's NOT supported |
|
|
15
|
-
| [troubleshooting](./troubleshooting.md) | Common errors mapped to fixes |
|
|
16
|
-
| [errors](../errors.md) | Canonical error catalog |
|
|
17
|
-
| [architecture](../architecture/) | Internal design docs (registry, transaction, rollback, etc.) |
|
package/docs/beta/ci.md
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
# Running in CI
|
|
2
|
-
|
|
3
|
-
The wizard is designed to run unattended once you've committed an
|
|
4
|
-
`allstak.config.*` and stashed an API key.
|
|
5
|
-
|
|
6
|
-
## One-shot setup in a CI step
|
|
7
|
-
|
|
8
|
-
```yaml
|
|
9
|
-
# .github/workflows/setup-allstak.yml (excerpt)
|
|
10
|
-
- name: Configure AllStak
|
|
11
|
-
env:
|
|
12
|
-
ALLSTAK_API_KEY: ${{ secrets.ALLSTAK_API_KEY }}
|
|
13
|
-
run: |
|
|
14
|
-
npx @allstak/wizard@beta -i react -y \
|
|
15
|
-
--skip-deps \
|
|
16
|
-
--release "$GITHUB_SHA"
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
Why these flags:
|
|
20
|
-
|
|
21
|
-
- `-y`: skip the confirmation prompt. The wizard refuses with `E_USER_CANCELLED`
|
|
22
|
-
in non-interactive mode otherwise.
|
|
23
|
-
- `--skip-deps`: don't run a package install — your CI step before this
|
|
24
|
-
already installed dependencies.
|
|
25
|
-
- `--release "$GITHUB_SHA"`: stamp the deploy commit on every event.
|
|
26
|
-
|
|
27
|
-
The CLI exits 0 on success, 2 on `WizardError`, and 130 on user cancel
|
|
28
|
-
(impossible in `-y` mode but documented for completeness).
|
|
29
|
-
|
|
30
|
-
## Doctor in CI (smoke check)
|
|
31
|
-
|
|
32
|
-
```yaml
|
|
33
|
-
- name: Doctor
|
|
34
|
-
env:
|
|
35
|
-
ALLSTAK_API_KEY: ${{ secrets.ALLSTAK_API_KEY }}
|
|
36
|
-
run: |
|
|
37
|
-
npx @allstak/wizard@beta --json doctor \
|
|
38
|
-
--live-probe \
|
|
39
|
-
--project-id ${{ vars.ALLSTAK_PROJECT_ID }} \
|
|
40
|
-
> doctor.json
|
|
41
|
-
jq -e '.outcome == "success"' doctor.json
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
`--live-probe` sends a real test event and polls for ingestion. Use it as
|
|
45
|
-
a deploy gate — if the ingestion path is broken, fail the deploy before
|
|
46
|
-
users hit it.
|
|
47
|
-
|
|
48
|
-
## JSON output everywhere
|
|
49
|
-
|
|
50
|
-
`--json` writes a single JSON object to stdout (status text goes to stderr).
|
|
51
|
-
Pipe it to `jq` or your own parser. Shape:
|
|
52
|
-
|
|
53
|
-
```json
|
|
54
|
-
{
|
|
55
|
-
"schemaVersion": 1,
|
|
56
|
-
"command": "init",
|
|
57
|
-
"outcome": "success",
|
|
58
|
-
"errorCode": null,
|
|
59
|
-
"durationMs": 4200,
|
|
60
|
-
"events": [...],
|
|
61
|
-
"diff": [...],
|
|
62
|
-
"doctor": [...],
|
|
63
|
-
"data": { ... }
|
|
64
|
-
}
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Telemetry in CI
|
|
68
|
-
|
|
69
|
-
Telemetry is on by default. To disable:
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
ALLSTAK_WIZARD_TELEMETRY=0 npx @allstak/wizard@beta ...
|
|
73
|
-
# or
|
|
74
|
-
npx @allstak/wizard@beta --no-telemetry ...
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
See [privacy.md](./privacy.md) for the exact payload shape. Telemetry
|
|
78
|
-
failures NEVER abort the wizard.
|
|
79
|
-
|
|
80
|
-
## Snapshot retention in CI
|
|
81
|
-
|
|
82
|
-
Each wizard run writes a snapshot to `.allstak-wizard/backups/`. In CI the
|
|
83
|
-
default retention of 10 is usually fine. To disable pruning entirely
|
|
84
|
-
(useful when you keep a separate audit log):
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
npx @allstak/wizard@beta -i react -y --snapshot-keep 0
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
To skip persistent snapshots entirely (in-process rollback only) — not
|
|
91
|
-
currently supported. Plans for v0.2.
|
|
92
|
-
|
|
93
|
-
## Self-hosted in CI
|
|
94
|
-
|
|
95
|
-
Either pass flags or commit a config:
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
npx @allstak/wizard@beta \
|
|
99
|
-
--host https://api.allstak.acme.com \
|
|
100
|
-
--dashboard-host https://app.allstak.acme.com \
|
|
101
|
-
-i react -y
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## Validating the wizard itself
|
|
105
|
-
|
|
106
|
-
The wizard ships a CI matrix workflow under `.github/workflows/ci.yml` that
|
|
107
|
-
runs install/repair/uninstall/restore cycles against React+Vite, Next, and
|
|
108
|
-
Node fixtures across Node 18/20/22. Fork the workflow if you want to
|
|
109
|
-
gate your own CI on it.
|
|
110
|
-
|
|
111
|
-
## Recommended pre-deploy chain
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
npm ci
|
|
115
|
-
npm run test
|
|
116
|
-
npx @allstak/wizard@beta config validate
|
|
117
|
-
npx @allstak/wizard@beta -i react -y --release "$GIT_SHA"
|
|
118
|
-
npx @allstak/wizard@beta --json doctor --live-probe \
|
|
119
|
-
--project-id "$ALLSTAK_PROJECT_ID" \
|
|
120
|
-
--api-key "$ALLSTAK_API_KEY"
|
|
121
|
-
npm run build
|
|
122
|
-
```
|
package/docs/beta/config.md
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
# `allstak.config.*`
|
|
2
|
-
|
|
3
|
-
Optional project-level config so you don't repeat `--org`, `--project`,
|
|
4
|
-
`--host`, etc. on every wizard invocation. Discovered from the project root
|
|
5
|
-
upward; the first matching file wins.
|
|
6
|
-
|
|
7
|
-
Loader order (first match wins):
|
|
8
|
-
|
|
9
|
-
1. `allstak.config.ts`
|
|
10
|
-
2. `allstak.config.mts`
|
|
11
|
-
3. `allstak.config.mjs`
|
|
12
|
-
4. `allstak.config.js`
|
|
13
|
-
5. `allstak.config.cjs`
|
|
14
|
-
6. `allstak.config.json`
|
|
15
|
-
|
|
16
|
-
`.ts` / `.mts` configs require running the wizard via a TypeScript-aware
|
|
17
|
-
launcher (`npx tsx`, `bun`, or `deno run`). Plain `.mjs` / `.json` work
|
|
18
|
-
without any toolchain.
|
|
19
|
-
|
|
20
|
-
## Schema
|
|
21
|
-
|
|
22
|
-
```ts
|
|
23
|
-
import { defineConfig } from '@allstak/wizard/config';
|
|
24
|
-
|
|
25
|
-
export default defineConfig({
|
|
26
|
-
schemaVersion: 1,
|
|
27
|
-
organization: 'my-org',
|
|
28
|
-
project: 'my-project',
|
|
29
|
-
environment: 'production',
|
|
30
|
-
release: process.env.GIT_SHA,
|
|
31
|
-
sourceMaps: {
|
|
32
|
-
enabled: true,
|
|
33
|
-
ignore: ['node_modules'],
|
|
34
|
-
},
|
|
35
|
-
selfHosted: {
|
|
36
|
-
apiHost: 'https://api.allstak.example',
|
|
37
|
-
ingestHost: 'https://api.allstak.example',
|
|
38
|
-
dashboardHost: 'https://app.allstak.example',
|
|
39
|
-
},
|
|
40
|
-
snapshotKeep: 10,
|
|
41
|
-
});
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
All fields are optional. `defineConfig` is a typed-identity helper; at
|
|
45
|
-
runtime it just returns its input.
|
|
46
|
-
|
|
47
|
-
## Precedence
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
CLI flag > env var > config file > built-in default
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Examples:
|
|
54
|
-
|
|
55
|
-
| Setting | CLI | Env | Config | Default |
|
|
56
|
-
|---------|-----|-----|--------|---------|
|
|
57
|
-
| organization | `--org` | `ALLSTAK_ORG` | `organization` | — |
|
|
58
|
-
| project | `--project` | `ALLSTAK_PROJECT` | `project` | — |
|
|
59
|
-
| environment | `--environment` | `ALLSTAK_ENVIRONMENT` | `environment` | `production` |
|
|
60
|
-
| release | `--release` | `ALLSTAK_RELEASE` | `release` (string or function) | — |
|
|
61
|
-
| api host | `--host` | `ALLSTAK_HOST` | `selfHosted.apiHost` | `https://api.allstak.sa` |
|
|
62
|
-
| ingest host | `--ingest-host` | `ALLSTAK_INGEST_HOST` | `selfHosted.ingestHost` | matches api host |
|
|
63
|
-
| dashboard host | `--dashboard-host` | `ALLSTAK_DASHBOARD_HOST` | `selfHosted.dashboardHost` | derived from api |
|
|
64
|
-
| source-maps | `--skip-source-maps` | — | `sourceMaps.enabled` | `true` |
|
|
65
|
-
| snapshot-keep | `--snapshot-keep` | `ALLSTAK_SNAPSHOT_KEEP` | `snapshotKeep` | `10` |
|
|
66
|
-
|
|
67
|
-
## Validation
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
npx @allstak/wizard@beta config validate
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
Reports the discovered file path, the declared `schemaVersion`, and any
|
|
74
|
-
deprecation warnings.
|
|
75
|
-
|
|
76
|
-
## Migration
|
|
77
|
-
|
|
78
|
-
When the wizard ships a new schema, `allstak config migrate` upgrades your
|
|
79
|
-
config in place.
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
npx @allstak/wizard@beta config migrate # rewrites .json files
|
|
83
|
-
npx @allstak/wizard@beta config migrate --dry-run # prints planned changes
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
For `.ts` / `.mjs` configs the wizard prints the migrated shape and asks
|
|
87
|
-
you to apply it manually — we don't roundtrip TypeScript through an AST
|
|
88
|
-
serializer that would mangle your imports and comments.
|
|
89
|
-
|
|
90
|
-
The wizard treats a missing `schemaVersion` as `1`. Always declaring it
|
|
91
|
-
explicitly future-proofs your config.
|
|
92
|
-
|
|
93
|
-
## Self-hosted
|
|
94
|
-
|
|
95
|
-
Wizard never assumes `api.allstak.sa`. For a self-hosted deployment:
|
|
96
|
-
|
|
97
|
-
```ts
|
|
98
|
-
export default defineConfig({
|
|
99
|
-
schemaVersion: 1,
|
|
100
|
-
selfHosted: {
|
|
101
|
-
apiHost: 'https://api.allstak.acme.com',
|
|
102
|
-
ingestHost: 'https://api.allstak.acme.com',
|
|
103
|
-
dashboardHost: 'https://app.allstak.acme.com',
|
|
104
|
-
},
|
|
105
|
-
});
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
CLI users can also pass `--host`, `--ingest-host`, `--dashboard-host`
|
|
109
|
-
directly. **Caveat:** the Java SDK currently hardcodes its host; the wizard
|
|
110
|
-
will warn when `-i java` runs against a non-default host until the SDK
|
|
111
|
-
ships a configurable host field.
|
|
112
|
-
|
|
113
|
-
## Release as a function
|
|
114
|
-
|
|
115
|
-
Useful for CI:
|
|
116
|
-
|
|
117
|
-
```ts
|
|
118
|
-
release: process.env.GIT_SHA, // string at config-load time
|
|
119
|
-
release: () => process.env.GIT_SHA, // function evaluated each run
|
|
120
|
-
release: () => execSync('git rev-parse HEAD').toString().trim(),
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
If the function returns `undefined`, the wizard falls through the precedence
|
|
124
|
-
chain (env, default).
|
package/docs/beta/doctor.md
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
# `allstak doctor`
|
|
2
|
-
|
|
3
|
-
Deterministic diagnostic with named stages. Read-only by default;
|
|
4
|
-
`--live-probe` adds a real test event roundtrip.
|
|
5
|
-
|
|
6
|
-
## Stages
|
|
7
|
-
|
|
8
|
-
The doctor runs all stages in this fixed order, even when an early stage
|
|
9
|
-
fails (so you see the whole picture):
|
|
10
|
-
|
|
11
|
-
| Stage | What it checks |
|
|
12
|
-
|-------|----------------|
|
|
13
|
-
| `auth` | Credentials present + accepted (`--api-key` or stored JWT). Auto-refreshes JWT if it expires soon. |
|
|
14
|
-
| `reachability` | Configured host responds (HTTP-level only — no `/health` exists, so it probes `/api/v1/auth/me` and treats `401` as "alive"). |
|
|
15
|
-
| `config` | `allstak.config.*` discovered (or absent — both fine). Reports the source path. |
|
|
16
|
-
| `integration` | Delegates to the integration's own doctor — env present? entry patched? imports wired? |
|
|
17
|
-
| `event-ingest` | (only with `--live-probe`) Sends a real event to `/ingest/v1/errors`, polls `/api/v1/errors` for ingestion. |
|
|
18
|
-
| `release-linkage` | Confirms the configured release is attached to the test event. |
|
|
19
|
-
| `source-maps` | Asks each registered source-map provider for its wired/drifted/missing state. |
|
|
20
|
-
|
|
21
|
-
## Output
|
|
22
|
-
|
|
23
|
-
Each stage emits exactly one line: `pass`, `warn`, `fail`, or `skip`, plus
|
|
24
|
-
a fix hint when applicable. `--json` produces a structured array under
|
|
25
|
-
`data.stages` for programmatic consumption.
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
npx @allstak/wizard@beta doctor
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
» Doctor
|
|
33
|
-
✓ [auth] Authenticated as me@example.com.
|
|
34
|
-
✓ [reachability] Reached https://api.allstak.sa.
|
|
35
|
-
✓ [config] Loaded config from /repo/allstak.config.ts.
|
|
36
|
-
✓ [integration] react: ok (4 checks)
|
|
37
|
-
- [event-ingest] Skipped (pass --live-probe to enable).
|
|
38
|
-
- [release-linkage] Skipped: live probe required to verify release linkage end-to-end.
|
|
39
|
-
✓ [source-maps] Wired: vite
|
|
40
|
-
✓ Doctor: setup looks good.
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Live probe
|
|
44
|
-
|
|
45
|
-
Requires both:
|
|
46
|
-
|
|
47
|
-
- `--api-key` (project-scoped — sends the test event),
|
|
48
|
-
- `--project-id <uuid>` (the project UUID, visible in the dashboard URL).
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
npx @allstak/wizard@beta doctor --live-probe \
|
|
52
|
-
--api-key ask_live_... \
|
|
53
|
-
--project-id 7e8e... \
|
|
54
|
-
--live-probe-timeout 60000
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Flow:
|
|
58
|
-
|
|
59
|
-
1. Wizard generates a random fingerprint (`wizard-probe-<6-hex>`).
|
|
60
|
-
2. POSTs an event to `/ingest/v1/errors` with that fingerprint in metadata.
|
|
61
|
-
3. Polls `/api/v1/errors?projectId=&from=&query=<fingerprint>` every 2.5s.
|
|
62
|
-
4. Reports the dashboard URL of the captured event when found.
|
|
63
|
-
|
|
64
|
-
If polling times out, the doctor returns `E_INGEST_VERIFY_FAILED` with the
|
|
65
|
-
event id you can hand to support.
|
|
66
|
-
|
|
67
|
-
## JSON mode
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
npx @allstak/wizard@beta --json doctor | jq '.data.stages'
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
Each entry is `{ stage, status, detail, fix?, data? }`.
|
|
74
|
-
|
|
75
|
-
## When stages fail
|
|
76
|
-
|
|
77
|
-
The CLI exits non-zero (code 2) on any `fail`. `warn` and `skip` do not
|
|
78
|
-
change exit code. See [errors.md](../errors.md) for the canonical error
|
|
79
|
-
codes each stage can emit.
|
package/docs/beta/expo.md
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# Expo (React Native)
|
|
2
|
-
|
|
3
|
-
**Stability:** internal experimental. Managed workflow only. The wizard refuses to run on
|
|
4
|
-
projects that have already prebuilt to native (i.e. an `ios/` or `android/`
|
|
5
|
-
directory at the project root) — bare-via-prebuild has too many failure
|
|
6
|
-
modes for an unattended patcher and remains `unsupported` in v0.1.
|
|
7
|
-
|
|
8
|
-
## What you get
|
|
9
|
-
|
|
10
|
-
- `@allstak/react-native` installed.
|
|
11
|
-
- `.env` populated with `ALLSTAK_API_KEY` (and the standard companions).
|
|
12
|
-
- `app.json` gets the AllStak Expo plugin appended to `expo.plugins[]`
|
|
13
|
-
(idempotent — re-running does not duplicate the entry).
|
|
14
|
-
- `App.tsx` gets:
|
|
15
|
-
- An AST-injected `import { AllStakProvider } from '@allstak/react-native'`.
|
|
16
|
-
- A managed-block hint reminding you to wrap your root component in
|
|
17
|
-
`<AllStakProvider>…</AllStakProvider>`.
|
|
18
|
-
- `app.config.{js,ts}` gets the same managed-block hint if it exists.
|
|
19
|
-
|
|
20
|
-
## Run
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
npx @allstak/wizard@beta -i expo
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Compatibility
|
|
27
|
-
|
|
28
|
-
- `expo >= 50`. Older versions refused with `E_UNSUPPORTED_VERSION`.
|
|
29
|
-
- `react-native >= 0.73`.
|
|
30
|
-
- **Managed workflow only.** Bare/prebuilt projects (`ios/` or `android/`
|
|
31
|
-
present) are refused with a clear error. To use AllStak in a bare RN
|
|
32
|
-
app, follow the SDK README directly — the wizard will not patch native
|
|
33
|
-
Xcode/Gradle config in v0.1.
|
|
34
|
-
|
|
35
|
-
## Wiring `<AllStakProvider>`
|
|
36
|
-
|
|
37
|
-
The wizard cannot safely AST-edit your component tree (App.tsx shapes
|
|
38
|
-
vary too much — function/class/forwardRef/HOC). It places a managed-block
|
|
39
|
-
hint and you wire the provider yourself:
|
|
40
|
-
|
|
41
|
-
```tsx
|
|
42
|
-
import { AllStakProvider } from '@allstak/react-native';
|
|
43
|
-
|
|
44
|
-
export default function App() {
|
|
45
|
-
return (
|
|
46
|
-
<AllStakProvider apiKey={process.env.EXPO_PUBLIC_ALLSTAK_API_KEY}>
|
|
47
|
-
{/* your app */}
|
|
48
|
-
</AllStakProvider>
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
`doctor` reports `warn` on `provider-wired` until the live call is detected
|
|
54
|
-
(comments inside the managed-block hint are stripped before matching, so
|
|
55
|
-
the example above does not produce a false positive).
|
|
56
|
-
|
|
57
|
-
## Capabilities the wizard does NOT claim
|
|
58
|
-
|
|
59
|
-
- **No source-map upload wiring.** Metro source-maps are deferred to v0.2
|
|
60
|
-
(no-op `skip` in `doctor`).
|
|
61
|
-
- **No native edits.** No Podfile / Gradle / Info.plist / AndroidManifest
|
|
62
|
-
changes. EAS Build users get the plugin reference in `app.json` and Expo
|
|
63
|
-
takes care of the rest.
|
|
64
|
-
|
|
65
|
-
## Verify
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
npx @allstak/wizard@beta doctor -i expo
|
|
69
|
-
```
|
package/docs/beta/fastify.md
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
# Fastify
|
|
2
|
-
|
|
3
|
-
**Stability:** internal experimental. AST-safe import (ESM only) + managed-block hint.
|
|
4
|
-
The wizard branches on module system: ESM entries get an AST-injected
|
|
5
|
-
`import { allstakFastify }`; CJS entries get the managed-block hint only
|
|
6
|
-
(the wizard does NOT inject `require()` calls, which interact badly with
|
|
7
|
-
top-of-file conditional/dynamic require patterns).
|
|
8
|
-
|
|
9
|
-
## What you get
|
|
10
|
-
|
|
11
|
-
- `@allstak/fastify` installed.
|
|
12
|
-
- `.env` populated with `ALLSTAK_API_KEY`.
|
|
13
|
-
- Entry file (resolved from `package.json:scripts.start`,
|
|
14
|
-
`package.json:main`, or conventional `src/server.{ts,js,mjs}` /
|
|
15
|
-
`src/index.{ts,js,mjs}`):
|
|
16
|
-
- **ESM** (`type: module` / `.mjs` / `import` syntax in the file):
|
|
17
|
-
AST-injected import.
|
|
18
|
-
- **CJS**: import skipped, hint-only.
|
|
19
|
-
- Both: a managed-block hint demonstrating
|
|
20
|
-
`app.register(allstakFastify, { ... })`.
|
|
21
|
-
|
|
22
|
-
## Run
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
npx @allstak/wizard@beta -i fastify
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Compatibility
|
|
29
|
-
|
|
30
|
-
- `fastify >= 4`. Older versions refused with `E_UNSUPPORTED_VERSION`.
|
|
31
|
-
|
|
32
|
-
## Wiring `app.register`
|
|
33
|
-
|
|
34
|
-
```ts
|
|
35
|
-
import Fastify from 'fastify';
|
|
36
|
-
import { allstakFastify } from '@allstak/fastify';
|
|
37
|
-
|
|
38
|
-
const app = Fastify({ logger: true });
|
|
39
|
-
await app.register(allstakFastify, {
|
|
40
|
-
apiKey: process.env.ALLSTAK_API_KEY,
|
|
41
|
-
});
|
|
42
|
-
// … your routes
|
|
43
|
-
await app.listen({ port: 3000 });
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
`doctor` reports `warn` on `plugin-registered` until a non-comment
|
|
47
|
-
`app.register(allstakFastify, ...)` call is detected (line comments
|
|
48
|
-
are stripped before matching so the wizard's own hint does not satisfy
|
|
49
|
-
the check).
|
|
50
|
-
|
|
51
|
-
## Capabilities the wizard does NOT claim
|
|
52
|
-
|
|
53
|
-
- **No source-map upload wiring.** Deferred to v0.2.
|
|
54
|
-
- **No CJS AST patching.** CJS users wire the `require(...)` and
|
|
55
|
-
`app.register(...)` calls per the managed-block hint.
|
|
56
|
-
- **No bundler integration** (esbuild/tsup/etc.) — out of scope for v0.1.
|
|
57
|
-
|
|
58
|
-
## Verify
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
npx @allstak/wizard@beta doctor -i fastify
|
|
62
|
-
```
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
# Known limitations
|
|
2
|
-
|
|
3
|
-
This page is the **honest** list of what the wizard does and doesn't do
|
|
4
|
-
today. Read it before making the wizard part of a critical onboarding
|
|
5
|
-
path.
|
|
6
|
-
|
|
7
|
-
## Supported integrations
|
|
8
|
-
|
|
9
|
-
| Integration | Stability | Notes |
|
|
10
|
-
|-------------|-----------|-------|
|
|
11
|
-
| `react` (Vite or CRA) | ✅ stable | Validated end-to-end; dogfooded against `admin-web` and `web`. |
|
|
12
|
-
| `next` (13/14/15, app + pages router) | ✅ stable | Disposable live-backend certification passed for App Router 15 and pages-router onboarding; Edge Runtime and Server Actions are not certified. |
|
|
13
|
-
| `js` (vanilla Node) | ✅ stable | Validated end-to-end. |
|
|
14
|
-
| `expo` (managed workflow, ≥50) | internal experimental | Hidden from normal public setup; requires `--experimental`. Real device/emulator runtime proof is incomplete. |
|
|
15
|
-
| `nestjs` (≥9) | internal experimental | Runtime SDK fail-open is verified, but wizard auto-wiring is not Stable. Requires `--experimental`. |
|
|
16
|
-
| `fastify` (≥4) | internal experimental | Runtime SDK fail-open is verified, but wizard auto-wiring is not Stable. Requires `--experimental`. |
|
|
17
|
-
|
|
18
|
-
Everything else is `experimental` (refuses without `--experimental`) or
|
|
19
|
-
`unsupported` (refuses always).
|
|
20
|
-
|
|
21
|
-
## Explicitly NOT supported
|
|
22
|
-
|
|
23
|
-
| Target | Why |
|
|
24
|
-
|--------|-----|
|
|
25
|
-
| **Astro** | The wizard's framework detector falls through to `js`, which writes env vars but does not wire Astro middleware. Real Astro support is on the v0.2 roadmap. Until then: do the setup manually following the SDK README. |
|
|
26
|
-
| **Bare React Native** | Podfile + Gradle patching cannot be validated without iOS sim + Android emulator builds. The wizard refuses with `E_UNSUPPORTED_FRAMEWORK`. Use the Expo managed path if you can; otherwise follow the manual setup. |
|
|
27
|
-
| **Expo prebuilt / bare-via-prebuild** | If `ios/` or `android/` already exist, the wizard refuses (same reason as bare RN). Run `expo prebuild --clean` later if you need native edits, but the wizard will not patch the native projects in v0.1. |
|
|
28
|
-
| **NestJS / Fastify auto-registration** | Wizard injects the import + a managed-block hint. It does NOT mutate `bootstrap()` to call `useGlobalFilters` or `app.register` — entry-point shapes vary too widely (factories, hybrid apps, custom adapters) and the blast radius is too high. `doctor` reports `warn` until you wire the call yourself. |
|
|
29
|
-
| **Flutter source maps** | The Flutter SDK itself does not yet ship source-map upload tooling. Wizard's Flutter integration is `experimental` and only writes env vars. |
|
|
30
|
-
| **Backend SDK auto-wiring** (OTel, Spring Boot, Django, Flask, Rails, .NET, Go, PHP) | Each is `experimental`. Install + env-var writing is supported under `--experimental`; framework wiring is NOT — too many entry-point shapes to AST-patch safely without per-framework fixture validation. v0.2 roadmap. |
|
|
31
|
-
|
|
32
|
-
## Auth specifics
|
|
33
|
-
|
|
34
|
-
- Login uses email-OTP (no OAuth device-flow). Rate-limited; 4–8 digit
|
|
35
|
-
codes valid for ~10 minutes.
|
|
36
|
-
- Two-factor (TOTP) is supported but not unit-tested end-to-end (the test
|
|
37
|
-
matrix doesn't include accounts with 2FA enabled).
|
|
38
|
-
- JWT refresh has a 60-second early-refresh window; the access token TTL
|
|
39
|
-
is 15 minutes, the refresh token rotates on each `/refresh` call.
|
|
40
|
-
|
|
41
|
-
## Source-maps
|
|
42
|
-
|
|
43
|
-
- **Vite**: AST-injects the plugin import + managed-block hint.
|
|
44
|
-
- **Next.js**: managed-block hint only (next.config shapes vary too much
|
|
45
|
-
for safe AST mutation).
|
|
46
|
-
- **Webpack**: managed-block hint only.
|
|
47
|
-
- **Metro / Hermes (RN)**: provider registered but inert in v0.1 — `detect()`
|
|
48
|
-
returns `false` and `wire()` is a no-op. Real validation needs device
|
|
49
|
-
builds.
|
|
50
|
-
- End-to-end **upload roundtrip** (POST `/api/v1/sourcemaps/upload` →
|
|
51
|
-
symbolicate) is NOT verified by `doctor` in v0.1.x. The wizard wires the
|
|
52
|
-
plugin; the upload + dashboard symbolication are the SDK + dashboard's
|
|
53
|
-
responsibility.
|
|
54
|
-
|
|
55
|
-
## Other gaps
|
|
56
|
-
|
|
57
|
-
- **Windows Credential Manager** is not yet a credential store backend on
|
|
58
|
-
Windows — Windows users get the AES-256-GCM encrypted-file fallback.
|
|
59
|
-
- **CRA + standalone Webpack** are detected but the wizard does not AST-mutate
|
|
60
|
-
Webpack configs.
|
|
61
|
-
- **Multi-package monorepos** are detected (pnpm/turbo/nx/lerna/npm-workspaces)
|
|
62
|
-
but the wizard operates on the cwd's nearest manifest. There is no
|
|
63
|
-
"which package?" prompt yet.
|
|
64
|
-
- **`allstak login`** is the only path to a user JWT in beta. There is no
|
|
65
|
-
PAT (personal access token) flow, because the backend doesn't expose one.
|
|
66
|
-
|
|
67
|
-
## What's safe to use in production
|
|
68
|
-
|
|
69
|
-
- React + Vite onboarding flows.
|
|
70
|
-
- React + CRA onboarding flows (without source-map upload — manual wiring).
|
|
71
|
-
- Vanilla Node entry-point patching.
|
|
72
|
-
- Next.js with manual `next.config.js` follow-up.
|
|
73
|
-
- Expo managed workflow (`app.json` plugin entry + provider hint).
|
|
74
|
-
- NestJS / Fastify install + env wiring + managed-block hint, with a manual
|
|
75
|
-
`useGlobalFilters` / `app.register` call as documented in the per-framework
|
|
76
|
-
beta page.
|
|
77
|
-
- All commands in their `--dry-run` form (no disk writes anywhere).
|
|
78
|
-
- `restore` / snapshot inspection (read-only ops).
|
|
79
|
-
|
|
80
|
-
## What to avoid
|
|
81
|
-
|
|
82
|
-
- Running `--experimental` integrations in CI without manual review.
|
|
83
|
-
- Deploying based on `doctor --live-probe` for Java integrations until the
|
|
84
|
-
host-config fix lands.
|
|
85
|
-
- Treating Astro / bare-RN as "the wizard handles it."
|
|
86
|
-
|
|
87
|
-
## Reporting an issue
|
|
88
|
-
|
|
89
|
-
Re-run with `--debug` and grab the canonical `errorCode` + `subcode` from
|
|
90
|
-
the output. Snapshot directory contents (under `.allstak-wizard/backups/`)
|
|
91
|
-
are useful for support. Do **not** paste your full env file or
|
|
92
|
-
`allstak.config.*` to a public issue — redact `apiKey` / DSN / refresh
|
|
93
|
-
token values first.
|
package/docs/beta/nestjs.md
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# NestJS
|
|
2
|
-
|
|
3
|
-
**Stability:** internal experimental. AST-safe import + managed-block hint. The wizard
|
|
4
|
-
does NOT auto-mutate `bootstrap()` to call `app.useGlobalFilters(...)` —
|
|
5
|
-
Nest entry shapes vary too much (factory functions, custom adapters,
|
|
6
|
-
hybrid microservice apps) and registration mid-bootstrap has high blast
|
|
7
|
-
radius. The wizard places the import and a hint; you wire the call.
|
|
8
|
-
|
|
9
|
-
## What you get
|
|
10
|
-
|
|
11
|
-
- `@allstak/nestjs` installed.
|
|
12
|
-
- `.env` populated with `ALLSTAK_API_KEY`.
|
|
13
|
-
- `src/main.ts` (or the entry pointed to by `package.json:scripts.start`)
|
|
14
|
-
gets:
|
|
15
|
-
- An AST-injected
|
|
16
|
-
`import { AllStakNestExceptionFilter, AllStakNestInterceptor } from '@allstak/nestjs'`.
|
|
17
|
-
- A managed-block hint demonstrating the registration call inside
|
|
18
|
-
a `//`-comment block. `doctor` strips line comments before
|
|
19
|
-
matching the live registration, so the hint itself does not
|
|
20
|
-
produce a false-positive `pass`.
|
|
21
|
-
|
|
22
|
-
## Run
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
npx @allstak/wizard@beta -i nestjs
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Compatibility
|
|
29
|
-
|
|
30
|
-
- `@nestjs/core >= 9`. Older versions refused with `E_UNSUPPORTED_VERSION`.
|
|
31
|
-
|
|
32
|
-
## Wiring `useGlobalFilters` / `useGlobalInterceptors`
|
|
33
|
-
|
|
34
|
-
Inside your `bootstrap()` after `NestFactory.create(...)`:
|
|
35
|
-
|
|
36
|
-
```ts
|
|
37
|
-
import { NestFactory } from '@nestjs/core';
|
|
38
|
-
import {
|
|
39
|
-
AllStakNestExceptionFilter,
|
|
40
|
-
AllStakNestInterceptor,
|
|
41
|
-
} from '@allstak/nestjs';
|
|
42
|
-
import { AppModule } from './app.module';
|
|
43
|
-
|
|
44
|
-
async function bootstrap() {
|
|
45
|
-
const app = await NestFactory.create(AppModule);
|
|
46
|
-
app.useGlobalFilters(new AllStakNestExceptionFilter());
|
|
47
|
-
app.useGlobalInterceptors(new AllStakNestInterceptor());
|
|
48
|
-
await app.listen(3000);
|
|
49
|
-
}
|
|
50
|
-
bootstrap();
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
`doctor` reports `warn` on `filter-registered` until at least one of
|
|
54
|
-
`useGlobalFilters(...AllStakNestExceptionFilter` or
|
|
55
|
-
`useGlobalInterceptors(...AllStakNestInterceptor` is detected in
|
|
56
|
-
non-comment source.
|
|
57
|
-
|
|
58
|
-
## Capabilities the wizard does NOT claim
|
|
59
|
-
|
|
60
|
-
- **No source-map upload wiring.** Deferred to v0.2.
|
|
61
|
-
- **No registration-call auto-injection.** See the rationale above.
|
|
62
|
-
- **No microservice / hybrid-app wiring.** The hint targets the standard
|
|
63
|
-
HTTP bootstrap; for hybrid apps register filters per-microservice.
|
|
64
|
-
|
|
65
|
-
## Verify
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
npx @allstak/wizard@beta doctor -i nestjs
|
|
69
|
-
```
|