Skip to content

Mobile: add workflow publishing UI (parity with VSCode) #96

Description

@zo-sol

Summary

The VSCode webview now has a workflow builder, but the mobile app (surfaces/webview, React) has no UI to publish a workflow. Port the same builder to mobile.

What VSCode does today (reference)

In packages/core/src/chat/ui/webview.ts (commit 279b8e6):

  • A Skill / Workflow toggle on the publish form (setPubKind).
  • In workflow mode, the SKILL.md text box is replaced by an owned-skills checklist (pubReqSel); checked skills become the workflow's required skills.
  • On submit it synthesizes type: workflow + requiredSkills: [mints] frontmatter and sends it through the existing publishSkill path.

Scope for mobile

  • Add the skill/workflow toggle + owned-skills checklist to the mobile PublishForm.
  • Same validation as VSCode: require >= 1 selected skill; cap at 16 (MAX_REQUIRED_SKILLS in the agent-workflow-nft contract).
  • Backend already supports it via the publishSkill frontmatter path (env.ts sniffs type: workflow). Note that feat/workflow-publish-ui (Workflow publishing: contract + backend + webview/VSCode/mobile + CLI + MCP tool (#88) #95, not yet on main) also adds explicit kind / requiredSkills message fields; align with that once merged.

Required dependency: exclude workflows from the picker

A workflow cannot require another workflow. The on-chain program rejects a workflows-collection mint passed as a required skill with NotInOfficialCollection. VSCode already filters this using workflowMints on the ownedSkills event (commit 92ddeaa, workflowMintsAmong in skillSource.ts).

Mobile builds its owned-skills list in the localhost server (surfaces/localhost), which does not yet attach workflowMints. That wiring must be added so the mobile picker also excludes owned workflows.

Acceptance

  • Mobile can mint a workflow from selected owned skills.
  • Owned workflows never appear in the required-skills picker.
  • Skill publishing is unchanged.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions