{"_id":"@blackbelt-technology/pi-dashboard-goal-plugin","_rev":"5-069bdc10d79c60341c00ab92482d5068","name":"@blackbelt-technology/pi-dashboard-goal-plugin","dist-tags":{"latest":"0.8.0"},"versions":{"0.5.4":{"name":"@blackbelt-technology/pi-dashboard-goal-plugin","version":"0.5.4","license":"MIT","_id":"@blackbelt-technology/pi-dashboard-goal-plugin@0.5.4","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"dist":{"shasum":"cada8ed75e959cc1c95994843bd1fb89f11785ff","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-dashboard-goal-plugin/-/pi-dashboard-goal-plugin-0.5.4.tgz","fileCount":16,"integrity":"sha512-tsBoX2OnU73n/opTkeiDTtlmOjRqE7A4Nlpa8I3s1Z1kaL+xD+4PYAucGkm2cWXGKuwiLBtNT6bv6KyLop/c1Q==","signatures":[{"sig":"MEUCIQDnARC9vcQ1Y2QQmXn/U1uX6hhtnbdJyE57lYVWuZmdhQIgfK3GHYWswrGdAdA6LhfAlZANXXi8VjxCL7NQ4yz8aCE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34430},"type":"module","exports":{".":{"types":"./src/client/index.tsx","default":"./src/client/index.tsx"},"./bridge":{"types":"./src/bridge/index.ts","default":"./src/bridge/index.ts"},"./client":{"types":"./src/client/index.tsx","default":"./src/client/index.tsx"},"./server":{"types":"./src/server/index.ts","default":"./src/server/index.ts"}},"_npmUser":{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git","directory":"packages/goal-plugin"},"_npmVersion":"10.9.3","description":"Goal-driven autonomous continuation plugin for pi-dashboard — surfaces the @ricoyudog/pi-goal-hermes judge loop as a live session-card chip plus set/pause/resume/clear controls.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@mdi/js":"^7.4.47","@mdi/react":"^1.6.1","@blackbelt-technology/pi-dashboard-shared":"^0.5.4","@blackbelt-technology/dashboard-plugin-runtime":"^0.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","react-dom":"^19.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"pi-dashboard-plugin":{"id":"goal","bridge":"./src/bridge/index.ts","claims":[{"slot":"session-card-badge","component":"GoalChip","predicate":"hasGoal"},{"slot":"session-card-action-bar","component":"GoalControl"},{"tab":"general","slot":"settings-section","component":"GoalPluginSettings"}],"client":"./src/client/index.tsx","server":"./src/server/index.ts","priority":100,"requires":{"piExtensions":["@ricoyudog/pi-goal-hermes"]},"displayName":"Goal","configSchema":"./src/configSchema.json"},"_npmOperationalInternal":{"tmp":"tmp/pi-dashboard-goal-plugin_0.5.4_1781313511871_0.2239743570558228","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@blackbelt-technology/pi-dashboard-goal-plugin","version":"0.6.0","license":"MIT","_id":"@blackbelt-technology/pi-dashboard-goal-plugin@0.6.0","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"dist":{"shasum":"0c02b9e28dfab4701e494c7f4612690d47cd68ae","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-dashboard-goal-plugin/-/pi-dashboard-goal-plugin-0.6.0.tgz","fileCount":38,"integrity":"sha512-bTk37f5kiQwmsrn+rfv2weLERDzTRZiUDqFkzxXFJYYhV0pMTLXxmKS5pKhQu++sTFe0BRzsWsS9HhPVwvrjXg==","signatures":[{"sig":"MEQCIFYeSO13um2W5fAe2+28W35hTPrD+P+8RUQAIw2GdsnRAiAP+PjX2c2ABsuEvnD0mmRt26dFYHX0tqmIn7pPFM0O0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-dashboard-goal-plugin@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":141747},"type":"module","exports":{".":{"types":"./src/client/index.tsx","default":"./src/client/index.tsx"},"./bridge":{"types":"./src/bridge/index.ts","default":"./src/bridge/index.ts"},"./client":{"types":"./src/client/index.tsx","default":"./src/client/index.tsx"},"./server":{"types":"./src/server/index.ts","default":"./src/server/index.ts"}},"gitHead":"70c087ba97d3b7a9997767f7c9c758ac49d998f2","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d7f2c2c-2333-4b3b-b83c-58ce51ae238a"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git","directory":"packages/goal-plugin"},"_npmVersion":"11.12.1","description":"Goal-driven autonomous continuation plugin for pi-dashboard — surfaces the @ricoyudog/pi-goal-hermes judge loop as a live session-card chip plus set/pause/resume/clear controls.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@mdi/js":"^7.4.47","@mdi/react":"^1.6.1","@blackbelt-technology/pi-dashboard-shared":"^0.6.0","@blackbelt-technology/dashboard-plugin-runtime":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","wouter":"^3.9.0","react-dom":"^19.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0"},"peerDependencies":{"react":">=18.0.0","wouter":">=3.0.0","react-dom":">=18.0.0"},"pi-dashboard-plugin":{"id":"goal","bridge":"./src/bridge/index.ts","claims":[{"slot":"session-card-badge","component":"GoalChip","predicate":"hasGoal"},{"slot":"session-card-action-bar","component":"GoalControl"},{"slot":"sidebar-folder-section","component":"FolderGoalsSection"},{"path":"/folder/:encodedCwd/goals","slot":"shell-overlay-route","component":"GoalsBoardClaim"},{"path":"/folder/:encodedCwd/goals/:goalId","slot":"shell-overlay-route","component":"GoalDetailClaim"},{"tab":"general","slot":"settings-section","component":"GoalPluginSettings"}],"client":"./src/client/index.tsx","server":"./src/server/index.ts","priority":100,"requires":{"piExtensions":["@ricoyudog/pi-goal-hermes"]},"displayName":"Goal","i18nCatalog":"catalog","configSchema":"./src/configSchema.json"},"_npmOperationalInternal":{"tmp":"tmp/pi-dashboard-goal-plugin_0.6.0_1784565553808_0.92775581450554","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@blackbelt-technology/pi-dashboard-goal-plugin","version":"0.6.1","license":"MIT","_id":"@blackbelt-technology/pi-dashboard-goal-plugin@0.6.1","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"dist":{"shasum":"98c7bae441692f7f9b2df64351e056c1cb677849","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-dashboard-goal-plugin/-/pi-dashboard-goal-plugin-0.6.1.tgz","fileCount":38,"integrity":"sha512-+SKwSn4JX3pbUhtr0Qak3jhQsWnGuVRe5riwKHy4TLwJU/wvW5ohDYyDEs7mYHihhyKhDJ5BWV/M4NE10NDaFw==","signatures":[{"sig":"MEUCICc9csi4BScwdk3RsFUgZUhSVB7F7YFOmtm4n5j10zFWAiEAuPeks61qTjRbDOrE4aoqjQrZZnSKTahduVOevM380Qg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-dashboard-goal-plugin@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":141747},"type":"module","exports":{".":{"types":"./src/client/index.tsx","default":"./src/client/index.tsx"},"./bridge":{"types":"./src/bridge/index.ts","default":"./src/bridge/index.ts"},"./client":{"types":"./src/client/index.tsx","default":"./src/client/index.tsx"},"./server":{"types":"./src/server/index.ts","default":"./src/server/index.ts"}},"gitHead":"88a0cf3cc7d7c7c4e44eb61df3cceff19ed919ad","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d7f2c2c-2333-4b3b-b83c-58ce51ae238a"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git","directory":"packages/goal-plugin"},"_npmVersion":"11.12.1","description":"Goal-driven autonomous continuation plugin for pi-dashboard — surfaces the @ricoyudog/pi-goal-hermes judge loop as a live session-card chip plus set/pause/resume/clear controls.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@mdi/js":"^7.4.47","@mdi/react":"^1.6.1","@blackbelt-technology/pi-dashboard-shared":"^0.6.1","@blackbelt-technology/dashboard-plugin-runtime":"^0.6.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","wouter":"^3.9.0","react-dom":"^19.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0"},"peerDependencies":{"react":">=18.0.0","wouter":">=3.0.0","react-dom":">=18.0.0"},"pi-dashboard-plugin":{"id":"goal","bridge":"./src/bridge/index.ts","claims":[{"slot":"session-card-badge","component":"GoalChip","predicate":"hasGoal"},{"slot":"session-card-action-bar","component":"GoalControl"},{"slot":"sidebar-folder-section","component":"FolderGoalsSection"},{"path":"/folder/:encodedCwd/goals","slot":"shell-overlay-route","component":"GoalsBoardClaim"},{"path":"/folder/:encodedCwd/goals/:goalId","slot":"shell-overlay-route","component":"GoalDetailClaim"},{"tab":"general","slot":"settings-section","component":"GoalPluginSettings"}],"client":"./src/client/index.tsx","server":"./src/server/index.ts","priority":100,"requires":{"piExtensions":["@ricoyudog/pi-goal-hermes"]},"displayName":"Goal","i18nCatalog":"catalog","configSchema":"./src/configSchema.json"},"_npmOperationalInternal":{"tmp":"tmp/pi-dashboard-goal-plugin_0.6.1_1784571691838_0.29916195356574593","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@blackbelt-technology/pi-dashboard-goal-plugin","version":"0.7.0","license":"MIT","_id":"@blackbelt-technology/pi-dashboard-goal-plugin@0.7.0","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"dist":{"shasum":"8b938fe67d3ad39d145fd2e9291f415be0ecb61b","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-dashboard-goal-plugin/-/pi-dashboard-goal-plugin-0.7.0.tgz","fileCount":38,"integrity":"sha512-m8WgVwMFUz9z8Ur021kwrqzd/nTXIRKk/RbUygO8Nx8oFNWFhhK+dIo7Z5CaQ9osYwH7+W0h5SmypVWKDh5A8Q==","signatures":[{"sig":"MEUCICDHzY+InjUy1gclxxITFPXcDX3GdNkmFmJIaX1iOZXLAiEAyG6AQyAwoUg0IlwC+BNU4bSqxmq+UDfVcaH9wCfXcnk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-dashboard-goal-plugin@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":149355},"type":"module","exports":{".":{"types":"./src/client/index.tsx","default":"./src/client/index.tsx"},"./bridge":{"types":"./src/bridge/index.ts","default":"./src/bridge/index.ts"},"./client":{"types":"./src/client/index.tsx","default":"./src/client/index.tsx"},"./server":{"types":"./src/server/index.ts","default":"./src/server/index.ts"}},"gitHead":"9203d6a89f1b81c516e9351072ee5cb4c6579e0a","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d7f2c2c-2333-4b3b-b83c-58ce51ae238a"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git","directory":"packages/goal-plugin"},"_npmVersion":"12.0.1","description":"Goal-driven autonomous continuation plugin for pi-dashboard — surfaces the @ricoyudog/pi-goal-hermes judge loop as a live session-card chip plus set/pause/resume/clear controls.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@mdi/js":"^7.4.47","@mdi/react":"^1.6.1","@blackbelt-technology/pi-dashboard-shared":"^0.7.0","@blackbelt-technology/dashboard-plugin-runtime":"^0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","wouter":"^3.9.0","react-dom":"^19.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0"},"peerDependencies":{"react":">=18.0.0","wouter":">=3.0.0","react-dom":">=18.0.0"},"pi-dashboard-plugin":{"id":"goal","bridge":"./src/bridge/index.ts","claims":[{"slot":"session-card-badge","component":"GoalChip","predicate":"hasGoal"},{"slot":"session-card-action-bar","component":"GoalControl"},{"slot":"sidebar-folder-section","component":"FolderGoalsSection"},{"path":"/folder/:encodedCwd/goals","slot":"shell-overlay-route","component":"GoalsBoardClaim"},{"path":"/folder/:encodedCwd/goals/:goalId","slot":"shell-overlay-route","component":"GoalDetailClaim"},{"tab":"general","slot":"settings-section","component":"GoalPluginSettings"}],"client":"./src/client/index.tsx","server":"./src/server/index.ts","priority":100,"requires":{"piExtensions":["@ricoyudog/pi-goal-hermes"]},"displayName":"Goal","i18nCatalog":"catalog","configSchema":"./src/configSchema.json"},"_npmOperationalInternal":{"tmp":"tmp/pi-dashboard-goal-plugin_0.7.0_1784899039624_0.9986323231748582","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@blackbelt-technology/pi-dashboard-goal-plugin","version":"0.8.0","description":"Goal-driven autonomous continuation plugin for pi-dashboard — surfaces the @ricoyudog/pi-goal-hermes judge loop as a live session-card chip plus set/pause/resume/clear controls.","license":"MIT","publishConfig":{"access":"public"},"type":"module","repository":{"type":"git","url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","directory":"packages/goal-plugin"},"exports":{".":{"types":"./src/client/index.tsx","default":"./src/client/index.tsx"},"./client":{"types":"./src/client/index.tsx","default":"./src/client/index.tsx"},"./server":{"types":"./src/server/index.ts","default":"./src/server/index.ts"},"./bridge":{"types":"./src/bridge/index.ts","default":"./src/bridge/index.ts"}},"pi-dashboard-plugin":{"id":"goal","displayName":"Goal","i18nCatalog":"catalog","priority":100,"client":"./src/client/index.tsx","server":"./src/server/index.ts","bridge":"./src/bridge/index.ts","configSchema":"./src/configSchema.json","claims":[{"slot":"session-card-badge","component":"GoalChip","predicate":"hasGoal"},{"slot":"session-card-action-bar","component":"GoalControl"},{"slot":"sidebar-folder-section","component":"FolderGoalsSection"},{"slot":"shell-overlay-route","component":"GoalsBoardClaim","path":"/folder/:encodedCwd/goals","depth":2,"parentPath":"/folder/:encodedCwd"},{"slot":"shell-overlay-route","component":"GoalDetailClaim","path":"/folder/:encodedCwd/goals/:goalId","depth":2,"parentPath":"/folder/:encodedCwd/goals"},{"slot":"settings-section","component":"GoalPluginSettings","tab":"general"}],"requires":{"piExtensions":["@ricoyudog/pi-goal-hermes"]}},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","wouter":">=3.0.0"},"dependencies":{"@blackbelt-technology/dashboard-plugin-runtime":"^0.8.0","@blackbelt-technology/pi-dashboard-shared":"^0.8.0","@mdi/js":"^7.4.47","@mdi/react":"^1.6.1"},"devDependencies":{"@types/react":"^19.0.0","@types/react-dom":"^19.0.0","react":"^19.0.0","react-dom":"^19.0.0","wouter":"^3.9.0"},"gitHead":"9373dfa416660a285475febc0383608fe14270b1","_id":"@blackbelt-technology/pi-dashboard-goal-plugin@0.8.0","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","_nodeVersion":"24.19.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-t84+GU2bblVqmiwv8EF+grFZswxf9KGJf6Rw9a0LRj/oG/cKuEx4n+kUSTZ82PTUasQR9ZOIZKHoHvKOjr0sBw==","shasum":"36894c4f5b6f74f000005256fef49667b2e70e6c","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-dashboard-goal-plugin/-/pi-dashboard-goal-plugin-0.8.0.tgz","fileCount":23,"unpackedSize":98253,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-dashboard-goal-plugin@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIERGjmdKhFKSiA8p7MUldJ2/wEjoUr5iKu4k4X1VXCGmAiEAym7HMI/S7wMzeRCsHgosmS4OBnIXMtk7H/bLb7PSU9k="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d7f2c2c-2333-4b3b-b83c-58ce51ae238a"}},"directories":{},"maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-dashboard-goal-plugin_0.8.0_1787745956634_0.3723354029263306"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-13T01:18:31.775Z","modified":"2026-08-26T12:05:57.133Z","0.5.4":"2026-06-13T01:18:32.034Z","0.6.0":"2026-07-20T16:39:13.970Z","0.6.1":"2026-07-20T18:21:32.013Z","0.7.0":"2026-07-24T13:17:19.762Z","0.8.0":"2026-08-26T12:05:56.770Z"},"bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"license":"MIT","homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","repository":{"type":"git","url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","directory":"packages/goal-plugin"},"description":"Goal-driven autonomous continuation plugin for pi-dashboard — surfaces the @ricoyudog/pi-goal-hermes judge loop as a live session-card chip plus set/pause/resume/clear controls.","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"readme":"# pi-dashboard-goal-plugin\n\nSurfaces the [`@ricoyudog/pi-goal-hermes`](https://github.com/ricoyudog/pi-goal-hermes) goal-continuation loop (\"Ralph loop\") in the pi-dashboard: a live session-card chip plus set / pause / resume / clear controls.\n\n## What it does\n\n`@ricoyudog/pi-goal-hermes` is a pi extension that runs an autonomous loop — set a standing goal and a judge model decides \"done or continue\" after every turn, feeding the agent a continuation prompt until the goal is achieved, paused, or a turn budget runs out. The extension owns the loop, the judge model, the `/goal` command, and continuation injection.\n\nThis plugin adds the **dashboard surfaces** the extension's TUI-only UX never reached:\n\n- **GoalChip** (session card): `● Pursuing n/m` · `⏸ Paused · reason` · `✓ Achieved`. Hidden when no goal.\n- **GoalControl** (session card action bar): a \"Set goal\" input when none is set; Pause / Done / Clear when active; Resume / Clear when paused.\n\n## Requirements\n\nThe plugin **requires the `@ricoyudog/pi-goal-hermes` pi extension**. It activates only when that extension is installed (manifest `requires.piExtensions`). Install it into pi:\n\n```bash\npi extension add @ricoyudog/pi-goal-hermes\n```\n\nThe judge **model** and **turn budget** (`maxTurns`, default 20) are configured on the extension, not this plugin.\n\n## How it works\n\n```\n[control]  GoalControl → plugin_action → server → sendToSession(\"/goal …\")\n             → bridge routes slash → extension /goal command → loop runs\n[status]   extension pi-goal-hermes:event → plugin bridge entry\n             → dashboard:plugin-message → plugin_pi_message → server cache\n             → plugin_event broadcast → client store → GoalChip\n```\n\nContinuation injection stays owned by the extension. The main bridge's `enqueueSystemFollowup` primitive is the collision-safe fallback if a plugin ever routes a continuation itself.\n\n## v1 scope\n\n- Setting / controlling a goal works in **dashboard-spawned (headless)** sessions, where the bridge routes `/goal` through the RPC keeper.\n- Typed `/goal` in chat and reliable control in **terminal-hosted** sessions inherit the documented extension-slash-command routing limitation.\n- Continuations are text-only (no image-bearing continuations).\n\nSee change: `add-goal-continuation-plugin`.\n","readmeFilename":"README.md"}