acstack 0.47.0 → 0.48.0

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/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "acstack-cli",
3
- "version": "0.47.0",
3
+ "version": "0.48.0",
4
4
  "description": "CLI for the ACStack agentic coding stack",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -25,7 +25,7 @@
25
25
  "node": ">=20.0.0"
26
26
  },
27
27
  "scripts": {
28
- "build": "npm run sync-version && node build.mjs",
28
+ "build": "npm run sync-version && node scripts/build-viewer.mjs && node build.mjs",
29
29
  "dev": "node build.mjs --watch",
30
30
  "typecheck": "tsc --noEmit",
31
31
  "lint": "eslint src/",
@@ -36,11 +36,19 @@
36
36
  "devDependencies": {
37
37
  "@eslint/js": "^9.39.5",
38
38
  "@types/node": "^22.0.0",
39
+ "@types/react": "^19.3.0",
40
+ "@types/react-dom": "^19.3.0",
41
+ "@xyflow/react": "^12.12.0",
39
42
  "chalk": "^5.4.0",
40
43
  "commander": "^14.0.0",
44
+ "elkjs": "^0.12.0",
41
45
  "esbuild": "^0.24.0",
42
46
  "eslint": "^9.39.5",
43
47
  "fast-glob": "^3.3.0",
48
+ "lucide-react": "^1.55.0",
49
+ "react": "^19.3.0",
50
+ "react-dom": "^19.3.0",
51
+ "react-markdown": "^10.1.0",
44
52
  "typescript": "^5.7.0",
45
53
  "typescript-eslint": "^8.67.0",
46
54
  "vitest": "^3.0.0",
@@ -0,0 +1,11 @@
1
+ # Alignment packs use local viewers
2
+
3
+ Alignment packs must not depend on a remote viewer or remote script. ACStack can open a generated pack in a local browser, including through a localhost server.
4
+
5
+ ## Considered options
6
+
7
+ A pinned remote viewer keeps generated files smaller. It also makes review depend on network access and trust in a hosted script.
8
+
9
+ ## Consequences
10
+
11
+ ACStack must inline or vendor the viewer code it needs. A Herdr-style terminal view can follow later if a clean graph viewer exists.
package/docs/adr/index.md CHANGED
@@ -15,3 +15,4 @@
15
15
  - [0015](0015-a-node-id-links-to-its-issue-through-an-anchor.md) – A node id links to its issue through an anchor
16
16
  - [0016](0016-the-map-root-carries-no-status-of-its-own.md) – The map root carries no status of its own
17
17
  - [0017](0017-call-impeccable-copy-only-its-questions.md) – Call impeccable's command line, and copy only its question sets
18
+ - [0018](0018-alignment-packs-use-local-viewers.md) – Alignment packs use local viewers
@@ -370,6 +370,9 @@ What `apply` does:
370
370
  - It adds web search, URL fetching, GitHub repo cloning, PDF extraction and media understanding tools to pi
371
371
  - This is separate from pi's anonymous install and update reporting; `pi.settings.install_telemetry: false` still controls that telemetry setting
372
372
  - Set `pi.web_access: false` to leave it out, or to remove it later if this setup installed it
373
+ - It can install `pi-lens` for diagnostics and code-intelligence tools
374
+ - It is off by default because it is a heavier dev-tool layer
375
+ - Set `pi.lens: true` to install it, or `pi.lens: false` to remove it later if this setup installed it
373
376
  - It installs `pi-slash-anywhere` by default, so slash commands work from any prompt
374
377
  - Set `pi.slash_anywhere: false` to leave it out, or to remove it later if this setup installed it
375
378
  - It installs `pi-compact-tools` and runs `agentic-retro install-pi`, each behind its own toggle
@@ -380,6 +383,8 @@ What `apply` does:
380
383
  - It sets `"toolActivation": "eager"` in `~/.pi/agent/extensions/subagent/config.json`
381
384
  - It binds `"app.message.dequeue"` to `"ctrl+enter"` in `~/.pi/agent/keybindings.json`
382
385
  - It writes the four keys under `pi.settings` into `~/.pi/agent/settings.json`
386
+ - It patches pi's bundled TUI so Windows Terminal Win32 input records paste as text
387
+ - `pi update` can replace the bundle, so `setup.sh upgrade pi` reapplies the patch
383
388
 
384
389
  How it treats pi's files:
385
390
 
@@ -396,7 +401,7 @@ How it treats pi's files:
396
401
  - `apply` never touches `auth.json`
397
402
  - Run `pi`, then `/login`, yourself
398
403
  - `setup.sh status` reports pi's version, its packages, the delegation line, `toolActivation`, and whether `auth.json` exists
399
- - `setup.sh outdated` and `setup.sh upgrade` include `billion-context`, `@juicesharp/rpiv-todo`, `pi-plugin-manager`, `@juicesharp/rpiv-ask-user-question`, `pi-web-access`, and `pi-slash-anywhere` like pi's other npm packages
404
+ - `setup.sh outdated` and `setup.sh upgrade` include `billion-context`, `@juicesharp/rpiv-todo`, `pi-plugin-manager`, `@juicesharp/rpiv-ask-user-question`, `pi-web-access`, `pi-lens`, and `pi-slash-anywhere` like pi's other npm packages
400
405
 
401
406
  ## 4. How you attach
402
407
 
@@ -472,6 +477,7 @@ The two paths deliver keys by different routes.
472
477
  - The two routes do not carry the same set
473
478
  - The `ctrl+alt` family survives the escape-sequence route and dies on the native one
474
479
  - `ctrl+<digit>` does the opposite
480
+
475
481
  - Either way herdr accepts the binding and then never sees the key
476
482
  - A chord that does not cross is therefore silently dead, and herdr reports no error
477
483
  - `alt+<key>` is the only family that crossed both
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "acstack",
3
- "version": "0.47.0",
3
+ "version": "0.48.0",
4
4
  "private": false,
5
5
  "description": "Agentic coding stack with first-class Claude Code and pi support: skills, orchestrator instructions, and verification agents.",
6
6
  "license": "MIT",
@@ -94,7 +94,7 @@ operation. First the root:
94
94
  ```bash
95
95
  # files backend – github.md has the equivalent
96
96
  ~/.claude/acstack/bin/acstack node create --map <name> --title "<destination>" \
97
- --kind destination --label "<at most four words>" \
97
+ --kind destination --label "<at most four words>" --summary "<one sentence>" \
98
98
  --body "<the destination, as settled>"
99
99
  ```
100
100
 
@@ -111,9 +111,9 @@ operation. First the root:
111
111
  - On GitHub, every node body opens with a header line that encodes its edges.
112
112
  `trackers/github.md` holds the format. The files backend writes none.
113
113
 
114
- - Every node carries a `kind` and a `label`, both required. A `label` is the
115
- node's short name for a diagram. `trackers/files.md` holds the kinds, the
116
- caps, and the contract the CLI enforces.
114
+ - Every node carries a required `kind` and `label`, its short diagram name.
115
+ Work nodes and the destination add a one-sentence business `--summary`.
116
+ `trackers/files.md` holds the kinds, the caps, and the CLI's contract.
117
117
 
118
118
  - Every node body carries a diagram, two at most. A childless `notes` node is
119
119
  the one exception.
@@ -16,15 +16,18 @@ To enumerate a project's maps: `ls acstack/maps/`.
16
16
 
17
17
  | Operation | Command |
18
18
  | --------- | ------- |
19
- | create | `acstack node create --map <name> --title <t> --kind <k> --label <l> [--status] [--mode] [--answers <id>] [--blocked-by <ids>] [--pinned] [--body <md>] [--body-file <path>]` |
19
+ | create | `acstack node create --map <name> --title <t> --kind <k> --label <l> [--summary <s>] [--status] [--mode] [--answers <id>] [--blocked-by <ids>] [--pinned] [--body <md>] [--body-file <path>]` |
20
20
  | read | `acstack node read <id> --map <name> [--json] [--visuals]` |
21
- | update | `acstack node update <id> --map <name> [--title] [--status] [--mode] [--kind] [--label] [--answers] [--blocked-by] [--pinned true\|false] [--body] [--body-file] [--append-body]` |
21
+ | update | `acstack node update <id> --map <name> [--title] [--status] [--mode] [--kind] [--label] [--summary] [--answers] [--blocked-by] [--pinned true\|false] [--body] [--body-file] [--append-body]` |
22
22
  | list | `acstack node list --map <name> [--status <s>] [--json]` |
23
23
 
24
24
  `create` rejects a node that omits `--kind` or `--label`. `--kind` takes one of
25
25
  `destination`, `notes`, `decision`, `research`, or `work`. `--label` takes the
26
26
  node's short name for a diagram, at most four words and thirty characters.
27
27
 
28
+ `--summary` is optional: one plain sentence, on one line, for a business
29
+ reader. `create` refuses a blank one, and on `update` an empty string clears it.
30
+
28
31
  ## No body header
29
32
 
30
33
  The GitHub backend opens every node body with a header line, because an issue