@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 +11 -74
- package/dist/native/darwin-arm64/manifest.json +1 -1
- package/dist/native/linux-x64/manifest.json +1 -1
- package/dist/native/win32-x64/manifest.json +2 -2
- package/dist/native/win32-x64/process-guardian.exe +0 -0
- package/docs/architecture/toolchain.md +1 -1
- package/docs/ci-release-runbook.md +10 -2
- package/package.json +4 -2
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
39
|
+
## Release
|
|
62
40
|
|
|
63
41
|
```sh
|
|
64
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
8
|
+
"builtAt": "2026-08-23T08:08:17.265Z",
|
|
9
9
|
"artifact": {
|
|
10
10
|
"filename": "process-guardian.exe",
|
|
11
|
-
"sha256": "
|
|
11
|
+
"sha256": "a803cf8cc8bb6143d2adb7378183d4366a6bb880e110786ebeb7e778b64b6c59",
|
|
12
12
|
"size": 172544
|
|
13
13
|
},
|
|
14
14
|
"provenance": {
|
|
Binary file
|
|
@@ -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
|
|
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-
|
|
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-
|
|
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.
|
|
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": "
|
|
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",
|