Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions .agents/skills/data-agent-tutor
21 changes: 21 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"name": "dataplusagent-hackathon-tutorial",
"owner": {
"name": "StreamNative"
},
"metadata": {
"description": "The tutor for the Data + Agent Hackathon hello-world labs",
"version": "0.1.0"
},
"plugins": [
{
"name": "data-agent-tutor",
"description": "A tutor that walks you through the Data + Agent Hackathon labs one step at a time, checks your work with you, and quizzes you",
"source": "./",
"strict": false,
"skills": [
"./skills/data-agent-tutor"
]
}
]
}
10 changes: 10 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"permissions": {
"deny": [
"Read(/.env)",
"Read(/.env.cloud)",
"Read(/.env.local)",
"Read(/.lab/**)"
]
}
}
1 change: 1 addition & 0 deletions .claude/skills/data-agent-tutor
23 changes: 11 additions & 12 deletions .env.example → .env.cloud.example
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Copy this file to .env (in the repo root) and paste the values from your
# team card. .env is git-ignored: never commit it.
# The Cloud course: copy this file to .env (in the repo root) and paste the
# values from your team card. .env is git-ignored: never commit it.
#
# cp .env.cloud.example .env
#
# (The Local course writes its own .env: see labs/local/00-set-up.md.)

# ---------------------------------------------------------------- team card --

Expand All @@ -11,11 +15,6 @@ SN_API_KEY=
# Looks like: <service-account>@<org>.auth.streamnative.cloud
SN_SERVICE_ACCOUNT=

# Optional separate Registry workspace key for ork local (sent as x-api-key).
# Leave empty for a hosted team card; SN_API_KEY then authenticates Agent Engine.
# This key does not authenticate Kafka, Schema Registry, or StreamNative MCP.
ORCA_API_KEY=

# Agent Engine registry endpoint (the External one). Host root only, no /v1.
# Looks like: https://<workspace-host>
ORCA_BASE_URL=
Expand All @@ -28,9 +27,8 @@ SCHEMA_REGISTRY_URL=
SN_MCP_URL=

# MCP authentication: oauth (default) or static_bearer for API-key MCP servers.
# All three tutorial paths call ork for the first OAuth login, then reuse the
# credential stored in the vault. Install ork with the OAuth discovery support
# from orca-cli PR #8 (or current main).
# All three paths call ork for the first OAuth login, then reuse the
# credential stored in the vault. Needs ork v0.6.0 or newer.
SN_MCP_AUTH=oauth

# Optional authorization server selection. Leave empty for automatic discovery.
Expand All @@ -42,8 +40,9 @@ SN_MCP_OAUTH_SCOPE="openid profile email offline_access"
# ------------------------------------------------------------- your choices --

# The Kafka topic name. Injectors and doctor read this value.
# L2 SQL files use the default below: edit their quoted "avro.<LOGIN_TOPIC>"
# source name to match this value before running them in SQL Workspace.
# The SQL files in sql/cloud/ use the default below: edit their quoted
# "avro.<LOGIN_TOPIC>" source name to match this value before running them in
# SQL Workspace.
LOGIN_TOPIC=security.login_events

# The model your agent runs on (served by the event's AI gateway).
Expand Down
29 changes: 29 additions & 0 deletions .env.local.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# The Local course: you do not fill this in by hand. local/write-env.sh writes
# .env for you, with the key your Agent Engine generated (labs/local/00-set-up.md).
# This file shows what it writes. .env is git-ignored: never commit it.

# Tells every script that the stack is the one on your laptop.
TUTORIAL_STACK=local

# The Agent Engine that `ork local` runs, and the workspace key it generated.
ORCA_BASE_URL=http://127.0.0.1:8080
ORCA_API_KEY=

# Ursa for Kafka and its schema registry, as your terminal reaches them.
KAFKA_BOOTSTRAP_SERVERS=127.0.0.1:29092
SCHEMA_REGISTRY_URL=http://127.0.0.1:18081

# RisingWave's MCP server. The first address is the one your agent's definition
# carries: the AI Gateway reaches the server by that name. The second is the same
# server from your terminal, for the doctor.
RW_MCP_URL=http://risingwave-mcp:8000/mcp
RW_MCP_LOCAL_URL=http://127.0.0.1:8000/mcp

# The Kafka topic the injector writes to and RisingWave reads.
LOGIN_TOPIC=security.login_events

# The model your agent runs on. Your provider key must be able to use it.
ORCA_MODEL=claude-sonnet-4-6

# Names your agent and environment. Defaults to your OS user name.
PARTICIPANT=
20 changes: 19 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,27 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: shellcheck cli/*.sh cli/tests/*.sh cli/tests/fake-ork
- run: shellcheck cli/*.sh cli/tests/*.sh cli/tests/fake-ork lab-ork
- run: cli/tests/run.sh

local:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: shellcheck local/*.sh local/tests/*.sh
- run: local/tests/run.sh
- name: The Compose file is valid
run: docker compose -f local/compose.yaml config -q

labs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: shellcheck scripts/*.sh scripts/tests/*.sh
- run: scripts/tests/run.sh
- name: Every lab has its steps, checks, quiz and solution, and every link resolves
run: scripts/check-labs.sh

no-credentials:
runs-on: ubuntu-latest
steps:
Expand Down
10 changes: 8 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
# Secrets: your team card lives here. Never commit it.
# Secrets: your team card (or your local stack's key) lives here. Never commit it.
.env
.env.*
!.env.example
!.env.*.example

# Local state (agent/environment/vault ids per participant)
.orca-state/

# The Local course's Agent Engine data: `ork local` keeps its keys here.
.lab/

# Claude Code worktrees
.claude/worktrees/

# Python
.venv/
__pycache__/
Expand Down
Loading
Loading