acstack 0.50.1 → 0.50.2

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "acstack",
3
3
  "description": "Agentic coding stack where planning grows only as far as needed: a map of decisions, tasks, checks, and handoffs behind a pluggable tracker.",
4
- "version": "0.50.1",
4
+ "version": "0.50.2",
5
5
  "author": {
6
6
  "name": "ac8318740"
7
7
  },
package/README.md CHANGED
@@ -91,6 +91,9 @@ Then, in your project, run `/acstack:setup`.
91
91
  - Freshness uses `/acstack:handoff` when a fresh window or independent read helps more
92
92
  - With no thresholds set, the first nudge comes at 200k tokens or half the window, whichever is lower
93
93
  - The urgent nudge comes at 500k tokens or 80% of the window, whichever is lower
94
+ - ACStack includes the question-status bridge automatically
95
+ - With `@juicesharp/rpiv-ask-user-question` and Herdr's Pi integration installed, Herdr shows blocked while Pi waits for an answer
96
+ - Existing setup-installed bridges can stay installed without counting the same wait twice
94
97
  - Both subagent packages find the four agents through the `pi.subagents` field in `package.json`
95
98
  - `@tintinweb/pi-subagents` exposes `Agent`; `pi-subagents` exposes `subagent`
96
99
  - The agents use your subagent package's default model
@@ -1,31 +1,19 @@
1
1
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
2
 
3
- export default function (pi: ExtensionAPI) {
4
- let pending: { active: boolean; native: boolean } | undefined;
5
- let forwarding = false;
6
-
7
- pi.events.on("herdr:blocked", (event: unknown) => {
8
- if (!forwarding && pending && (event as { active?: unknown } | null)?.active === pending.active) {
9
- pending.native = true;
10
- pending = undefined;
11
- }
12
- });
3
+ const TAKEOVER = "acstack:question-blocked:takeover";
13
4
 
14
- pi.events.on("rpiv:ask-user:blocked", (event: unknown) => {
15
- const active = (event as { active?: unknown } | null)?.active;
16
- if (typeof active !== "boolean") return;
17
- const transition = { active, native: false };
18
- pending = transition;
19
- // shortcut: dual producers emit public then herdr synchronously; async pairs need an upstream source ID
20
- queueMicrotask(() => {
21
- if (pending === transition) pending = undefined;
22
- if (transition.native) return;
23
- forwarding = true;
24
- try {
25
- pi.events.emit("herdr:blocked", { active });
26
- } finally {
27
- forwarding = false;
28
- }
5
+ export default function (pi: ExtensionAPI) {
6
+ pi.on("session_start", () => {
7
+ pi.events.emit(TAKEOVER, {});
8
+ // Register after legacy factories so our synchronous relay suppresses their queued copy.
9
+ // shortcut: legacy compatibility excludes recursively emitted public events; remove the legacy copy if needed
10
+ const stopRelay = pi.events.on("rpiv:ask-user:blocked", (event: unknown) => {
11
+ const active = (event as { active?: unknown } | null)?.active;
12
+ if (typeof active === "boolean") pi.events.emit("herdr:blocked", { active });
13
+ });
14
+ const stopTakeover = pi.events.on(TAKEOVER, () => {
15
+ stopRelay();
16
+ stopTakeover();
29
17
  });
30
18
  });
31
19
  }
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "acstack-cli",
3
- "version": "0.50.1",
3
+ "version": "0.50.2",
4
4
  "description": "CLI for the ACStack agentic coding stack",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -365,11 +365,14 @@ What `apply` does:
365
365
  - ACStack uses it because decisions can include markdown, code and artifact previews
366
366
  - It accepts freeform answers and notes, and needs no full-event telemetry environment variable
367
367
  - This setup still keeps pi's install telemetry disabled through `pi.settings.install_telemetry: false`
368
- - Setup installs a managed question bridge under pi's agent directory, honoring `PI_CODING_AGENT_DIR`
368
+ - ACStack's Pi package loads the question bridge automatically, including installations made without terminal-workspace setup
369
+ - Setup also installs a fallback copy under pi's agent directory, honoring `PI_CODING_AGENT_DIR`
370
+ - The packaged bridge and fallback copy count each wait once when both load
369
371
  - The bridge translates `rpiv:ask-user:blocked` into `herdr:blocked`, so herdr shows the question's input wait
370
372
  - Answer, cancellation, and error completion release the question's blocker while other herdr blockers stay active
371
- - A producer that also emits the matching herdr event synchronously contributes only one blocker
372
- - Events carry no source ID, so the bridge treats a matching synchronous herdr event as the producer's own
373
+ - Anonymous native Herdr events remain independent from question events, including simultaneous waits
374
+ - A producer emitting both event types contributes two balanced blockers, which clear when both sources finish
375
+ - Older fallback copies work unless another extension recursively emits public question events; remove the older copy in that case
373
376
  - Reapply refreshes the owned bridge, but preserves a pre-existing file at the same path
374
377
  - `pi.question_tool: false`, `disable pi`, and `uninstall` remove only the owned bridge and leave user workarounds alone
375
378
  - Set `pi.question_tool: false` to leave the package out, or remove it later if this setup installed it
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "acstack",
3
- "version": "0.50.1",
3
+ "version": "0.50.2",
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",
@@ -38,7 +38,8 @@
38
38
  ],
39
39
  "pi": {
40
40
  "extensions": [
41
- "./pi/extension.ts"
41
+ "./pi/extension.ts",
42
+ "./assets/terminal-workspace/pi/acstack-question-blocked.ts"
42
43
  ],
43
44
  "subagents": {
44
45
  "agents": [