Skip to content

Add traverse-starter capability contract, WASM agent, and app manifest #499

Description

@enricopiovesan

Summary

Add the governed capability contract, WASM agent package, and app manifest for the `traverse-starter` reference app so that `App-References` can complete Phase 1 smoke testing and Phase 2 CLI registration against a real runtime.

Why

The `traverse-starter` reference app in `traverse-framework/App-References` demonstrates the full Traverse integration path for downstream app authors. It needs a governed `traverse-starter.process` capability that Traverse can execute, so the Phase 1 smoke test can POST to `/v1/workspaces/{workspace_id}/execute` and receive deterministic structured output — and so Phase 2 `traverse-cli app validate/register` can run against a complete manifest.

Without this, the Phase 1 smoke test exits 1 (no capability to execute), and Phase 2 has no WASM binary to reference.

Definition of Done

  • Capability contract exists at `contracts/examples/traverse-starter/capabilities/process/contract.json`
    • `id`: `traverse-starter.process`
    • Input: `{ "note": string }`
    • Output: `{ "title": string, "tags": string[], "noteType": string, "suggestedNextAction": string, "status": string }`
    • All output fields are deterministic (no model dependency required — derive from input text)
  • WASM agent package at `examples/traverse-starter/process-agent/`
    • `manifest.json` following the `hello-world` pattern (spec `044`)
    • Rust source under `src/agent.rs` — deterministic, no network access, no model dependencies
    • Compiled artifact at `artifacts/process-agent.wasm` with correct FNV1a64 digest
  • App manifest at `apps/traverse-starter/app.manifest.json` — references the above agent package
  • `traverse-cli app validate --manifest apps/traverse-starter/app.manifest.json --json` exits 0
  • Phase 1 smoke: `POST /v1/workspaces/local-default/execute` with `{"capability_id": "traverse-starter.process", "input": {"note": "..."} }` returns all five output fields non-empty
  • Deterministic: same input always produces same output (no AI/model call)

Pattern Reference

Follow the `examples/hello-world/` pattern:

  • `say-hello-agent/manifest.json` → `process-agent/manifest.json`
  • `contracts/examples/hello-world/capabilities/say-hello/contract.json` → `contracts/examples/traverse-starter/capabilities/process/contract.json`

Output Field Semantics (runtime-owned, UI renders only)

Field Type Example
`title` string Short noun-phrase summary of the note
`tags` string[] 1–3 lowercase topic tags
`noteType` string `fleeting` | `permanent` | `project`
`suggestedNextAction` string e.g. `review`, `expand`, `archive`
`status` string `complete`

Governing Specs

  • `033-http-json-api` (approved v1.1.0) — execution endpoint
  • `044-application-bundle-manifest` (approved) — manifest schema
  • `046-public-cli-app-registration` (approved) — validate/register CLI

Unblocks

Metadata

Metadata

Assignees

No one assigned

    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