Skip to content

Preserve full open-url smoke workflow in plans and support Harmony inputs #31

Description

@linhay

Summary

While validating a real multi-platform app route, the agent needed to:

  1. rebuild/run the iOS app,
  2. install/launch the Harmony app,
  3. open the same debug deep link on both platforms, and
  4. wait/assert/capture enough evidence for handoff.

TritonKit already exposes pieces of this workflow (xcode run, app open-url, smoke ios, smoke harmony), but the agent-facing plan open-url flow does not currently preserve a complete end-to-end plan when the local server is not already running, and it does not expose Harmony-specific open-url planning inputs.

This made the agent fall back to XcodeBuildMCP for iOS build/run and raw hdc aa start -U for Harmony deep-link launch instead of following one TritonKit plan.

Environment

  • TritonKit CLI: 0.1.16
  • Host: macOS
  • Scenario: real app debug route validation across iOS Simulator and Harmony emulator/device
  • Sensitive app names, bundle ids, routes, and paths are redacted below.

Reproduction

Run an open-url task plan while the Triton server is not running:

triton plan open-url \
  --device <ios-simulator-udid> \
  --url '<private-debug-deeplink>' \
  --text '<expected-text>' \
  --json

Observed shape, shortened:

{
  "ok": false,
  "mode": "bootstrap",
  "goal": "open-url",
  "nextStep": "start-server",
  "steps": [
    {
      "id": "start-server",
      "command": "triton serve --host 127.0.0.1 --port 19421"
    },
    {
      "id": "connect-target",
      "command": "triton xcode run --json"
    },
    {
      "id": "diagnose",
      "command": "triton doctor --host 127.0.0.1 --port 19421 --format json"
    }
  ]
}

The returned plan is useful for bootstrap, but it loses the goal-specific steps the agent still needs after recovery: open the URL, wait/assert text, capture screenshot/evidence, and summarize artifacts.

Also, the schema for plan currently accepts task inputs such as --device, --url, --text, --expected-url, and --evidence, but does not expose Harmony-specific task inputs such as --platform harmony, --bundle, --ability, or --hap. smoke harmony supports some of these, but plan open-url cannot recommend the same Harmony path.

For comparison, the schema already has related primitives:

triton xcode run --jsonl
triton app open-url "example://debug" --device iphone15 --json
triton app open-url --device harmony-a --bundle com.example.app --ability EntryAbility example://debug --json
triton smoke ios --device iphone15 --bundle-id com.example.app --open-url myapp://home --wait-text Ready --json
triton smoke harmony --device harmony-a --bundle com.example.app --ability EntryAbility --open-url example://home --wait-text Ready --screenshot /tmp/smoke.jpeg --evidence /tmp/harmony.tritonevidence --json

Expected behavior

For agent use, triton plan open-url ... --json should either:

  1. return a full staged plan that includes both bootstrap steps and deferred task steps, even when serverReachable == false; or
  2. expose an explicit deferredSteps / blockedSteps / afterRecoverySteps section so the agent can see the full intended workflow without inferring it from prose or schema docs.

For Harmony, plan open-url or an equivalent task plan should accept and return schema-backed steps for:

  • target/device selection,
  • optional HAP install if a HAP path is provided,
  • app launch/open-url via bundle + ability,
  • wait/assert text,
  • screenshot and/or .tritonevidence capture,
  • artifact summary.

A useful output could include commands similar to:

triton app install --device <harmony-device> --hap <debug-signed.hap> --json
triton app open-url --device <harmony-device> --bundle <bundle-id> --ability <ability> '<deeplink>' --json
triton wait --platform harmony --target <target> --text '<expected-text>' --timeout 15 --json
triton screenshot --device <harmony-device> --output <path> --json
triton evidence summary <path.tritonevidence> --json

Why this matters

For real-project route verification, agents often begin from a partially prepared environment. If the plan only reports bootstrap recovery, the model loses the task intent and falls back to other tools or raw platform commands.

A complete staged plan would let agents keep TritonKit as the single orchestrator for:

  • iOS build/run/open-url verification,
  • Harmony install/open-url verification,
  • wait/assert/evidence capture,
  • handoff-friendly artifact summaries.

Suggested classification

Enhancement / agent workflow planning.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions