pi-orchestrator-config 4.3.11 → 4.3.13

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.
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
6
6
  <title>pidash</title>
7
- <script type="module" crossorigin src="/assets/index-BoNVhD5K.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-Ehfwjr9d.js"></script>
8
8
  <link rel="stylesheet" crossorigin href="/assets/index-j_XBAdtq.css">
9
9
  </head>
10
10
  <body class="overflow-hidden">
@@ -54,7 +54,7 @@ export function InfoBar({ session, model, tokens, send, onMessage }: Props) {
54
54
  }>({ count: 0, agents: "", jobs: [] });
55
55
  const [cronTasks, setCronTasks] = useState<{
56
56
  count: number;
57
- tasks: Array<{ id: string; description: string; schedule: string; lastRun?: number; nextRun?: number }>;
57
+ tasks: Array<{ id: string; description: string; schedule: string; lastRun?: number; nextRun?: number; leader?: boolean }>;
58
58
  }>({ count: 0, tasks: [] });
59
59
  const filterRef = useRef<HTMLInputElement>(null);
60
60
 
@@ -93,11 +93,7 @@ export function InfoBar({ session, model, tokens, send, onMessage }: Props) {
93
93
  });
94
94
  }
95
95
  if (ev.type === "cron-status") {
96
- const newCount = ev.count || 0;
97
- setCronTasks(prev => {
98
- if (prev.count === newCount) return prev;
99
- return { count: newCount, tasks: ev.tasks || [] };
100
- });
96
+ setCronTasks({ count: ev.count || 0, tasks: ev.tasks || [] });
101
97
  }
102
98
  });
103
99
  }, [onMessage]);
@@ -291,7 +287,7 @@ export function InfoBar({ session, model, tokens, send, onMessage }: Props) {
291
287
  <div className="flex-1 min-w-0">
292
288
  <div className="font-medium text-foreground truncate">{task.description}</div>
293
289
  <div className="text-muted-foreground text-[10px]">{task.schedule}</div>
294
- <div className="text-muted-foreground text-[10px]">last: {lastRunStr} · next: {nextRunStr}</div>
290
+ <div className="text-muted-foreground text-[10px]">last: {lastRunStr} · next: {nextRunStr}{task.leader === false ? " · waiting for leader" : ""}</div>
295
291
  </div>
296
292
  <div className="flex gap-1 shrink-0">
297
293
  <button
@@ -254,10 +254,6 @@ function MessageItem({ msg, searchQuery, onAskResponse }: { msg: ChatMessage; se
254
254
  return <CollapsibleMessage msg={msg} searchQuery={searchQuery} />;
255
255
  }
256
256
 
257
- if (msg.role === "system") {
258
- return <div className="text-xs text-muted-foreground py-1">{msg.text}</div>;
259
- }
260
-
261
257
  return (
262
258
  <div>
263
259
  <div className={cn("text-[10px] font-bold uppercase tracking-wider mb-0.5", getRoleColor(msg.role))}>
@@ -12,6 +12,7 @@
12
12
  "noEmit": true,
13
13
  "jsx": "react-jsx",
14
14
  "strict": true,
15
+ "types": ["node", "vite/client"],
15
16
  "baseUrl": ".",
16
17
  "paths": {
17
18
  "@/*": ["./src/*"],
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pidiff-ui",
3
3
  "private": true,
4
- "version": "4.3.11",
4
+ "version": "4.3.13",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "vite",
@@ -418,13 +418,10 @@ export default function (pi: ExtensionAPI) {
418
418
  registerTasksCommand();
419
419
  // Expose handler to pidash for browser command dispatch
420
420
  try {
421
- if ((globalThis as any).__pitasks_pidash_listener) {
422
- try { pi.events.removeListener("pidash:request-commands", (globalThis as any).__pitasks_pidash_listener); } catch {}
423
- }
421
+ try { (globalThis as any).__pitasks_pidash_unsubscribe?.(); } catch {}
424
422
  const registerWithPidash = () => pi.events.emit("pidash:register-command", { name: "tasks", handler: tasksCmdHandler });
425
- (globalThis as any).__pitasks_pidash_listener = registerWithPidash;
423
+ (globalThis as any).__pitasks_pidash_unsubscribe = pi.events.on("pidash:request-commands", registerWithPidash);
426
424
  registerWithPidash();
427
- pi.events.on("pidash:request-commands", registerWithPidash);
428
425
  } catch {}
429
426
  log.debug("extension factory complete");
430
427
  }
@@ -61,7 +61,7 @@ All tasks are created with status \`pending\`.
61
61
  - Include enough detail in the description for another agent to understand and complete the task
62
62
  - After creating tasks, use TaskUpdate to set up dependencies (blocks/blockedBy) if needed
63
63
  - Check TaskList first to avoid creating duplicate tasks
64
- - Include \`agentType\` (e.g., "general-purpose", "Explore") to mark tasks for subagent execution via TaskExecute`,
64
+ - Use \`agentType\` only as optional descriptive metadata; it does not dispatch or execute an agent`,
65
65
  promptGuidelines: [
66
66
  "When working on complex multi-step tasks, use TaskCreate to track progress and TaskUpdate to update status.",
67
67
  "Mark tasks as in_progress before starting work and completed when done.",
@@ -71,7 +71,7 @@ All tasks are created with status \`pending\`.
71
71
  subject: Type.String({ description: "A brief title for the task" }),
72
72
  description: Type.String({ description: "A detailed description of what needs to be done" }),
73
73
  activeForm: Type.Optional(Type.String({ description: "Present continuous form shown in spinner when in_progress (e.g., 'Running tests')" })),
74
- agentType: Type.Optional(Type.String({ description: "Agent type for subagent execution (e.g., 'general-purpose', 'Explore'). Tasks with agentType can be started via TaskExecute." })),
74
+ agentType: Type.Optional(Type.String({ description: "Optional descriptive metadata for the task. It does not dispatch or execute an agent." })),
75
75
  metadata: Type.Optional(Type.Record(Type.String(), Type.Any(), { description: "Arbitrary metadata to attach to the task" })),
76
76
  }),
77
77
  execute(_toolCallId: string, params: any) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-orchestrator-config",
3
- "version": "4.3.11",
3
+ "version": "4.3.13",
4
4
  "description": "Orchestrator pattern for pi: specialist subagents, enforcement, code review loop, workflow commands",
5
5
  "keywords": [
6
6
  "pi-package"
@@ -63,6 +63,7 @@
63
63
  "ws": "^8.0.0"
64
64
  },
65
65
  "devDependencies": {
66
+ "@types/node": "^22.20.1",
66
67
  "tsx": "^4.0.0"
67
68
  },
68
69
  "scripts": {
@@ -7,17 +7,17 @@ REPO_DIR="$(cd "$(dirname "$0")/.." && pwd)"
7
7
 
8
8
  build_ui() {
9
9
  local ui_dir="$1"
10
- echo "Building ${ui_dir}..."
10
+ echo "Building ${ui_dir}..." >&2
11
11
  cd "${REPO_DIR}/${ui_dir}"
12
12
  if [ ! -d node_modules ]; then
13
- npm install --production=false
13
+ npm install --production=false >&2
14
14
  fi
15
- npm run build
15
+ npm run build >&2
16
16
  }
17
17
 
18
18
  build_ui extensions/pidash/pidash-ui
19
19
  build_ui extensions/pidiff/pidiff-ui
20
20
 
21
- echo "UI builds complete."
22
- echo " ${REPO_DIR}/extensions/pidash/pidash-ui/dist/index.html"
23
- echo " ${REPO_DIR}/extensions/pidiff/pidiff-ui/dist/index.html"
21
+ echo "UI builds complete." >&2
22
+ echo " ${REPO_DIR}/extensions/pidash/pidash-ui/dist/index.html" >&2
23
+ echo " ${REPO_DIR}/extensions/pidiff/pidiff-ui/dist/index.html" >&2