Skip to content

Script apps' agents ask the person questions; App Hub to 8512be70 - #190

Merged
ymote merged 1 commit into
mainfrom
feat/script-agents-questions
Sep 30, 2026
Merged

ymote merged 1 commit into
mainfrom
feat/script-agents-questions

Conversation

@ymote

@ymote ymote commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Issue 4 of the "Ask " live-run follow-ups: a script app's agent can ask the person questions. Follows #189 (merged).

What changes

  • App Hub pin to 8512be70 (OctoSense-App-Hub#37): a contained app's agent may keep exactly one octos kernel tool, ask_user_question, and App Hub refuses every other. The store shows "Ask you questions". The pin moves in Cargo.toml, native-apps.json and Cargo.lock, the only lock that pins App Hub (phone and desktop are in the root workspace; the other Cargo.locks in the repo pin no App Hub).
  • One App Hub while Rinx lags. Rinx v1.0.0 (and Rinx main, 4731394) name App Hub e8601b80. So every App Hub crate resolves through the www.github.com alias at the pin, the same way it did before 7fcf40d. setup.py --check --cargo now also requires one source for octosense-app-policy and octosense-app-hub (without the alias, Rinx's catalog would pull a second copy of both). The alias can go once Rinx pins 8512be70. Rinx itself is not touched here.
  • G3. A script app's plain agent.tools names reach its peer's generic_tools only as App Hub's AgentBundle::kernel_tools(), which today is just ask_user_question. Dotted names stay other apps' tools.
  • News keeps ask_user_question: its agent can ask the person about topics or how broad a digest should be. Its questions in the person's lane show in "Ask News" (G11).
  • The first-use sheet says "Ask you questions" for such an agent.
  • ADR 0004 follow-up entry.

Tests

  • End to end, on a real kernel (scenario_tests): the fixture app gets ask_user_question from its manifest through G3, with no test seam (set_generic is gone). The person's-lane question is shown in the "Ask News" panel (app_chat::snapshot, routed:<id>) and answered there (app_chat::answer_option), and the person's turn completes with the answer.
  • script_apps: News loads with generic == ["ask_user_question"]. web_search, shell or read_file in agent.tools refuses the bundle.
  • approvals: the consent sheet's words.

Local checks

  • shell lib (desktop, and mobile-apps with a real kernel): all pass
  • scenario tests (real kernel, --test-threads=1): pass
  • app-peers (real kernel): pass, plus clippy
  • ai-host: pass, plus clippy
  • cargo check --locked for desktop and phone (default and mobile-apps): pass
  • native_apps.py --check, setup.py --check --cargo, tools unittests: pass

🤖 Generated with Claude Code

A script app's agent could not ask the person anything: App Hub offered
contained apps no octos kernel tool. App Hub 8512be70
(OctoSense-App-Hub#37) lets a contained agent keep exactly one,
`ask_user_question` ("Ask you questions" in the store), and refuses
every other kernel tool.

- App Hub pin to 8512be70 (Cargo.toml, native-apps.json, Cargo.lock).
  Rinx v1.0.0 still names App Hub at e8601b80, so every App Hub crate
  resolves through the www host alias at the pin (as before 7fcf40d):
  one App Hub in the graph. `setup.py --check --cargo` now also checks
  app-policy and the hub client have one source. Drop the alias once Rinx
  pins 8512be70.
- G3: a script app's plain `agent.tools` names reach its peer's
  `generic_tools` only as App Hub's `kernel_tools()` (ask_user_question).
- News's manifest keeps `ask_user_question`: its agent can ask the person
  (which topics, how broad a digest) in "Ask News".
- The first-use sheet says "Ask you questions" for such an agent.

Tests: the two-lane scenario's fixture now gets `ask_user_question` from
its manifest through G3 (no test seam), and the person's-lane question is
shown and answered in the "Ask News" panel (G11) on a real kernel; News
loads with it; any other kernel tool refuses the bundle; the consent
sheet's words.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.

1 participant