{"protocolVersion":"1.1","implementation":{"name":"openwop-workflow-engine","version":"0.1.0","vendor":"openwop-app"},"hostExtensions":{"featureSurfaces":["host.sample.accessibility","host.sample.advisory-board","host.sample.agent-author","host.sample.agent-knowledge","host.sample.analytics","host.sample.app-builder","host.sample.assistant","host.sample.bi","host.sample.brand","host.sample.cad","host.sample.campaign-brief","host.sample.campaign-connectors","host.sample.campaign-intel","host.sample.campaign-journeys","host.sample.campaign-orchestration","host.sample.cdp","host.sample.cms","host.sample.comments","host.sample.commerce","host.sample.commerce-connect","host.sample.commissions","host.sample.computer-use","host.sample.consent","host.sample.creative-briefs","host.sample.creative-video","host.sample.crm","host.sample.csm","host.sample.dealers","host.sample.destination-sync","host.sample.discovery","host.sample.docs","host.sample.documents","host.sample.email","host.sample.entities","host.sample.forms","host.sample.funnels","host.sample.goals","host.sample.kb","host.sample.kicktodo-accountability","host.sample.kicktodo-commerce","host.sample.kicktodo-community","host.sample.kicktodo-core","host.sample.kicktodo-creator","host.sample.kicktodo-engagement","host.sample.kicktodo-integrations","host.sample.kicktodo-metrics","host.sample.kicktodo-organizations","host.sample.marketplace","host.sample.media","host.sample.notebooks","host.sample.notifications","host.sample.podcasts","host.sample.priority-matrix","host.sample.production","host.sample.profiles","host.sample.promotions","host.sample.prompts","host.sample.recommendations","host.sample.service-desk","host.sample.slides","host.sample.strategy","host.sample.territories","host.sample.tool-output-compaction","host.sample.tutorials","host.sample.walkthroughs","host.sample.webinars","host.sample.whatsapp","host.sample.workflow-author"]},"supportedEnvelopes":["clarification.request","schema.request","schema.response","error","media.image","media.audio","media.file","ui.a2ui-surface"],"schemaVersions":{"runEvent":1,"capabilities":1,"clarification.request":1,"schema.request":1,"schema.response":1,"error":1,"media.image":1,"media.audio":1,"media.file":1,"ui.a2ui-surface":1},"limits":{"clarificationRounds":5,"schemaRounds":3,"envelopesPerTurn":32,"maxNodeExecutions":1000,"maxRunDurationMs":600000,"maxRequestBodyBytes":1048576},"toolHooks":{"supported":true,"prePostEvents":true,"perToolAuthorization":true,"perToolRateLimit":true},"scheduling":{"supported":true,"cron":true,"maxFutureHorizon":"P30D"},"workspace":{"supported":true,"maxFileBytes":65536},"kanban":{"supported":true,"features":["boards","columns","cards","card-move-trigger"]},"uiPlugins":{"supported":true,"isolation":"cross-origin-iframe","surfaces":["artifact-viewer","route","settings-panel","canvas-preview"],"hostApi":["artifact.read","artifact.write","host.toast","host.navigate","host.announce"],"maxEntryBytes":2097152},"dispatch":{"supported":true,"fanOutSupported":true,"fanOutPolicies":["sequential","reject","parallel"],"joinModes":["wait-all"],"onChildFailureModes":["collect","absorb"],"maxFanOut":16,"perItemInput":true},"triggerBridge":{"supported":true,"subscriptionStates":["active","paused","failed","dead-lettered"],"dedup":true,"retryPolicy":{"maxAttempts":3,"backoff":"fixed"},"sources":["queue","webhook","email","form","stream","change"],"ingestion":{"externalSources":["webhook","email","form","stream","change"],"maxBodyBytes":1048576,"verification":["webhook-signature","email-dmarc","form-origin"],"registrationEndpoint":true}},"purposePropagation":{"supported":true,"propagatesOnward":true},"supportedTransports":["rest","sse"],"stream":{"modes":["values","updates","messages","debug"]},"fixtures":["conformance-a2a-task-roundtrip","conformance-agent-channel-dispatch","conformance-agent-identity","conformance-agent-low-confidence","conformance-agent-memory-cross-tenant","conformance-agent-memory-redaction","conformance-agent-memory-roundtrip","conformance-agent-memory-ttl","conformance-agent-pack-export","conformance-agent-pack-handoff-schema-validation","conformance-agent-pack-install","conformance-agent-pack-provenance","conformance-agent-reasoning","conformance-agent-reasoning-streaming","conformance-approval","conformance-cancellable","conformance-cap-breach","conformance-capability-missing","conformance-channel-ttl","conformance-clarification","conformance-configurable-schema","conformance-conversation-capability-negotiation","conformance-conversation-lifecycle","conformance-conversation-replay","conformance-conversation-vs-clarification","conformance-delay","conformance-dispatch-cancellable-child","conformance-dispatch-cross-worker-handoff","conformance-dispatch-cross-worker-handoff-child-a","conformance-dispatch-cross-worker-handoff-child-b","conformance-dispatch-deterministic-fail-child","conformance-dispatch-input-mapping","conformance-dispatch-input-mapping-child","conformance-dispatch-input-mapping-no-default","conformance-dispatch-loop","conformance-dispatch-output-mapping","conformance-dispatch-output-mapping-child","conformance-dispatch-per-worker-override","conformance-envelope-nl-to-format-engaged","conformance-envelope-recovery-applied","conformance-envelope-refusal","conformance-envelope-retry-attempted","conformance-envelope-retry-exhausted","conformance-envelope-truncated","conformance-envelope-truncation-cap-exhaustion","conformance-failure","conformance-idempotent","conformance-identity","conformance-interrupt-auth-required","conformance-interrupt-external-event","conformance-interrupt-parent-child-cancel","conformance-interrupt-parent-child-cancel-child","conformance-interrupt-quorum","conformance-mcp-tool-roundtrip","conformance-message-reducer","conformance-model-capability-insufficient","conformance-multi-agent-confidence-escalation","conformance-multi-agent-handoff","conformance-multi-agent-handoff-child","conformance-multi-node","conformance-noop","conformance-orchestrator-dispatch","conformance-orchestrator-low-confidence","conformance-orchestrator-terminate","conformance-phase4-nondet-tool","conformance-phase4-replay-divergence","conformance-prompt-all-four-kinds","conformance-prompt-end-to-end","conformance-run-duration-breach","conformance-stream-text","conformance-subworkflow-child","conformance-subworkflow-input-mapping","conformance-subworkflow-input-mapping-child","conformance-subworkflow-input-mapping-no-default","conformance-subworkflow-mid-run-mutation","conformance-subworkflow-mid-run-mutation-child","conformance-subworkflow-parent","conformance-version-fold","conformance-wasm-pack-memory-cap-breach","conformance-wasm-pack-roundtrip","openwop-smoke-byok-roundtrip","openwop-smoke-cost-emit"],"demoMode":true,"capabilities":{"auth":{"profiles":[]},"authorization":{"supported":false},"dataResidency":{"supported":true,"regions":["eu","us"]},"secrets":{"supported":true,"scopes":["tenant","user","run"],"resolution":"host-managed"},"connections":{"supported":true,"packsSupported":true},"aiProviders":{"supported":["anthropic","openai","google","minimax"],"byok":["anthropic","openai","google"],"authModes":{"anthropic":["apiKey"],"openai":["apiKey"],"google":["apiKey"]},"selfHosted":[],"policies":{"modes":["disabled","optional","required","restricted"],"scopes":["workspace","project","canvas-type"],"errorCode":"provider_policy_denied"},"toolCalling":{"supported":true,"providers":["anthropic","openai","google"]},"embeddings":{"supported":true},"promptPrefixCache":{"supported":true,"providers":["anthropic"]},"input":{"modalities":["text","image","document","audio"]},"imageGeneration":{"supported":false},"videoGeneration":{"supported":false},"speechSynthesis":"supported","realtimeVoice":{"transcription":"streaming","synthesis":"streaming","turnDetection":"semantic","bargeIn":"supported"},"maxInlineMediaBytes":262144},"selfHostedRunner":{"supported":true,"dispatchKinds":["model"]},"conversationPrimitive":true,"multiPartyConversation":{"supported":true,"maxParticipants":8},"conversationTurnModelProvenance":{"supported":true},"channelPresence":{"supported":false},"i18n":{"supported":true,"defaultLocale":"en","supportedLocales":["en","es","pt-BR","fr"]},"content":{"supported":true,"baseLocale":"en","supportedLocales":["es","pt-BR","fr"]},"interrupts":{"supported":true,"kinds":["approval","clarification","refinement","cancellation","external-event","conversation.start","conversation.exchange","conversation.close"],"profiles":["openwop-interrupt-cascade-cancel","openwop-interrupt-external-event","openwop-interrupt-quorum"]},"interrupt":{"approverRouting":{"supported":true,"refKinds":["group","role"],"audience":true}},"replay":{"supported":true,"modes":["replay"],"fork":false},"restTransport":{"conditionalRunGet":true,"contentEncodings":["zstd","br","gzip"]},"a2uiSurface":{"deltaTransport":true},"feedback":{"supported":true,"targets":["run","event","node"],"signals":["rating","correction","label","flag"]},"agents":{"supported":true,"reasoning":{"verbosity":"full","tokenLimit":512,"streaming":true},"manifestRuntime":{"supported":true,"handoffValidation":true},"roster":{"supported":true,"installScope":"tenant"},"orgChart":{"supported":true,"installScope":"tenant","departmentNesting":true,"responsibilityView":true},"proposals":{"artifactKinds":["agent-pack","workflow-chain-pack","prompt-template","automation"],"duplicationDetection":false,"activation":"direct-rbac"},"goals":{"judge":"verifier","continuation":["schedule","manual"],"requiresBounds":true}},"portability":{"export":true,"import":true,"kinds":["agent","pack","prompt-template","connection-ref","schedule","roster","org-chart"],"dryRun":true},"providerUsage":{"supported":true,"costEstimates":true,"currency":"USD"},"prompts":{"supported":true,"endpointsSupported":true,"mutableLibrary":true,"agentBindings":true,"templateKinds":["system","user","few-shot","schema-hint"],"variableSources":["input","variable","secret","context"],"maxTemplateBytes":65536,"observability":"full"},"workflowChainPacks":{"supported":true,"deferredParameters":{"supported":true},"subChains":{"supported":true,"maxDepth":8},"hostExpansionSeam":true},"envelopes":{"reasoning":{"supported":true,"promptDirective":"advisory"},"tierOneSubsetCompliance":"warn","reliability":{"supported":true,"events":["envelope.retry.attempted","envelope.retry.exhausted","envelope.refusal","envelope.truncated","envelope.recovery.applied","envelope.nlToFormat.engaged"],"maxRetryAttempts":3,"completion":{"distinguishesTruncation":true,"truncationBudgetMultiplier":2}}},"modelCapabilities":{"supported":true,"advertised":["discriminator-enum","function-calling","long-context","reasoning","structured-output","vision-input"],"substitutionSupported":false},"memory":{"supported":false,"attribution":{"supported":true,"emitsWriteEvents":true},"injectionBudget":{"supported":true,"tokenCounter":"chars"}},"conformance":{"mockAgent":false},"webhooks":{"supported":true,"signed":true,"signatureAlgorithms":["v1"],"durable":false},"a2a":{"supported":true,"agentCardUrl":"https://openwop-app-backend-89896419173.us-central1.run.app/.well-known/agent-card.json","streaming":false,"pushNotifications":true,"durableTasks":true},"observability":{"otel":{"namespace":"openwop"},"testSeams":{"otelScrape":true,"debugBundleExport":true}},"runtimeCapabilities":["artifacts.local","audit","observability","secrets"],"hostSurfaces":[{"name":"host.a2a","supported":true,"implementation":"workflow-engine","note":"RFC 0076 §A + RFC 0100. A2A 0.3 JSON-RPC client AND a live server endpoint at POST /v1/host/openwop-app/a2a with DURABLE Tasks — message/send persists the projected A2ATaskState, tasks/get returns live state after disconnect, tasks/resubscribe re-attaches the update stream, and tasks/pushNotificationConfig/set registers an SSRF-guarded push (ADR 0035)."},{"name":"host.aiProviders","supported":true,"implementation":"workflow-engine","note":"BYOK via /v1/host/openwop-app/byok/secrets."},{"name":"host.artifactTypes","supported":true,"implementation":"workflow-engine","note":"ADR 0055 (RFC 0071/0075). Host artifact-type registry — host-native doc.* types with JSON-Schema validation, schemas served at /schemas/artifacts/{id}.schema.json, typed artifact.created emission from feature.documents.nodes. The kind:artifact-type pack tier IS implemented (artifactTypePackLoader registers pack types at boot; RFC 0071 schemaRef + inline schema both accepted)."},{"name":"host.blobStorage","supported":true,"implementation":"in-memory","note":"In-memory tier: presign() returns a synthetic data: URL (select OPENWOP_SURFACE_BLOB=s3 for real SigV4 presigns; the enterprise/auth posture boot guard requires a real backend)."},{"name":"host.cache","supported":true,"implementation":"in-memory"},{"name":"host.canvas","supported":true,"implementation":"workflow-engine","note":"Durable versioned shared-canvas store for vendor.myndhyve.canvas. read/write/create are real (optimistic-concurrency, shallow/deep/replace merge, field projection); crossCanvasInvoke spawns a real child run (depth/cycle guard, awaitTerminal, circuit breaker)."},{"name":"host.chat","supported":true,"implementation":"workflow-engine","note":"Bridges vendor.myndhyve.chat to the demo chat store (the same /v1/host/openwop-app/chat tables the SPA reads). sendMessage/progressCard/updateCard run; the suspend-based gate nodes (phaseInputGate/approvalGate/clarificationGate) run via the ctx.suspend/ctx.interrupt primitive (re-invoke resume, interrupt.md)."},{"name":"host.connectors","supported":true,"implementation":"workflow-engine","note":"ADR 0037. connectorInvoker.invoke(providerId, {context,request}) resolves the acting user’s Connection through the broker + brokered egress (RFC 0093 SSRF + apiHosts pin + connections:use gate + RFC 0079 provenance). Per-provider reach is deploy-gated behind a configured Connection — unconfigured fails closed."},{"name":"host.db.nosql","supported":true,"implementation":"nested-map-document-store","note":"tenant → datasource/collection → doc. Exact-match filters only ($-operators refused); $set/$unset updates. Real impls use MongoDB / DynamoDB / Firestore / CosmosDB."},{"name":"host.db.search","supported":true,"implementation":"naive-bag-of-words","note":"Token-frequency relevance score. Real impls use Elasticsearch / OpenSearch / Meilisearch / Typesense."},{"name":"host.db.sql","supported":true,"implementation":"sqlite-in-memory","note":"better-sqlite3, one in-memory DB per tenant."},{"name":"host.db.vector","supported":true,"implementation":"brute-force-cosine","note":"O(n) cosine over an in-memory Map."},{"name":"host.fs","supported":true,"implementation":"sandboxed-local-fs","note":"Sandboxed under /app/data/host-fs."},{"name":"host.interrupts","supported":true,"implementation":"workflow-engine"},{"name":"host.kanban","supported":true,"implementation":"workflow-engine","note":"Bridges vendor.myndhyve.kanban to the demo kanban store (kanbanService.ts) — boards/cards shared with the builder UI. boardReview/timelinePlan/resourceMonitor are genuinely computed; automation rules persist in-process."},{"name":"host.knowledge","supported":true,"implementation":"workflow-engine","note":"Lexical RAG retrieval (token-frequency over a seeded demo corpus) for vendor.myndhyve.knowledge-tools. Real retrieve-with-citations; lexical not semantic (sample host ships no embedding model)."},{"name":"host.kvStorage","supported":true,"implementation":"in-memory","note":"Demo only. Restarts wipe state."},{"name":"host.launchStudio","supported":true,"implementation":"workflow-engine","note":"Multi-canvas studio backbone for vendor.myndhyve.launch-studio. getStudio returns a seeded demo studio; buildProjectContext/resolveLinkedArtifacts are pure derivations; task dispatch composes ctx.kanban."},{"name":"host.mcp","supported":true,"implementation":"workflow-engine","note":"RFC 0020 (Active). Sample-host MCP server mount at /v1/host/openwop-app/mcp; advertise streamable-http transport. OFF by default — set OPENWOP_MCP_SERVER_ENABLED=true."},{"name":"host.memory","supported":true,"implementation":"in-memory","note":"RFC 0004 read-side (list/get); host writes a run-summary on completion. In-memory tier: restarts wipe state (select OPENWOP_SURFACE_MEMORY=durable to persist)."},{"name":"host.messaging","supported":true,"implementation":"in-memory"},{"name":"host.observability","supported":true,"implementation":"structured-logger","note":"Routes through the workflow-engine logger."},{"name":"host.queue","supported":true,"implementation":"in-memory"},{"name":"host.tableStorage","supported":true,"implementation":"in-memory","note":"Demo only. No indexes; query is O(n)."},{"name":"host.triggers","supported":true,"implementation":"workflow-engine","note":"Trigger entry nodes (webhook/schedule/cron/email/mailhook/rss/form) surface the run-scoped ctx.triggerData payload; runs are started by the RFC 0083 trigger bridge, scheduler, and kanban paths. webhook-respond durably records the reply via ctx.respondToWebhook."},{"name":"host.webResearch","supported":true,"implementation":"workflow-engine","note":"For vendor.myndhyve.web-research. fetchBatch is real (concurrent HTTP fetch + readable-text extraction); search is provider-gated — live when a BYOK secret web-search or OPENWOP_WEBSEARCH_API_KEY is set (Brave-shaped, OPENWOP_WEBSEARCH_BASE_URL override), else an honest demo result; research composes the two."}],"fs":{"supported":true,"sandboxRoot":"/app/data/host-fs","maxFileSizeBytes":52428800},"kvStorage":{"supported":true,"maxKeyBytes":1024,"maxValueBytes":1048576,"maxTtlSeconds":604800,"atomicIncrement":true,"compareAndSwap":true},"tableStorage":{"supported":true,"maxRowsPerTable":100000,"maxColumnsPerRow":128,"indexable":false,"fullTextSearch":false},"queueBus":{"supported":true,"backends":["in-memory"],"deadLetterSupported":true,"stream":{"supported":false,"fromBeginning":false}},"sql":{"supported":true,"transactions":true,"drivers":["sqlite"]},"vectorStore":{"supported":true,"backends":["in-memory"]},"blobStorage":{"supported":true,"presignSupported":true,"maxObjectBytes":52428800},"artifactTypes":{"supported":true,"schemaEndpoint":"/schemas/artifacts","types":[{"artifactTypeId":"app.audit","title":"Quality audit","schemaUrl":"/schemas/artifacts/app.audit.schema.json","export":["json"],"registrationSource":"pack"},{"artifactTypeId":"app.research","title":"Product research","schemaUrl":"/schemas/artifacts/app.research.schema.json","export":["json"],"registrationSource":"pack"},{"artifactTypeId":"brand.kit","title":"Brand Kit","schemaUrl":"/schemas/artifacts/brand.kit.schema.json","export":[],"registrationSource":"pack"},{"artifactTypeId":"campaign-brief.ad-angle","title":"Ad Angle","schemaUrl":"/schemas/artifacts/campaign-brief.ad-angle.schema.json","export":[],"registrationSource":"pack"},{"artifactTypeId":"campaign-brief.hook","title":"Hook Bank Entry","schemaUrl":"/schemas/artifacts/campaign-brief.hook.schema.json","export":[],"registrationSource":"pack"},{"artifactTypeId":"campaign-brief.targeting-pack","title":"Targeting Pack","schemaUrl":"/schemas/artifacts/campaign-brief.targeting-pack.schema.json","export":[],"registrationSource":"pack"},{"artifactTypeId":"campaign-brief.voc-evidence","title":"VOC Evidence","schemaUrl":"/schemas/artifacts/campaign-brief.voc-evidence.schema.json","export":[],"registrationSource":"pack"},{"artifactTypeId":"canvas.app-builder","title":"App Builder","schemaUrl":"/schemas/artifacts/canvas.app-builder.schema.json","export":["json"],"registrationSource":"host"},{"artifactTypeId":"canvas.cad","title":"CAD Model","schemaUrl":"/schemas/artifacts/canvas.cad.schema.json","export":["json","stl","gltf","png"],"registrationSource":"host"},{"artifactTypeId":"canvas.cad.bom","title":"CAD Bill of Materials","schemaUrl":"/schemas/artifacts/canvas.cad.bom.schema.json","export":["json","csv"],"registrationSource":"host"},{"artifactTypeId":"canvas.campaign","title":"Campaign Studio","schemaUrl":"/schemas/artifacts/canvas.campaign.schema.json","export":["json","pdf"],"registrationSource":"host"},{"artifactTypeId":"canvas.drawing","title":"Drawing","schemaUrl":"/schemas/artifacts/canvas.drawing.schema.json","export":["svg","png"],"registrationSource":"host"},{"artifactTypeId":"canvas.slides","title":"Slide Deck","schemaUrl":"/schemas/artifacts/canvas.slides.schema.json","export":["slides","pdf"],"registrationSource":"host"},{"artifactTypeId":"code.execution-result","title":"Code execution result","schemaUrl":"/schemas/artifacts/code.execution-result.schema.json","export":["raw","json"],"registrationSource":"host"},{"artifactTypeId":"doc.board-agenda","title":"Board Meeting Agenda","schemaUrl":"/schemas/artifacts/doc.board-agenda.schema.json","export":["pdf","slides","sheet"],"registrationSource":"host"},{"artifactTypeId":"doc.epic-brief","title":"Epic Brief","schemaUrl":"/schemas/artifacts/doc.epic-brief.schema.json","export":["pdf","slides","sheet"],"registrationSource":"host"},{"artifactTypeId":"doc.markdown","title":"Markdown Document","schemaUrl":"/schemas/artifacts/doc.markdown.schema.json","export":["pdf","slides","sheet"],"registrationSource":"host"},{"artifactTypeId":"doc.one-pager","title":"One-Pager","schemaUrl":"/schemas/artifacts/doc.one-pager.schema.json","export":["pdf","slides"],"registrationSource":"pack"},{"artifactTypeId":"doc.prd","title":"Product Requirements Document","schemaUrl":"/schemas/artifacts/doc.prd.schema.json","export":["pdf","slides","sheet"],"registrationSource":"host"},{"artifactTypeId":"doc.rfp","title":"Request for Proposal","schemaUrl":"/schemas/artifacts/doc.rfp.schema.json","export":["pdf","slides","sheet"],"registrationSource":"host"},{"artifactTypeId":"doc.sow","title":"Statement of Work","schemaUrl":"/schemas/artifacts/doc.sow.schema.json","export":["pdf","slides","sheet"],"registrationSource":"host"},{"artifactTypeId":"interactive.chart","title":"Chart","schemaUrl":"/schemas/artifacts/interactive.chart.schema.json","export":["raw","json"],"registrationSource":"host"},{"artifactTypeId":"interactive.html","title":"Interactive HTML","schemaUrl":"/schemas/artifacts/interactive.html.schema.json","export":["html","raw"],"registrationSource":"host"},{"artifactTypeId":"interactive.mermaid","title":"Mermaid diagram","schemaUrl":"/schemas/artifacts/interactive.mermaid.schema.json","export":["raw","svg"],"registrationSource":"host"},{"artifactTypeId":"interactive.react","title":"Interactive React component","schemaUrl":"/schemas/artifacts/interactive.react.schema.json","export":["raw"],"registrationSource":"host"},{"artifactTypeId":"kicktodo.challenge-plan","title":"KickTodo challenge plan","schemaUrl":"/schemas/artifacts/kicktodo.challenge-plan.schema.json","export":["json"],"registrationSource":"host"},{"artifactTypeId":"kicktodo.completion-certificate","title":"KickTodo completion certificate","schemaUrl":"/schemas/artifacts/kicktodo.completion-certificate.schema.json","export":["json"],"registrationSource":"host"},{"artifactTypeId":"kicktodo.plan-revision","title":"KickTodo plan revision","schemaUrl":"/schemas/artifacts/kicktodo.plan-revision.schema.json","export":["json"],"registrationSource":"host"},{"artifactTypeId":"kicktodo.progress-evidence","title":"KickTodo progress evidence","schemaUrl":"/schemas/artifacts/kicktodo.progress-evidence.schema.json","export":["json"],"registrationSource":"host"},{"artifactTypeId":"production.plan","title":"Production Plan","schemaUrl":"/schemas/artifacts/production.plan.schema.json","export":["markdown","pdf"],"registrationSource":"host"}]},"host.forms":{"contentPacks":true},"cache":{"supported":true,"maxValueBytes":1048576,"maxTtlSeconds":86400},"mcp":{"supported":true,"serverUrls":["/v1/host/openwop-app/mcp"],"serverMount":{"supported":true,"transports":["streamable-http"],"samplingBridge":true,"elicitationBridge":true}},"toolCatalog":{"supported":true,"sources":["mcp"],"compactView":true}},"extensions":{"openwop-app.notes":"This is the openwop reference application sample. Not production-hardened."},"x-host-openwop-workforce":{"tier":"experimental","workforces":{"supported":true,"readOnly":true},"governance":{"policyTags":true,"refusalBoundaries":true,"approvalGates":true},"assurance":{"replay":true,"evals":true,"shadow":false},"eval":{"supported":true,"surface":"host-ext","mode":"live-shadow","suiteId":"openwop-app.evals.invoice-exception"},"autonomyTiers":["review","guided","auto"]},"auth":{"profiles":[]},"authorization":{"supported":false},"dataResidency":{"supported":true,"regions":["eu","us"]},"secrets":{"supported":true,"scopes":["tenant","user","run"],"resolution":"host-managed"},"connections":{"supported":true,"packsSupported":true},"aiProviders":{"supported":["anthropic","openai","google","minimax"],"byok":["anthropic","openai","google"],"authModes":{"anthropic":["apiKey"],"openai":["apiKey"],"google":["apiKey"]},"selfHosted":[],"policies":{"modes":["disabled","optional","required","restricted"],"scopes":["workspace","project","canvas-type"],"errorCode":"provider_policy_denied"},"toolCalling":{"supported":true,"providers":["anthropic","openai","google"]},"embeddings":{"supported":true},"promptPrefixCache":{"supported":true,"providers":["anthropic"]},"input":{"modalities":["text","image","document","audio"]},"imageGeneration":{"supported":false},"videoGeneration":{"supported":false},"speechSynthesis":"supported","realtimeVoice":{"transcription":"streaming","synthesis":"streaming","turnDetection":"semantic","bargeIn":"supported"},"maxInlineMediaBytes":262144},"selfHostedRunner":{"supported":true,"dispatchKinds":["model"]},"conversationPrimitive":true,"multiPartyConversation":{"supported":true,"maxParticipants":8},"conversationTurnModelProvenance":{"supported":true},"channelPresence":{"supported":false},"i18n":{"supported":true,"defaultLocale":"en","supportedLocales":["en","es","pt-BR","fr"]},"content":{"supported":true,"baseLocale":"en","supportedLocales":["es","pt-BR","fr"]},"interrupts":{"supported":true,"kinds":["approval","clarification","refinement","cancellation","external-event","conversation.start","conversation.exchange","conversation.close"],"profiles":["openwop-interrupt-cascade-cancel","openwop-interrupt-external-event","openwop-interrupt-quorum"]},"interrupt":{"approverRouting":{"supported":true,"refKinds":["group","role"],"audience":true}},"replay":{"supported":true,"modes":["replay"],"fork":false},"restTransport":{"conditionalRunGet":true,"contentEncodings":["zstd","br","gzip"]},"a2uiSurface":{"deltaTransport":true},"feedback":{"supported":true,"targets":["run","event","node"],"signals":["rating","correction","label","flag"]},"agents":{"supported":true,"reasoning":{"verbosity":"full","tokenLimit":512,"streaming":true},"manifestRuntime":{"supported":true,"handoffValidation":true},"roster":{"supported":true,"installScope":"tenant"},"orgChart":{"supported":true,"installScope":"tenant","departmentNesting":true,"responsibilityView":true},"proposals":{"artifactKinds":["agent-pack","workflow-chain-pack","prompt-template","automation"],"duplicationDetection":false,"activation":"direct-rbac"},"goals":{"judge":"verifier","continuation":["schedule","manual"],"requiresBounds":true}},"portability":{"export":true,"import":true,"kinds":["agent","pack","prompt-template","connection-ref","schedule","roster","org-chart"],"dryRun":true},"providerUsage":{"supported":true,"costEstimates":true,"currency":"USD"},"prompts":{"supported":true,"endpointsSupported":true,"mutableLibrary":true,"agentBindings":true,"templateKinds":["system","user","few-shot","schema-hint"],"variableSources":["input","variable","secret","context"],"maxTemplateBytes":65536,"observability":"full"},"workflowChainPacks":{"supported":true,"deferredParameters":{"supported":true},"subChains":{"supported":true,"maxDepth":8},"hostExpansionSeam":true},"envelopes":{"reasoning":{"supported":true,"promptDirective":"advisory"},"tierOneSubsetCompliance":"warn","reliability":{"supported":true,"events":["envelope.retry.attempted","envelope.retry.exhausted","envelope.refusal","envelope.truncated","envelope.recovery.applied","envelope.nlToFormat.engaged"],"maxRetryAttempts":3,"completion":{"distinguishesTruncation":true,"truncationBudgetMultiplier":2}}},"modelCapabilities":{"supported":true,"advertised":["discriminator-enum","function-calling","long-context","reasoning","structured-output","vision-input"],"substitutionSupported":false},"memory":{"supported":false,"attribution":{"supported":true,"emitsWriteEvents":true},"injectionBudget":{"supported":true,"tokenCounter":"chars"}},"conformance":{"mockAgent":false},"webhooks":{"supported":true,"signed":true,"signatureAlgorithms":["v1"],"durable":false},"a2a":{"supported":true,"agentCardUrl":"https://openwop-app-backend-89896419173.us-central1.run.app/.well-known/agent-card.json","streaming":false,"pushNotifications":true,"durableTasks":true},"observability":{"otel":{"namespace":"openwop"},"testSeams":{"otelScrape":true,"debugBundleExport":true}},"runtimeCapabilities":["artifacts.local","audit","observability","secrets"],"hostSurfaces":[{"name":"host.a2a","supported":true,"implementation":"workflow-engine","note":"RFC 0076 §A + RFC 0100. A2A 0.3 JSON-RPC client AND a live server endpoint at POST /v1/host/openwop-app/a2a with DURABLE Tasks — message/send persists the projected A2ATaskState, tasks/get returns live state after disconnect, tasks/resubscribe re-attaches the update stream, and tasks/pushNotificationConfig/set registers an SSRF-guarded push (ADR 0035)."},{"name":"host.aiProviders","supported":true,"implementation":"workflow-engine","note":"BYOK via /v1/host/openwop-app/byok/secrets."},{"name":"host.artifactTypes","supported":true,"implementation":"workflow-engine","note":"ADR 0055 (RFC 0071/0075). Host artifact-type registry — host-native doc.* types with JSON-Schema validation, schemas served at /schemas/artifacts/{id}.schema.json, typed artifact.created emission from feature.documents.nodes. The kind:artifact-type pack tier IS implemented (artifactTypePackLoader registers pack types at boot; RFC 0071 schemaRef + inline schema both accepted)."},{"name":"host.blobStorage","supported":true,"implementation":"in-memory","note":"In-memory tier: presign() returns a synthetic data: URL (select OPENWOP_SURFACE_BLOB=s3 for real SigV4 presigns; the enterprise/auth posture boot guard requires a real backend)."},{"name":"host.cache","supported":true,"implementation":"in-memory"},{"name":"host.canvas","supported":true,"implementation":"workflow-engine","note":"Durable versioned shared-canvas store for vendor.myndhyve.canvas. read/write/create are real (optimistic-concurrency, shallow/deep/replace merge, field projection); crossCanvasInvoke spawns a real child run (depth/cycle guard, awaitTerminal, circuit breaker)."},{"name":"host.chat","supported":true,"implementation":"workflow-engine","note":"Bridges vendor.myndhyve.chat to the demo chat store (the same /v1/host/openwop-app/chat tables the SPA reads). sendMessage/progressCard/updateCard run; the suspend-based gate nodes (phaseInputGate/approvalGate/clarificationGate) run via the ctx.suspend/ctx.interrupt primitive (re-invoke resume, interrupt.md)."},{"name":"host.connectors","supported":true,"implementation":"workflow-engine","note":"ADR 0037. connectorInvoker.invoke(providerId, {context,request}) resolves the acting user’s Connection through the broker + brokered egress (RFC 0093 SSRF + apiHosts pin + connections:use gate + RFC 0079 provenance). Per-provider reach is deploy-gated behind a configured Connection — unconfigured fails closed."},{"name":"host.db.nosql","supported":true,"implementation":"nested-map-document-store","note":"tenant → datasource/collection → doc. Exact-match filters only ($-operators refused); $set/$unset updates. Real impls use MongoDB / DynamoDB / Firestore / CosmosDB."},{"name":"host.db.search","supported":true,"implementation":"naive-bag-of-words","note":"Token-frequency relevance score. Real impls use Elasticsearch / OpenSearch / Meilisearch / Typesense."},{"name":"host.db.sql","supported":true,"implementation":"sqlite-in-memory","note":"better-sqlite3, one in-memory DB per tenant."},{"name":"host.db.vector","supported":true,"implementation":"brute-force-cosine","note":"O(n) cosine over an in-memory Map."},{"name":"host.fs","supported":true,"implementation":"sandboxed-local-fs","note":"Sandboxed under /app/data/host-fs."},{"name":"host.interrupts","supported":true,"implementation":"workflow-engine"},{"name":"host.kanban","supported":true,"implementation":"workflow-engine","note":"Bridges vendor.myndhyve.kanban to the demo kanban store (kanbanService.ts) — boards/cards shared with the builder UI. boardReview/timelinePlan/resourceMonitor are genuinely computed; automation rules persist in-process."},{"name":"host.knowledge","supported":true,"implementation":"workflow-engine","note":"Lexical RAG retrieval (token-frequency over a seeded demo corpus) for vendor.myndhyve.knowledge-tools. Real retrieve-with-citations; lexical not semantic (sample host ships no embedding model)."},{"name":"host.kvStorage","supported":true,"implementation":"in-memory","note":"Demo only. Restarts wipe state."},{"name":"host.launchStudio","supported":true,"implementation":"workflow-engine","note":"Multi-canvas studio backbone for vendor.myndhyve.launch-studio. getStudio returns a seeded demo studio; buildProjectContext/resolveLinkedArtifacts are pure derivations; task dispatch composes ctx.kanban."},{"name":"host.mcp","supported":true,"implementation":"workflow-engine","note":"RFC 0020 (Active). Sample-host MCP server mount at /v1/host/openwop-app/mcp; advertise streamable-http transport. OFF by default — set OPENWOP_MCP_SERVER_ENABLED=true."},{"name":"host.memory","supported":true,"implementation":"in-memory","note":"RFC 0004 read-side (list/get); host writes a run-summary on completion. In-memory tier: restarts wipe state (select OPENWOP_SURFACE_MEMORY=durable to persist)."},{"name":"host.messaging","supported":true,"implementation":"in-memory"},{"name":"host.observability","supported":true,"implementation":"structured-logger","note":"Routes through the workflow-engine logger."},{"name":"host.queue","supported":true,"implementation":"in-memory"},{"name":"host.tableStorage","supported":true,"implementation":"in-memory","note":"Demo only. No indexes; query is O(n)."},{"name":"host.triggers","supported":true,"implementation":"workflow-engine","note":"Trigger entry nodes (webhook/schedule/cron/email/mailhook/rss/form) surface the run-scoped ctx.triggerData payload; runs are started by the RFC 0083 trigger bridge, scheduler, and kanban paths. webhook-respond durably records the reply via ctx.respondToWebhook."},{"name":"host.webResearch","supported":true,"implementation":"workflow-engine","note":"For vendor.myndhyve.web-research. fetchBatch is real (concurrent HTTP fetch + readable-text extraction); search is provider-gated — live when a BYOK secret web-search or OPENWOP_WEBSEARCH_API_KEY is set (Brave-shaped, OPENWOP_WEBSEARCH_BASE_URL override), else an honest demo result; research composes the two."}],"fs":{"supported":true,"sandboxRoot":"/app/data/host-fs","maxFileSizeBytes":52428800},"kvStorage":{"supported":true,"maxKeyBytes":1024,"maxValueBytes":1048576,"maxTtlSeconds":604800,"atomicIncrement":true,"compareAndSwap":true},"tableStorage":{"supported":true,"maxRowsPerTable":100000,"maxColumnsPerRow":128,"indexable":false,"fullTextSearch":false},"queueBus":{"supported":true,"backends":["in-memory"],"deadLetterSupported":true,"stream":{"supported":false,"fromBeginning":false}},"sql":{"supported":true,"transactions":true,"drivers":["sqlite"]},"vectorStore":{"supported":true,"backends":["in-memory"]},"blobStorage":{"supported":true,"presignSupported":true,"maxObjectBytes":52428800},"artifactTypes":{"supported":true,"schemaEndpoint":"/schemas/artifacts","types":[{"artifactTypeId":"app.audit","title":"Quality audit","schemaUrl":"/schemas/artifacts/app.audit.schema.json","export":["json"],"registrationSource":"pack"},{"artifactTypeId":"app.research","title":"Product research","schemaUrl":"/schemas/artifacts/app.research.schema.json","export":["json"],"registrationSource":"pack"},{"artifactTypeId":"brand.kit","title":"Brand Kit","schemaUrl":"/schemas/artifacts/brand.kit.schema.json","export":[],"registrationSource":"pack"},{"artifactTypeId":"campaign-brief.ad-angle","title":"Ad Angle","schemaUrl":"/schemas/artifacts/campaign-brief.ad-angle.schema.json","export":[],"registrationSource":"pack"},{"artifactTypeId":"campaign-brief.hook","title":"Hook Bank Entry","schemaUrl":"/schemas/artifacts/campaign-brief.hook.schema.json","export":[],"registrationSource":"pack"},{"artifactTypeId":"campaign-brief.targeting-pack","title":"Targeting Pack","schemaUrl":"/schemas/artifacts/campaign-brief.targeting-pack.schema.json","export":[],"registrationSource":"pack"},{"artifactTypeId":"campaign-brief.voc-evidence","title":"VOC Evidence","schemaUrl":"/schemas/artifacts/campaign-brief.voc-evidence.schema.json","export":[],"registrationSource":"pack"},{"artifactTypeId":"canvas.app-builder","title":"App Builder","schemaUrl":"/schemas/artifacts/canvas.app-builder.schema.json","export":["json"],"registrationSource":"host"},{"artifactTypeId":"canvas.cad","title":"CAD Model","schemaUrl":"/schemas/artifacts/canvas.cad.schema.json","export":["json","stl","gltf","png"],"registrationSource":"host"},{"artifactTypeId":"canvas.cad.bom","title":"CAD Bill of Materials","schemaUrl":"/schemas/artifacts/canvas.cad.bom.schema.json","export":["json","csv"],"registrationSource":"host"},{"artifactTypeId":"canvas.campaign","title":"Campaign Studio","schemaUrl":"/schemas/artifacts/canvas.campaign.schema.json","export":["json","pdf"],"registrationSource":"host"},{"artifactTypeId":"canvas.drawing","title":"Drawing","schemaUrl":"/schemas/artifacts/canvas.drawing.schema.json","export":["svg","png"],"registrationSource":"host"},{"artifactTypeId":"canvas.slides","title":"Slide Deck","schemaUrl":"/schemas/artifacts/canvas.slides.schema.json","export":["slides","pdf"],"registrationSource":"host"},{"artifactTypeId":"code.execution-result","title":"Code execution result","schemaUrl":"/schemas/artifacts/code.execution-result.schema.json","export":["raw","json"],"registrationSource":"host"},{"artifactTypeId":"doc.board-agenda","title":"Board Meeting Agenda","schemaUrl":"/schemas/artifacts/doc.board-agenda.schema.json","export":["pdf","slides","sheet"],"registrationSource":"host"},{"artifactTypeId":"doc.epic-brief","title":"Epic Brief","schemaUrl":"/schemas/artifacts/doc.epic-brief.schema.json","export":["pdf","slides","sheet"],"registrationSource":"host"},{"artifactTypeId":"doc.markdown","title":"Markdown Document","schemaUrl":"/schemas/artifacts/doc.markdown.schema.json","export":["pdf","slides","sheet"],"registrationSource":"host"},{"artifactTypeId":"doc.one-pager","title":"One-Pager","schemaUrl":"/schemas/artifacts/doc.one-pager.schema.json","export":["pdf","slides"],"registrationSource":"pack"},{"artifactTypeId":"doc.prd","title":"Product Requirements Document","schemaUrl":"/schemas/artifacts/doc.prd.schema.json","export":["pdf","slides","sheet"],"registrationSource":"host"},{"artifactTypeId":"doc.rfp","title":"Request for Proposal","schemaUrl":"/schemas/artifacts/doc.rfp.schema.json","export":["pdf","slides","sheet"],"registrationSource":"host"},{"artifactTypeId":"doc.sow","title":"Statement of Work","schemaUrl":"/schemas/artifacts/doc.sow.schema.json","export":["pdf","slides","sheet"],"registrationSource":"host"},{"artifactTypeId":"interactive.chart","title":"Chart","schemaUrl":"/schemas/artifacts/interactive.chart.schema.json","export":["raw","json"],"registrationSource":"host"},{"artifactTypeId":"interactive.html","title":"Interactive HTML","schemaUrl":"/schemas/artifacts/interactive.html.schema.json","export":["html","raw"],"registrationSource":"host"},{"artifactTypeId":"interactive.mermaid","title":"Mermaid diagram","schemaUrl":"/schemas/artifacts/interactive.mermaid.schema.json","export":["raw","svg"],"registrationSource":"host"},{"artifactTypeId":"interactive.react","title":"Interactive React component","schemaUrl":"/schemas/artifacts/interactive.react.schema.json","export":["raw"],"registrationSource":"host"},{"artifactTypeId":"kicktodo.challenge-plan","title":"KickTodo challenge plan","schemaUrl":"/schemas/artifacts/kicktodo.challenge-plan.schema.json","export":["json"],"registrationSource":"host"},{"artifactTypeId":"kicktodo.completion-certificate","title":"KickTodo completion certificate","schemaUrl":"/schemas/artifacts/kicktodo.completion-certificate.schema.json","export":["json"],"registrationSource":"host"},{"artifactTypeId":"kicktodo.plan-revision","title":"KickTodo plan revision","schemaUrl":"/schemas/artifacts/kicktodo.plan-revision.schema.json","export":["json"],"registrationSource":"host"},{"artifactTypeId":"kicktodo.progress-evidence","title":"KickTodo progress evidence","schemaUrl":"/schemas/artifacts/kicktodo.progress-evidence.schema.json","export":["json"],"registrationSource":"host"},{"artifactTypeId":"production.plan","title":"Production Plan","schemaUrl":"/schemas/artifacts/production.plan.schema.json","export":["markdown","pdf"],"registrationSource":"host"}]},"host.forms":{"contentPacks":true},"cache":{"supported":true,"maxValueBytes":1048576,"maxTtlSeconds":86400},"mcp":{"supported":true,"serverUrls":["/v1/host/openwop-app/mcp"],"serverMount":{"supported":true,"transports":["streamable-http"],"samplingBridge":true,"elicitationBridge":true}},"toolCatalog":{"supported":true,"sources":["mcp"],"compactView":true}}