From f0562d660f0379e917aba486865966a6c3ba349d Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Thu, 7 May 2026 19:04:07 +0100 Subject: [PATCH 1/2] docs: update CHANGELOG.md for v0.2.1 through v0.5.0 Added missing entries for 7 releases (v0.2.1, v0.2.2, v0.2.3, v0.3.0, v0.4.0, v0.4.1, v0.4.2) and prepared v0.5.0 section with all changes since v0.4.2. Key additions documented: - PDF support, MCP integration, K8s deployment (v0.2.1) - Excel XLSX module, M365 MCP (v0.3.0) - Configurable plugin limits, skill clarifying questions (v0.5.0) - Cost estimation, actionable error messages (v0.5.0) - PPTX shape ID fix, native module validation fix (v0.5.0) Signed-off-by: Simon Davies --- CHANGELOG.md | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 60c4fd6..76cd84f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,92 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +## [v0.5.0] - 2026-05-07 + +### Added + +- **Estimated cost in token display** — Per-request and session-level cost estimates based on model list pricing (Claude, OpenAI, Gemini). Shows cache savings breakdown. New `getModelPricing()` and `estimateCost()` exports for reuse (#114) +- **Actionable limit error messages** — Every plugin error about a breached configurable limit now tells the LLM which config field to increase via `manage_plugin` (21 messages across fs-read, fs-write, fetch) (#112) +- **Configurable plugin limits** — Previously hardcoded ceilings (per-call chunk sizes, rate limits, session budgets, etc.) are now user-configurable with no artificial maximums. Includes `maxReadChunkKb`, `maxListResults`, `maxWriteChunkKb`, `maxRedirects`, `maxJsonResponseBytes`, `maxTextResponseBytes` and more (#106) +- **Clarifying questions for skills** — pptx-expert, pdf-expert, xlsx-expert skills now include structured "Clarifying Questions" sections that tell the LLM what to ask when details are missing (#110) +- **Cache write token tracking** — `cacheWriteTokens` from the SDK is now accumulated in session state for accurate cost calculation (#114) + +### Fixed + +- **ha:pdf import validation failure** — Native module resolution loop broke early when a transitive dependency (e.g. `ha:ziplib`) had no JS source, producing a cryptic empty error. Now checks `moduleJsons` and `dtsSources` alongside `sources` before breaking (#111) +- **PPTX shape ID collision on restore** — `restorePresentation()` set the shape ID counter AFTER `createPresentation()`, causing duplicate IDs when shapes were created between the two calls. Counter is now restored FIRST. Includes fallback max-ID scan for legacy serialized data (#113) +- **Plugin config silently clamped** — `safeNumericConfig` from `path-jail.ts` defaults to a 10 MB ceiling. Plugin code that omitted the ceiling arg had values like `maxWriteSizeKb: 20480` silently clamped to 10240 (#106) +- **fetchJSON/fetchText byte counting** — Used `body.length` (UTF-16 code units) instead of `Buffer.byteLength(body, 'utf8')` for the configured byte limit check (#106) + +### Changed + +- **Handler validation guidance** — Stricter handler shape requirements with better error messages; nested helper functions no longer trigger false-positive misnamed-handler errors; `function(` expressions properly skipped in return detection (#105, #101) +- **SDK forward compatibility** — Use SDK `SessionEvent` type for forward compat with copilot-sdk 0.3.0 (#100) + +## [v0.4.2] - 2026-04-29 + +### Added + +- **MSAL M365 server discovery** — Bootstrap MCP server discovery for Microsoft 365 services using MSAL authentication (#97) + +## [v0.4.1] - 2026-04-29 + +### Fixed + +- **Release smoke test** — Removed fragile package size check from post-publish smoke test (#96) + +## [v0.4.0] - 2026-04-29 + +### Fixed + +- **MCP tool discovery flow** — Improved MCP tool discovery and connection lifecycle (#95) +- **Bold slash command detection** — Detect suggested slash commands wrapped in markdown bold formatting (#94) +- **npm package size** — Reduced published package size and hardened post-publish smoke test (#93) + +## [v0.3.0] - 2026-04-28 + +### Added + +- **Excel XLSX module** — Promoted `ha:xlsx` to a builtin module with workbook, sheet, chart, pivot table, and conditional formatting APIs (#86) +- **M365 MCP integration** — Microsoft 365 MCP server support for calendar, email, and Teams (#83) +- **`/plugins` alias** — `/plugins` now works as an alias for `/plugin` (#84) + +### Fixed + +- **Handler edits and MCP gateway** — Improved handler edit flow and MCP gateway module loading (#88) + ### Changed -- **Trusted npm publishing** — Publish workflow now uses OIDC trusted publishing with `--provenance` for release-triggered publishes, eliminating the need for a long-lived `NPM_TOKEN` secret. Manual `workflow_dispatch` publishes fall back to `NPM_TOKEN`. +- **README** — Restructured to be capabilities-first (#87) +- **CI** — Added post-publish smoke test job (#85) + +## [v0.2.3] - 2026-04-23 + +### Fixed + +- **npm install** — Fixed package installation issues (#79) + +## [v0.2.2] - 2026-04-23 + +### Fixed + +- **Publish workflow** — Fixed npm publishing workflow and updated release documentation (#77, #78) + +## [v0.2.1] - 2026-04-23 + +### Added + +- **PDF document support** — Full PDF generation with flow layout, charts, themes, and font embedding via `ha:pdf`, `ha:pdf-charts`, and `ha:doc-core` modules (#51) +- **MCP integration** — Model Context Protocol support for external tool servers with SSE and stdio transports (#57) +- **Kubernetes deployment** — AKS and KIND deployment manifests with Hyperlight DaemonSet and agent pods (#54) +- **Token usage tracking** — Per-request and session-total token counts with cache hit reporting (#58) +- **Trusted npm publishing** — OIDC-based publishing with `--provenance` (#62) +- **Dependabot automation** — Enhanced Dependabot config with auto-approval for patch updates (#20, #45) + +### Fixed + +- **Hyperlight dependency alignment** — Aligned code-validator Hyperlight deps with hyperlight-js to prevent version skew (#64) +- **npm publish** — Fixed publish workflow issues (#76) ## [v0.1.6] - 2026-03-27 @@ -173,6 +256,16 @@ Initial public release. - Path jailing for filesystem plugins - SSRF protection for fetch plugin (DNS + post-connect IP validation) +[v0.5.0]: https://github.com/hyperlight-dev/hyperagent/releases/tag/v0.5.0 +[v0.4.2]: https://github.com/hyperlight-dev/hyperagent/releases/tag/v0.4.2 +[v0.4.1]: https://github.com/hyperlight-dev/hyperagent/releases/tag/v0.4.1 +[v0.4.0]: https://github.com/hyperlight-dev/hyperagent/releases/tag/v0.4.0 +[v0.3.0]: https://github.com/hyperlight-dev/hyperagent/releases/tag/v0.3.0 +[v0.2.3]: https://github.com/hyperlight-dev/hyperagent/releases/tag/v0.2.3 +[v0.2.2]: https://github.com/hyperlight-dev/hyperagent/releases/tag/v0.2.2 +[v0.2.1]: https://github.com/hyperlight-dev/hyperagent/releases/tag/v0.2.1 +[v0.1.6]: https://github.com/hyperlight-dev/hyperagent/releases/tag/v0.1.6 +[v0.1.5]: https://github.com/hyperlight-dev/hyperagent/releases/tag/v0.1.5 [v0.1.4]: https://github.com/hyperlight-dev/hyperagent/releases/tag/v0.1.4 [v0.1.3]: https://github.com/hyperlight-dev/hyperagent/releases/tag/v0.1.3 [v0.1.2]: https://github.com/hyperlight-dev/hyperagent/releases/tag/v0.1.2 From 1f50db60bd1250e60c33143e67aad5deee166637 Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Thu, 7 May 2026 20:24:27 +0100 Subject: [PATCH 2/2] docs: add hexColor XML injection fix to v0.5.0 changelog (#115) Signed-off-by: Simon Davies --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76cd84f..b855695 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Fixed +- **PPTX hex colour XML injection** — `hexColor()` did no validation, allowing non-hex strings (like gradient XML) to be embedded as `srgbClr val` attributes, producing corrupt OOXML that PowerPoint would repair by stripping entire slides. Now validates with `HEX_RE` and throws descriptive errors (#115) - **ha:pdf import validation failure** — Native module resolution loop broke early when a transitive dependency (e.g. `ha:ziplib`) had no JS source, producing a cryptic empty error. Now checks `moduleJsons` and `dtsSources` alongside `sources` before breaking (#111) - **PPTX shape ID collision on restore** — `restorePresentation()` set the shape ID counter AFTER `createPresentation()`, causing duplicate IDs when shapes were created between the two calls. Counter is now restored FIRST. Includes fallback max-ID scan for legacy serialized data (#113) - **Plugin config silently clamped** — `safeNumericConfig` from `path-jail.ts` defaults to a 10 MB ceiling. Plugin code that omitted the ceiling arg had values like `maxWriteSizeKb: 20480` silently clamped to 10240 (#106)