Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
47b489a
feat: add Foundry hosted Responses adapter
sozercan Jul 9, 2026
94a199a
fix: harden Foundry Responses adapter logging
sozercan Jul 9, 2026
a10546c
fix: clarify Foundry Responses endpoint safety
sozercan Jul 9, 2026
b8f722c
fix: harden Foundry Responses continuations
sozercan Jul 9, 2026
25f0665
fix: fail repeated Foundry Responses tool calls
sozercan Jul 9, 2026
0ea9a42
test: consume AgentKit Foundry brokered fixtures
sozercan Jul 9, 2026
c74bcd6
fix: harden Foundry Responses HTTP session handling
sozercan Jul 9, 2026
1ca8f83
docs: add Foundry Responses Kubernetes smoke skeleton
sozercan Jul 9, 2026
5755bdf
test: cover Foundry Responses platform edge cases
sozercan Jul 9, 2026
90bc61a
fix: guard Foundry Responses startup races
sozercan Jul 9, 2026
e16e3f6
test: cover Foundry Responses write approval decline
sozercan Jul 9, 2026
8fc3a91
fix: avoid duplicate Foundry Responses continuations
sozercan Jul 9, 2026
85d7831
fix: validate Foundry continuation before submit marker
sozercan Jul 9, 2026
7b16185
fix: align Foundry Responses continuation payload
sozercan Jul 9, 2026
d96c0fa
fix: harden Foundry Responses readiness and continuation claims
sozercan Jul 9, 2026
0a16837
fix: include Foundry continuation output status
sozercan Jul 9, 2026
e73058d
docs: show Foundry continuation output status
sozercan Jul 9, 2026
ba99797
fix: fail incomplete Foundry Responses safely
sozercan Jul 9, 2026
7b1239b
fix: require completed Foundry Responses status
sozercan Jul 9, 2026
bb4c69d
docs: add Foundry Responses validation matrix
sozercan Jul 9, 2026
3b9bebc
docs: add Foundry Responses validation helper
sozercan Jul 9, 2026
99f50bf
docs: add Foundry Responses live smoke helper
sozercan Jul 9, 2026
25e313d
fix: omit empty Foundry continuation proof secret
sozercan Jul 9, 2026
8315213
fix: preflight Foundry Responses live manifests before secrets
sozercan Jul 9, 2026
0258876
fix: align Foundry Responses live apply mode
sozercan Jul 9, 2026
1cbd65f
test: add Fibey Foundry Responses verifier
sozercan Jul 9, 2026
29b0daf
fix: require Fibey read request evidence
sozercan Jul 9, 2026
3ea86c5
test: add Foundry Responses live evidence verifier
sozercan Jul 9, 2026
3eca952
fix: repair Foundry Responses evidence summaries
sozercan Jul 9, 2026
3bbc5d1
test: harden Foundry Responses live verification
sozercan Jul 9, 2026
87b6700
fix: update goldmark for vulnerability scan
sozercan Jul 9, 2026
170729a
fix: harden Foundry Responses request handling
sozercan Jul 9, 2026
dbe0757
fix: address Foundry Responses review findings
sozercan Jul 9, 2026
a6b5d9d
fix: address Foundry Responses review feedback
sozercan Jul 13, 2026
11baaa0
fix: harden Foundry turn admission
sozercan Jul 13, 2026
431bf50
fix: tighten Foundry adapter lifecycle
sozercan Jul 13, 2026
d6ae6ea
fix: bound Foundry result retention
sozercan Jul 13, 2026
acd8395
fix: align Foundry smoke lifecycle
sozercan Jul 13, 2026
60dbd16
fix: enforce Foundry terminal ordering
sozercan Jul 13, 2026
144ea6d
fix: serialize Foundry continuation cancellation
sozercan Jul 13, 2026
79cabe4
fix: make Foundry terminal expiry non-retryable
sozercan Jul 13, 2026
07dad1f
fix: harden Foundry response evidence
sozercan Jul 13, 2026
1615b9c
fix: fail closed on lost Foundry turns
sozercan Jul 13, 2026
928ea10
fix: require Foundry continuation proof
sozercan Jul 14, 2026
2512b91
fix: cancel active Foundry requests
sozercan Jul 14, 2026
7c9da8a
fix: keep lost harness turns terminal
sozercan Jul 14, 2026
b1fe290
fix: harden Foundry continuation evidence
sozercan Jul 14, 2026
36de6ff
fix: verify brokered tool completion
sozercan Jul 14, 2026
58e13d8
fix: serialize brokered tool delivery
sozercan Jul 14, 2026
1227c3a
fix: stream live evidence log scans
sozercan Jul 14, 2026
4b7b02f
fix: fence uncertain harness submissions
sozercan Jul 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
!examples/harness/
!examples/harness/echo/
!examples/harness/echo/*.go
!examples/harness/foundry-responses/
!examples/harness/foundry-responses/*.go
!*.go
**/*_test.go

Expand Down
19 changes: 11 additions & 8 deletions config/samples/core_v1alpha1_agentruntime_foundry.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,29 @@ metadata:
labels:
app.kubernetes.io/name: orka
app.kubernetes.io/managed-by: kustomize
name: sample-foundry-runtime
name: sample-foundry-responses-runtime
spec:
# Namespace-local facade for an operator-deployed Azure AI Foundry hosted-agent adapter.
# Foundry credentials belong to the adapter Secret. Orka Tool credentials stay in
# Orka-governed credential sources and are used only by brokered execution.
# Namespace-local facade for an operator-deployed Foundry hosted Responses
# adapter (examples/harness/foundry-responses). Foundry credentials belong to
# the adapter Secret. Orka Tool credentials stay in Orka-governed credential
# sources and are used only by brokered execution.
contractVersion: orka.harness.v1
deployment:
mode: external-endpoint
endpoint: http://sample-foundry-runtime.default.svc.cluster.local:8080
endpoint: http://sample-foundry-responses-runtime.default.svc.cluster.local:8080
clientAuth:
bearerTokenSecretRef:
name: sample-foundry-runtime-token
key: token
name: sample-foundry-responses-runtime-token
key: harness-bearer
capabilities:
# Mirror only classes whose hosted AgentKit deployment statically includes
# the matching probe-only conformance_read/conformance_write schema and has
# passed live AgentRuntime conformance. Add write only after that gate.
toolExecutionModes:
- observed
- brokered
brokeredToolClasses:
- read
- write
supportsCancel: true
supportsRuntimeSessions: true
supportsContinuation: true
2 changes: 1 addition & 1 deletion examples/bring-your-own-agent-runtime-demo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ examples/fibey-custom-agent-demo/switch-backend.sh http
examples/fibey-custom-agent-demo/switch-backend.sh foundry
```

The workflow, Tool CRDs, approval UX, and task/result APIs remain Orka-owned. Remote backends receive safe tool schemas and scoped turn metadata only; they do not receive downstream Tool credentials.
The workflow, Tool CRDs, approval UX, and task/result APIs remain Orka-owned. Remote backends receive safe tool schemas and scoped turn metadata only; they do not receive downstream Tool credentials. For Foundry hosted AgentKit Responses, the adapter does not send request-level `tools`; AgentKit schemas must be configured statically and the facade capabilities must match the conformance-tested classes.

## Troubleshooting

Expand Down
21 changes: 15 additions & 6 deletions examples/fibey-custom-agent-demo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

This demo exercises the first bring-your-own agent runtime slice: Orka registers a namespace-local `AgentRuntime` facade for a remote execution backend, then an `Agent` routes `type: agent` work to it with `spec.runtime.runtimeRef`.

The checked-in backend is a deterministic generic HTTP harness fixture. It advertises `runtimeName: fibey-http-runtime`, supports `orka.harness.v1`, and runs in `observed` tool mode by default. AgentKit Serve and Foundry should plug in by swapping only the backend Service/adapter endpoint and `AgentRuntime` facade, not the Orka workflow.
The checked-in backend is a deterministic generic HTTP harness fixture. It advertises `runtimeName: fibey-http-runtime`, supports `orka.harness.v1`, and runs in `observed` tool mode by default. AgentKit Serve, Foundry Assistants, and Foundry hosted AgentKit Responses should plug in by swapping only the backend Service/adapter endpoint and `AgentRuntime` facade, not the Orka workflow.

## Backend facades

| Facade | Backend | Credentials |
| --- | --- | --- |
| `fibey-http-runtime` | Generic mock/self-hosted HTTP runtime | Harness bearer token only |
| `fibey-agentkit-runtime` | AgentKit Serve adapter | Adapter/runtime config only |
| `fibey-foundry-runtime` | Foundry adapter | Adapter Secret; no Orka Tool production credentials |
| `fibey-agentkit-foundry-responses` | Foundry hosted AgentKit Responses adapter | Adapter Secret; no Orka Tool production credentials |

`fibey-agentkit-runtime` is intentionally observed-only in the checked-in demo: it should show `toolExecutionModes: [observed]`, `supportsCancel: true`, and `supportsRuntimeSessions: true`, with no `brokeredToolClasses` or `supportsContinuation`. AgentKit brokered read/write/coordination exist only for deployments that explicitly enable those conformance-gated profiles.

Expand Down Expand Up @@ -106,12 +106,21 @@ kubectl apply -f examples/fibey-custom-agent-demo/agentruntime-agentkit.yaml
kubectl apply -f examples/fibey-custom-agent-demo/agent-agentkit.yaml
kubectl wait --for=condition=Ready agentruntime/fibey-agentkit-runtime --timeout=60s

# Foundry adapter facade; requires a Service named fibey-foundry-runtime.
# Build/deploy examples/harness/foundry with ORKA_FOUNDRY_* credentials first.
# Foundry hosted AgentKit Responses facade; requires a Service named fibey-agentkit-foundry-responses.
# Build/deploy examples/harness/foundry-responses with ORKA_FOUNDRY_RESPONSES_* credentials first.
kubectl apply -f examples/fibey-custom-agent-demo/secret-foundry.yaml
kubectl apply -f examples/fibey-custom-agent-demo/agentruntime-foundry.yaml
kubectl apply -f examples/fibey-custom-agent-demo/agent-foundry.yaml
kubectl wait --for=condition=Ready agentruntime/fibey-foundry-runtime --timeout=60s
kubectl wait --for=condition=Ready agentruntime/fibey-agentkit-foundry-responses --timeout=60s

# Optional literal brokered Fibey read/write scenario once downstream services exist.
kubectl apply -f examples/fibey-custom-agent-demo/tools-foundry-responses.yaml
kubectl apply -f examples/fibey-custom-agent-demo/task-foundry-responses.yaml

# After the task runs through read, write approval, and completion, verify evidence.
examples/fibey-custom-agent-demo/verify-foundry-responses.sh \
--task fibey-foundry-responses-quincy-north-alert \
--namespace default
```

Run the same task against another backend by changing only `spec.agentRef.name`, for example:
Expand All @@ -125,4 +134,4 @@ examples/fibey-custom-agent-demo/switch-backend.sh http
The script validates the selected `AgentRuntime` and `Agent`, then patches only
the Task's `spec.agentRef.name`.

Brokered mode is used only when the selected runtime advertises brokered capabilities and the task/agent exposes allowed tools. Current AgentKit Serve facades do not advertise brokered mode, so AgentKit-owned tools remain internal to AgentKit and Orka observes only lifecycle/output frames. Orka-owned side-effect tools stay behind Orka brokered governance; production tool credentials are not handed to the remote backend.
Brokered mode is used only when the selected runtime advertises brokered capabilities and the task/agent exposes allowed tools. Current AgentKit Serve facades do not advertise brokered mode, so AgentKit-owned tools remain internal to AgentKit and Orka observes only lifecycle/output frames. The Foundry hosted Responses facade must advertise only the brokered classes statically configured in AgentKit and verified by conformance. Orka-owned side-effect tools stay behind Orka brokered governance; production tool credentials are not handed to the remote backend, and hosted Responses requests do not include request-level `tools`.
6 changes: 3 additions & 3 deletions examples/fibey-custom-agent-demo/agent-foundry.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Optional Agent that selects the Foundry hosted-agent backend facade.
# Optional Agent that selects the Foundry hosted AgentKit Responses backend facade.
apiVersion: core.orka.ai/v1alpha1
kind: Agent
metadata:
name: fibey-remote-foundry
spec:
runtime:
runtimeRef:
name: fibey-foundry-runtime
name: fibey-agentkit-foundry-responses
systemPrompt:
inline: |
You are Fibey's Foundry-backed incident scout. Produce a concise dossier and request Orka-brokered tools for evidence or consequential actions.
You are Fibey's Foundry-hosted AgentKit incident scout. Use Orka-brokered read tools for evidence and Orka-brokered write tools only when approval is required.
17 changes: 11 additions & 6 deletions examples/fibey-custom-agent-demo/agentruntime-foundry.yaml
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@
# Optional namespace-local facade for a Foundry hosted-agent adapter implementing orka.harness.v1.
# Apply this with secret-foundry.yaml and point an Agent runtimeRef at fibey-foundry-runtime
# after deploying the adapter Service named fibey-foundry-runtime.
# Optional namespace-local facade for a Foundry hosted AgentKit Responses adapter
# implementing orka.harness.v1. Apply this with secret-foundry.yaml and point an
# Agent runtimeRef at fibey-agentkit-foundry-responses after deploying the
# examples/harness/foundry-responses adapter Service with the same name.
apiVersion: core.orka.ai/v1alpha1
kind: AgentRuntime
metadata:
name: fibey-foundry-runtime
name: fibey-agentkit-foundry-responses
spec:
contractVersion: orka.harness.v1
deployment:
mode: external-endpoint
endpoint: http://fibey-foundry-runtime.default.svc.cluster.local:8080
endpoint: http://fibey-agentkit-foundry-responses.default.svc.cluster.local:8080
clientAuth:
bearerTokenSecretRef:
name: fibey-foundry-runtime-token
name: fibey-agentkit-foundry-responses-token
key: token
capabilities:
# This sample assumes the hosted AgentKit deployment has static Fibey tool
# schemas plus probe-only conformance_read/conformance_write schemas, and
# has passed live AgentRuntime read/write conformance. Fake-server adapter
# tests alone are not sufficient. Narrow this list until each gate passes.
toolExecutionModes:
- observed
- brokered
Expand Down
13 changes: 7 additions & 6 deletions examples/fibey-custom-agent-demo/secret-foundry.yaml
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
# Optional harness bearer token for the Foundry adapter facade.
# This authenticates Orka to the adapter endpoint; Foundry credentials stay in the adapter Secret.
# Optional harness bearer token for the Foundry hosted Responses adapter facade.
# This authenticates Orka to the adapter endpoint; Foundry credentials stay in
# the adapter Deployment Secret/env and are never stored in this AgentRuntime.
apiVersion: v1
kind: Secret
metadata:
name: fibey-foundry-runtime-token
name: fibey-agentkit-foundry-responses-token
annotations:
orka.ai/agent-runtime-endpoint: http://fibey-foundry-runtime.default.svc.cluster.local:8080
orka.ai/agent-runtime-endpoint: http://fibey-agentkit-foundry-responses.default.svc.cluster.local:8080
labels:
orka.ai/agent-runtime-auth: "true"
orka.ai/agent-runtime-name: fibey-foundry-runtime
orka.ai/agent-runtime-name: fibey-agentkit-foundry-responses
stringData:
token: mock-token
token: REDACTED
2 changes: 1 addition & 1 deletion examples/fibey-custom-agent-demo/switch-backend.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ case "${backend}" in
;;
foundry)
agent="fibey-remote-foundry"
runtime="fibey-foundry-runtime"
runtime="fibey-agentkit-foundry-responses"
;;
-h|--help|help|"")
usage
Expand Down
20 changes: 20 additions & 0 deletions examples/fibey-custom-agent-demo/task-foundry-responses.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Optional Foundry hosted AgentKit Responses task that exposes the Fibey brokered
# read/write tools. Apply with tools-foundry-responses.yaml and the Foundry
# Responses facade manifests after deploying the downstream mock/real services.
apiVersion: core.orka.ai/v1alpha1
kind: Task
metadata:
name: fibey-foundry-responses-quincy-north-alert
spec:
type: agent
agentRef:
name: fibey-remote-foundry
agentRuntime:
allowedTools:
- check-network-telemetry
- get-active-incidents
- dispatch-work-order
- escalate-incident
prompt: |
Quincy North alert: pump telemetry is anomalous after overnight maintenance.
Investigate likely cause with brokered read tools, summarize evidence, and request approval before dispatching any work order.
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{
"events": [
{
"seq": 1,
"eventType": "ToolCallStarted",
"toolName": "check-network-telemetry",
"content": {
"harness": {
"frameType": "ToolCallRequested"
}
},
"toolCallID": "read-call-1"
},
{
"seq": 2,
"eventType": "ToolCallCompleted",
"toolName": "check-network-telemetry",
"toolCallID": "read-call-1",
"content": {
"approved": true
}
},
{
"seq": 3,
"eventType": "ToolCallStarted",
"toolName": "dispatch-work-order",
"content": {
"harness": {
"frameType": "ToolCallRequested"
}
},
"toolCallID": "write-call-1"
},
{
"seq": 4,
"eventType": "ApprovalRequested",
"toolName": "dispatch-work-order",
"toolCallID": "approval-1",
"content": {
"approvalID": "approval-1",
"targetTool": "dispatch-work-order",
"toolCallID": "write-call-1"
}
},
{
"seq": 5,
"eventType": "ApprovalApproved",
"toolCallID": "approval-1",
"content": {
"approvalID": "approval-1",
"decision": "approve"
}
},
{
"seq": 6,
"eventType": "ToolCallStarted",
"toolName": "dispatch-work-order",
"content": {
"approvalID": "approval-1",
"brokeredClass": "write",
"executionState": "started",
"idempotencyKey": "approval-1",
"executionIdempotencyKey": "approval-1"
},
"toolCallID": "write-call-1"
},
{
"seq": 7,
"eventType": "AgentRuntimeCompleted"
},
{
"seq": 8,
"eventType": "ToolCallCompleted",
"toolName": "dispatch-work-order",
"toolCallID": "write-call-1",
"content": {
"approved": true,
"executionIdempotencyKey": "approval-1"
}
},
{
"seq": 9,
"eventType": "TaskSucceeded"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"events": [
{
"seq": 1,
"eventType": "ToolCallStarted",
"toolName": "check-network-telemetry",
"content": {
"harness": {
"frameType": "ToolCallRequested"
}
},
"toolCallID": "read-call-1"
},
{
"seq": 2,
"eventType": "ApprovalApproved",
"toolCallID": "approval-1",
"content": {
"approvalID": "approval-1",
"decision": "approve"
}
},
{
"seq": 3,
"eventType": "ToolCallStarted",
"toolName": "dispatch-work-order",
"content": {
"harness": {
"frameType": "ToolCallRequested"
}
},
"toolCallID": "write-call-1"
},
{
"seq": 4,
"eventType": "ApprovalRequested",
"toolName": "dispatch-work-order",
"toolCallID": "approval-1",
"content": {
"approvalID": "approval-1",
"targetTool": "dispatch-work-order",
"toolCallID": "write-call-1"
}
},
{
"seq": 5,
"eventType": "ToolCallStarted",
"toolName": "dispatch-work-order",
"content": {
"approvalID": "approval-1",
"brokeredClass": "write",
"executionState": "started",
"idempotencyKey": "approval-1"
},
"toolCallID": "write-call-1"
},
{
"seq": 6,
"eventType": "AgentRuntimeCompleted"
},
{
"seq": 7,
"eventType": "TaskSucceeded"
}
]
}
Loading