@timurproko/a1 0.1.8-dev.121 → 0.1.8-dev.126

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
@@ -6,117 +6,95 @@
6
6
  npm install --global @timurproko/a1@latest
7
7
  ```
8
8
 
9
- ## Commands
9
+ ## Use
10
10
 
11
11
  ```sh
12
- a1 # A1-owned UI and profile: ~/.a1/agent
12
+ a1 # launch A1 (profile: ~/.a1/agent)
13
13
  a1 version # show Installed, Release, and Develop versions
14
- a1 update # update to the current release
15
- a1 update:develop # update to the current development preview
16
- a1 update:107 # install numbered development preview 107
14
+ a1 update # install the newest stable release
15
+ a1 update:develop # install the current development preview
16
+ a1 update:107 # install numbered preview 107
17
17
  a1 update --models # refresh A1's model catalogs
18
18
  ```
19
19
 
20
- Prerelease builds what `a1 update:develop` installs add two development profiles
21
- for comparing against pinned Pi and for experimenting against an isolated profile.
22
- A release build does not carry them.
20
+ Development previews add two extra profiles; release builds do not carry them.
23
21
 
24
22
  ```sh
25
- a1 pi # untouched vanilla Pi oracle: ~/.pi/agent
26
- a1 sandbox # unchanged isolated vanilla Pi profile: ~/.a1/sandbox
23
+ a1 pi # vanilla Pi oracle: ~/.pi/agent
24
+ a1 sandbox # isolated vanilla Pi profile: ~/.a1/sandbox
27
25
  ```
28
26
 
29
27
  ## Extensions
30
28
 
31
- Pi extension packages install into A1's own profile, so bare `a1` loads them and
32
- `a1 pi` and `a1 sandbox` do not. Sources are Pi's: `npm:`, git, or a local path.
29
+ Pi extension packages install into A1's own profile (`~/.a1/agent`), so bare `a1`
30
+ loads them and `a1 pi` / `a1 sandbox` do not. Sources are Pi's: `npm:`, git, or a
31
+ local path.
33
32
 
34
33
  ```sh
35
- a1 pi install npm:pi-mcp-adapter # install a package into ~/.a1/agent
36
- a1 pi remove npm:pi-mcp-adapter # remove it again (alias: a1 pi uninstall)
37
- a1 pi list # list packages installed for a1
34
+ a1 pi install npm:pi-mcp-adapter # install a package
35
+ a1 pi remove npm:pi-mcp-adapter # remove it (alias: a1 pi uninstall)
36
+ a1 pi list # list installed packages
38
37
  a1 pi update --extensions # update every installed package
39
- a1 pi update npm:pi-mcp-adapter # update one of them
38
+ a1 pi update npm:pi-mcp-adapter # update one
40
39
  ```
41
40
 
42
- A running session loads a newly installed package after a restart. Pi's own
43
- profile at `~/.pi/agent` is managed by Pi itself. Extension configuration is
44
- isolated too: for example, MCP configuration for bare `a1` belongs under
45
- `~/.a1/agent` (or the project), so `~/.pi/agent/mcp.json` is not read. Run
46
- `/mcp setup` inside bare `a1` to configure it; the MCP footer status appears
47
- when that A1 configuration contains a server.
41
+ A running session picks up a newly installed package after a restart.
42
+ Configuration is isolated the same way: bare `a1` reads `~/.a1/agent` (or the
43
+ project), never `~/.pi/agent`. Configure MCP with `/mcp setup` inside bare `a1`.
48
44
 
49
45
  ## Develop
50
46
 
51
47
  ```sh
52
48
  npm ci # install exact locked dependencies
53
49
  npm run build # compile TypeScript and the process guardian into dist
54
- npm start # build and launch an isolated development `a1`
55
- npm run start:pi # build and launch an isolated development `a1 pi`
56
- npm run start:sandbox # build and launch an isolated development `a1 sandbox`
57
- npm run test:fast # typecheck + fast suite, no build needed
58
- npm test # same as test:fast
50
+ npm start # build and launch a development `a1`
51
+ npm run start:pi # build and launch a development `a1 pi`
52
+ npm run start:sandbox # build and launch a development `a1 sandbox`
53
+ npm run test:fast # typecheck + fast suite (alias: npm test)
59
54
  npm run test:full # complete non-physical suite
60
55
  ```
61
56
 
62
57
  ## Release
63
58
 
64
- Two channels, both published by CI from the exact bytes it validated. Nothing is
65
- ever published from a workstation.
59
+ Two channels, both published by CI from the exact bytes it validated never from
60
+ a workstation.
66
61
 
67
62
  ### Development previews
68
63
 
69
- Ordinary pushes to `develop` do not publish. The nightly run at `03:17 UTC` always
70
- performs complete verification of current `origin/develop`; it publishes only when
71
- that source's preview is absent. A maintainer can request the same authoritative
72
- GitHub Actions path and wait for its result:
64
+ A preview is `<major.minor.patch>-dev.<pull-request number>`, e.g. `0.1.8-dev.107`.
65
+ The nightly run (`03:17 UTC`) verifies current `origin/develop` and publishes only
66
+ when that source's preview is absent. `npm run develop` requests the same GitHub
67
+ Actions run and waits for it. The published version list is authoritative: an
68
+ unpublished number is refused.
73
69
 
74
- ```sh
75
- npm run develop
76
- ```
77
-
78
- A preview is `<major.minor.patch>-dev.<pull-request number>`, stamped only into the
79
- package. For example, the source GitHub presents as `develop (#107)` produces
80
- `0.1.8-dev.107`. Repeating a request for immutable version 107 succeeds without
81
- building or publishing again.
70
+ Publish:
82
71
 
83
72
  ```sh
84
- a1 update:develop # install the current development preview
85
- a1 update:107 # install preview 107
86
- a1 update:0.1.8-dev.107 # install that exact full preview version
73
+ npm run develop # request the preview publish run and wait for it
87
74
  ```
88
75
 
89
- The published version list is authoritative: an unpublished number is refused
90
- rather than guessed. npm's `next` dist-tag remains an internal registry detail.
91
-
92
- ### Stable — npm `latest`
93
-
94
- One command, from a clean `develop` that matches its remote:
76
+ Install:
95
77
 
96
78
  ```sh
97
- npm run release -- patch # 0.1.1 -> 0.1.2
98
- npm run release -- minor # 0.1.1 -> 0.2.0
99
- npm run release -- major # 0.1.1 -> 1.0.0
100
- npm run release -- 0.4.0 # an exact version
79
+ a1 update:107 # install preview 107
80
+ a1 update:0.1.8-dev.107 # install that exact full preview version
101
81
  ```
102
82
 
103
- It lands the version on `develop` through a pull request that merges itself, then
104
- explicitly dispatches publication for that exact commit. GitHub Actions builds,
105
- validates the packed release on Windows, Linux, and macOS, publishes to npm
106
- `latest` with provenance, and only then writes the `v<version>` tag and records the
107
- GitHub Release. The command waits for success before opening the next `-dev` line.
83
+ ### Stable
108
84
 
109
85
  ```sh
110
- a1 update # install the newest stable release
86
+ npm run release -- patch # 0.1.1 -> 0.1.2
87
+ npm run release -- minor # 0.1.1 -> 0.2.0
88
+ npm run release -- major # 0.1.1 -> 1.0.0
89
+ npm run release -- 0.4.0 # an exact version
111
90
  ```
112
91
 
113
- After a stable publish, `master` fast-forwards to the released commit, so `master`
114
- always points at what npm `latest` serves while `develop` carries the work.
115
-
116
- A release that fails leaves nothing behind: no tag, no GitHub Release, no moved
117
- branch. Every version you can see somewhere is a version the registry actually
118
- serves. Release tags are protected from deletion and movement; a wrong tag is
119
- superseded by the next version, never repointed.
92
+ The command lands the version on `develop` through a self-merging pull request,
93
+ dispatches publication for that exact commit, and waits for success. CI validates
94
+ the packed release on Windows, Linux, and macOS, publishes to npm `latest` with
95
+ provenance, then writes the `v<version>` tag and the GitHub Release. `master`
96
+ fast-forwards to the released commit, so it always points at what npm `latest`
97
+ serves. A failed release leaves nothing behind: no tag, no GitHub Release, no
98
+ moved branch.
120
99
 
121
- `docs/ci-release-runbook.md` has the full picture, including what happens when a
122
- publish fails partway.
100
+ `docs/ci-release-runbook.md` has the full picture.
@@ -14,13 +14,6 @@ import { materializeRelease, readMaterializedRelease } from "./release-store.js"
14
14
  import { UpdateTransactionStore } from "./update-transaction.js";
15
15
  export const PRODUCT_PACKAGE = PRODUCT_TEXT.packageName;
16
16
  const UPDATE_DIST_TAGS = { stable: "latest", next: "next" };
17
- /**
18
- * What each channel is called when A1 says it out loud. The internal name stays
19
- * `stable` because that is what the channel is, but what a reader is moving to is
20
- * a release, and that is the word the repository, its tags, and its GitHub
21
- * releases all use.
22
- */
23
- const UPDATE_CHANNEL_LABELS = { stable: "release", next: "develop" };
24
17
  const defaultFileSystem = {
25
18
  async readFile(path) { return await readFile(path, "utf8"); },
26
19
  realpath,
@@ -103,13 +96,10 @@ export function createUpdateLifecycleCoordinator(environment = process.env, file
103
96
  await removeEndpointArtifacts(owner.paths.endpointMetadataPath, owner.paths.endpoint);
104
97
  return { priorActiveVersion };
105
98
  }
106
- if (plan === "leave-running") {
107
- const running = endpoint.ownership.liveInstanceIds.length;
108
- if (running > 0) {
109
- output.stdout(`${PRODUCT_TEXT.commandName} update: leaving ${running === 1 ? "one session" : `${running} sessions`} running on ${endpoint.releaseId}\n`);
110
- }
99
+ // Leaving sessions alone is the expected outcome, and saying so mid-update tears
100
+ // the progress bar; only ending a session (below) is worth interrupting it for.
101
+ if (plan === "leave-running")
111
102
  return { priorActiveVersion };
112
- }
113
103
  // Say whose work is ending before it ends.
114
104
  const live = endpoint.ownership.liveInstanceIds.length;
115
105
  if (live > 0) {
@@ -348,7 +338,7 @@ export async function runSelfUpdate(options) {
348
338
  const targetVersion = resolved.version;
349
339
  // No full stop after a version: it already ends in a dot-separated identifier,
350
340
  // and a trailing one reads as part of the version rather than as punctuation.
351
- output.stdout(`${PRODUCT_TEXT.commandName} update (${UPDATE_CHANNEL_LABELS[channel]}): ${runningVersion} → ${targetVersion}\n`);
341
+ output.stdout(`${PRODUCT_TEXT.commandName} update: ${runningVersion} → ${targetVersion}\n`);
352
342
  const progress = createUpdateProgress(output, options.progress ?? (options.output === undefined && process.stdout.isTTY === true));
353
343
  const rootLookup = await measure("global-root", async () => await runNpm(runner, ["root", "--global"], true, output, "resolve npm's global package root"));
354
344
  if (rootLookup.result === null)
@@ -5,7 +5,7 @@
5
5
  "platform": "darwin",
6
6
  "architecture": "arm64",
7
7
  "capability": "unsupported",
8
- "builtAt": "2026-08-25T14:20:04.982Z",
8
+ "builtAt": "2026-08-25T16:05:21.345Z",
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-25T14:20:15.954Z",
8
+ "builtAt": "2026-08-25T16:05:37.568Z",
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-25T14:20:44.310Z",
8
+ "builtAt": "2026-08-25T16:06:01.104Z",
9
9
  "artifact": {
10
10
  "filename": "process-guardian.exe",
11
- "sha256": "2505aec15562e251023ec6aca4b1946536cf2ab44e4139da6066b2aa03d4dd92",
11
+ "sha256": "b6d74c0b5b0a9977001c9e9bf175ccda5676da8668575a092d621a12ccda74b6",
12
12
  "size": 172544
13
13
  },
14
14
  "provenance": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@timurproko/a1",
3
- "version": "0.1.8-dev.121",
3
+ "version": "0.1.8-dev.126",
4
4
  "description": "Standalone terminal workspace for supervised native and managed agents",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.13.0",