1504 hand-written ranges pointing at workspace members become workspace:^, so pnpm pack substitutes each member's real version at publication: sibling peerDependencies follow the family version instead of being pinned at ^0.0.1, and a reference to a vendored package follows that package's own line. Without this, publishing 0.0.2 ships peer ranges naming a version that does not exist, and 0.0.1-rc.1 does not satisfy ^0.0.1 either. It also retires ranges that had gone stale against the workspace: ^4.0.0-rc.6 for a 4.0.0-rc.7 checkout, ^3.17.0 for schemastery 3.18.0. workspace:* stays where an exact published version is the point, which is how the Landlock entry pins its platform packages. A workspace constraint now requires the protocol, so a new package cannot reintroduce a hand-written range. The same constraint caught packages/boot/cmdline arriving on master without the publishable trio, which this change completes.
guard/ — loop-hygiene guard family
English | 中文
Behavioral guard plugins watch the agent loop for unproductive patterns and enforce per-call budgets. A guard is a self-contained consumer of core services and extension points, not a swappable capability.
| Package | Role | ctx key |
|---|---|---|
repeat-tool-guard/ |
Advisory reminders for repeated tool calls | listens on tool and agent events |
timeout-policy/ |
Arms per-call tool deadlines as deployment policy | registers a tools/execute listener |
Reminders travel as additionalContexts on the tools/post-execute decision and are appended as logged plugin-sourced user/message events (tools); the timeout split across dsh-timeout, capability termination, and this policy layer is recorded in the timeout-library Agent Note.