@gavin-hu/my-pi-agent 0.18.0 → 0.19.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/README.md +52 -44
- package/README.zh-CN.md +46 -41
- package/docs/extensions/README.md +34 -0
- package/docs/extensions/board.md +344 -0
- package/{extensions/bytefly/README.md → docs/extensions/bytefly.md} +446 -404
- package/{extensions/check/README.md → docs/extensions/check.md} +83 -68
- package/{extensions/context/README.md → docs/extensions/context.md} +40 -23
- package/docs/extensions/file-browse.md +554 -0
- package/{extensions/file-open/README.md → docs/extensions/file-open.md} +31 -23
- package/{extensions/file-read/README.md → docs/extensions/file-read.md} +47 -55
- package/{extensions/goal/README.md → docs/extensions/goal.md} +115 -131
- package/{extensions/job/README.md → docs/extensions/job.md} +61 -50
- package/{extensions/memory/README.md → docs/extensions/memory.md} +71 -60
- package/{extensions/plan/README.md → docs/extensions/plan.md} +390 -317
- package/{extensions/question/README.md → docs/extensions/question.md} +54 -31
- package/{extensions/rewind/README.md → docs/extensions/rewind.md} +115 -122
- package/docs/extensions/session-bus.md +285 -0
- package/{extensions/subagent/README.md → docs/extensions/subagent.md} +165 -118
- package/docs/extensions/team.md +226 -0
- package/{extensions/todo/README.md → docs/extensions/todo.md} +85 -88
- package/{extensions/watch/README.md → docs/extensions/watch.md} +54 -36
- package/{extensions/web-access/README.md → docs/extensions/web-access.md} +93 -50
- package/{extensions/wechat/README.md → docs/extensions/wechat.md} +258 -162
- package/{extensions/worktree/README.md → docs/extensions/worktree.md} +115 -72
- package/extensions/board/commands.ts +87 -0
- package/extensions/board/config.ts +36 -0
- package/extensions/board/format.ts +72 -0
- package/extensions/board/index.ts +40 -0
- package/extensions/board/input.ts +54 -0
- package/extensions/board/join.ts +42 -0
- package/extensions/board/page.ts +312 -0
- package/extensions/board/result.ts +99 -0
- package/extensions/board/rows.ts +48 -0
- package/extensions/board/schema.ts +75 -0
- package/extensions/board/seat.ts +29 -0
- package/extensions/board/snapshot.ts +41 -0
- package/extensions/board/tools.ts +279 -0
- package/extensions/board/transport/router.ts +172 -0
- package/extensions/board/transport/server.ts +149 -0
- package/extensions/board/types.ts +54 -0
- package/extensions/board/view/actions.ts +306 -0
- package/extensions/board/view/client.ts +41 -0
- package/extensions/board/view/keys.ts +121 -0
- package/extensions/board/view/live.ts +397 -0
- package/extensions/board/view/page.ts +158 -0
- package/extensions/board/view/render.ts +496 -0
- package/extensions/board/view/styles.ts +211 -0
- package/extensions/board/view/team.ts +305 -0
- package/extensions/board/writes.ts +99 -0
- package/extensions/bytefly/panel/commands.ts +40 -7
- package/extensions/bytefly/panel/settings-runtime.ts +0 -6
- package/extensions/bytefly/panel/settings.ts +3 -20
- package/extensions/bytefly/panel/tui/settings-view.ts +1 -1
- package/extensions/bytefly/picker/discovery.ts +0 -2
- package/extensions/bytefly/picker/types.ts +0 -2
- package/extensions/bytefly/update/check.ts +39 -0
- package/extensions/bytefly/update/format.ts +15 -0
- package/extensions/bytefly/update/register.ts +73 -34
- package/extensions/bytefly/update/state.ts +6 -3
- package/extensions/context/tui.ts +1 -1
- package/extensions/file-browse/{config.ts → config/config.ts} +1 -1
- package/extensions/file-browse/{files.ts → files/files.ts} +1 -14
- package/extensions/file-browse/{paths.ts → files/paths.ts} +1 -1
- package/extensions/file-browse/{git.ts → git/git.ts} +10 -3
- package/extensions/file-browse/index.ts +4 -4
- package/extensions/file-browse/{live.ts → live/live.ts} +20 -69
- package/extensions/file-browse/{router.ts → transport/router.ts} +21 -15
- package/extensions/file-browse/transport/server.ts +110 -0
- package/extensions/file-browse/{chrome.ts → view/chrome.ts} +4 -4
- package/extensions/file-browse/{client.ts → view/client.ts} +1 -1
- package/extensions/file-browse/{diff-html.ts → view/diff-html.ts} +3 -3
- package/extensions/file-browse/{html.ts → view/html.ts} +14 -12
- package/extensions/file-browse/{icons.ts → view/icons.ts} +1 -1
- package/extensions/file-browse/{markdown.ts → view/markdown.ts} +7 -7
- package/extensions/file-browse/{raw-html.ts → view/raw-html.ts} +1 -1
- package/extensions/file-browse/{styles.ts → view/styles.ts} +29 -5
- package/extensions/file-browse/{tree.ts → view/tree.ts} +1 -1
- package/extensions/file-browse/{urls.ts → view/urls.ts} +1 -1
- package/extensions/file-read/schema.ts +2 -1
- package/extensions/memory/store.ts +12 -5
- package/extensions/plan/blocks.ts +23 -2
- package/extensions/plan/commands.ts +21 -16
- package/extensions/plan/feedback.ts +147 -38
- package/extensions/plan/index.ts +6 -4
- package/extensions/plan/plan-index.ts +43 -9
- package/extensions/plan/plan-text.ts +33 -23
- package/extensions/plan/plans.ts +8 -11
- package/extensions/plan/policy.ts +20 -12
- package/extensions/plan/review.ts +3 -27
- package/extensions/plan/runtime.ts +21 -9
- package/extensions/plan/sections.ts +112 -0
- package/extensions/plan/steps.ts +3 -22
- package/extensions/plan/tools/exit.ts +11 -95
- package/extensions/plan/tui.ts +5 -34
- package/extensions/plan/types.ts +0 -8
- package/extensions/plan/web-client.ts +1 -1
- package/extensions/plan/web-page.ts +0 -7
- package/extensions/plan/web-router.ts +3 -57
- package/extensions/plan/web-share-session.ts +24 -30
- package/extensions/plan/web-streams.ts +14 -14
- package/extensions/plan/web-tokens.ts +2 -2
- package/extensions/plan/web.ts +66 -120
- package/extensions/rewind/{commands.ts → commands/commands.ts} +5 -5
- package/extensions/rewind/{review.ts → commands/review.ts} +13 -13
- package/extensions/rewind/{rewind.ts → commands/rewind.ts} +6 -6
- package/extensions/rewind/{config.ts → config/config.ts} +1 -1
- package/extensions/rewind/index.ts +3 -3
- package/extensions/rewind/{policy.ts → state/policy.ts} +4 -4
- package/extensions/rewind/{runtime.ts → state/runtime.ts} +11 -11
- package/extensions/rewind/{snapshot-run.ts → state/snapshot-run.ts} +1 -1
- package/extensions/rewind/{timeline.ts → state/timeline.ts} +2 -2
- package/extensions/rewind/{format.ts → text/format.ts} +3 -3
- package/extensions/rewind/{git.ts → transport/git.ts} +2 -2
- package/extensions/rewind/{restore.ts → transport/restore.ts} +2 -2
- package/extensions/rewind/{snapshot.ts → transport/snapshot.ts} +1 -1
- package/extensions/rewind/{store.ts → transport/store.ts} +1 -1
- package/extensions/rewind/{checklist.ts → view/checklist.ts} +6 -6
- package/extensions/rewind/{hunk-picker.ts → view/hunk-picker.ts} +8 -8
- package/extensions/rewind/{path-picker.ts → view/path-picker.ts} +7 -7
- package/extensions/rewind/{review-tui.ts → view/review-tui.ts} +11 -11
- package/extensions/rewind/{rewind-tui.ts → view/rewind-tui.ts} +17 -11
- package/extensions/rewind/{status.ts → view/status.ts} +4 -4
- package/extensions/session-bus/commands.ts +17 -69
- package/extensions/session-bus/format.ts +22 -45
- package/extensions/session-bus/index.ts +13 -7
- package/extensions/session-bus/join-request.ts +40 -0
- package/extensions/session-bus/mail-watch.ts +134 -0
- package/extensions/session-bus/notice.ts +32 -4
- package/{lib/claims → extensions/session-bus}/overlap.ts +11 -18
- package/extensions/session-bus/protocol.ts +19 -49
- package/extensions/session-bus/resolve.ts +67 -0
- package/extensions/session-bus/result.ts +16 -51
- package/extensions/session-bus/rows.ts +4 -2
- package/extensions/session-bus/runtime.ts +129 -238
- package/extensions/session-bus/store.ts +42 -6
- package/extensions/session-bus/tools.ts +31 -66
- package/extensions/session-bus/tui.ts +4 -4
- package/extensions/session-bus/types.ts +13 -13
- package/extensions/subagent/agents.ts +9 -8
- package/extensions/subagent/invocation.ts +4 -2
- package/extensions/team/commands.ts +112 -0
- package/extensions/team/dispatch.ts +133 -0
- package/extensions/team/format.ts +105 -0
- package/extensions/team/index.ts +33 -0
- package/extensions/team/schema.ts +29 -0
- package/extensions/team/tools.ts +246 -0
- package/extensions/team/types.ts +48 -0
- package/extensions/web-access/fetch/page.ts +4 -1
- package/extensions/web-access/fetch/structured.ts +447 -0
- package/extensions/web-access/fetch/tool.ts +2 -1
- package/extensions/web-access/search/tool.ts +2 -1
- package/extensions/wechat/bridge.ts +76 -92
- package/extensions/wechat/{commands.ts → commands/commands.ts} +26 -18
- package/extensions/wechat/{doctor.ts → commands/doctor.ts} +5 -5
- package/extensions/wechat/{history.ts → commands/history.ts} +1 -1
- package/extensions/wechat/{login.ts → commands/login.ts} +3 -3
- package/extensions/wechat/{slash.ts → commands/slash.ts} +38 -2
- package/extensions/wechat/dialog/channels.ts +136 -0
- package/extensions/wechat/{interaction.ts → dialog/interaction.ts} +37 -37
- package/extensions/wechat/{prompt.ts → dialog/prompt.ts} +2 -2
- package/extensions/wechat/{remote-ui.ts → dialog/remote-ui.ts} +1 -1
- package/extensions/wechat/index.ts +10 -10
- package/extensions/wechat/{admission.ts → peer/admission.ts} +2 -2
- package/extensions/wechat/{peer-session.ts → peer/peer-session.ts} +2 -2
- package/extensions/wechat/{peer-worker.ts → peer/peer-worker.ts} +100 -22
- package/extensions/wechat/{presence.ts → peer/presence.ts} +8 -7
- package/extensions/wechat/{reply-pipeline.ts → peer/reply-pipeline.ts} +1 -1
- package/extensions/wechat/{credentials.ts → state/credentials.ts} +2 -2
- package/extensions/wechat/{state.ts → state/state.ts} +14 -2
- package/extensions/wechat/{format.ts → text/format.ts} +3 -3
- package/extensions/wechat/{notices.ts → text/notices.ts} +8 -0
- package/extensions/wechat/tools.ts +29 -12
- package/extensions/wechat/{client.ts → transport/client.ts} +26 -2
- package/extensions/wechat/{deliver.ts → transport/deliver.ts} +72 -28
- package/extensions/wechat/{inbound.ts → transport/inbound.ts} +5 -5
- package/extensions/wechat/{media.ts → transport/media.ts} +11 -5
- package/extensions/wechat/transport/outbound.ts +142 -0
- package/extensions/wechat/{poll.ts → transport/poll.ts} +3 -3
- package/extensions/wechat/types.ts +10 -1
- package/extensions/wechat/{login-screen.ts → view/login-screen.ts} +4 -4
- package/extensions/wechat/{status-screen.ts → view/status-screen.ts} +31 -26
- package/extensions/worktree/guard.ts +3 -5
- package/lib/README.md +8 -6
- package/lib/board/card.ts +290 -0
- package/lib/board/links.ts +117 -0
- package/lib/board/page-pointer.ts +256 -0
- package/lib/board/round-text.ts +72 -0
- package/lib/board/round.ts +89 -0
- package/lib/board/rules.ts +304 -0
- package/lib/board/session.ts +105 -0
- package/lib/board/store.ts +310 -0
- package/lib/board/view.ts +150 -0
- package/lib/errors.ts +12 -4
- package/lib/format.ts +13 -0
- package/lib/http/guard.ts +112 -0
- package/lib/http/index.ts +16 -5
- package/lib/http/serve.ts +234 -0
- package/lib/http/server.ts +12 -10
- package/lib/http/sink.ts +110 -0
- package/lib/http/token.ts +38 -0
- package/lib/policy.ts +12 -2
- package/lib/requirements.ts +6 -7
- package/lib/session-label.ts +64 -0
- package/lib/session-roster.ts +130 -0
- package/lib/session-tool.ts +184 -0
- package/lib/tool-names.ts +25 -2
- package/lib/tui/glyphs.ts +2 -0
- package/lib/web/README.md +5 -2
- package/lib/web/components.ts +5 -0
- package/lib/web/runtime.ts +7 -1
- package/lib/web/tokens.ts +25 -2
- package/package.json +26 -14
- package/skills/next/SKILL.md +4 -3
- package/skills/project-docs/SKILL.md +133 -0
- package/skills/project-docs/references/audit.md +131 -0
- package/skills/project-docs/references/changelog.md +105 -0
- package/skills/project-docs/references/discovery.md +127 -0
- package/skills/project-docs/references/readme.md +80 -0
- package/skills/project-docs/references/release.md +84 -0
- package/skills/project-docs/references/roadmap.md +93 -0
- package/skills/project-docs/scripts/state.ts +316 -0
- package/skills/refactor/SKILL.md +100 -125
- package/skills/refactor/references/handoff.md +35 -0
- package/skills/refactor/references/signals.md +54 -0
- package/skills/refactor/scripts/inventory.ts +587 -0
- package/extensions/file-browse/README.md +0 -506
- package/extensions/file-browse/server.ts +0 -141
- package/extensions/plan/split.ts +0 -87
- package/extensions/session-bus/README.md +0 -247
- package/extensions/session-bus/team.ts +0 -102
- package/extensions/wechat/outbound.ts +0 -100
- package/lib/plans/sections.ts +0 -172
- package/lib/plans/setting.ts +0 -52
- package/lib/plans/split.ts +0 -215
- package/lib/plans/store.ts +0 -19
- package/lib/plans/team.ts +0 -151
- package/skills/changelog/SKILL.md +0 -148
- package/skills/parallel-dev/SKILL.md +0 -150
- /package/extensions/file-browse/{rev.ts → live/rev.ts} +0 -0
- /package/extensions/file-browse/{diff.ts → text/diff.ts} +0 -0
- /package/extensions/file-browse/{fuzzy.ts → text/fuzzy.ts} +0 -0
- /package/extensions/file-browse/{live-client.ts → view/live-client.ts} +0 -0
- /package/extensions/file-browse/{palette.ts → view/palette.ts} +0 -0
- /package/extensions/rewind/{patch.ts → text/patch.ts} +0 -0
- /package/extensions/rewind/{paths.ts → text/paths.ts} +0 -0
- /package/extensions/rewind/{queue.ts → transport/queue.ts} +0 -0
- /package/extensions/rewind/{temp-index.ts → transport/temp-index.ts} +0 -0
- /package/extensions/wechat/{lock.ts → state/lock.ts} +0 -0
- /package/extensions/wechat/{channel.ts → text/channel.ts} +0 -0
|
@@ -97,21 +97,7 @@ export function resultSections(details: SessionDetails): TailResultInput<BusRow>
|
|
|
97
97
|
],
|
|
98
98
|
};
|
|
99
99
|
}
|
|
100
|
-
case "
|
|
101
|
-
const conflicts = details.conflicts ?? [];
|
|
102
|
-
const claimed = details.claimed ?? [];
|
|
103
|
-
const rows: BusRow[] = [
|
|
104
|
-
...conflicts.map((claim) => ({ kind: "claim" as const, claim })),
|
|
105
|
-
...claimed.map((label) => ({ kind: "result" as const, label, tone: "ok" as const })),
|
|
106
|
-
];
|
|
107
|
-
if (rows.length === 0) return undefined;
|
|
108
|
-
return {
|
|
109
|
-
kind: "sections",
|
|
110
|
-
sections: [section(rows, conflicts.length > 0 ? "Conflicts" : "Claimed")],
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
case "release":
|
|
114
|
-
case "leave": {
|
|
100
|
+
case "release": {
|
|
115
101
|
const released = details.released ?? [];
|
|
116
102
|
const notOwned = details.notOwned ?? [];
|
|
117
103
|
const sections: TailSection<BusRow>[] = [];
|
|
@@ -141,9 +127,7 @@ export function resultSections(details: SessionDetails): TailResultInput<BusRow>
|
|
|
141
127
|
sections: [section(delivered.map((label) => ({ kind: "result", label, tone: "ok" })))],
|
|
142
128
|
};
|
|
143
129
|
}
|
|
144
|
-
case "
|
|
145
|
-
return undefined;
|
|
146
|
-
case "name":
|
|
130
|
+
case "join":
|
|
147
131
|
return undefined;
|
|
148
132
|
}
|
|
149
133
|
}
|
|
@@ -164,11 +148,14 @@ export function collapsedLine(theme: Theme, details: SessionDetails): string {
|
|
|
164
148
|
const cells = [count(board.length, "session")];
|
|
165
149
|
if (unread > 0) cells.push(`${unread} unread`);
|
|
166
150
|
cells.push(count(claims, "claim"));
|
|
167
|
-
const units = details.status?.units;
|
|
168
|
-
if (units) cells.push(`${units.joined}/${units.total} units`);
|
|
169
151
|
const watching = details.status?.watching;
|
|
170
152
|
if (watching) cells.push(watching.wake ? "watch wake" : "watch on");
|
|
171
|
-
|
|
153
|
+
const line = paint(theme, "meta", cells.join(sep));
|
|
154
|
+
// A reader that has not joined is looking at a bus it is not on.
|
|
155
|
+
if (details.status?.onBus === false) {
|
|
156
|
+
return `${line}${paint(theme, "faint", sep)}${paint(theme, "warn", "not on the bus \u2014 session join puts you on it")}`;
|
|
157
|
+
}
|
|
158
|
+
return line;
|
|
172
159
|
}
|
|
173
160
|
case "send": {
|
|
174
161
|
const delivered = details.delivered ?? [];
|
|
@@ -198,26 +185,7 @@ export function collapsedLine(theme: Theme, details: SessionDetails): string {
|
|
|
198
185
|
if (claimed.length === 0) return paint(theme, "meta", "Claimed nothing");
|
|
199
186
|
return paint(theme, "ok", `Claimed ${claimed.map((path) => sanitizeLine(path)).join(", ")}`);
|
|
200
187
|
}
|
|
201
|
-
case "
|
|
202
|
-
const conflicts = details.conflicts ?? [];
|
|
203
|
-
const where = [details.team, details.unit]
|
|
204
|
-
.filter(Boolean)
|
|
205
|
-
.map((value) => sanitizeLine(value as string))
|
|
206
|
-
.join("/");
|
|
207
|
-
if (conflicts.length > 0) {
|
|
208
|
-
const [first] = conflicts;
|
|
209
|
-
const owner = first ? sanitizeLine(first.ownerLabel) : "a peer";
|
|
210
|
-
return paint(
|
|
211
|
-
theme,
|
|
212
|
-
"warn",
|
|
213
|
-
`Could not join ${where}${sep}${count(conflicts.length, "conflict")} held by ${owner}`,
|
|
214
|
-
);
|
|
215
|
-
}
|
|
216
|
-
const claimed = details.claimed ?? [];
|
|
217
|
-
return paint(theme, "ok", `Joined ${where}${sep}claimed ${claimed.map((path) => sanitizeLine(path)).join(", ")}`);
|
|
218
|
-
}
|
|
219
|
-
case "release":
|
|
220
|
-
case "leave": {
|
|
188
|
+
case "release": {
|
|
221
189
|
const released = details.released ?? [];
|
|
222
190
|
const notOwned = details.notOwned ?? [];
|
|
223
191
|
const parts: string[] = [];
|
|
@@ -228,16 +196,13 @@ export function collapsedLine(theme: Theme, details: SessionDetails): string {
|
|
|
228
196
|
}
|
|
229
197
|
return parts.length > 0 ? parts.join(paint(theme, "faint", sep)) : paint(theme, "meta", "Nothing to release");
|
|
230
198
|
}
|
|
231
|
-
case "
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
);
|
|
199
|
+
case "join": {
|
|
200
|
+
const label = paint(theme, "ok", sanitizeLine(details.label ?? ""));
|
|
201
|
+
const state =
|
|
202
|
+
details.watching?.armed !== true
|
|
203
|
+
? paint(theme, "meta", "not listening")
|
|
204
|
+
: paint(theme, "meta", details.watching.wake === true ? "listening, wake" : "listening");
|
|
205
|
+
return `${label}${paint(theme, "faint", sep)}${state}`;
|
|
239
206
|
}
|
|
240
|
-
case "name":
|
|
241
|
-
return paint(theme, "ok", `Named this session "${sanitizeLine(details.label ?? "")}"`);
|
|
242
207
|
}
|
|
243
208
|
}
|
|
@@ -14,7 +14,7 @@ import { GLYPHS, SEPARATORS } from "../../lib/tui/glyphs.ts";
|
|
|
14
14
|
import { listRow, statusRow } from "../../lib/tui/rows.ts";
|
|
15
15
|
import type { TailRowLine } from "../../lib/tui/tool.ts";
|
|
16
16
|
import { paint } from "../../lib/tui/tokens.ts";
|
|
17
|
-
import {
|
|
17
|
+
import { idSuffix } from "./format.ts";
|
|
18
18
|
import type { BusMessage, ClaimRecord, SessionRecord, SessionStatus } from "./types.ts";
|
|
19
19
|
|
|
20
20
|
/** Claim paths the focus block lists before it points at the pane. */
|
|
@@ -143,6 +143,7 @@ export function summaryCells(
|
|
|
143
143
|
theme: Theme,
|
|
144
144
|
rows: readonly SessionRow[],
|
|
145
145
|
watching: { armed: boolean; wake: boolean } | undefined,
|
|
146
|
+
onBus = true,
|
|
146
147
|
): string[] {
|
|
147
148
|
const unread = rows.reduce((total, row) => total + row.session.unread, 0);
|
|
148
149
|
const claims = rows.reduce((total, row) => total + row.claims.length, 0);
|
|
@@ -150,6 +151,7 @@ export function summaryCells(
|
|
|
150
151
|
if (unread > 0) cells.push(paint(theme, "label", `${unread} unread`));
|
|
151
152
|
cells.push(paint(theme, "meta", count(claims, "claim")));
|
|
152
153
|
if (watching) cells.push(paint(theme, "ok", watching.wake ? "watch wake" : "watch on"));
|
|
154
|
+
if (!onBus) cells.push(paint(theme, "warn", "not on the bus"));
|
|
153
155
|
return cells;
|
|
154
156
|
}
|
|
155
157
|
|
|
@@ -162,7 +164,7 @@ export function sessionDetailBlock(row: SessionRow, now: number): string[] {
|
|
|
162
164
|
lines.push(`claims: ${shown.join(", ")}${hidden > 0 ? ` +${hidden} more` : ""}`);
|
|
163
165
|
}
|
|
164
166
|
lines.push(
|
|
165
|
-
`mode: ${sanitizeLine(row.session.mode)}${SEPARATORS.item}id: ${
|
|
167
|
+
`mode: ${sanitizeLine(row.session.mode)}${SEPARATORS.item}id: ${idSuffix(row.session.id)}` +
|
|
166
168
|
`${SEPARATORS.item}last seen: ${formatDuration(Math.max(0, now - row.session.lastSeen))} ago`,
|
|
167
169
|
);
|
|
168
170
|
return lines;
|