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

    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