@timurproko/a1 0.1.1-dev.8 → 0.1.1-dev.9

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 CHANGED
@@ -4,19 +4,12 @@ A1 is a terminal-native agent launcher for Windows, Linux, and macOS. Bare `a1`
4
4
 
5
5
  ## Install
6
6
 
7
- Requirements:
8
-
9
- - Node.js 22.19 through 24.x
10
- - npm 11
11
-
12
- Published packages include the integrity-verified process guardian for supported platforms. Building A1 from source additionally requires Rust/Cargo 1.85 or newer.
7
+ Requires Node.js 22.19 through 24.x and npm 11.
13
8
 
14
9
  ```sh
15
10
  npm install --global @timurproko/a1@latest
16
11
  ```
17
12
 
18
- The package installs only the `a1` command.
19
-
20
13
  ## Commands
21
14
 
22
15
  ```sh
@@ -28,79 +21,23 @@ a1 update # update to npm latest
28
21
  a1 update:next # update to npm next
29
22
  ```
30
23
 
31
- Bare `a1` owns its Pi-compatible TUI composition and uses the public Pi engine, components, and terminal APIs. It does not insert a PTY or terminal-byte relay. Default visuals and workflows track the pinned vanilla Pi baseline; A1-specific visual customization and structured tabs remain disabled.
32
-
33
- `a1 pi` is the untouched upstream fallback and comparison oracle. Use it to distinguish A1-owned UI problems from upstream Pi, profile, provider, or terminal problems. The `a1 ui` subcommand was removed and is not a compatibility alias; run bare `a1` for the owned UI.
24
+ The `a1 ui` subcommand was removed; run bare `a1` for the owned UI.
34
25
 
35
- `a1 sandbox` is unchanged: it launches vanilla Pi with isolated Pi configuration and resources. “Sandbox” does not mean operating-system, filesystem, process, network, or credential security isolation. See [`docs/features/launch-profiles.md`](docs/features/launch-profiles.md) for first-run directories, independent `/login`, trust behavior, extension placement, and recovery.
36
-
37
- Every interactive command creates an independent, non-detachable launch instance. Any number of `a1`, `a1 pi`, and `a1 sandbox` commands may run in separate terminals at the same time. Closing one command closes only its owned UI/Pi process and all agents, extensions, tools, daemons, and descendants created by that invocation; it never requires finding PIDs, deleting control state, or restarting the supervisor. The idle supervisor may remain available for release coordination after all interactive instances close, but it owns no surviving instance runtime.
26
+ Any number of `a1`, `a1 pi`, and `a1 sandbox` commands may run in separate terminals at the same time. Closing one command closes only its own UI/Pi process and everything it spawned.
38
27
 
39
28
  ## Develop
40
29
 
41
30
  ```sh
42
- npm ci
43
- npm run build
44
- npm start
45
- ```
46
-
47
- `npm start` gives each invocation isolated A1 development state and an isolated development Pi profile. Use `npm start -- --print-environment` to inspect the selected paths without launching the UI.
48
-
49
- A1 control state uses `%APPDATA%\\A1` and `%LOCALAPPDATA%\\A1` on Windows, and the `a1` directory under XDG config/data/runtime roots on Unix. Override it only with declared `A1_*` variables such as `A1_CONFIG_DIR`, `A1_DATA_DIR`, `A1_RUNTIME_DIR`, `A1_DATABASE_PATH`, and `A1_ENDPOINT`. Pi profile roots remain `~/.a1/agent`, `~/.pi/agent`, and `~/.a1/sandbox`. This is a no-migration identity hard cut; see [`docs/architecture/toolchain.md`](docs/architecture/toolchain.md#identity-hard-cut-and-cleanup) before removing obsolete control state.
50
-
51
- ### Worktree lifecycle
52
-
53
- The primary worktree stays on `develop` and is integration-only. Each task uses a detached worktree under the repository's ignored `.worktrees/` directory, based on current `origin/develop` unless another base is selected.
54
-
55
- ```sh
56
- git fetch origin --prune
57
- git worktree add --detach .worktrees/<task-id> origin/develop
58
- cd .worktrees/<task-id>
31
+ npm ci # install exact locked dependencies
32
+ npm run build # compile TypeScript and the process guardian into dist
33
+ npm start # build and launch an isolated development instance
34
+ npm run test:fast # typecheck + fast suite, no build needed
35
+ npm test # same as test:fast
36
+ npm run test:full # complete non-physical suite
59
37
  ```
60
38
 
61
- Commit and validate coherent work there. Because `develop` is protected, push the detached commit to one temporary remote branch and merge one pull request for the requested change. After merge, update the primary worktree and remove the task worktree only when its commits are reachable from `develop`:
39
+ ## Release
62
40
 
63
41
  ```sh
64
- git push origin HEAD:refs/heads/<task-id>
65
- gh pr create --base develop --head <task-id>
66
- # After the pull request is merged:
67
- cd <repository-root>
68
- git fetch origin --prune
69
- git merge --ff-only origin/develop
70
- git worktree remove .worktrees/<task-id>
71
- git worktree prune
42
+ npm run release:next # publish current develop tip to npm next via trusted CI workflows
72
43
  ```
73
-
74
- Manual acceptance does not leave a permanent validation checkout. Once acceptance is recorded, archive the completed OpenSpec change, integrate the archive commit into `develop`, then remove and prune every task or acceptance worktree retained for that change. Never remove a worktree before all of its implementation, acceptance, and archive commits are reachable from `develop`.
75
-
76
- Local package archives and ad hoc test builds belong under `.builds/`, never in the repository root. For manual package tests, use:
77
-
78
- ```sh
79
- mkdir -p .builds
80
- npm pack --ignore-scripts --pack-destination .builds
81
- ```
82
-
83
- Run the non-desktop gates with:
84
-
85
- ```sh
86
- npm run typecheck
87
- npm run check:architecture
88
- npm run check:deprecated
89
- npm test
90
- npm run test:release
91
- ```
92
-
93
- Automated physical-terminal interaction must never run on an active workstation. Future physical certification may run only on dedicated disposable workers or VMs with exclusive test desktops.
94
-
95
- ## Releases
96
-
97
- An exact manually accepted `-dev.N` candidate may publish under npm tag `next` after applicable non-desktop gates pass. Such a preview is explicitly uncertified, cannot move `latest`, and cannot claim stable terminal parity or platform support. Stable claims require deferred physical and cross-platform certification against the exact package.
98
-
99
- Trusted preview publication uses `.github/workflows/publish-next.yml` and npm provenance. Local release mechanics are documented in [`docs/architecture/toolchain.md`](docs/architecture/toolchain.md).
100
-
101
- ## Architecture
102
-
103
- - [`docs/architecture/boundaries.md`](docs/architecture/boundaries.md)
104
- - [`docs/architecture/toolchain.md`](docs/architecture/toolchain.md)
105
- - [`docs/manual-transparent-checkpoint.md`](docs/manual-transparent-checkpoint.md)
106
- - [`docs/features/launch-profiles.md`](docs/features/launch-profiles.md)
@@ -5,7 +5,7 @@
5
5
  "platform": "darwin",
6
6
  "architecture": "arm64",
7
7
  "capability": "unsupported",
8
- "builtAt": "2026-08-22T17:52:01.473Z",
8
+ "builtAt": "2026-08-23T08:07:45.115Z",
9
9
  "artifact": {
10
10
  "filename": "process-guardian",
11
11
  "sha256": "7524bf568992517f50ed53196c861c5edeba0d7275633bb4735ab45bd5963a28",
@@ -5,7 +5,7 @@
5
5
  "platform": "linux",
6
6
  "architecture": "x64",
7
7
  "capability": "supported",
8
- "builtAt": "2026-08-22T17:52:01.995Z",
8
+ "builtAt": "2026-08-23T08:07:37.399Z",
9
9
  "artifact": {
10
10
  "filename": "process-guardian",
11
11
  "sha256": "29e22fe29de2828982bc67ef418c4adcaab1490281477b7bea592ec6fe621bcd",
@@ -5,10 +5,10 @@
5
5
  "platform": "win32",
6
6
  "architecture": "x64",
7
7
  "capability": "supported",
8
- "builtAt": "2026-08-22T17:52:47.054Z",
8
+ "builtAt": "2026-08-23T08:08:17.265Z",
9
9
  "artifact": {
10
10
  "filename": "process-guardian.exe",
11
- "sha256": "ed14b51aeb577ecd86df4a8a9ca3ea33c27885da8d3d196b26b0d705d70a0b71",
11
+ "sha256": "a803cf8cc8bb6143d2adb7378183d4366a6bb880e110786ebeb7e778b64b6c59",
12
12
  "size": 172544
13
13
  },
14
14
  "provenance": {
@@ -73,7 +73,7 @@ Presentation acceptance is the reader comparing `a1 pi` with pinned Pi. `node sc
73
73
 
74
74
  A preview candidate must use a unique `-dev.N` version and exact manually accepted bytes. Publication packs once, binds evidence to source commit/version/integrity, runs applicable non-desktop gates, publishes under npm `next`, and verifies registry identity. It must keep `latest` unchanged and record physical/cross-platform certification as deferred.
75
75
 
76
- The GitHub trusted-publishing workflow is `.github/workflows/publish-next.yml`. Stable publication remains a separate release process from a clean tagged `master` commit after all mandatory platform gates pass.
76
+ The GitHub trusted-publishing workflow is `.github/workflows/npm-publish.yml`. Stable publication remains a separate release process from a clean tagged `master` commit after all mandatory platform gates pass.
77
77
 
78
78
  ## A1 state paths
79
79
 
@@ -22,10 +22,18 @@ Need more coverage for a risky preview? Dispatch the candidate with `full: true`
22
22
 
23
23
  ## Publish a preview to npm `next`
24
24
 
25
+ One command from a clean `develop` checkout runs the whole chain — candidate build, publish, registry verification:
26
+
27
+ ```sh
28
+ npm run release:next
29
+ ```
30
+
31
+ It dispatches the same trusted workflows below and never publishes local bytes. The manual steps remain the reference path:
32
+
25
33
  1. Make sure `Development validation required` is green on the `develop` tip.
26
34
  2. Dispatch **Build npm next candidate** with the exact commit and `confirm_candidate=build-uncertified-next-candidate`.
27
35
  3. Check the resulting `candidate-evidence.json`: gates passed, package integrity matches.
28
- 4. Approve the `npm-next` environment and dispatch **Publish npm next** with the candidate run id.
36
+ 4. Approve the `npm-publish` environment and dispatch **Publish npm next** with the candidate run id.
29
37
 
30
38
  The publisher uploads the exact validated tarball — it never rebuilds. Candidates expire after 14 days; an expired or mismatched artifact means building a new candidate, not patching the old one.
31
39
 
@@ -35,7 +43,7 @@ The publisher uploads the exact validated tarball — it never rebuilds. Candida
35
43
  2. Dispatch **Build stable candidate** — it packs once and validates the same bytes on all three platforms.
36
44
  3. Dispatch **Certify stable physical platforms** on the dedicated isolated workers (they set `PHYSICAL_WORKER_ISOLATED=true` and run under the `stable-physical` environment). Never run physical host probes on a developer workstation.
37
45
  4. Dispatch **Certify stable candidate** with both run ids. `Stable candidate required` passes only when every verdict binds the same commit, version, and digest.
38
- 5. Merge that exact commit to `master`, tag it `v<version>`, and dispatch **Publish npm stable**, then approve `npm-stable`.
46
+ 5. Merge that exact commit to `master`, tag it `v<version>`, and dispatch **Publish npm stable**, then approve `npm-publish`.
39
47
 
40
48
  Stable artifacts expire after 30 days. The same rule as previews applies: publication still requires exact certified bytes. Never upload locally rebuilt bytes, and never route around certification by rebuilding inside a publisher.
41
49
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@timurproko/a1",
3
- "version": "0.1.1-dev.8",
3
+ "version": "0.1.1-dev.9",
4
4
  "description": "Standalone terminal workspace for supervised native and managed agents",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.13.0",
@@ -21,13 +21,14 @@
21
21
  "clean": "node scripts/clean.mjs",
22
22
  "build": "npm run clean && tsc -p tsconfig.build.json && node scripts/build-process-guardian.mjs",
23
23
  "build:process-guardian": "node scripts/build-process-guardian.mjs",
24
- "typecheck": "tsc -p tsconfig.json --noEmit",
24
+ "typecheck": "tsgo -p tsconfig.json --noEmit",
25
25
  "check:architecture": "node scripts/check-architecture.mjs && node scripts/product-identifier-policy.mjs --check && node scripts/check-product-identity-boundaries.mjs && node scripts/check-package-identity.mjs && node scripts/check-pinned-pi-source-ledger.mjs && node scripts/check-terminal-host-provenance.mjs",
26
26
  "check:customization-ready": "node scripts/check-owned-ui-customization-prerequisites.mjs",
27
27
  "check:deprecated": "node scripts/check-deprecated-dependencies.mjs",
28
28
  "branches:prune": "node scripts/prune-merged-branches.mjs",
29
29
  "check": "npm run test:fast",
30
30
  "publish:next": "tsx scripts/publish-next.ts",
31
+ "release:next": "node scripts/release-next.mjs",
31
32
  "test": "npm run test:fast",
32
33
  "test:fast": "node scripts/run-validation-tier.mjs typecheck fast",
33
34
  "test:scope": "node scripts/run-validation-tier.mjs",
@@ -59,6 +60,7 @@
59
60
  "@types/cross-spawn": "6.0.6",
60
61
  "@types/node": "24.2.1",
61
62
  "@types/semver": "7.8.0",
63
+ "@typescript/native-preview": "7.0.0-dev.20260707.2",
62
64
  "@xterm/headless": "6.0.0",
63
65
  "node-pty": "1.1.0",
64
66
  "tsx": "4.20.3",