Merge - #1596
Merged
Merged
Merge#1596
Conversation
Improves mac Hermes wiring UX and reliability by streaming setup/teardown progress from Swift to the web UI, showing in-row work status, and disabling the Hermes toggle while work is in flight. Harness detection now reports whether Hermes is already wired so toggle state reflects local reality. Hermes command execution also adds timeouts and non-blocking gateway restart behavior to avoid hangs during plugin enable/remove.
Introduces a new Advanced section in the Hermes dashboard with negotiator selection and open-negotiations views, plus backend bridge endpoints for listing/creating/updating agents and listing open negotiations. It also fixes device login environment mismatches by centralizing API origin resolution (including INDEX_APP_BASE_URL-derived protocol hosts) and improves device-code redemption errors with endpoint/status details. Hermes plugin version is bumped to 0.39.0 with updated changelog and built dashboard/desktop artifacts.
hermes://open/index-network focuses Desktop and navigates to the plugin page once wiring succeeds.
feat(mac): open Hermes on the Index page after plugin install
An opportunity or conversation link used to float a card over whatever was on screen, leaving the signal it belongs to closed. Both now resume that signal and focus the person inside it, with the floating window kept for the case it was always for: a signal that has left the hub. - services/api: GET /opportunities/:id returns the viewer's intentId, so a client holding only an opportunity id can find the signal that owns it. Universal links from the web carry no intent context, so this has to come from the server. - apps/mac: conversation links read intentId from the thread's provenance; radar people carry the signal they were found for. The menubar's pendingChat becomes pendingFocus, which also opens a profile and sets the radar tab from the opportunity's status. - notify:simulate now records the recipient's signal on the opportunity actor, as the opportunity graph does, so a simulated link is openable.
feat(mac): deep links open the signal that owns them
Introduce a native-backed “advanced” settings tab that lets users switch the mac app between main/dev/local/custom protocol origins. Switching now validates origins, signs out from the current server, updates API/app URLs in UserDefaults, rebuilds the bridge scripts, and reloads the bundled UI. Open-at-login was moved into this advanced pane, and text fields gained commit-on-blur/Enter support for immediate actions.
Replace the native Hermes negotiation loop with the shared @indexnetwork/agent runtime supervised by a Bun sidecar. Hermes now only binds the owner account/conversation and relays model calls and delivery through a loopback bridge, while the negotiator owns state, inbox review, and turn execution in runtime/dist/negotiator.js. This removes the generated personal-agent skill, the native negotiation tools, and the old SQLite state model, updates the dashboard and docs to describe the new execution model, and switches CI to validate the runtime bundle instead of the generated Hermes instructions.
Ensure Discover opens visibly when another Hermes view is covering the workspace pane. The plugin now detects Discover hash/navigation events, opens the Index Network workspace tab when needed, and routes command-palette opens through the same path. Also bumps the Hermes plugin release to 0.41.1 and documents the fix in the changelog.
…play feat(api): add staggered Railway dev intent replay and reset
…tion fix(intents)!: prepare creation once and preserve final edits
refactor(protocol)!: extract standalone discovery
refactor(discovery): separate runtime, artifacts, matching, and prompts
Replace the 5-second polling loops in the hosted negotiation and personal agent flows with Redis-driven intent lifecycle signals. Intent lifecycle events are now published when intents are created, updated, restored through onboarding, or rehydrated with a selected negotiator so hosted agents can rescan immediately after reconnects and state changes.
fix(api): cap dev replay at five paused signals
fix: replace agent and app polling with events
Views missed updates when a change event was lost, and the shared cap of four negotiation database operations is no longer wanted.
fix: restore frontend polling and drop negotiation FIFO cap
GET /intents/:id does not return userId, so the sidecar treated every wake as foreign. Submitted turns now land in one Index session per signal, and Discover always re-opens its workspace tab.
The workspace CLI package is already 0.25.0; the lockfile still listed 0.24.0 optional platform packages.
Hermes is the speaker for @indexnetwork/agent: one think session per signal and one speaker session per match. Drop bind/focus, call_llm, and the sqlite principal row. Bypass Hermes tool-definition caches so inbox and turn tools stay visible.
Hermes no longer binds a private conversation or runs a native negotiator. The plugin now treats Index-platform think/speaker sessions as the agent boundary, while @indexnetwork/agent owns the negotiation state machine, inbox review, and checkpoint logic. This adds the speaker abstraction and sidecar bridge for one think session per intent and one speaker session per opportunity, and removes the legacy personal-agent bind/focus path and old native model bridge. It also updates the runtime flow, session input handling, and the Hermes plugin/package metadata for the 0.42.0 release.
Expose desktop/API hooks to start the Hermes sidecar, show its status, and wake open negotiations waiting on the current owner. Pass the agent system prompt through Hermes speaker turns, treat principal-input waits as a waiting state instead of a tool error, and persist Hermes session metadata so negotiation transcripts show up in Sessions. Also allow localhost app URLs for browser auth and bump @indexnetwork/agent to 0.4.1.
Tie the Hermes negotiator sidecar to the gateway lifecycle: start it only when this machine is the selected Index executor, restart it if the Bun child exits unexpectedly, and shut it down when the gateway exits or selection changes. Also document the new child-process behavior in the Hermes README and changelog.
The 20s heartbeat wrote while idle and could expire during restore. Extend ownership on the writes and long actions that already own the session.
feat(hermes): speak through Index sessions and run negotiator as a child
Introduce a new Bun workspace package, `@indexnetwork/client`, with a typed `IndexClient` for auth/me, negotiations, principal inbox/send, and SSE event streaming with reconnect + catch-up behavior. Add `ApiError`, exported wire/event types, and `wakesHost` helper, plus package docs, license, build/typecheck/test scripts, and client-focused tests. Wire the package into the monorepo workspace and CI lint workflow so `packages/client` runs `check`.
Keep both the action-fenced lease renew() host method and the Hermes complete() inbox runner from #1589. Co-authored-by: Seref Yarar <serefyarar@users.noreply.github.com>
fix(api): fence personal-agent leases on actions, not a timer
Expose a new `listIntents(limit?)` client method for `/api/intents/list`, including exported `IntentStatus` and `IntentSummary` types. The client maps archived intents to `ARCHIVED` status, and the README now documents the eighth available API call.
BREAKING: the API no longer runs an in-process personal agent. `PersonalAgentService` was deleted, and agent state/input publishing moved into `ConversationService` with `AgentConversationError`. Conversation endpoints now treat H2A messaging as external-negotiator-only (`external`/`unavailable`) and return conflicts when no negotiator is selected or the pending question changed. Web, CLI, and plugin text were updated to remove “hosted agent” language, settings now show “None” instead of an Index-hosted negotiator, and package/changelog versions were bumped accordingly.
New intents now publish `intent.created` instead of reusing `intent.updated`. This updates both intent creation adapters and extends the user event typings/docs so agents can detect intents created after they started.
Expose richer `me()` profile data from the client, add the new `intent.created` event to client event parsing, and wake Hermes on that event. Update the client docs and memoization test to match the new identity shape.
Introduce a new `@indexnetwork/agentv2` workspace package and register it in the monorepo. The package adds a stateless two-runtime agent design with `wake` and `negotiate` flows, shared loop/tool/model infrastructure, and typed domain contracts. It also includes a runner layer (cron scheduling, event-driven wake/negotiation handling, snapshot mapping, and CLI start entry) to execute the agent against `@indexnetwork/client`.
Treat `negotiation.turn` as a focused passive path: wake and negotiate only the touched opportunity, skip principal replies and sibling decisions, and avoid duplicate work with per-opportunity tracking. This keeps counterpart turns from pulling an entire intent back into a full wake cycle.
Add a shared `DISCOVERY_MAX_MATCHES` constant and enforce it in candidate ranking. Discovery now always returns the top-scoring opportunities up to that hard cap, even when a higher `options.limit` is passed, which keeps large runs bounded and consistent.
This update rewrites the Dataroom overview to focus on the product story: personal-agent harnesses, community deployments, and developer infrastructure. It swaps the old Edge City stats block for a clearer GTM narrative, adds the new Edge City and Hermes screenshots, and introduces a lightweight CSS checkbox lightbox so readers can inspect images without leaving the page. It also removes the outdated advisor line and continues the document’s emphasis on protocol-driven discovery and live deployment proof.
…/overview-market-section
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.