@stevecastaneda/paseo-progress 0.3.3 → 0.3.4
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 +7 -1
- package/client/directory.ts +16 -2
- package/client/pills.tsx +1 -2
- package/dist/server/cli.js +21015 -503
- package/package.json +5 -6
- package/dist/server/launcher.js +0 -90
- package/dist/server/lock.js +0 -34
- package/dist/server/paths.js +0 -22
- package/dist/server/progress-file.js +0 -115
- package/dist/server/store.js +0 -205
- package/dist/shared/attachments.js +0 -92
- package/dist/shared/dashboard.js +0 -386
- package/dist/shared/events.js +0 -127
- package/dist/shared/format.js +0 -50
- package/dist/shared/show.js +0 -74
package/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<img src="https://raw.githubusercontent.com/stevecastaneda/paseo-plugins/main/progress/icon.png" alt="" width="64" height="64">
|
|
2
|
+
|
|
1
3
|
# Progress
|
|
2
4
|
|
|
3
5
|
A plugin for Paseo 0.9 and later that gives each worktree a live progress dashboard. Agents record progress with the `paseo-progress` command, which adds one line per change to the worktree's progress file. That file lives outside the repo, so git never sees it. The **Progress** panel draws the dashboard from that file and updates by itself.
|
|
@@ -39,7 +41,7 @@ dir="$(paseo plugin ls progress --json | node -pe 'JSON.parse(require("fs").read
|
|
|
39
41
|
node "$([ -f "$dir/dist/server/cli.js" ] && echo "$dir/dist/server/cli.js" || echo "$dir/server/cli.ts")" install-launcher [path]
|
|
40
42
|
```
|
|
41
43
|
|
|
42
|
-
If `paseo` isn't on your `PATH`, use `/Applications/Paseo.app/Contents/Resources/bin/paseo`. The command doesn't name a plugin folder: each run asks Paseo (`paseo plugin ls`) which copy of the plugin it is running and runs that copy, so it keeps working after updates and `npm run dev` switches. The npm package carries the command
|
|
44
|
+
If `paseo` isn't on your `PATH`, use `/Applications/Paseo.app/Contents/Resources/bin/paseo`. The command doesn't name a plugin folder: each run asks Paseo (`paseo plugin ls`) which copy of the plugin it is running and runs that copy, so it keeps working after updates and `npm run dev` switches. The npm package carries the command as one JavaScript file in `dist/`, built with esbuild when publishing, because Node won't run TypeScript from `node_modules`. That file includes zod (MIT), so installing the plugin downloads no other packages.
|
|
43
45
|
|
|
44
46
|
## Where progress is kept
|
|
45
47
|
|
|
@@ -129,6 +131,10 @@ npm run dev
|
|
|
129
131
|
|
|
130
132
|
## Changelog
|
|
131
133
|
|
|
134
|
+
### 0.3.4
|
|
135
|
+
|
|
136
|
+
- Installing the plugin no longer downloads any other npm packages. The `paseo-progress` command is now built into a single file that includes zod. The plugin used to install `@getpaseo/client` just for its types; it now gets them from the plugin SDK that Paseo already provides.
|
|
137
|
+
|
|
132
138
|
### 0.3.3
|
|
133
139
|
|
|
134
140
|
- The skill now has subagents record their own progress, so the dashboard stops warning "possibly stale" while they work. Since Paseo 0.11, an agent waiting on background subagents shows as idle. After 15 minutes with no update, the dashboard said the work may have stopped even though the subagents were still at it. Now the agent gives each subagent the worktree path and ticket id, and the subagent records its stages and a ticker line. If the Progress panel shows **Update skill** after you update, press it so agents get the new instructions.
|
package/client/directory.ts
CHANGED
|
@@ -1,10 +1,24 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { getPaseoClient } from "@getpaseo/plugin/client";
|
|
2
|
+
|
|
3
|
+
// Paseo's client types are read through the plugin SDK, which Paseo provides.
|
|
4
|
+
// Importing them from @getpaseo/client would make Paseo require that package
|
|
5
|
+
// installed alongside the plugin, even though only its types are used.
|
|
6
|
+
type PaseoApi = ReturnType<typeof getPaseoClient>;
|
|
7
|
+
type Handler<Subscribe> = Subscribe extends (handler: infer H) => unknown ? H : never;
|
|
8
|
+
export type PaseoAgentUpdate = Parameters<Handler<PaseoApi["agents"]["subscribe"]>>[0];
|
|
9
|
+
export type PaseoWorkspaceUpdate = Parameters<Handler<PaseoApi["workspaces"]["subscribe"]>>[0];
|
|
10
|
+
type Message = Parameters<
|
|
11
|
+
Parameters<NonNullable<Awaited<ReturnType<PaseoApi["agents"]["list"]>>["subscription"]>["subscribe"]>[0]["update"]
|
|
12
|
+
>[0];
|
|
13
|
+
type OwnedSubscription<T> = {
|
|
14
|
+
subscribe(observer: { snapshot(snapshot: T): void; update(message: Message): void; error?(error: unknown): void }): () => void;
|
|
15
|
+
release(): Promise<void>;
|
|
16
|
+
};
|
|
2
17
|
|
|
3
18
|
type Page = {
|
|
4
19
|
entries: unknown[];
|
|
5
20
|
pageInfo: { hasMore: boolean; nextCursor?: string | null };
|
|
6
21
|
};
|
|
7
|
-
type Message = Parameters<SubscriptionObserver<unknown>["update"]>[0];
|
|
8
22
|
|
|
9
23
|
// Paseo 0.9 returns an owned subscription from list({ subscribe: {} }). It
|
|
10
24
|
// delivers the first page as a snapshot, again after every reconnect, then the
|
package/client/pills.tsx
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type { PaseoAgentUpdate, PaseoWorkspaceUpdate } from "@getpaseo/client";
|
|
2
1
|
import type { PluginButtonContentProps, PluginButtonIconProps, PluginButtonRegistration, PluginClientContext } from "@getpaseo/plugin/client";
|
|
3
2
|
import { Icon } from "@getpaseo/plugin/client/react-native";
|
|
4
3
|
import React, { useSyncExternalStore } from "react";
|
|
5
4
|
import { Platform } from "react-native";
|
|
6
5
|
import { type AttentionResult, getAttention } from "../shared/rpc";
|
|
7
6
|
import { isIdle, type Pill, pillFor } from "./pill-state";
|
|
8
|
-
import { observeDirectory } from "./directory";
|
|
7
|
+
import { observeDirectory, type PaseoAgentUpdate, type PaseoWorkspaceUpdate } from "./directory";
|
|
9
8
|
import { onPanelOpened } from "./panel-opened";
|
|
10
9
|
import { IconSwap } from "./motion";
|
|
11
10
|
import { Spinner } from "./spinner";
|