Commit Graph
9548 Commits
Author SHA1 Message Date
can1357 ee90bca4e6 feat(ai): integrated ark json ast parsing and normalization into the wire schema pipelines
- Adds conversion utilities to detect and parse Ark JSON AST models into wire-compatible schemas.
- Extracted inline JSDoc-style comments appended to object keys inside Ark ASTs to assign descriptions correctly.
- Cascades normalization of property comments down child schemas within the schema processing pipelines.
- Upgrades fallback JSON schema resolution to auto-detect and convert embedded Ark AST maps.
2026-06-18 01:57:23 +02:00
can1357 0386d44fec refactor(ai): replaced abort signal timeouts with clearable fetch timers
- Prevents absolute `AbortSignal.timeout` from cutting off active stream bodies by introducing a clearable pre-response timer.
- Clears the watchdog timer for Bedrock, Gemini, Ollama, and Codex providers once headers are received.
- Restores regular caller abort signaling capability on the combined fetch stream.
- Adds comprehensive fake-timer tests to cover the timeout arming and clearing lifecycle.
2026-06-18 01:57:23 +02:00
can1357 3f304ee5a8 refactor(agent-core): isolated token counting into a new local tokenizer
- Extracted native token counting into a new localized `tokenizer.ts` wrapping `@oh-my-pi/pi-natives`.
- Introduced a lightning-fast byte-length estimation logic for token counting when accurate counting is disabled.
- Diverted token calculations to the faster estimator during test environments and when `PI_TOKENIZER_ACCURATE` is falsy.
- Updated agent base and coding-agent sessions to consume the new localized `countTokens` utility.
2026-06-18 01:57:23 +02:00
can1357 2cd78dbf24 refactor(natives): configured searcher line numbers based on output mode
- Configured searcher line numbers based on whether the output mode is set to content.
- Updated `build_searcher` and `build_searcher_for_params` to accept and set the line number flag.
2026-06-18 01:57:23 +02:00
can1357 17ce678468 fix(coding-agent): handled provider error finish reasons and preserve subprocess failure codes
- Added detection for provider error finish reasons occurring before tool calls to identify fatal messages.
- Prevented subprocess tool execution finalization from resetting a non-zero exit code when yield items exist.
- Ensured a default error message is set in stderr when a subprocess fails after yielding a result.
2026-06-18 01:11:10 +02:00
can1357 5a0c04f7ff fix(ai/providers): deleted the reasoning object on OpenRouter
- Deleted the `reasoning` object on OpenRouter completions requests when using a Kimi model with a forced tool choice.
- Prevented reasoning conflicts with Kimi by dropping `{ reasoning: { enabled: false } }` and completely omitting the parameter instead.
2026-06-18 00:59:56 +02:00
can1357 dc915dfef1 feat(coding-agent/eval): tracked and forwarded session id and working directory
- Added `sessionId` and `cwd` tracking to JS evaluator session instances.
- Updated `acquireSession` in the JS context manager to update existing session identity and directory metadata on reuse.
- Forwarded the current working directory from `executePerCall` and `executeOnSession` callers to the underlying Python kernel tasks.
2026-06-18 00:59:56 +02:00
can1357 6bcba1c730 feat(agent): added transformAssistantMessage hook
- Introduce a `transformAssistantMessage` lifecycle hook to `AgentOptions`, `Agent`, and `AgentLoopConfig`.
- Invoke the hook on finalized assistant messages within the agent streaming loop prior to context updates, UI emission, and tool dispatch.
- Enable mutating the text content and tool-call arguments of assistant messages in place during execution.
2026-06-18 00:59:56 +02:00
can1357 7c295faa52 feat: added native support for ArkType schemas alongside Zod
- Added native support for parsing, normalized validation, and serialization of ArkType schemas throughout the agent pipeline.
- Implemented pruning of unconstrained union branches and normalization helpers to handle unrepresentable strict-mode branches.
- Patched ArkType's schema package to preserve declared object key order during serialization.
- Integrated ArkType schemas into `agent-loop` and migrated coding agent tool parameters to ArkType format.
2026-06-18 00:59:56 +02:00
can1357 92855e3daa refactor(coding-agent/web): derived search provider order and labels from common options
- Derived the `SEARCH_PROVIDER_ORDER`, `SEARCH_PROVIDER_PREFERENCES`, and `SEARCH_PROVIDER_LABELS` metadata dynamically from a single `SEARCH_PROVIDER_OPTIONS` source of truth.
- Reprioritized the default search provider sequence, shifting higher-order choices like Perplexity, Gemini, and Anthropic ahead of Tavily and Brave.
- Updated documentation to reflect the new search provider evaluation order.
2026-06-18 00:59:55 +02:00
can1357 e92db73ec6 feat(coding-agent/tools): added explicit ArkType schema descriptions to agent tools
- Added explicit ArkType schema descriptions across all coding agent tool definitions.
- Updated schema definitions in autoresearch and commit tools with descriptive wrappers.
- Documented tool schema enhancements in the packages/coding-agent CHANGELOG.
2026-06-18 00:59:55 +02:00
can1357 a050474af7 feat: migrated validation schemas and tool definitions from Zod to ArkType
- Migrated all wire protocol, schema definitions, and tools validation from Zod to ArkType across multiple packages.
- Updated extension runtimes, custom tools loader, and TypeBox compatibility shim to expose and use ArkType instances.
- Added a comprehensive ArkType migration guide, validation parity tests, and helper utilities.
- Removed redundant PDF asset routing and parsing implementations from the read tool.
2026-06-18 00:59:53 +02:00
can1357 ead63d2440 feat(coding-agent/prompts): added a constraint to use box-drawing characters
- Added a constraint to use box-drawing characters (U+2500) instead of ASCII rules for visual separators in terminal prose.
2026-06-17 23:45:47 +02:00
can1357 8778554426 ux(hashline): improved unseen lines error message with specific read instruction
- Clarified the message instructing users or models on how to handle unseen lines.
- Added specific instructions recommending a ranged read to bypass summarization and mint a fresh tag.
2026-06-17 23:45:47 +02:00
can1357 d4317d3d20 feat(ai): consolidated OpenAI-family streaming and add OpenRouter API support
This change introduces a new `openrouter` API type and extensively refactors OpenAI-family streaming providers, centralizing shared logic and improving robustness.

Key changes include:
- **Unified OpenAI-family Logic:** Consolidated core utilities, compat resolution, request shaping, and stream processing into `openai-shared.ts`, reducing duplication across `openai-completions`, `openai-responses`, and `openai-codex-responses`.
- **OpenRouter API Type:** Introduced a dedicated `openrouter` API type with dual-surface compatibility, allowing it to dispatch requests as either OpenAI Chat Completions or Responses.
- **Enhanced Provider Integration:**
    - Improved Perplexity search to leverage shared OpenAI streaming transports, including API-key fallback to OpenRouter and support for Perplexity's Responses API.
    - Integrated xAI-specific logic directly into the shared `stream.ts` dispatch, removing the dedicated `xai-responses` provider.
    - Refined credential parsing for Google Gemini CLI and handling of Azure deployment names.
- **Robustness & Consistency:** Improved error handling for Codex, standardized output token parameter resolution, and ensured consistent application of reasoning suppression across all Chat Completions dialects.
- **New Documentation:** Added `provider-endpoint-constraints.md` to detail endpoint-specific behaviors and quirks for various providers.
- **Telemetry & Debugging:** Extended telemetry propagation to advisor calls and overflow compaction tasks. Improved debugging for Codex WebSocket failures and stream error messages.
- **Tooling & Security:** Updated browser stealth scripts to prevent detection and added a new `ts-no-inline-cast-access` TTSR rule.
2026-06-17 21:36:48 +02:00
can1357 eb67863e75 feat(coding-agent/tools): secured browser stealth scripts against detection
- Bound native Reflect methods to local variables in the browser launch script to prevent detection.
- Updated stealth injection scripts to use the bound Reflect methods instead of global Reflect calls.
- Fixed a type assertion issue in the AgentSession tool proxy.
2026-06-17 20:59:20 +02:00
can1357 adaa032333 style(coding-agent/mcp): reformatted MCP render functions for multiline callback formatting
- Reflowed `renderMCPCall` and `renderMCPResult` `WidthAwareText` calls over multiline formatting only.
2026-06-17 20:42:46 +02:00
can1357 ee41822c27 feat(coding-agent/discovery): added ts-no-inline-cast-access rule to built-in discovery rules
- Added a new builtin rule definition file, `ts-no-inline-cast-access.md`, with AST patterns that flag inline cast member access and usage guidance.
- Registered the new rule in `src/discovery/builtin-rules/index.ts` so it is included in the built-in TypeScript rule set.
- Updated `ts-no-any.md` to recommend schema parsing at trust boundaries and clarified when to choose schema parsing, guards, or unchecked casts.
2026-06-17 20:42:39 +02:00
can1357 30229b97c4 feat(cli): added TTSR CLI command with list and test execution modes
- Added a top-level `ttsr` CLI command with `list` and `test` actions.
- Added snippet input handling for inline text, `--file` path, and stdin via `--file -`.
- Added test-mode context inference and result output for matched and unmatched rules.
- Added CLI tests for source inference, explicit source overrides, JSON output, and list mode.
2026-06-17 20:42:19 +02:00
can1357 c81adde1f1 fix(coding-agent/mcp): made MCP rendering adapt to available content width
- Wrapped MCP call and result renderers in WidthAwareText so formatting can use runtime content width.
- Computed inline argument preview budget from the available content width instead of a fixed 70-character cap.
- Updated raw text truncation in MCP results to target the measured content width while preserving expand hints and warnings.
2026-06-17 19:16:12 +02:00
can1357 3588fd30f2 feat(coding-agent/tui): adjusted tool output rendering to use terminal content width
- Introduced a WidthAwareText component that formatted fallback content during render using the computed content width.
- Updated ToolExecutionComponent to use WidthAwareText and invalidate cached text instead of a fixed-width Text path.
- Reworked generic tool output formatting to derive inline and output truncation budgets from terminal width rather than hard-coded 70/80 columns.
2026-06-17 19:14:28 +02:00
can1357 020dd5f821 feat(coding-agent/tools): added PDF embedded-image read support to the read tool
- Added PDF member read syntax (`doc.pdf:<member>`) and trailing-colon listing.
- Added asset-read handling to serve extracted PDF images as inline image content.
- Added PDF image extraction caching keyed by size and mtime with marker files for retries.
- Added basename validation that rejects unknown/traversal-like PDF members and shows available names.
2026-06-17 17:20:09 +02:00
can1357 7251ca16d4 test(coding-agent): added OpenAI key initialization in context test setup
- Added initialization of an OpenAI runtime API key in the context consolidation test setup.
2026-06-17 15:26:11 +02:00
can1357 7e87709d22 chore: bump version to 16.0.5 2026-06-17 15:11:23 +02:00
can1357 fa1c9b07f9 Merge remote-tracking branch 'origin/farm/910d6380/github-copilot-business-endpoint' 2026-06-17 15:10:26 +02:00
can1357 9f16ca4797 feat(tui): enabled tight layout mode with optional 1-char padding reduction
- Added new `tui.tight` setting with default `false` and documented behavior.
- Added global tight-mode APIs and `setIgnoreTight` propagation across Box, Text, and Markdown.
- Handled `tui.tight` updates to refresh UI borders and trigger rerendering.
- Updated key message components to ignore tight mode selectively and preserve intended spacing.
2026-06-17 15:09:55 +02:00
roboomp 19980b8ed5 fix(auth): preserved copilot refresh endpoint
Persisted the GitHub Copilot apiEndpoint when usage-driven OAuth refresh writes the refreshed credential row.

Added coverage for Business endpoint preservation through the credential-health refresh path.

Fixes #2876
2026-06-17 13:05:07 +00:00
can1357 4678c80cd8 fix(tui): fixed inline image transmit replay for full paint
- Adjusted image budget IDs to use a shared 24-bit seed and wrap safely so new budgets no longer collide.
- Added transmit-state reset and changed image output ordering so full paints can replay image data after terminal clears.
- Updated image and protocol tests to match the new wrapped-id behavior and cursor-save/restore-wrapped transmit sequences.
2026-06-17 15:03:32 +02:00
roboomp 13b2b55221 fix(auth): routed copilot business endpoint
Stored GitHub Copilot plan-specific API endpoints discovered during OAuth login and propagated them through structured credentials, model discovery, usage/probe metadata, and request base URL resolution.

Added regression coverage for Business endpoint discovery, serialization, dynamic model discovery, and chat/responses routing.

Fixes #2876
2026-06-17 12:47:19 +00:00
can1357 0075014fe9 fix(tui): used cursor save/restore for direct image placement
- Added cursor save/restore escape handling around direct image emission.
- Replaced the previous up-and-down cursor movement sequence with restore logic to keep renderer output positioned correctly.
- Ensured direct image replay path no longer depends on moving back down after placement to align the cursor.
2026-06-17 13:54:48 +02:00
can1357 d5b24f548c fix: oops 2026-06-17 13:53:07 +02:00
can1357 19b5479aca chore: update changelogs 2026-06-17 13:51:39 +02:00
can1357 1d01ab02e6 Merge remote-tracking branch 'origin/farm/75254114/guard-mnemopi-extraction' 2026-06-17 13:50:51 +02:00
can1357 34dcf80119 Merge remote-tracking branch 'origin/farm/558a052d/cap-sleep-consolidation-episodes' 2026-06-17 13:50:33 +02:00
can1357 401effc940 fix: removed redundant antigravity preamble instructions
- Removed ANTIGRAVITY_NO_PREAMBLE_INSTRUCTION from the shared Gemini header constants.
- Updated Gemini CLI and web search request builders to prepend only ANTIGRAVITY_SYSTEM_INSTRUCTION before existing system parts.
- Adjusted the Gemini CLI alignment test to stop asserting the removed anti-preamble prompt lines.
2026-06-17 13:50:20 +02:00
can1357 0b884ae9c8 feat(catalog): enabled budget-aware Antigravity routing and request envelope tracking
- Enabled Antigravity request envelopes to include requestId/labels and per-attempt responseId state.
- Enabled budget transport to send `thinkingBudget` and capped `maxOutputTokens` 65_536 for Gemini calls.
- Added budget-aware model profiles for Gemini flash/pro variants and updated effort routing expectations.
- Refreshed variant collapse to separate Gemini and Antigravity tables and heal stale snapshots.
2026-06-17 13:47:40 +02:00
can1357 af6e83a651 fix(coding-agent): replaced JSON string equality checks with deep equality
- Changed provider delta input comparisons in `buildResponsesDeltaInput` to use `Bun.deepEquals` instead of stringified JSON checks.
- Updated session message diffing to return early on length changes and compare normalized entries with deep equality.
- Replaced JSON-string assertions in the issue-966 repro test with `Bun.deepEquals` for stable equality checks.
2026-06-17 13:45:11 +02:00
can1357 0d9ec354e7 fix: fixed Gemini thinking-loop handling across streaming dispatch paths
- Added Gemini thinking-loop detection helpers for near-duplicate and verbatim output checks.
- Wrapped `stream`, `streamPiNative`, and `streamSimple` dispatches with the loop guard.
- Emitted retryable empty-content loop errors and stopped completion events on loop hits.
- Added `enableGeminiThinkingLoopGuard` options for OpenAI compatibility with Gemini defaults and overrides.
2026-06-17 13:44:33 +02:00
roboomp 0f2e58915c fix(mnemopi): preserved capped sleep rows
- Split over-limit sleep_consolidation source groups into multiple capped episodes.\n- Added regression coverage that every claimed working-memory id lands in an episode.\n\nFixes #2869
2026-06-17 11:22:50 +00:00
can1357 54d212ec33 feat(coding-agent): added advisor immune-turn window for concern/blocker interruptions
- Tracked completed primary turns in `AgentSession` and started an immune-turn window after each interrupting advisor steer.
- Routed follow-on `concern`/`blocker` notes to the aside channel while the immune window is active, while preserving prior auto-resume-suppressed handling.
- Added the `advisor.immuneTurns` setting and tests for immune-turn detection and delivery-channel decisions.
2026-06-17 13:21:47 +02:00
can1357 e4a87fa3ce feat(coding-agent): added matplotlib rendering and image persistence across session reload
- Added Matplotlib figure PNG rendering and display tracking in Python runner to emit PNG output immediately when figures are displayed via display(fig).
- Extended session persistence to externalize oversized image payloads in both content and details.images, enabling tool result images to survive session reload.
- Enhanced session loader to resolve image data payloads and blob references across content and details.images during session reconstruction.
- Added image cache invalidation in TUI image component when image protocol, cell dimensions, or Kitty Unicode placeholder mode changes.
- Added comprehensive test coverage for Matplotlib display, image persistence across reload, and TUI image rendering with protocol and dimension changes.
2026-06-17 13:19:28 +02:00
roboomp aebd89d165 test(catalog): fixed fetcher input type
Replaced the unavailable RequestInfo alias with the concrete fetch input union used by the catalog FetchImpl contract so bun check passes.
2026-06-17 11:11:34 +00:00
roboomp 3c2acc0643 style: bun run fix 2026-06-17 11:07:54 +00:00
roboomp 7422161a67 fix(mnemopi): capped sleep consolidation episodes
- Added a configurable maxEpisodeChars cap for sleep_consolidation episodic rows.\n- Marked truncated sleep summaries in metadata before extraction, graph ingest, and embedding scheduling.\n- Covered oversized transcript consolidation with a regression test.\n\nFixes #2869
2026-06-17 11:06:39 +00:00
roboomp b02a675f4f style: bun run fix 2026-06-17 11:04:36 +00:00
roboomp 0951230538 fix(mnemopi): guarded regex extraction for large transcripts
Added a shared raw-text cap for regex-only entity and pattern fact extraction so multi-megabyte transcripts skip noisy heuristic passes instead of flooding MEMORIA. Added regression coverage for the entity extractor and MEMORIA pattern fact path.\n\nFixes #2868
2026-06-17 11:03:56 +00:00
can1357 6472566818 feat(catalog): added Antigravity budget-aware thinking configuration
- Added `effortBudgets` to `ThinkingConfig` and configured Antigravity Gemini variants to use budget mode with per-effort token maps.
- Updated `mapOptionsForApi` to resolve thinking budget from request options, then model `effortBudgets`, then the provider default ladder.
- Adjusted Antigravity user-agent metadata and introduced wire profiles with IDs to support routed-model request mapping.
2026-06-17 12:53:13 +02:00
can1357 78ce784fe2 Merge remote-tracking branch 'origin/farm/5a07a682/fix-chat-image-rendering' 2026-06-17 12:48:55 +02:00
can1357 003de8c0e1 fix(coding-agent): fixed web search fallback and settings section registration
- Updated `executeSearch` to read `providers.antigravityEndpoint` once and catch uninitialized-settings errors, so web search fallback no longer aborts before any provider runs.
- Added missing `Vision` and `Git` entries to `TAB_GROUPS` so those new settings now render in their intended setting-section groups.
- Adjusted context and idle-compaction tests to wait for prompt-in-flight transitions and provide `getContextUsage` for deterministic snapshots during pending turns.
2026-06-17 12:45:32 +02:00
Can BölükandGitHub c750d89ddd Merge pull request #2815 from usr-bin-roygbiv/agent/deadline-max-time
Add max-time deadline support
2026-06-17 12:45:23 +02:00