@allstak/wizard 0.1.7 → 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/dist/cli.js +8 -0
- package/dist/commands/_context.js +4 -2
- 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 +3 -4
- 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
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
# v0.2 spec — Java SDK host configurability
|
|
2
|
-
|
|
3
|
-
**Status:** PROPOSED. No code in `allstak-java-sdk` has been modified by this wizard release.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Problem
|
|
8
|
-
|
|
9
|
-
The wizard's `--host` / `--ingest-host` / `--dashboard-host` flags allow users
|
|
10
|
-
to point the wizard at a self-hosted AllStak deployment. For most SDKs this
|
|
11
|
-
flows through to a runtime `host` field on `init()` config.
|
|
12
|
-
|
|
13
|
-
For `sa.allstak:allstak-spring-boot-starter` and `sa.allstak:allstak-java-core`,
|
|
14
|
-
the host is **hardcoded** to `https://api.allstak.sa` in the SDK source.
|
|
15
|
-
Wizard's `--host` is silently a no-op for Java users — events go to the wrong
|
|
16
|
-
backend without any error.
|
|
17
|
-
|
|
18
|
-
Per the v0.1 implementation report (2026-05-07): "filed below as a v0.2
|
|
19
|
-
SDK-side blocker."
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Required SDK-side change
|
|
24
|
-
|
|
25
|
-
Target package: `allstak-java-sdk` (the Java SDK in the AllStak SDK
|
|
26
|
-
monorepo, sibling of `@allstak/wizard`). The change is small but must land
|
|
27
|
-
in the SDK before the wizard's `java` integration can graduate from
|
|
28
|
-
`experimental`:
|
|
29
|
-
|
|
30
|
-
### 1. Add a `host` field to `AllStakConfig`
|
|
31
|
-
|
|
32
|
-
```java
|
|
33
|
-
public class AllStakConfig {
|
|
34
|
-
private String apiKey;
|
|
35
|
-
private String environment;
|
|
36
|
-
private String release;
|
|
37
|
-
private String serviceName;
|
|
38
|
-
private String host; // NEW — defaults to "https://api.allstak.sa"
|
|
39
|
-
// …existing fields…
|
|
40
|
-
|
|
41
|
-
// Builder method:
|
|
42
|
-
public Builder host(String host) { this.host = host; return this; }
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### 2. Read `ALLSTAK_HOST` env var in the auto-config
|
|
47
|
-
|
|
48
|
-
```java
|
|
49
|
-
@ConfigurationProperties(prefix = "allstak")
|
|
50
|
-
public class AllStakProperties {
|
|
51
|
-
// existing fields…
|
|
52
|
-
private String host = System.getenv().getOrDefault("ALLSTAK_HOST", "https://api.allstak.sa");
|
|
53
|
-
}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### 3. Spring Boot `application.yml` exposure
|
|
57
|
-
|
|
58
|
-
```yaml
|
|
59
|
-
allstak:
|
|
60
|
-
api-key: ${ALLSTAK_API_KEY}
|
|
61
|
-
host: ${ALLSTAK_HOST:https://api.allstak.sa} # NEW
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### 4. Pass `host` through to the HTTP transport
|
|
65
|
-
|
|
66
|
-
The transport class (likely `AllStakHttpClient` or similar) currently has a
|
|
67
|
-
hardcoded base URL. Replace with `config.getHost()`.
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## Compatibility implications
|
|
72
|
-
|
|
73
|
-
- **Backwards compatible:** existing users who pass nothing get the old
|
|
74
|
-
default. No breaking change to the public API.
|
|
75
|
-
- **Bumps the minor version** — first SDK release with the field should be
|
|
76
|
-
`0.2.0` (not `0.1.x`) per semver.
|
|
77
|
-
- **Wizard manifest update:** once shipped, edit
|
|
78
|
-
`src/integrations/java.ts` and the manifest's `compatibility` to require
|
|
79
|
-
the new minimum version: `{ name: 'sa.allstak:allstak-java-core',
|
|
80
|
-
minVersion: '0.2', maxMajorExclusive: null, required: true }`.
|
|
81
|
-
- **Wizard's `java` integration warning** can be removed from
|
|
82
|
-
`manifest.stabilityNote` once v0.2.0 of the SDK is the minimum.
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Wizard-side validation v0.2 must add
|
|
87
|
-
|
|
88
|
-
After the SDK ships:
|
|
89
|
-
|
|
90
|
-
1. Update `src/integrations/java.ts` to actually patch `pom.xml` /
|
|
91
|
-
`build.gradle` (currently the integration is `experimental` and only
|
|
92
|
-
writes env vars).
|
|
93
|
-
2. Add `fixtures/spring-boot/` with a minimal Spring Boot 3.x project
|
|
94
|
-
(`./mvnw test` runs in CI).
|
|
95
|
-
3. Doctor stage `event-ingest` should be runnable against a Java-emitted
|
|
96
|
-
event (the existing doctor probe is a generic event so this Just Works
|
|
97
|
-
once the SDK respects `--host`).
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## Why the wizard does NOT change this from this side
|
|
102
|
-
|
|
103
|
-
- CLAUDE.md's monorepo policy: "Do not modify unrelated SDKs unless required."
|
|
104
|
-
- Even with permission, modifying a Java SDK from a TypeScript wizard
|
|
105
|
-
session has no path to validate the change (no `mvn` in the wizard's CI
|
|
106
|
-
matrix).
|
|
107
|
-
- The change is small enough (~20 LoC) that it belongs in a focused PR
|
|
108
|
-
against `allstak-java-sdk` rather than being smuggled in through wizard
|
|
109
|
-
work.
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
## Action items for whoever picks this up
|
|
114
|
-
|
|
115
|
-
1. Open a ticket against `allstak-java-sdk` referencing this spec.
|
|
116
|
-
2. Implement the `host` field + env-var lookup in the SDK.
|
|
117
|
-
3. Bump SDK to `0.2.0` and publish to Maven Central.
|
|
118
|
-
4. Update `src/integrations/java.ts` manifest to require `0.2+`.
|
|
119
|
-
5. Remove the warning blurb from the manifest's `stabilityNote`.
|
|
120
|
-
6. Move the integration's `stability` from `experimental` toward `beta`
|
|
121
|
-
once Spring Boot fixture validation lands.
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
# v0.2 spec — Source-maps end-to-end roundtrip
|
|
2
|
-
|
|
3
|
-
**Status:** Wizard wires bundler plugins via `SourceMapProvider` (v0.1.1) but
|
|
4
|
-
does NOT yet validate the upload → release-binding → symbolication chain
|
|
5
|
-
against the live backend. This spec documents what v0.2 must add.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## What works today (v0.1.x)
|
|
10
|
-
|
|
11
|
-
- `vite` provider: imports `allstakSourcemaps` from `@allstak/react/vite`, adds it to the real Vite `plugins` array, and enables `build.sourcemap`.
|
|
12
|
-
- `next` provider: managed-block hint pointing the user at `withAllStak`.
|
|
13
|
-
- `webpack` provider: managed-block hint only.
|
|
14
|
-
- `metro` provider: intentionally inert; `detect()` returns false.
|
|
15
|
-
- `doctor` reports per-provider `wired` / `drifted` / `missing` state.
|
|
16
|
-
|
|
17
|
-
What this gives us: the bundler is correctly configured to produce + upload
|
|
18
|
-
source maps. What it does NOT verify: that uploaded maps actually resolve
|
|
19
|
-
stack frames in the dashboard.
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Backend contract (verified 2026-05-07)
|
|
24
|
-
|
|
25
|
-
Endpoint:
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
POST /api/v1/sourcemaps/upload?projectId=:id&release=:version&fileName=:path&bundleUrl=:url
|
|
29
|
-
Content-Type: application/json
|
|
30
|
-
Authorization: Bearer <user JWT>
|
|
31
|
-
|
|
32
|
-
Body: raw .map JSON content (size limit 16 MB)
|
|
33
|
-
|
|
34
|
-
Response: 200 OK
|
|
35
|
-
{
|
|
36
|
-
"id": "uuid",
|
|
37
|
-
"release": "1.2.3",
|
|
38
|
-
"fileName": "assets/main-abc123.js.map",
|
|
39
|
-
"sizeBytes": 12345,
|
|
40
|
-
"uploadedAt": "2026-05-07T..."
|
|
41
|
-
}
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Server-side resolution: the dashboard's error detail view symbolicates frames
|
|
45
|
-
on read by looking up `(projectId, release, fileName)`. Maps are stored
|
|
46
|
-
indefinitely (no TTL).
|
|
47
|
-
|
|
48
|
-
Symbolication endpoint (used by error-detail UI; we can use it to verify):
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
POST /api/v1/sourcemaps/symbolicate
|
|
52
|
-
Body: { projectId, release, frames: [stackString] }
|
|
53
|
-
Response: { release, totalFrames, resolvedFrames, frames: [{ raw, resolved }] }
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
## Validation matrix v0.2 must pass
|
|
59
|
-
|
|
60
|
-
| # | Check | Pass condition |
|
|
61
|
-
|---|-------|----------------|
|
|
62
|
-
| 1 | Upload happens during `npm run build` | Per-bundler post-build hook actually POSTs `.map` files. |
|
|
63
|
-
| 2 | Release binding | Uploaded maps are queryable by `(projectId, release)`. |
|
|
64
|
-
| 3 | Round-trip resolution | Send a synthetic event with a stack frame referencing the uploaded bundle → symbolicate endpoint resolves it to the original source line. |
|
|
65
|
-
| 4 | Idempotent upload | Re-running build with same `(release, fileName)` is a no-op or a clean overwrite — never a duplicate. |
|
|
66
|
-
| 5 | Auth scope | Upload requires JWT (not API key). Wizard's `requireUserCredentials` already handles this. |
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## What v0.2 needs to build
|
|
71
|
-
|
|
72
|
-
### A. A real upload runner
|
|
73
|
-
|
|
74
|
-
`src/sourcemaps/upload.ts`:
|
|
75
|
-
|
|
76
|
-
```ts
|
|
77
|
-
export async function uploadSourceMap(
|
|
78
|
-
apiHost: string,
|
|
79
|
-
accessToken: string,
|
|
80
|
-
params: {
|
|
81
|
-
projectId: string;
|
|
82
|
-
release: string;
|
|
83
|
-
fileName: string; // e.g. "assets/main-abc123.js"
|
|
84
|
-
bundleUrl?: string; // public URL of the bundle (helps dashboard match)
|
|
85
|
-
mapContent: string; // raw JSON from .map
|
|
86
|
-
},
|
|
87
|
-
): Promise<{ id: string }> {
|
|
88
|
-
// Use apiRequest from src/api/http.ts with body=mapContent and contentType='application/json'.
|
|
89
|
-
}
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
This already has a slot in `src/api/http.ts` (the `contentType` override
|
|
93
|
-
parameter exists for exactly this case).
|
|
94
|
-
|
|
95
|
-
### B. A `wizard sourcemaps upload` CLI subcommand
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
allstak sourcemaps upload \
|
|
99
|
-
--project-id <uuid> \
|
|
100
|
-
--release "$GIT_SHA" \
|
|
101
|
-
--build-dir dist \
|
|
102
|
-
--pattern "**/*.js.map"
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
Walks `build-dir`, POSTs each `.map` file, prints the upload manifest. Reuses
|
|
106
|
-
`getCredentialStore()` + `requireUserCredentials()`.
|
|
107
|
-
|
|
108
|
-
### C. End-to-end doctor stage
|
|
109
|
-
|
|
110
|
-
Extend `runDoctor` with a new stage `source-maps-e2e` that runs only with
|
|
111
|
-
`--live-probe`:
|
|
112
|
-
|
|
113
|
-
1. Build a tiny known fixture into a temp dir.
|
|
114
|
-
2. Upload its `.map`.
|
|
115
|
-
3. Send a probe event whose stack frame points at the uploaded bundle.
|
|
116
|
-
4. Hit `/api/v1/sourcemaps/symbolicate` and assert `resolvedFrames > 0`.
|
|
117
|
-
|
|
118
|
-
### D. CI matrix entry
|
|
119
|
-
|
|
120
|
-
Add a `source-maps-e2e` job to the wizard's CI workflow gated on a
|
|
121
|
-
repository secret (`ALLSTAK_E2E_API_KEY` + `ALLSTAK_E2E_PROJECT_ID`).
|
|
122
|
-
Without those secrets the job skips.
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## Risks
|
|
127
|
-
|
|
128
|
-
1. **`.map` files can be huge** (50MB+ for production bundles). Backend
|
|
129
|
-
currently caps at 16MB. v0.2 should either:
|
|
130
|
-
- Detect maps larger than the cap and skip with a warning, OR
|
|
131
|
-
- Negotiate a larger cap with the backend team.
|
|
132
|
-
2. **`bundleUrl` parameter is optional but improves resolution accuracy.**
|
|
133
|
-
The wizard should compute it from the project's deploy target where
|
|
134
|
-
possible (Vercel? Netlify? Cloudflare Pages? — heuristics).
|
|
135
|
-
3. **Hermes maps require a different upload format.** Bytecode → JS source
|
|
136
|
-
resolution is a separate symbolication pipeline; the v0.1 wizard does NOT
|
|
137
|
-
support this. Document explicitly when implementing.
|
|
138
|
-
4. **Token rotation during long uploads.** The user JWT has a 15-minute TTL.
|
|
139
|
-
If uploading 100 `.map` files takes >15 minutes, the wizard must
|
|
140
|
-
`refreshTokens()` mid-upload. The credential store + auth client already
|
|
141
|
-
support this; just needs a wrapper.
|
|
142
|
-
5. **Idempotency**: backend probably accepts the same `(release, fileName)`
|
|
143
|
-
twice and overwrites. Verify before relying on this.
|
|
144
|
-
|
|
145
|
-
---
|
|
146
|
-
|
|
147
|
-
## Why this is deferred
|
|
148
|
-
|
|
149
|
-
End-to-end validation requires:
|
|
150
|
-
- A live AllStak instance (production or staging).
|
|
151
|
-
- A real org + project the engineer can write to.
|
|
152
|
-
- Credentials with both ingest scope AND user scope.
|
|
153
|
-
- The ability to assert dashboard-side symbolication output.
|
|
154
|
-
|
|
155
|
-
None of these are available in the v0.1.x wizard test environment. The
|
|
156
|
-
provider abstraction landed in v0.1.1 specifically so this work can plug in
|
|
157
|
-
without rewriting integrations.
|
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
|
-
```
|