Skip to content

feat: agents (persistent saved queries) + graph view#28

Merged
hyperpolymath merged 2 commits into
mainfrom
claude/project-scope-planning-5zoaze
Jul 3, 2026
Merged

feat: agents (persistent saved queries) + graph view#28
hyperpolymath merged 2 commits into
mainfrom
claude/project-scope-planning-5zoaze

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Third of the four roadmap follow-ups (Import/export ✅ → Accessibility+PWA ✅ → Differentiators → Usable canvas). Delivers the two self-contained namesake features. Wiki-link editing moves to the final PR alongside the manual link-creation picker — both are link UX and share reconciliation logic, so they're better designed together (the [[…]] parser itself already landed in #26).

Agents — the feature Nexia is named for

  • core/src/agent.rs: Agent { id, name, query } + a total, whitespace-separated query DSL — bare text (over title+content), title:word, attr:key=value, linksto:<uuid>, ANDed; an empty query matches nothing (a blank agent doesn't "collect everything"). Notebook gains a persisted (serde(default)) agents list with add/remove/run_agent/run_query.
  • wasm bindings for all five ops.
  • UI: an Agents panel in the sidebar (add form + list). Clicking an agent shows only its collected notes, and the collection stays live — every update() re-runs the active agent, so adding a matching note grows it immediately.

Graph view (replaces the "coming soon" placeholder)

  • GraphLayout.res: a pure, deterministic circular layout — static (no animation; friendly to prefers-reduced-motion), coordinates always finite and in-box. SVG render with clickable, keyboard-focusable nodes (role="button") and link edges; new Graph toolbar button. (Force-directed layout is a natural future refinement.)

Verified

  • cargo test — 28 unit tests (incl. the agent DSL + persistence round-trip) plus the property/golden suites.
  • deno task test:ui — 9 tests, incl. a new agents contract across the wasm boundary and graph-layout geometry.
  • deno lint + cargo fmt --check + cargo clippy --features wasm -D warnings clean.
  • E2E (headless Chromium): an agent collects its 2 matching notes and grows to 3 live when a match is added; the graph renders nodes + edges; axe-core still reports 0 serious/critical WCAG 2.2 AA violations with the agents panel present.

Known-red estate governance checks (ReScript-language ban, scorecard staleness) are pre-existing policy on main and out of scope, as in #24/#26/#27.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PAEqVP7Y3bZDhtAaPUTbps


Generated by Claude Code

The two self-contained namesake differentiators. (Wiki-link *editing*
moves to the next PR alongside the manual link-creation picker, where the
link-reconciliation logic belongs; the [[…]] parser landed in #26.)

Agents — the feature Nexia is named for:
- core/src/agent.rs: an Agent { id, name, query } plus a total,
  whitespace-separated query DSL (bare text over title+content,
  title:word, attr:key=value, linksto:<uuid>), ANDed; an empty query
  matches nothing. Notebook gains a persisted (serde-default) agents
  list with add/remove/run_agent/run_query.
- wasm bindings: agents / add_agent / remove_agent / run_agent /
  run_query.
- UI: an Agents panel in the sidebar (add form + list); clicking an
  agent shows only its collected notes, and the collection stays live —
  every update() re-runs the active agent so adding a matching note
  grows it immediately.

Graph view (replaces the "coming soon" placeholder):
- GraphLayout.res: a pure, deterministic circular layout (static — no
  animation, friendly to prefers-reduced-motion; coordinates always
  finite and in-box). SVG render with clickable, keyboard-focusable
  nodes (role=button) and link edges; a new Graph toolbar button.

Verified: cargo test (28 unit incl. agent DSL + persistence; property +
golden suites); deno test:ui (9, incl. new agents contract across the
wasm boundary and graph-layout geometry); deno lint + cargo fmt/clippy
(-D warnings, wasm feature) clean. E2E (headless Chromium): an agent
collects its 2 matching notes and grows to 3 live when a match is added;
the graph renders nodes + edges; axe-core still reports 0 serious/
critical WCAG 2.2 AA violations with the agents panel present.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PAEqVP7Y3bZDhtAaPUTbps
Comment thread ui/src/GraphLayout.res Fixed
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 59 issues detected

Severity Count
🔴 Critical 1
🟠 High 26
🟡 Medium 32

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Issue in boj-build.yml",
    "type": "missing_timeout_minutes",
    "file": "boj-build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in casket-pages.yml",
    "type": "missing_timeout_minutes",
    "file": "casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in casket-pages.yml",
    "type": "missing_timeout_minutes",
    "file": "casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in codeql.yml",
    "type": "missing_timeout_minutes",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in hypatia-scan.yml",
    "type": "missing_timeout_minutes",
    "file": "hypatia-scan.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

Clears the Hypatia code-scanning deprecated_api alert on the new file.
Dict.t and Js.Dict.t are the same underlying dict<'a>, so consumers are
unaffected.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PAEqVP7Y3bZDhtAaPUTbps
@sonarqubecloud

sonarqubecloud Bot commented Jul 3, 2026

Copy link
Copy Markdown

@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 58 issues detected

Severity Count
🔴 Critical 1
🟠 High 25
🟡 Medium 32

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Issue in boj-build.yml",
    "type": "missing_timeout_minutes",
    "file": "boj-build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in casket-pages.yml",
    "type": "missing_timeout_minutes",
    "file": "casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in casket-pages.yml",
    "type": "missing_timeout_minutes",
    "file": "casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in codeql.yml",
    "type": "missing_timeout_minutes",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in hypatia-scan.yml",
    "type": "missing_timeout_minutes",
    "file": "hypatia-scan.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

@hyperpolymath
hyperpolymath marked this pull request as ready for review July 3, 2026 01:52
@hyperpolymath
hyperpolymath merged commit d2d4381 into main Jul 3, 2026
22 of 24 checks passed
@hyperpolymath
hyperpolymath deleted the claude/project-scope-planning-5zoaze branch July 3, 2026 01:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants