acstack 0.50.0 → 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.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +11 -7
- package/assets/terminal-workspace/pi/acstack-question-blocked.ts +13 -25
- package/cli/package.json +1 -1
- package/docs/terminal-workspace.md +6 -3
- package/orchestrator/AGENTS.md +2 -2
- package/package.json +3 -2
- package/pi/extension.ts +2 -2
|
@@ -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.
|
|
4
|
+
"version": "0.50.2",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "ac8318740"
|
|
7
7
|
},
|
package/README.md
CHANGED
|
@@ -66,10 +66,10 @@ Then, in your project:
|
|
|
66
66
|
|
|
67
67
|
### 1.2. Install on pi
|
|
68
68
|
|
|
69
|
-
*The same project installs as a [pi](https://pi.dev) package
|
|
69
|
+
*The same project installs as a [pi](https://pi.dev) package with `@tintinweb/pi-subagents` or `pi-subagents` for delegation.*
|
|
70
70
|
|
|
71
71
|
```
|
|
72
|
-
pi install npm
|
|
72
|
+
pi install npm:@tintinweb/pi-subagents
|
|
73
73
|
pi install npm:acstack
|
|
74
74
|
```
|
|
75
75
|
|
|
@@ -91,16 +91,20 @@ 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
|
-
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
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
|
|
97
|
+
- Both subagent packages find the four agents through the `pi.subagents` field in `package.json`
|
|
98
|
+
- `@tintinweb/pi-subagents` exposes `Agent`; `pi-subagents` exposes `subagent`
|
|
99
|
+
- The agents use your subagent package's default model
|
|
100
|
+
- ACStack warns at session start when pi lists neither tool
|
|
101
|
+
- Allow delegation in `~/.pi/agent/AGENTS.md`:
|
|
98
102
|
|
|
99
103
|
```
|
|
100
104
|
When an ACStack skill or the ACStack orchestrator says to launch a subagent, you may delegate to it.
|
|
101
105
|
```
|
|
102
106
|
|
|
103
|
-
-
|
|
107
|
+
- For `pi-subagents`, set `"toolActivation": "eager"` in `~/.pi/agent/extensions/subagent/config.json` to offer `subagent` from the first turn (restart pi after)
|
|
104
108
|
- pi gets the ACStack writing style from the extension by default
|
|
105
109
|
- Run `/acstack-writing-style default` to use the bundled style again
|
|
106
110
|
- Run `/acstack-writing-style off` to disable style injection
|
|
@@ -1,31 +1,19 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
@@ -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
|
-
-
|
|
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
|
-
-
|
|
372
|
-
-
|
|
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/orchestrator/AGENTS.md
CHANGED
|
@@ -40,8 +40,8 @@ ACStack runs on Claude Code, Codex, and pi. The skills name each capability once
|
|
|
40
40
|
|
|
41
41
|
- **Launch a subagent** – start a child agent with its own context, by its ACStack name (`test-writer`, `task-executor`, `task-checker`, `frontend-verifier`)
|
|
42
42
|
- Claude Code: the Agent tool, with `subagent_type` set to that name
|
|
43
|
-
- pi:
|
|
44
|
-
- **Read-only codebase-search subagent** – Claude Code's `
|
|
43
|
+
- pi: `Agent` from `@tintinweb/pi-subagents` (`subagent_type`), or `subagent` from `pi-subagents` (`agent`)
|
|
44
|
+
- **Read-only codebase-search subagent** – `Explore` on Claude Code and pi's `Agent`, or `scout` on pi's `subagent`
|
|
45
45
|
- `debugger` names a debugging agent
|
|
46
46
|
- On a host without a matching built-in agent, launch a general subagent with that brief
|
|
47
47
|
- **Agent team** – parallel full sessions, each owning one scope and launching its own subagents
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "acstack",
|
|
3
|
-
"version": "0.50.
|
|
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": [
|
package/pi/extension.ts
CHANGED
|
@@ -603,11 +603,11 @@ export default function acstack(pi: ExtensionAPI): void {
|
|
|
603
603
|
pi.on("session_start", async (event, ctx) => {
|
|
604
604
|
linkClis(ctx);
|
|
605
605
|
|
|
606
|
-
if (!warnedSubagents && !pi.getAllTools().some((tool) => tool.name === "subagent")) {
|
|
606
|
+
if (!warnedSubagents && !pi.getAllTools().some((tool) => tool.name === "subagent" || tool.name === "Agent")) {
|
|
607
607
|
warnedSubagents = true;
|
|
608
608
|
report(
|
|
609
609
|
ctx,
|
|
610
|
-
"acstack:
|
|
610
|
+
"acstack: no supported subagent tool is loaded (Agent or subagent), so the test-writer, task-executor, task-checker, and frontend-verifier agents cannot run. Install `npm:@tintinweb/pi-subagents` or `npm:pi-subagents` with `pi install`.",
|
|
611
611
|
"warning",
|
|
612
612
|
);
|
|
613
613
|
}
|