Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 0 additions & 17 deletions .changeset/ask-user-tool.md

This file was deleted.

20 changes: 0 additions & 20 deletions .changeset/prepare-chunks-export.md

This file was deleted.

20 changes: 0 additions & 20 deletions .changeset/skill-skip-visibility.md

This file was deleted.

38 changes: 38 additions & 0 deletions packages/agent-tools/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,43 @@
# @harpua/agent-tools

## 0.8.1

### Patch Changes

- 693f878: `prepareChunks(markdown, options?)` — export the pure chunk-prep half of
`ingest()` (field report #18): chunk → sanitize → junk-filter → embed-text
formatting, with no embedding or storage. A consumer running its own
embed/upsert path into a separate collection no longer needs a hand-rolled
duplicate of `embeddingInputFor` and the alnum junk floor just to keep chunk
geometry in sync with `ingest()` — they call `prepareChunks` directly and
get the same `{ text, embedText, chunkIndex, startLine, endLine,
headingTrail }` per chunk that `ingest()` embeds and stores.

Options are the same four chunking knobs `ingest()` exposes
(`maxChunkChars`, `minAlnumChars`, `embedHeadingTrail`, `sanitize`), same
defaults, same strict zod validation (unknown keys throw). `ingest()` itself
now composes over `prepareChunks` — the embed/upsert half is all that's left
inline — so there is exactly one code path for chunk geometry and
embedding-input formatting; direct `prepareChunks` callers and `ingest()`
can never drift apart.

- e3728ce: `SkillRegistry` skip visibility (field report #17): a consumer's skill silently
tripped the 16KB `SKILL.md` body cap and cost an hour of misdiagnosis because
the only trace was a generic `onWarn` string — skips were a log, not data.
`rescan()` now also returns `skippedSkills: { name, reason }[]` (one entry per
skip, `reason` the same detail sent to `onWarn` minus the `skills: ` prefix),
so a caller can actually act on a skip instead of grepping console output.
Frontmatter failures — a bad `name` vs. an empty `description` — previously
folded into one generic "no valid frontmatter" reason; the structured
`reason` (never the `onWarn` text, which stays byte-identical for existing
parsers) now folds in the first zod issue so the two are distinguishable.
Separately, a directory with no `SKILL.md` at all (a misnamed `skill.md`?)
now gets a single `onWarn` line instead of skipping silently — it still
isn't counted in `skipped`/`skippedSkills`, since it was never a skill
candidate. `renderSkillMenu` also grows an optional `opts.header` so a
caller can swap the leading TOC line; omitting it reproduces the exact
current bytes, keeping the prompt cache warm for everyone who doesn't need it.

## 0.8.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/agent-tools/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@harpua/agent-tools",
"version": "0.8.0",
"version": "0.8.1",
"license": "MIT",
"description": "Framework-agnostic prebuilt LangChain tools for agents (works with any LangChain/LangGraph app)",
"repository": {
Expand Down
18 changes: 18 additions & 0 deletions packages/langgraph/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
# @harpua/langgraph

## 0.6.2

### Patch Changes

- 1e57a51: `askUserTool(options?)` — a new model-callable tool that lets the model ask
the user one or more typed questions and get answers back as the tool result
mid-turn, instead of emitting a question as prose for a host to reconstruct
after the fact. It joins `requireApproval` as the second member of the
interrupt vocabulary: it pauses with `{ type: "ask_user_request", intro?,
questions }`, and the host resumes with `{ answers: [...] }` (index-aligned
to `questions`) or `{ dismissed: true, reason? }` for headless hosts.

Ships with a flat default question preset (`prompt`, `inputType`:
`select`/`multi_select`/`boolean`/`free_text`, `options?`) that normalizes
`select`/`multi_select` choices (trim, drop empties, dedupe, coerce to
`free_text` below 2 survivors) — or bring your own `questionSchema` (any zod
type extending `{ prompt: string }`) and `serializeAnswers`.

## 0.6.1

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/langgraph/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@harpua/langgraph",
"version": "0.6.1",
"version": "0.6.2",
"license": "MIT",
"description": "Idiomatic NestJS integration for LangGraph: nodes as providers, typed edge lists, checkpointers, streaming, interrupts, and OpenTelemetry tracing",
"repository": {
Expand Down
Loading