Skip to content
Merged
Show file tree
Hide file tree
Changes from 18 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
52 changes: 52 additions & 0 deletions .github/workflows/test-integrations.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,55 @@ jobs:
cd integrations
task test:gateway
shell: bash

run-tests-directory:
runs-on: ubuntu-latest

permissions:
contents: 'read'
id-token: 'write'
packages: 'read'
attestations: 'read'

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: 'true'

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Setup Environment
uses: ./.github/actions/setup-env
with:
python: true
go: false

- name: Setup K8S Tools
uses: ./.github/actions/setup-k8s
with:
kind-version: ${{ inputs.kind-version }}

- name: Create kind cluster
run: |
cd integrations
task kind:create
shell: bash

- name: Deploy agntcy dir
run: |
cd integrations
task test:env:directory:deploy
shell: bash

- name: Run agent build tests
run: |
cd integrations
task test:directory
shell: bash
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "integrations/agntcy-dir/examples/dir"]
path = integrations/agntcy-dir/examples/dir
url = git@github.com:agntcy/dir.git
4 changes: 2 additions & 2 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

The CSIT project team welcomes security reports and is committed to
providing prompt attention to security issues. Security issues should be
reported privately via [security@agntcy.ai](mailto:security@agntcy.ai).
reported privately via [security@agntcy.org](mailto:security@agntcy.org).
Security issues should not be reported via the public GitHub Issue tracker.


Expand All @@ -16,7 +16,7 @@ users of CSIT, and maintainers of upstream dependencies if applicable.

Downstream project maintainers and CSIT users can request participation in
coordination of applicable security issues by sending your contact email address,
GitHub username(s) and any other salient information to [security@agntcy.ai](mailto:security@agntcy.ai).
GitHub username(s) and any other salient information to [security@agntcy.org](mailto:security@agntcy.org).
Participation in security issue coordination processes is at the discretion of the CSIT team.

## Security advisories
Expand Down
75 changes: 71 additions & 4 deletions integrations/Taskfile.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ vars:

## Image config
IMAGE_REPO: '{{ .IMAGE_REPO | default "ghcr.io/agntcy" }}'
GATEWAY_IMAGE_TAG: '{{ .GATEWAY_IMAGE_TAG | default "0.1.0-rc0-10-g794c425" }}'
GATEWAY_IMAGE_TAG: '{{ .GATEWAY_IMAGE_TAG | default "0.3.0" }}'
DIRECTORY_IMAGE_TAG: '{{ .DIRECTORY_IMAGE_TAG | default "v0.1.1" }}'

IMAGE_BAKE_OPTS: '{{ .IMAGE_BAKE_OPTS | default "--set *.platform=linux/arm64" }}'
TEST_APP_TAG: '{{ .TEST_APP_TAG | default "v0.0.1" }}'
Expand All @@ -38,14 +39,33 @@ tasks:
cmds:
- kind delete cluster --name {{.KIND_CLUSTER_NAME}}

kind:load-images:
kind:load-images:directory:
desc: Pull and load images to kind
cmds:
# pull images
- docker pull {{.IMAGE_REPO}}/dir-apiserver:{{.DIRECTORY_IMAGE_TAG}}
# load images
- kind load docker-image {{.IMAGE_REPO}}/dir-apiserver:{{.DIRECTORY_IMAGE_TAG}} --name {{.KIND_CLUSTER_NAME}}

kind:load-images:gateway:
desc: Pull and load images to kind
cmds:
# pull images
- docker pull {{.IMAGE_REPO}}/agp/gw:{{.GATEWAY_IMAGE_TAG}}
# load images
- kind load docker-image {{.IMAGE_REPO}}/agp/gw:{{.GATEWAY_IMAGE_TAG}} --name {{.KIND_CLUSTER_NAME}}

k8s:port-forward:setup:directory:
internal: true
cmds:
- kubectl port-forward svc/agntcy-dir-apiserver -n {{ .HELM_NAMESPACE }} 8888 &
- sleep 1

k8s:port-forward:teardown:directory:
internal: true
cmds:
- kill -9 $(ps aux | grep port-forward | grep agntcy-dir-apiserver | awk '{print $2}') || true

k8s:port-forward:setup:gateway:
internal: true
cmds:
Expand All @@ -57,10 +77,35 @@ tasks:
cmds:
- kill -9 $(ps aux | grep port-forward | grep agntcy-agp | awk '{print $2}') || true

test:env:directory:deploy:
desc: Deploy Agntcy directory test env
deps:
- kind:load-images:directory
vars:
REGCRED_CREATE: '{{ .REGCRED_CREATE | default "false" }}'
cmds:
- |
helm dependency build ./agntcy-dir/components/helm
helm upgrade agntcy-dir \
./agntcy-dir/components/helm \
--set dir.apiserver.image.tag="{{ .DIRECTORY_IMAGE_TAG }}" \
--set regcred.create="{{ .REGCRED_CREATE }}" \
--namespace {{ .HELM_NAMESPACE }} \
--create-namespace \
--install \
--wait \
--wait-for-jobs \
--timeout "15m"

test:env:directory:cleanup:
desc: Remove agntcy directory test env
cmds:
- helm delete --namespace {{ .HELM_NAMESPACE }} agntcy-dir

test:env:gateway:deploy:
desc: Deploy agent gateway test env
desc: Deploy agntcy gateway test env
deps:
- kind:load-images
- kind:load-images:gateway
cmds:
- |
helm dependency build ./agntcy-agp/components/helm
Expand All @@ -85,6 +130,28 @@ tasks:
cmds:
- IMAGE_TAG={{ .TEST_APP_TAG }} docker buildx bake {{ .IMAGE_BAKE_OPTS }} --load

test:directory:
desc: Directory test
cmds:
- task: k8s:port-forward:setup:directory
- defer: { task: k8s:port-forward:teardown:directory }
- defer: { task: manifests:cleanup }
- IMAGE_REPO={{.IMAGE_REPO}} DIRECTORY_IMAGE_TAG={{.DIRECTORY_IMAGE_TAG}} go test ./agntcy-dir/tests -v -failfast -test.v -test.paniconexit0 -ginkgo.timeout 30m -timeout 30m -ginkgo.v

test:directory:compiler:
desc: Agntcy compiler test
cmds:
- docker pull {{.IMAGE_REPO}}/dir-ctl:{{.DIRECTORY_IMAGE_TAG}}
- IMAGE_REPO={{.IMAGE_REPO}} DIRECTORY_IMAGE_TAG={{.DIRECTORY_IMAGE_TAG}} go test ./agntcy-dir/tests -v -failfast -test.v -test.paniconexit0 -ginkgo.timeout 10m -timeout 10m -ginkgo.v -ginkgo.focus "agent compilation"

test:directory:push:
desc: Directory agent push test
cmds:
- task: k8s:port-forward:setup:directory
- defer: { task: k8s:port-forward:teardown:directory }
- defer: { task: manifests:cleanup }
- IMAGE_REPO={{.IMAGE_REPO}} DIRECTORY_IMAGE_TAG={{.DIRECTORY_IMAGE_TAG}} go test ./agntcy-dir/tests -v -failfast -test.v -test.paniconexit0 -ginkgo.timeout 30m -timeout 30m -ginkgo.v -ginkgo.focus "agent push and pull"

test:autogen-agent:run:
internal: true
cmds:
Expand Down
2 changes: 1 addition & 1 deletion integrations/agntcy-agp/components/helm/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ version: 0.1.0
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.16.0"
appVersion: "0.1.0"

dependencies:
- name: agp
Expand Down
32 changes: 32 additions & 0 deletions integrations/agntcy-dir/components/helm/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# SPDX-FileCopyrightText: Copyright (c) 2025 Cisco and/or its affiliates.
# SPDX-License-Identifier: Apache-2.0

apiVersion: v2
name: agntcy-dir
description: A Helm chart for Kubernetes

# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application

# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "0.1.0"

dependencies:
- name: dir
version: "v0.1.1"
repository: oci://ghcr.io/agntcy/dir/helm-charts
13 changes: 13 additions & 0 deletions integrations/agntcy-dir/components/helm/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# SPDX-FileCopyrightText: Copyright (c) 2025 Cisco and/or its affiliates.
# SPDX-License-Identifier: Apache-2.0

regcred:
create: false

dir:
apiserver:
config:
server_port: 8888
health_port: 8889
provider: "oci"
oci_registry_address: "agntcy-dir-zot:5000"
1 change: 1 addition & 0 deletions integrations/agntcy-dir/examples/dir
Submodule dir added at 616b5c
91 changes: 91 additions & 0 deletions integrations/agntcy-dir/examples/testdata/expected_agent.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
{
"name": "marketing-strategy",
"version": "v1.0.0",
"authors": [
"author1",
"author2"
],
"created_at": {
"seconds": 1735689600
},
"locators": [
{
"type": 3,
"source": {
"url": "http://ghcr.io/agntcy/marketing-strategy"
}
}
],
"extensions": [
{
"name": "runtime",
"version": "v0.0.0",
"specs": {
"language": "python",
"sbom": {
"name": "marketing-strategy",
"packages": [
{
"name": "crewai",
"version": "0.55.2"
},
{
"name": "langchain",
"version": "0.2.16"
},
{
"name": "langchain-ollama",
"version": "0.1.3"
},
{
"name": "langchain-openai",
"version": "0.1.25"
},
{
"name": "langgraph",
"version": "0.2.34"
}
]
},
"version": "\u003e=3.11,\u003c3.13"
}
},
{
"name": "category",
"version": "v0.0.0",
"specs": {
"categories": []
}
},
{
"name": "crewai",
"version": "v0.0.0",
"specs": {
"agent.chief_marketing_strategist.backstory": "You are the Chief Marketing Strategist at a leading digital marketing agency, known for crafting bespoke strategies that drive success.\n",
"agent.chief_marketing_strategist.goal": "Synthesize amazing insights from product analysis to formulate incredible marketing strategies.\n",
"agent.chief_marketing_strategist.role": "Chief Marketing Strategist\n",
"agent.creative_content_creator.backstory": "As a Creative Content Creator at a top-tier digital marketing agency, you excel in crafting narratives that resonate with audiences. Your expertise lies in turning marketing strategies into engaging stories and visual content that capture attention and inspire action.\n",
"agent.creative_content_creator.goal": "Develop compelling and innovative content for social media campaigns, with a focus on creating high-impact ad copies.\n",
"agent.creative_content_creator.role": "Creative Content Creator\n",
"agent.lead_market_analyst.backstory": "As the Lead Market Analyst at a premier digital marketing firm, you specialize in dissecting online business landscapes.\n",
"agent.lead_market_analyst.goal": "Conduct amazing analysis of the products and competitors, providing in-depth insights to guide marketing strategies.\n",
"agent.lead_market_analyst.role": "Lead Market Analyst\n",
"inputs.campaign_idea_task": "string",
"inputs.copy_creation_task": "string",
"inputs.marketing_strategy_task": "string",
"inputs.project_understanding_task": "string",
"inputs.research_task": "string",
"task.campaign_idea_task.description": "Develop creative marketing campaign ideas for {project_description}. Ensure the ideas are innovative, engaging, and aligned with the overall marketing strategy.\n",
"task.campaign_idea_task.expected_output": "A list of 5 campaign ideas, each with a brief description and expected impact.\n",
"task.copy_creation_task.description": "Create marketing copies based on the approved campaign ideas for {project_description}. Ensure the copies are compelling, clear, and tailored to the target audience.\n",
"task.copy_creation_task.expected_output": "Marketing copies for each campaign idea.\n",
"task.marketing_strategy_task.description": "Formulate a comprehensive marketing strategy for the project {project_description} of the customer {customer_domain}. Use the insights from the research task and the project understanding task to create a high-quality strategy.\n",
"task.marketing_strategy_task.expected_output": "A detailed marketing strategy document that outlines the goals, target audience, key messages, and proposed tactics, make sure to have name, tatics, channels and KPIs",
"task.project_understanding_task.description": "Understand the project details and the target audience for {project_description}. Review any provided materials and gather additional information as needed.\n",
"task.project_understanding_task.expected_output": "A detailed summary of the project and a profile of the target audience.\n",
"task.research_task.description": "Conduct a thorough research about the customer and competitors in the context of {customer_domain}. Make sure you find any interesting and relevant information given the current year is 2024. We are working with them on the following project: {project_description}.\n",
"task.research_task.expected_output": "A complete report on the customer and their customers and competitors, including their demographics, preferences, market positioning and audience engagement.\n"
}
}
]
}
Empty file.
Loading