@pi-unipi/unipi 3.0.0-alpha.2 → 3.0.0-alpha.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/CHANGELOG.md +63 -0
- package/README.md +5 -5
- package/package.json +23 -22
- package/packages/ask-user/package.json +2 -2
- package/packages/autocomplete/package.json +1 -1
- package/packages/autocomplete/src/constants.ts +20 -23
- package/packages/background-tasks/package.json +2 -2
- package/packages/background-tasks/src/config.ts +0 -73
- package/packages/background-tasks/src/index.ts +0 -15
- package/packages/background-tasks/src/registry.ts +1 -171
- package/packages/background-tasks/src/types.ts +0 -32
- package/packages/btw/README.md +13 -56
- package/packages/btw/extensions/btw.ts +403 -1796
- package/packages/btw/package.json +5 -2
- package/packages/btw/skills/btw/SKILL.md +7 -143
- package/packages/compactor/README.md +59 -286
- package/packages/compactor/package.json +5 -9
- package/packages/compactor/skills/compactor/SKILL.md +13 -20
- package/packages/compactor/src/card.ts +95 -0
- package/packages/compactor/src/commands/index.ts +85 -124
- package/packages/compactor/src/compaction/compact-args.ts +5 -3
- package/packages/compactor/src/compaction/filter-noise.ts +1 -1
- package/packages/compactor/src/compaction/hooks.ts +533 -312
- package/packages/compactor/src/compaction/jev-prune.ts +114 -0
- package/packages/compactor/src/compaction/source.ts +159 -0
- package/packages/compactor/src/compaction/summarize.ts +704 -52
- package/packages/compactor/src/config/manager.ts +127 -127
- package/packages/compactor/src/config/schema.ts +32 -48
- package/packages/compactor/src/index.ts +40 -431
- package/packages/compactor/src/info-screen.ts +44 -190
- package/packages/compactor/src/session/recall-blocks.ts +1 -1
- package/packages/compactor/src/stats.ts +76 -0
- package/packages/compactor/src/tools/context-budget.ts +17 -34
- package/packages/compactor/src/tools/ctx-doctor.ts +45 -36
- package/packages/compactor/src/tools/register.ts +29 -269
- package/packages/compactor/src/types.ts +48 -186
- package/packages/core/child-agent.ts +1 -0
- package/packages/core/command-echo.ts +63 -0
- package/packages/core/compaction-context.ts +41 -0
- package/packages/core/constants.ts +7 -12
- package/packages/core/fusion-status.ts +4 -0
- package/packages/core/index.ts +4 -0
- package/packages/core/package.json +1 -1
- package/packages/core/src/child-agent/child-args.ts +31 -0
- package/packages/core/src/child-agent/delivery.ts +41 -0
- package/packages/core/src/child-agent/index.ts +5 -0
- package/packages/core/src/child-agent/readers.ts +202 -0
- package/packages/core/src/child-agent/runtime.ts +571 -0
- package/packages/core/src/jev/settings.ts +177 -14
- package/packages/core/src/settings/engine.ts +48 -2
- package/packages/core/src/settings/hub.ts +39 -10
- package/packages/core/src/settings/schema.ts +19 -3
- package/packages/core/src/tui/hub-kit.ts +12 -0
- package/packages/core/src/tui/kit.ts +198 -0
- package/packages/core/src/tui/progress.ts +73 -0
- package/packages/footer/README.md +4 -6
- package/packages/footer/package.json +3 -3
- package/packages/footer/src/help.ts +1 -1
- package/packages/footer/src/index.ts +33 -2
- package/packages/footer/src/presets.ts +3 -4
- package/packages/footer/src/rendering/icons.ts +0 -20
- package/packages/footer/src/segments/compactor.ts +52 -142
- package/packages/footer/src/segments/status-ext.ts +0 -1
- package/packages/fusion/package.json +3 -3
- package/packages/fusion/src/child-args.ts +1 -0
- package/packages/fusion/src/index.ts +121 -5
- package/packages/fusion/src/pi-settings.ts +57 -0
- package/packages/fusion/src/picker.ts +116 -37
- package/packages/fusion/src/preset.ts +56 -2
- package/packages/fusion/src/prompts.ts +1 -1
- package/packages/fusion/src/sidekick-runtime.ts +1 -420
- package/packages/fusion/src/tools.ts +71 -133
- package/packages/fusion/src/transcript.ts +37 -82
- package/packages/image/package.json +2 -2
- package/packages/info-screen/package.json +2 -2
- package/packages/input-shortcuts/package.json +2 -2
- package/packages/input-shortcuts/src/cleared-input.ts +97 -0
- package/packages/input-shortcuts/src/index.ts +4 -0
- package/packages/kanboard/README.md +16 -8
- package/packages/kanboard/index.ts +4 -0
- package/packages/kanboard/package.json +7 -7
- package/packages/kanboard/skills/kanboard/SKILL.md +10 -4
- package/packages/kanboard/src/bin.ts +4 -2
- package/packages/kanboard/src/commands.ts +6 -1
- package/packages/kanboard/src/progress.ts +27 -0
- package/packages/kanboard/src/runner.ts +227 -63
- package/packages/kanboard/src/settings.ts +62 -2
- package/packages/long-horizon/index.ts +53 -5
- package/packages/long-horizon/package.json +2 -2
- package/packages/long-horizon/src/commands.ts +18 -1
- package/packages/long-horizon/src/compaction-brief.ts +35 -0
- package/packages/long-horizon/src/engine/continuation.ts +4 -3
- package/packages/long-horizon/src/engine/goal-state.ts +2 -1
- package/packages/long-horizon/src/engine/runaway.ts +1 -1
- package/packages/long-horizon/src/gate.ts +13 -8
- package/packages/long-horizon/src/progress.ts +87 -0
- package/packages/long-horizon/src/runtime.ts +61 -6
- package/packages/long-horizon/src/settings.ts +53 -38
- package/packages/long-horizon/src/tools/graph.ts +1 -1
- package/packages/long-horizon/src/tools/swarm.ts +3 -3
- package/packages/mcp/package.json +2 -2
- package/packages/memory/index.ts +48 -17
- package/packages/memory/package.json +3 -3
- package/packages/memory/tools.ts +99 -105
- package/packages/notify/package.json +2 -2
- package/packages/skill-registry/package.json +1 -1
- package/packages/subagents/README.md +40 -119
- package/packages/subagents/package.json +5 -13
- package/packages/subagents/skills/subagents/SKILL.md +18 -42
- package/packages/subagents/src/agents.ts +213 -0
- package/packages/subagents/src/badge-session.ts +46 -0
- package/packages/subagents/src/badge.ts +43 -0
- package/packages/subagents/src/cards.ts +172 -0
- package/packages/subagents/src/index.ts +559 -1086
- package/packages/subagents/src/manager.ts +399 -0
- package/packages/subagents/src/profiles.ts +130 -0
- package/packages/subagents/src/transcript.ts +154 -0
- package/packages/subagents/src/ui.ts +328 -0
- package/packages/unipi/bundled.js +11231 -21693
- package/packages/unipi/index.ts +3 -2
- package/packages/updater/package.json +2 -2
- package/packages/utility/package.json +2 -2
- package/packages/utility/src/settings.ts +3 -2
- package/packages/utility/src/skill-discovery.ts +2 -2
- package/packages/watchdog/index.ts +4 -4
- package/packages/watchdog/package.json +3 -3
- package/packages/watchdog/src/config.ts +3 -2
- package/packages/web-api/package.json +2 -2
- package/packages/workflow/package.json +2 -2
- package/packages/workflow/src/permission/decide.ts +1 -2
- package/packages/workflow/src/permission/index.ts +12 -4
- package/packages/workflow/src/permission/settings.ts +39 -4
- package/packages/background-tasks/extensions/delegate-child.ts +0 -1
- package/packages/background-tasks/src/context-parent-snapshot.ts +0 -142
- package/packages/background-tasks/src/context-token-budget.ts +0 -903
- package/packages/background-tasks/src/context-visible-conversation-v2.ts +0 -551
- package/packages/background-tasks/src/delegate/artifacts.ts +0 -487
- package/packages/background-tasks/src/delegate/budget.ts +0 -415
- package/packages/background-tasks/src/delegate/hook-contract-evidence.json +0 -18
- package/packages/background-tasks/src/delegate/hook-contract.ts +0 -154
- package/packages/background-tasks/src/delegate/launch.ts +0 -484
- package/packages/background-tasks/src/delegate/result-package.ts +0 -459
- package/packages/background-tasks/src/delegate/runner.ts +0 -430
- package/packages/background-tasks/src/delegate/seed.ts +0 -423
- package/packages/background-tasks/src/delegate/types.ts +0 -323
- package/packages/background-tasks/src/delegate-child-extension.ts +0 -978
- package/packages/background-tasks/src/delegate-extension.ts +0 -654
- package/packages/background-tasks/src/fixtures/delegate-context-incident.json +0 -17
- package/packages/compactor/skills/compactor-detail/SKILL.md +0 -116
- package/packages/compactor/skills/compactor-doctor/SKILL.md +0 -71
- package/packages/compactor/skills/compactor-stats/SKILL.md +0 -51
- package/packages/compactor/src/compaction/build-sections.ts +0 -76
- package/packages/compactor/src/compaction/extract/goals.ts +0 -36
- package/packages/compactor/src/compaction/extract/preferences.ts +0 -40
- package/packages/compactor/src/compaction/format.ts +0 -53
- package/packages/compactor/src/compaction/merge.ts +0 -143
- package/packages/compactor/src/config/presets.ts +0 -160
- package/packages/compactor/src/executor/executor.ts +0 -233
- package/packages/compactor/src/executor/runtime.ts +0 -115
- package/packages/compactor/src/security/evaluator.ts +0 -89
- package/packages/compactor/src/security/policy.ts +0 -96
- package/packages/compactor/src/security/scanner.ts +0 -65
- package/packages/compactor/src/session/auto-inject.ts +0 -60
- package/packages/compactor/src/session/db.ts +0 -325
- package/packages/compactor/src/session/extract.ts +0 -144
- package/packages/compactor/src/session/resume-inject.ts +0 -64
- package/packages/compactor/src/session/snapshot.ts +0 -327
- package/packages/compactor/src/tools/ctx-batch-execute.ts +0 -41
- package/packages/compactor/src/tools/ctx-execute-file.ts +0 -23
- package/packages/compactor/src/tools/ctx-execute.ts +0 -23
- package/packages/compactor/src/tools/ctx-stats.ts +0 -96
- package/packages/subagents/agents/delegate.md +0 -14
- package/packages/subagents/agents/oracle.md +0 -78
- package/packages/subagents/agents/researcher.md +0 -52
- package/packages/subagents/agents/reviewer.md +0 -80
- package/packages/subagents/agents/scout.md +0 -50
- package/packages/subagents/agents/worker.md +0 -59
- package/packages/subagents/prompts/council.md +0 -48
- package/packages/subagents/prompts/gather-context-and-clarify.md +0 -13
- package/packages/subagents/prompts/parallel-cleanup.md +0 -59
- package/packages/subagents/prompts/parallel-research.md +0 -50
- package/packages/subagents/prompts/parallel-review.md +0 -54
- package/packages/subagents/prompts/review-loop.md +0 -43
- package/packages/subagents/skills/council-mode/SKILL.md +0 -230
- package/packages/subagents/skills/subagents/references/constraints-and-recipes.md +0 -259
- package/packages/subagents/skills/subagents/references/execution-controls.md +0 -454
- package/packages/subagents/skills/subagents/references/management-authoring-rpc.md +0 -161
- package/packages/subagents/skills/subagents/references/multi-lane-orchestration.md +0 -39
- package/packages/subagents/skills/subagents/references/prompting-and-roles.md +0 -267
- package/packages/subagents/src/acceptance.ts +0 -331
- package/packages/subagents/src/agent-manager.ts +0 -405
- package/packages/subagents/src/agent-memory.ts +0 -300
- package/packages/subagents/src/agent-overrides.ts +0 -183
- package/packages/subagents/src/agent-runner.ts +0 -271
- package/packages/subagents/src/async-runner.ts +0 -422
- package/packages/subagents/src/authority-policy.ts +0 -47
- package/packages/subagents/src/budgets.ts +0 -285
- package/packages/subagents/src/child-safety.ts +0 -140
- package/packages/subagents/src/config.ts +0 -249
- package/packages/subagents/src/conversation-viewer.ts +0 -281
- package/packages/subagents/src/core-compat.ts +0 -94
- package/packages/subagents/src/custom-agents.ts +0 -343
- package/packages/subagents/src/file-system-retry.ts +0 -50
- package/packages/subagents/src/fleet-data.ts +0 -105
- package/packages/subagents/src/fleet-view.ts +0 -322
- package/packages/subagents/src/foreground-detach.ts +0 -59
- package/packages/subagents/src/fork-context.ts +0 -285
- package/packages/subagents/src/global.d.ts +0 -7
- package/packages/subagents/src/guide.ts +0 -129
- package/packages/subagents/src/mission-state.ts +0 -133
- package/packages/subagents/src/mission-store.ts +0 -436
- package/packages/subagents/src/output-limits.ts +0 -142
- package/packages/subagents/src/parity-types.ts +0 -315
- package/packages/subagents/src/pi-args.ts +0 -167
- package/packages/subagents/src/result-files.ts +0 -232
- package/packages/subagents/src/result-watcher.ts +0 -221
- package/packages/subagents/src/retained-children.ts +0 -176
- package/packages/subagents/src/run-fanout-budget.ts +0 -356
- package/packages/subagents/src/scheduled-runs.ts +0 -349
- package/packages/subagents/src/schemas.ts +0 -263
- package/packages/subagents/src/slash-commands.ts +0 -80
- package/packages/subagents/src/supervisor-channel.ts +0 -249
- package/packages/subagents/src/tool-handler.ts +0 -1144
- package/packages/subagents/src/types.ts +0 -238
- package/packages/subagents/src/widget.ts +0 -457
- package/packages/subagents/src/workflow-script.ts +0 -737
- package/packages/subagents/src/workflow-worker.ts +0 -384
- package/packages/subagents/src/worktree.ts +0 -614
- /package/packages/{subagents/src → core/src/child-agent}/pi-spawn.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,69 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [3.0.0-alpha.4] — 2026-09-28
|
|
10
|
+
|
|
11
|
+
### Breaking Changes
|
|
12
|
+
|
|
13
|
+
- **BREAKING: compactor reworked.** Session continuity (the SQLite event log and the snapshot restored after compaction) is removed: it logged every session under one shared ID, so restored snapshots mixed projects and reached ~60k tokens. Also removed: the sandbox tools (`sandbox`, `sandbox_file`, `sandbox_batch`), the `compact` tool (it never compacted), the `compactor_stats`/`compactor_doctor` tools, presets, and the strategy modes that had no effect. **Migration path:** `/unipi:compact` and `/unipi:lossless-compact` still work but are deprecated. Use `/unipi:compact-vcc`, `/unipi:compact-jev` or `/unipi:compact-by-llm`. Old configs are translated: `overrideDefaultCompaction: false` becomes Method = model summary, and `autoCompaction.enabled` becomes When = at a percentage. `~/.unipi/db/compactor` is no longer used and can be deleted.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- `compactor`: the lossless summary is rebuilt from the full session history on every compaction, so it can no longer grow from one compaction to the next (a real session went 15k → 236k → 248k characters). It puts the current state first: Active Work, Your Requests, Latest State, Decisions & Constraints, Files, Commits, Open Errors, Recent Transcript. Each section has a hard budget.
|
|
18
|
+
- Text that extensions inject with the user role (loop prompts, nudges, notifications) is recognised and left out of Your Requests; extension-sent messages are also marked when they are sent.
|
|
19
|
+
- `ask_user` answers are kept as "question → answer" decisions.
|
|
20
|
+
- Typed credentials are redacted.
|
|
21
|
+
- `compactor`: **lossless + jev** method (`/unipi:compact-jev`). jev, the Decision model, drops items that are no longer in force, such as finished one-off requests, reversed decisions and fixed errors, at per-kind confidence thresholds. If jev is unavailable, the plain lossless summary is used.
|
|
22
|
+
- `compactor`: the settings screen shows 5 main settings (Method, Pi's /compact, When, Percentage, Notifications); everything else is under **Advanced compaction**.
|
|
23
|
+
- `core`: `registerCompactionContext()`. long-horizon (goal, ralph) and kanboard register their live state, and every compaction summary leads with it.
|
|
24
|
+
- `scripts/compactor-eval.mts` replays the compactor at real compaction points of recorded sessions and shows what happened next, for review. `scripts/compactor-continue.mts` writes resumable A/B session files (old vs new compaction) for a blind "continue from here" test with `pi --fork … -nt -p`.
|
|
25
|
+
- **Decision Model settings** (`/unipi:settings → Decision Model`): the jev provider, model, base URL, key and timeout now live in one shared `decision-model` namespace instead of long-horizon's judge. Every module that uses it (long-horizon routing, permission auto mode, skill exposure, watchdog, kanboard strategy, compactor pruning) has a **Decision model** block that inherits the shared model by default or switches to a custom one; empty custom fields fall back to the shared value. Existing `long-horizon.judge.*` transport settings are migrated once.
|
|
26
|
+
- `compactor`: user corrections ("restore the background… I did not request this change") are kept as decisions.
|
|
27
|
+
- `compactor`: **Lessons** section: lessons the agent wrote down itself (memory notes, `# Confirmed: …` comments in its commands, diagnosis sentences), kept verbatim. **Project Knowledge** section: notes it wrote or read, repeated build/test/deploy commands, hosts. Decisions keep early standing rules ("always…", "never…") instead of only the most recent ones.
|
|
28
|
+
- `compactor`: jev asks short, local questions it can answer precisely: "durable lesson or one-off note?" and "does this later item replace that earlier one?" on items about the same subject. A reversal in the recent messages removes the stale lesson it replaces.
|
|
29
|
+
- `compactor`: **compaction card** in the transcript under Pi's `[compaction]` block: one line (`Compacted 7.9k → 2.2k tokens · lossless + jev · 1 stale dropped · at 3%`), ctrl+o for method, trigger, kept tail, sections and jev drops. Never sent to the model; replaces the compaction toasts.
|
|
30
|
+
- `footer`: the stats strip under the input shows `5 compactions · 47k→15k · just now` once the session has compacted. The five compactor segments are now one icon-free `compactions` segment.
|
|
31
|
+
- `compactor`: the info-screen Compactor tab shows the method and trigger settings, compactions by method, tokens before → after, and the last compaction.
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
- `compactor`: the percentage trigger compacts at the `turn_end` boundary instead of calling `ctx.compact()`, which aborted the run and left goal, ralph and kanboard loops waiting. The "auto-continue" message is removed; Pi 0.87 continues after automatic compaction on its own, so it only added empty extra turns.
|
|
36
|
+
- `compactor`: stats come from the session's own compaction entries instead of a fixed "12% kept" guess (also in the footer segments).
|
|
37
|
+
- `compactor`: the kept tail is sized to the model's context window (recut above 40%, `keep:N` included) and the summary is capped at 8% of it, so compaction can no longer overflow small-context models.
|
|
38
|
+
- `compactor`: secrets are redacted before summary items are clipped (a clipped quote could leak a password).
|
|
39
|
+
- `compactor`: `/unipi:compact-doctor` no longer calls the jev method "model summary"; `/unipi:compact-stats` counts jev separately; a manual compaction with nothing to compact no longer repeats Pi's error.
|
|
40
|
+
- `kanboard` tests wrote a fake judge key (`"k"`) into the real `~/.unipi/config/long-horizon/config.json`, which silently disabled the jev judge. They now use project scope.
|
|
41
|
+
|
|
42
|
+
## [3.0.0-alpha.3] — 2026-09-27
|
|
43
|
+
|
|
44
|
+
### Breaking Changes
|
|
45
|
+
|
|
46
|
+
- **BREAKING: `subagents` rebuilt on Devin's model.** `spawn_helper`/`get_helper_result` and `bg_delegate`/`bg_result` are gone, along with workflow scripts, missions, schedules, budgets, acceptance gates, agent memory, worktrees, prompt templates and the bundled agents. **Migration path:** use `run_subagent` (foreground / background / resume) with `subagent_explore` or `subagent_general`, or a custom markdown agent in `~/.unipi/config/agents` / `<project>/.unipi/config/agents` (`/unipi:agents` creates them). `read_subagent` replaces the old result tools. Saved `backgroundTasks.delegate.*` settings are ignored, not deleted.
|
|
47
|
+
- **BREAKING: `btw` is an inline panel.** `/unipi:btw-new`, `-tangent`, `-clear`, `-inject`, `-summarize` and `--save` are removed; each `/unipi:btw` question runs in a fresh read-only session seeded from the main branch. Old btw notes still render.
|
|
48
|
+
- **BREAKING: `/unipi:model` saves the default with Alt+Enter**, not Ctrl+S (which clashed with terminals, VS Code, Zellij and XOFF). The startup model and thinking level are also in `/unipi:settings → Fusion → Startup`.
|
|
49
|
+
- `long-horizon`: default mode is now `none` (the judge still routes); set `longHorizon.defaultMode` to keep the old behaviour.
|
|
50
|
+
- `workflow`: the all-projects permission mode moved to its own `permission.defaultMode` key (migrated once from a legacy global `mode`).
|
|
51
|
+
|
|
52
|
+
### Added
|
|
53
|
+
|
|
54
|
+
- **subagents: Devin-parity screens.** Live foreground card, `N subagents (k running) · ↓ select` strip, ↓ opens a dock (view transcript, `f` foreground, `x` cancel), Ctrl+B backgrounds and Esc cancels a foreground run, state survives resume. Settings hub: default model, thinking, max running, "Manage agents…".
|
|
55
|
+
- **fusion: Devin-parity sidekick.** Steps stream into the chat, blocking handoffs forward approvals to you, background handoffs deny them; the sidekick runs the lead's extensions. Fusion's lead policy and long-horizon's mode block are named system-prompt sections (long-horizon used to drop the lead policy).
|
|
56
|
+
- **kanboard:** task strategies (none/goal/ralph/swarm/graph) and plan-first labels, board default strategy `auto` (jev picks), blocking policy `avoid` (agents note assumptions instead of blocking), grouped board settings dialog written through to the extension settings, Review lane "Done all".
|
|
57
|
+
- **TUI:** one visual language from a shared kit in `@pi-unipi/core` — crafted spinner, badges, rails, progress bars. Subagent cards settle to ✓/✗ in place; background notices, `read_subagent` and the dock are badges; memory cards are rails.
|
|
58
|
+
- **Progress bars** for ralph (checklist), kanboard (board) and goal (a user-only side estimate + summary per loop and on `/unipi:goal status`, configurable in Long-Horizon → Progress).
|
|
59
|
+
- **input-shortcuts:** Ctrl+C keeps the cleared input struck through in the transcript (never sent to the model); ↑ restores it.
|
|
60
|
+
- `core`: every unipi command echoes `❭ /cmd args` in the transcript; the settings engine has an optional `onSet` hook.
|
|
61
|
+
- `npm run tui:gallery` — standalone preview of UniPi's TUI designs, spinners and terminal capabilities.
|
|
62
|
+
|
|
63
|
+
### Fixed
|
|
64
|
+
|
|
65
|
+
- **long-horizon: goal and ralph loops no longer stop after the first turn.** The next-turn message was sent while pi still counted the turn as running and was rejected (`Agent is already processing`); it is now queued as a follow-up.
|
|
66
|
+
- **long-horizon: batched goals no longer stall.** A turn that changed files and then claimed completion counted as no progress when the verifier said not met, so goals that claim after every batch got a generic nudge instead of the verifier's feedback and paused after eight claims.
|
|
67
|
+
- **fusion:** the Fusion row can always be applied — the model cache refreshes on a miss (bridge-registered models were "not available"), stale saved lead/sidekick keys are dropped, and Enter/Tab opens the dropdown for a missing half. Sidekick tools only appear while Fusion is active; the picker is wide again.
|
|
68
|
+
- **settings:** the permission project and default rows no longer open two pickers at once.
|
|
69
|
+
- **kanboard:** the binary lookup prefers a source checkout's dev build over a stale platform package.
|
|
70
|
+
- **memory:** at most one queued save reminder.
|
|
71
|
+
|
|
9
72
|
## [3.0.0-alpha.2] — 2026-09-26
|
|
10
73
|
|
|
11
74
|
### Fixed
|
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ pi install npm:@pi-unipi/unipi
|
|
|
21
21
|
|
|
22
22
|
**[Memory](./packages/memory/README.md)** — Markdown files + [MemPalace](https://github.com/mempalace/mempalace) semantic search share a memory palace across pi, Devin, and zcode. Facts, preferences, and decisions persist across sessions; v2 data converts via `/unipi:memory migrate`.
|
|
23
23
|
|
|
24
|
-
**[Compactor](./packages/compactor/README.md)** —
|
|
24
|
+
**[Compactor](./packages/compactor/README.md)** — Compaction that keeps work going. Lossless zero-LLM summaries (or Pi's model summary), rebuilt from the full session history, led by the live goal/ralph/kanboard state; the full history stays searchable with session recall.
|
|
25
25
|
|
|
26
26
|
**[Prefix-cache architecture](./docs/prefix-cache-architecture.md)** — Append-only request discipline, explicit cache epochs, deterministic tools, privacy-safe diagnostics, provider limitations, and bounded cold-epoch output.
|
|
27
27
|
|
|
@@ -41,7 +41,7 @@ pi install npm:@pi-unipi/unipi
|
|
|
41
41
|
|
|
42
42
|
**[Footer](./packages/footer/README.md)** — Persistent status bar showing live stats from every package. Now with the Glance footer: a framed input box with an animated rainbow brand, git branch title, and a live session strip (turns, wall/tool time, TTFT, tok/s, cache hit). Responsive layout, presets, per-segment toggling.
|
|
43
43
|
|
|
44
|
-
**[BTW](./packages/btw/README.md)** —
|
|
44
|
+
**[BTW](./packages/btw/README.md)** — Inline side questions (`/unipi:btw`) answered by a fresh read-only session seeded from the current context — the main agent never sees them.
|
|
45
45
|
|
|
46
46
|
**[Ask User](./packages/ask-user/README.md)** — Structured input for decision gates. Single-select, multi-select, freeform. The agent asks instead of guessing.
|
|
47
47
|
|
|
@@ -92,11 +92,11 @@ Coexists triggers enhance behavior when packages are installed together. Workflo
|
|
|
92
92
|
| Kanboard | `/unipi:` | kanboard (board: capture, work runner, web UI) |
|
|
93
93
|
| Long-Horizon | `/unipi:goal`, `/unipi:ralph`, `/unipi:swarm`, `/unipi:graph` | <prompt>, start, stop, status, resume, clear |
|
|
94
94
|
| Memory | `/unipi:memory-` | process, search, consolidate, forget |
|
|
95
|
-
| Compactor | `/unipi:` |
|
|
95
|
+
| Compactor | `/unipi:` | compact-vcc, compact-by-llm, session-recall, compact-stats, compact-doctor, compact-help |
|
|
96
96
|
| Notify | `/unipi:notify-` | settings, test, set-tg, set-ntfy |
|
|
97
97
|
| MCP | `/unipi:mcp-` | add, settings, sync, status |
|
|
98
98
|
| Web | `/unipi:web-` | settings, cache-clear |
|
|
99
|
-
| BTW | `/unipi:btw` | question
|
|
99
|
+
| BTW | `/unipi:btw` | question |
|
|
100
100
|
| Utility | `/unipi:` | env, doctor, status, cleanup, badge-name |
|
|
101
101
|
| Kanboard | `/unipi:kanboard` | toggle, doctor |
|
|
102
102
|
| Footer | `/unipi:footer` | toggle, settings |
|
|
@@ -121,7 +121,7 @@ Coexists triggers enhance behavior when packages are installed together. Workflo
|
|
|
121
121
|
| `sidekick` / `read_subagent` | fusion | Delegate to the persistent sidekick and collect its report |
|
|
122
122
|
| `bg_run` / `bg_status` / `bg_logs` / `bg_kill` / `bg_delegate` / `bg_result` | background-tasks | Long-running commands and background delegate agents |
|
|
123
123
|
| `ask_user` | ask-user | User input |
|
|
124
|
-
| `
|
|
124
|
+
| `session_recall` / `context_budget` | compactor | Context management |
|
|
125
125
|
| `ctx_env` | utility | Environment info |
|
|
126
126
|
| `set_session_name` | utility | Session name for badge |
|
|
127
127
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-unipi/unipi",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.4",
|
|
4
4
|
"description": "All-in-one extension suite for Pi coding agent",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"publish:all": "npm publish --workspaces --access public",
|
|
30
30
|
"test": "npx tsx --test tests/*.test.js packages/memory/tests/*.test.ts && npm test --workspaces --if-present",
|
|
31
31
|
"typecheck": "npx tsc --noEmit --skipLibCheck",
|
|
32
|
+
"tui:gallery": "npx tsx scripts/tui-gallery/index.ts",
|
|
32
33
|
"publish:kanboard": "node scripts/publish-kanboard-platforms.mjs"
|
|
33
34
|
},
|
|
34
35
|
"files": [
|
|
@@ -83,27 +84,27 @@
|
|
|
83
84
|
"typebox": "^1.1.38"
|
|
84
85
|
},
|
|
85
86
|
"dependencies": {
|
|
86
|
-
"@pi-unipi/ask-user": "3.0.0-alpha.
|
|
87
|
-
"@pi-unipi/background-tasks": "3.0.0-alpha.
|
|
88
|
-
"@pi-unipi/btw": "3.0.0-alpha.
|
|
89
|
-
"@pi-unipi/command-enchantment": "3.0.0-alpha.
|
|
90
|
-
"@pi-unipi/compactor": "3.0.0-alpha.
|
|
91
|
-
"@pi-unipi/core": "3.0.0-alpha.
|
|
92
|
-
"@pi-unipi/footer": "3.0.0-alpha.
|
|
93
|
-
"@pi-unipi/image": "3.0.0-alpha.
|
|
94
|
-
"@pi-unipi/fusion": "3.0.0-alpha.
|
|
95
|
-
"@pi-unipi/info-screen": "3.0.0-alpha.
|
|
96
|
-
"@pi-unipi/input-shortcuts": "3.0.0-alpha.
|
|
97
|
-
"@pi-unipi/kanboard": "3.0.0-alpha.
|
|
98
|
-
"@pi-unipi/mcp": "3.0.0-alpha.
|
|
99
|
-
"@pi-unipi/memory": "3.0.0-alpha.
|
|
100
|
-
"@pi-unipi/notify": "3.0.0-alpha.
|
|
101
|
-
"@pi-unipi/skill-registry": "3.0.0-alpha.
|
|
102
|
-
"@pi-unipi/subagents": "3.0.0-alpha.
|
|
103
|
-
"@pi-unipi/updater": "3.0.0-alpha.
|
|
104
|
-
"@pi-unipi/utility": "3.0.0-alpha.
|
|
105
|
-
"@pi-unipi/web-api": "3.0.0-alpha.
|
|
106
|
-
"@pi-unipi/workflow": "3.0.0-alpha.
|
|
87
|
+
"@pi-unipi/ask-user": "3.0.0-alpha.4",
|
|
88
|
+
"@pi-unipi/background-tasks": "3.0.0-alpha.4",
|
|
89
|
+
"@pi-unipi/btw": "3.0.0-alpha.4",
|
|
90
|
+
"@pi-unipi/command-enchantment": "3.0.0-alpha.4",
|
|
91
|
+
"@pi-unipi/compactor": "3.0.0-alpha.4",
|
|
92
|
+
"@pi-unipi/core": "3.0.0-alpha.4",
|
|
93
|
+
"@pi-unipi/footer": "3.0.0-alpha.4",
|
|
94
|
+
"@pi-unipi/image": "3.0.0-alpha.4",
|
|
95
|
+
"@pi-unipi/fusion": "3.0.0-alpha.4",
|
|
96
|
+
"@pi-unipi/info-screen": "3.0.0-alpha.4",
|
|
97
|
+
"@pi-unipi/input-shortcuts": "3.0.0-alpha.4",
|
|
98
|
+
"@pi-unipi/kanboard": "3.0.0-alpha.4",
|
|
99
|
+
"@pi-unipi/mcp": "3.0.0-alpha.4",
|
|
100
|
+
"@pi-unipi/memory": "3.0.0-alpha.4",
|
|
101
|
+
"@pi-unipi/notify": "3.0.0-alpha.4",
|
|
102
|
+
"@pi-unipi/skill-registry": "3.0.0-alpha.4",
|
|
103
|
+
"@pi-unipi/subagents": "3.0.0-alpha.4",
|
|
104
|
+
"@pi-unipi/updater": "3.0.0-alpha.4",
|
|
105
|
+
"@pi-unipi/utility": "3.0.0-alpha.4",
|
|
106
|
+
"@pi-unipi/web-api": "3.0.0-alpha.4",
|
|
107
|
+
"@pi-unipi/workflow": "3.0.0-alpha.4"
|
|
107
108
|
},
|
|
108
109
|
"devDependencies": {
|
|
109
110
|
"@earendil-works/pi-agent-core": "^0.87.1",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-unipi/ask-user",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.4",
|
|
4
4
|
"description": "Structured user input tool for Pi coding agent — single-select, multi-select, freeform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.ts",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"access": "public"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@pi-unipi/core": "3.0.0-alpha.
|
|
43
|
+
"@pi-unipi/core": "3.0.0-alpha.4"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"@earendil-works/pi-coding-agent": "^0.87.1",
|
|
@@ -58,13 +58,12 @@ export const COMMAND_REGISTRY: Record<string, string> = {
|
|
|
58
58
|
"unipi:memory-forget": "memory",
|
|
59
59
|
"unipi:global-memory-list": "memory",
|
|
60
60
|
|
|
61
|
-
// btw
|
|
61
|
+
// btw
|
|
62
62
|
"unipi:btw": "btw",
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
"unipi:
|
|
66
|
-
"unipi:
|
|
67
|
-
"unipi:btw-summarize": "btw",
|
|
63
|
+
|
|
64
|
+
// subagents
|
|
65
|
+
"unipi:subagents": "subagents",
|
|
66
|
+
"unipi:agents": "subagents",
|
|
68
67
|
|
|
69
68
|
// mcp (5 commands)
|
|
70
69
|
"unipi:mcp-status": "mcp",
|
|
@@ -82,10 +81,7 @@ export const COMMAND_REGISTRY: Record<string, string> = {
|
|
|
82
81
|
// utility (settings hub)
|
|
83
82
|
"unipi:settings": "utility",
|
|
84
83
|
|
|
85
|
-
// subagents (
|
|
86
|
-
"unipi:subagents-fleet": "subagents",
|
|
87
|
-
"unipi:subagents-doctor": "subagents",
|
|
88
|
-
"unipi:subagents-guide": "subagents",
|
|
84
|
+
// subagents (no user commands — Devin model)
|
|
89
85
|
|
|
90
86
|
// background-tasks (8 commands)
|
|
91
87
|
"unipi:bg": "background-tasks",
|
|
@@ -101,6 +97,9 @@ export const COMMAND_REGISTRY: Record<string, string> = {
|
|
|
101
97
|
// web-api (2 commands)
|
|
102
98
|
|
|
103
99
|
// compact (9 commands)
|
|
100
|
+
"unipi:compact-vcc": "compact",
|
|
101
|
+
"unipi:compact-jev": "compact",
|
|
102
|
+
"unipi:compact-by-llm": "compact",
|
|
104
103
|
"unipi:lossless-compact": "compact",
|
|
105
104
|
"unipi:compact": "compact",
|
|
106
105
|
"unipi:session-recall": "compact",
|
|
@@ -150,12 +149,10 @@ export const COMMAND_DESCRIPTIONS: Record<string, string> = {
|
|
|
150
149
|
"unipi:memory-forget": "Delete a memory by title",
|
|
151
150
|
"unipi:global-memory-list": "List all memories across all projects",
|
|
152
151
|
|
|
153
|
-
"unipi:btw": "
|
|
154
|
-
|
|
155
|
-
"unipi:
|
|
156
|
-
"unipi:
|
|
157
|
-
"unipi:btw-inject": "Inject the BTW thread into the main agent",
|
|
158
|
-
"unipi:btw-summarize": "Summarize and inject the BTW thread",
|
|
152
|
+
"unipi:btw": "Ask a side question in an inline panel (read-only)",
|
|
153
|
+
|
|
154
|
+
"unipi:subagents": "Open the subagent panel (also ↓ from an empty input)",
|
|
155
|
+
"unipi:agents": "Manage subagent profiles — create, edit, copy, delete custom agents",
|
|
159
156
|
|
|
160
157
|
"unipi:mcp-status": "Show MCP server status",
|
|
161
158
|
|
|
@@ -175,12 +172,15 @@ export const COMMAND_DESCRIPTIONS: Record<string, string> = {
|
|
|
175
172
|
"unipi:info": "Show system information",
|
|
176
173
|
|
|
177
174
|
|
|
178
|
-
"unipi:
|
|
179
|
-
"unipi:compact":
|
|
175
|
+
"unipi:compact-vcc": "Lossless compaction now — no model call (keep:N)",
|
|
176
|
+
"unipi:compact-jev": "Lossless compaction, pruned by jev of what is no longer in force",
|
|
177
|
+
"unipi:compact-by-llm": "Compact now with a model-written summary",
|
|
178
|
+
"unipi:lossless-compact": "(DEPRECATED) Use /unipi:compact-vcc instead",
|
|
179
|
+
"unipi:compact": "(DEPRECATED) Use /unipi:compact-vcc instead",
|
|
180
180
|
"unipi:session-recall": "Search session history, including compacted-away messages",
|
|
181
181
|
"unipi:compact-recall": "(DEPRECATED) Use /unipi:session-recall instead",
|
|
182
|
-
"unipi:compact-stats": "Show compaction
|
|
183
|
-
"unipi:compact-doctor": "
|
|
182
|
+
"unipi:compact-stats": "Show this session's compaction savings",
|
|
183
|
+
"unipi:compact-doctor": "Check compaction settings",
|
|
184
184
|
"unipi:compact-help": "Show compactor command help",
|
|
185
185
|
"unipi:notify-event": "Toggle a notify event without the TUI: <event> <on|off>",
|
|
186
186
|
|
|
@@ -195,9 +195,6 @@ export const COMMAND_DESCRIPTIONS: Record<string, string> = {
|
|
|
195
195
|
"unipi:bg-tasks": "Open the background task manager UI",
|
|
196
196
|
"unipi:model": "Pick a model or Fusion lead+sidekick pair (Devin-style picker)",
|
|
197
197
|
"unipi:fusion-stats": "Estimated Fusion savings (sidekick tokens priced at lead rates)",
|
|
198
|
-
"unipi:subagents-fleet": "Open the subagents fleet view",
|
|
199
|
-
"unipi:subagents-doctor": "Diagnose subagents configuration",
|
|
200
|
-
"unipi:subagents-guide": "Show the subagents usage guide",
|
|
201
198
|
};
|
|
202
199
|
|
|
203
200
|
// ─── Package Display Names ───────────────────────────────────────────
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-unipi/background-tasks",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.4",
|
|
4
4
|
"description": "Background tasks for UniPi — durable shell jobs and delegated background agents with a footer dock",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.ts",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@earendil-works/pi-ai": "^0.87.1",
|
|
13
|
-
"@pi-unipi/core": "3.0.0-alpha.
|
|
13
|
+
"@pi-unipi/core": "3.0.0-alpha.4",
|
|
14
14
|
"turndown": "^7.2.4"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
@@ -27,14 +27,6 @@ export interface BackgroundTasksConfig {
|
|
|
27
27
|
maxFinishedTasks: number;
|
|
28
28
|
/** Output cap in bytes before a task is killed+failed (default 20 MiB). */
|
|
29
29
|
maxOutputBytes: number;
|
|
30
|
-
/** Delegate defaults. */
|
|
31
|
-
delegate: {
|
|
32
|
-
extensionMode: "isolated" | "ambient";
|
|
33
|
-
autoDeliver: "never" | "when_small" | "always";
|
|
34
|
-
maxTurns: number;
|
|
35
|
-
maxToolCalls: number;
|
|
36
|
-
timeoutSeconds: number;
|
|
37
|
-
};
|
|
38
30
|
}
|
|
39
31
|
|
|
40
32
|
export const DEFAULT_CONFIG: BackgroundTasksConfig = {
|
|
@@ -44,13 +36,6 @@ export const DEFAULT_CONFIG: BackgroundTasksConfig = {
|
|
|
44
36
|
defaultTimeoutSeconds: 0,
|
|
45
37
|
maxFinishedTasks: 30,
|
|
46
38
|
maxOutputBytes: 20 * 1024 * 1024,
|
|
47
|
-
delegate: {
|
|
48
|
-
extensionMode: "isolated",
|
|
49
|
-
autoDeliver: "when_small",
|
|
50
|
-
maxTurns: 40,
|
|
51
|
-
maxToolCalls: 120,
|
|
52
|
-
timeoutSeconds: 900,
|
|
53
|
-
},
|
|
54
39
|
};
|
|
55
40
|
|
|
56
41
|
function getGlobalConfigPath(): string {
|
|
@@ -144,32 +129,6 @@ export function validateBackgroundTasksConfig(config: unknown): string[] {
|
|
|
144
129
|
problems.push("maxOutputBytes must be an integer >= 1024");
|
|
145
130
|
}
|
|
146
131
|
}
|
|
147
|
-
if (c.delegate !== undefined) {
|
|
148
|
-
if (typeof c.delegate !== "object" || c.delegate === null) {
|
|
149
|
-
problems.push("delegate must be an object");
|
|
150
|
-
} else {
|
|
151
|
-
const d = c.delegate as Record<string, unknown>;
|
|
152
|
-
if (d.extensionMode !== undefined && d.extensionMode !== "isolated" && d.extensionMode !== "ambient") {
|
|
153
|
-
problems.push('delegate.extensionMode must be "isolated" or "ambient"');
|
|
154
|
-
}
|
|
155
|
-
if (
|
|
156
|
-
d.autoDeliver !== undefined &&
|
|
157
|
-
d.autoDeliver !== "never" &&
|
|
158
|
-
d.autoDeliver !== "when_small" &&
|
|
159
|
-
d.autoDeliver !== "always"
|
|
160
|
-
) {
|
|
161
|
-
problems.push('delegate.autoDeliver must be "never", "when_small", or "always"');
|
|
162
|
-
}
|
|
163
|
-
for (const key of ["maxTurns", "maxToolCalls"] as const) {
|
|
164
|
-
if (d[key] !== undefined && (typeof d[key] !== "number" || !Number.isInteger(d[key]) || (d[key] as number) < 1)) {
|
|
165
|
-
problems.push(`delegate.${key} must be a positive integer`);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
if (d.timeoutSeconds !== undefined && (typeof d.timeoutSeconds !== "number" || !Number.isFinite(d.timeoutSeconds) || (d.timeoutSeconds as number) <= 0)) {
|
|
169
|
-
problems.push("delegate.timeoutSeconds must be a positive number");
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
132
|
return problems;
|
|
174
133
|
}
|
|
175
134
|
|
|
@@ -203,29 +162,6 @@ registerSettings({
|
|
|
203
162
|
{ key: "maxOutputBytes", type: "number", label: "Output cap bytes", min: 1024, description: "Kill+fail a task past this output size" },
|
|
204
163
|
],
|
|
205
164
|
},
|
|
206
|
-
{
|
|
207
|
-
title: "Delegate",
|
|
208
|
-
fields: [
|
|
209
|
-
{
|
|
210
|
-
key: "delegate.extensionMode",
|
|
211
|
-
type: "enum",
|
|
212
|
-
label: "Extension mode",
|
|
213
|
-
options: [
|
|
214
|
-
{ value: "isolated", label: "isolated" },
|
|
215
|
-
{ value: "ambient", label: "ambient (weakens isolation)" },
|
|
216
|
-
],
|
|
217
|
-
},
|
|
218
|
-
{
|
|
219
|
-
key: "delegate.autoDeliver",
|
|
220
|
-
type: "enum",
|
|
221
|
-
label: "Auto deliver",
|
|
222
|
-
options: ["when_small", "always", "never"],
|
|
223
|
-
},
|
|
224
|
-
{ key: "delegate.maxTurns", type: "number", label: "Max turns", min: 1 },
|
|
225
|
-
{ key: "delegate.maxToolCalls", type: "number", label: "Max tool calls", min: 1 },
|
|
226
|
-
{ key: "delegate.timeoutSeconds", type: "number", label: "Timeout s", min: 1 },
|
|
227
|
-
],
|
|
228
|
-
},
|
|
229
165
|
],
|
|
230
166
|
});
|
|
231
167
|
|
|
@@ -278,15 +214,6 @@ export function loadBackgroundTasksConfig(cwd: string): LoadedBackgroundTasksCon
|
|
|
278
214
|
typeof merged.maxOutputBytes === "number" && Number.isInteger(merged.maxOutputBytes) && merged.maxOutputBytes >= 1024
|
|
279
215
|
? merged.maxOutputBytes
|
|
280
216
|
: DEFAULT_CONFIG.maxOutputBytes,
|
|
281
|
-
delegate: {
|
|
282
|
-
...DEFAULT_CONFIG.delegate,
|
|
283
|
-
...merged.delegate,
|
|
284
|
-
extensionMode: merged.delegate?.extensionMode === "ambient" ? "ambient" : "isolated",
|
|
285
|
-
autoDeliver:
|
|
286
|
-
merged.delegate?.autoDeliver === "never" || merged.delegate?.autoDeliver === "always"
|
|
287
|
-
? merged.delegate.autoDeliver
|
|
288
|
-
: "when_small",
|
|
289
|
-
},
|
|
290
217
|
};
|
|
291
218
|
return { config, warnings };
|
|
292
219
|
}
|
|
@@ -18,7 +18,6 @@ import {
|
|
|
18
18
|
type BackgroundTaskExtensionService,
|
|
19
19
|
} from "./extension-api.js";
|
|
20
20
|
import { registerToolsAndCommands } from "./tools.js";
|
|
21
|
-
import { registerDelegateExtension } from "./delegate-extension.js";
|
|
22
21
|
import { setSharedTaskRegistry, clearSharedTaskRegistry } from "./registry-shared.js";
|
|
23
22
|
import { formatDuration, taskDisplayName, type BgTask, type StartTaskOptions } from "./types.js";
|
|
24
23
|
|
|
@@ -205,11 +204,6 @@ export default function backgroundTasksExtension(pi: ExtensionAPI): void {
|
|
|
205
204
|
return result;
|
|
206
205
|
},
|
|
207
206
|
rerunTask: async (task) => {
|
|
208
|
-
if (task.delegate !== undefined) {
|
|
209
|
-
throw new Error(
|
|
210
|
-
"Only shell-command tasks can be rerun from the dock; relaunch this typed workflow through its owning tool.",
|
|
211
|
-
);
|
|
212
|
-
}
|
|
213
207
|
const rerunOptions: StartTaskOptions = {
|
|
214
208
|
name: taskDisplayName(task),
|
|
215
209
|
isAgent: task.isAgent,
|
|
@@ -261,15 +255,6 @@ export default function backgroundTasksExtension(pi: ExtensionAPI): void {
|
|
|
261
255
|
clearFinishedNotices,
|
|
262
256
|
});
|
|
263
257
|
|
|
264
|
-
registerDelegateExtension(pi, {
|
|
265
|
-
startDelegateTask: async (ctx, options) => {
|
|
266
|
-
currentCtx = ctx;
|
|
267
|
-
return registry.startDelegateTask(ctx, options);
|
|
268
|
-
},
|
|
269
|
-
snapshot: (task) => registry.snapshot(task),
|
|
270
|
-
resolveTask: (idOrPrefix) => registry.resolveTask(idOrPrefix),
|
|
271
|
-
});
|
|
272
|
-
|
|
273
258
|
pi.on("session_start", async (_event, ctx) => {
|
|
274
259
|
registry.setShuttingDown(false);
|
|
275
260
|
wakeLineInstalled = false; // pi clears extension widgets on reload/new session
|