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
37 changes: 0 additions & 37 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ jobs:
cockpit: ${{ steps.scope.outputs.cockpit }}
cockpit_examples: ${{ steps.scope.outputs.cockpit_examples }}
cockpit_smoke: ${{ steps.scope.outputs.cockpit_smoke }}
cockpit_secret: ${{ steps.scope.outputs.cockpit_secret }}
cockpit_deploy_smoke: ${{ steps.scope.outputs.cockpit_deploy_smoke }}
examples_chat: ${{ steps.scope.outputs.examples_chat }}
cockpit_e2e: ${{ steps.scope.outputs.cockpit_e2e }}
Expand Down Expand Up @@ -198,37 +197,6 @@ jobs:
- run: npm ci
- run: npx nx run-many -t smoke --projects=cockpit-ag-ui-interrupts-python,cockpit-ag-ui-streaming-python,cockpit-deep-agents-planning-python,cockpit-deep-agents-filesystem-python,cockpit-deep-agents-subagents-python,cockpit-deep-agents-memory-python,cockpit-deep-agents-skills-python,cockpit-deep-agents-sandboxes-python,cockpit-langgraph-persistence-python,cockpit-langgraph-durable-execution-python,cockpit-langgraph-streaming-python,cockpit-langgraph-interrupts-python,cockpit-langgraph-memory-python,cockpit-langgraph-subgraphs-python,cockpit-langgraph-time-travel-python,cockpit-langgraph-deployment-runtime-python,cockpit-chat-messages-python,cockpit-render-spec-rendering-python --skip-nx-cache

cockpit-secret-integration:
name: Cockpit — secret-gated integration
needs: ci-scope
if: github.event_name == 'push' || needs.ci-scope.outputs.cockpit_secret == 'true'
runs-on: ubuntu-latest
steps:
- name: Check integration secret
id: integration_secret
run: |
if [ -z "${COCKPIT_SECRET_TOKEN}" ]; then
echo "enabled=false" >> "$GITHUB_OUTPUT"
echo "::notice::Skipping secret-gated integration: COCKPIT_SECRET_TOKEN is not configured"
else
echo "enabled=true" >> "$GITHUB_OUTPUT"
fi
env:
COCKPIT_SECRET_TOKEN: ${{ secrets.COCKPIT_SECRET_TOKEN }}
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
if: steps.integration_secret.outputs.enabled == 'true'
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
if: steps.integration_secret.outputs.enabled == 'true'
with:
node-version: 22
cache: npm
- if: steps.integration_secret.outputs.enabled == 'true'
run: npm ci
- if: steps.integration_secret.outputs.enabled == 'true'
run: npx nx run cockpit-langgraph-deployment-runtime-python:integration --skip-nx-cache
env:
COCKPIT_SECRET_TOKEN: ${{ secrets.COCKPIT_SECRET_TOKEN }}

cockpit-deploy-smoke:
name: Cockpit — deploy smoke dry-run
timeout-minutes: 30 # fail fast instead of blocking the main concurrency group on a hang
Expand Down Expand Up @@ -505,7 +473,6 @@ jobs:
- cockpit
- cockpit-examples-build
- cockpit-smoke
- cockpit-secret-integration
- cockpit-deploy-smoke
- examples-chat-smoke
- examples-chat-e2e
Expand All @@ -523,7 +490,6 @@ jobs:
RESULT_COCKPIT: ${{ needs.cockpit.result }}
RESULT_COCKPIT_EXAMPLES: ${{ needs.cockpit-examples-build.result }}
RESULT_COCKPIT_SMOKE: ${{ needs.cockpit-smoke.result }}
RESULT_COCKPIT_SECRET: ${{ needs.cockpit-secret-integration.result }}
RESULT_COCKPIT_DEPLOY_SMOKE: ${{ needs.cockpit-deploy-smoke.result }}
RESULT_EXAMPLES_CHAT_SMOKE: ${{ needs.examples-chat-smoke.result }}
RESULT_EXAMPLES_CHAT_E2E: ${{ needs.examples-chat-e2e.result }}
Expand All @@ -535,7 +501,6 @@ jobs:
SCOPE_COCKPIT: ${{ needs.ci-scope.outputs.cockpit }}
SCOPE_COCKPIT_EXAMPLES: ${{ needs.ci-scope.outputs.cockpit_examples }}
SCOPE_COCKPIT_SMOKE: ${{ needs.ci-scope.outputs.cockpit_smoke }}
SCOPE_COCKPIT_SECRET: ${{ needs.ci-scope.outputs.cockpit_secret }}
SCOPE_COCKPIT_DEPLOY_SMOKE: ${{ needs.ci-scope.outputs.cockpit_deploy_smoke }}
SCOPE_EXAMPLES_CHAT: ${{ needs.ci-scope.outputs.examples_chat }}
SCOPE_COCKPIT_E2E: ${{ needs.ci-scope.outputs.cockpit_e2e }}
Expand Down Expand Up @@ -582,7 +547,6 @@ jobs:
require_scoped "cockpit" "Cockpit — build / test" "$RESULT_COCKPIT" "$SCOPE_COCKPIT"
require_scoped "cockpit_examples" "Cockpit — build all examples" "$RESULT_COCKPIT_EXAMPLES" "$SCOPE_COCKPIT_EXAMPLES"
require_scoped "cockpit_smoke" "Cockpit — representative capability smoke" "$RESULT_COCKPIT_SMOKE" "$SCOPE_COCKPIT_SMOKE"
require_scoped "cockpit_secret" "Cockpit — secret-gated integration" "$RESULT_COCKPIT_SECRET" "$SCOPE_COCKPIT_SECRET"
require_scoped "cockpit_deploy_smoke" "Cockpit — deploy smoke dry-run" "$RESULT_COCKPIT_DEPLOY_SMOKE" "$SCOPE_COCKPIT_DEPLOY_SMOKE"
require_scoped "examples_chat" "examples/chat — python smoke" "$RESULT_EXAMPLES_CHAT_SMOKE" "$SCOPE_EXAMPLES_CHAT"
require_scoped "examples_chat" "examples/chat — e2e" "$RESULT_EXAMPLES_CHAT_E2E" "$SCOPE_EXAMPLES_CHAT"
Expand All @@ -606,7 +570,6 @@ jobs:
cockpit,
cockpit-examples-build,
cockpit-smoke,
cockpit-secret-integration,
cockpit-deploy-smoke,
examples-chat-smoke,
examples-chat-e2e,
Expand Down
7 changes: 0 additions & 7 deletions cockpit/langgraph/deployment-runtime/python/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,6 @@
"cwd": "cockpit/langgraph/deployment-runtime/python",
"command": "npx tsx -e \"import { langgraphDeploymentRuntimePythonModule } from './src/index.ts'; const module = langgraphDeploymentRuntimePythonModule; if (module.id !== 'langgraph-deployment-runtime-python' || module.title !== 'LangGraph Deployment Runtime (Python)') { throw new Error('Unexpected module shape for ' + module.id); }\""
}
},
"integration": {
"executor": "nx:run-commands",
"options": {
"cwd": "cockpit/langgraph/deployment-runtime/python",
"command": "npx tsx -e \"const token = process.env.COCKPIT_SECRET_TOKEN; if (!token) { throw new Error('Missing COCKPIT_SECRET_TOKEN'); } console.log('secret-gated integration ready');\""
}
}
},
"tags": [
Expand Down
1 change: 0 additions & 1 deletion libs/a2ui/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
"scope:cockpit-deploy-smoke",
"scope:cockpit-e2e",
"scope:cockpit-examples",
"scope:cockpit-secret",
"scope:cockpit-smoke",
"scope:examples-chat",
"scope:library",
Expand Down
1 change: 0 additions & 1 deletion libs/ag-ui/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
"scope:cockpit-deploy-smoke",
"scope:cockpit-e2e",
"scope:cockpit-examples",
"scope:cockpit-secret",
"scope:cockpit-smoke",
"scope:examples-chat",
"scope:library",
Expand Down
1 change: 0 additions & 1 deletion libs/chat/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
"scope:cockpit-deploy-smoke",
"scope:cockpit-e2e",
"scope:cockpit-examples",
"scope:cockpit-secret",
"scope:cockpit-smoke",
"scope:examples-chat",
"scope:library",
Expand Down
6 changes: 3 additions & 3 deletions libs/cockpit-registry/src/lib/manifest.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ describe('cockpitManifest', () => {
expect(aguiTopics).toEqual(expect.arrayContaining(['streaming', 'interrupts']));
});

it('marks secret-gated integration explicitly for deployment runtime', () => {
it('does not advertise placeholder integration coverage for deployment runtime', () => {
const deploymentRuntimeEntry = cockpitManifest.find(
(entry) =>
entry.product === 'langgraph' &&
Expand All @@ -144,8 +144,8 @@ describe('cockpitManifest', () => {
runtimeClass: 'deployed-service',
testingContract: {
smokeTarget: 'cockpit-langgraph-deployment-runtime-python:smoke',
integrationTarget: 'cockpit-langgraph-deployment-runtime-python:integration',
integrationMode: 'secret-gated',
integrationTarget: null,
integrationMode: 'none',
deploySmokePath:
'/langgraph/core-capabilities/deployment-runtime/overview/python',
},
Expand Down
15 changes: 2 additions & 13 deletions libs/cockpit-registry/src/lib/manifest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,14 +107,6 @@ const getCodeAssetPath = (product: CockpitProduct, topic: string): string =>
const getSmokeTarget = (product: CockpitProduct, topic: string): string =>
`cockpit-${product}-${topic}-python:smoke`;

const getIntegrationTarget = (
product: CockpitProduct,
topic: string
): string | null =>
product === 'langgraph' && topic === 'deployment-runtime'
? 'cockpit-langgraph-deployment-runtime-python:integration'
: null;

const getRuntimeClass = (topic: string): CockpitRuntimeClass =>
topic === 'deployment-runtime' ? 'deployed-service' : 'local-service';

Expand Down Expand Up @@ -163,11 +155,8 @@ const createEntry = (
deploymentStatus: 'planned',
testingContract: {
smokeTarget: isDocsOnly ? null : getSmokeTarget(product, topic),
integrationTarget: isDocsOnly ? null : getIntegrationTarget(product, topic),
integrationMode:
isDocsOnly || getIntegrationTarget(product, topic) === null
? 'none'
: 'secret-gated',
integrationTarget: null,
integrationMode: 'none',
deploySmokePath: `/${product}/${section}/${topic}/${page}/python`,
},
};
Expand Down
1 change: 0 additions & 1 deletion libs/langgraph/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
"scope:cockpit-deploy-smoke",
"scope:cockpit-e2e",
"scope:cockpit-examples",
"scope:cockpit-secret",
"scope:cockpit-smoke",
"scope:examples-chat",
"scope:library",
Expand Down
1 change: 0 additions & 1 deletion libs/licensing/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
"scope:cockpit-deploy-smoke",
"scope:cockpit-e2e",
"scope:cockpit-examples",
"scope:cockpit-secret",
"scope:cockpit-smoke",
"scope:examples-chat",
"scope:library",
Expand Down
1 change: 0 additions & 1 deletion libs/render/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
"scope:cockpit-deploy-smoke",
"scope:cockpit-e2e",
"scope:cockpit-examples",
"scope:cockpit-secret",
"scope:cockpit-smoke",
"scope:examples-chat",
"scope:library",
Expand Down
1 change: 0 additions & 1 deletion libs/telemetry/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
"scope:cockpit-deploy-smoke",
"scope:cockpit-e2e",
"scope:cockpit-examples",
"scope:cockpit-secret",
"scope:cockpit-smoke",
"scope:examples-chat",
"scope:library",
Expand Down
2 changes: 1 addition & 1 deletion scripts/ci-scope.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { fileURLToPath } from 'node:url';
export const SCOPE_KEYS = [
'library', 'website', 'website_e2e',
'cockpit', 'cockpit_examples', 'cockpit_smoke',
'cockpit_secret', 'cockpit_deploy_smoke', 'cockpit_e2e',
'cockpit_deploy_smoke', 'cockpit_e2e',
'examples_chat', 'posthog',
];

Expand Down
11 changes: 4 additions & 7 deletions scripts/ci-scope.spec.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ import {
const PUBLISHABLE_LIB_TAGS = [
'scope:library', 'scope:website', 'scope:website-e2e',
'scope:cockpit', 'scope:cockpit-examples', 'scope:cockpit-smoke',
'scope:cockpit-secret', 'scope:cockpit-deploy-smoke',
'scope:cockpit-e2e', 'scope:examples-chat',
'scope:cockpit-deploy-smoke', 'scope:cockpit-e2e', 'scope:examples-chat',
];
const COCKPIT_CAP_ANGULAR_TAGS = ['scope:cockpit-examples', 'scope:cockpit-e2e'];
const COCKPIT_CAP_PYTHON_TAGS = ['scope:cockpit-examples', 'scope:cockpit-e2e', 'scope:cockpit-smoke'];
Expand Down Expand Up @@ -44,12 +43,11 @@ describe('classifyFromAffected — lint-only files', () => {
assert.equal(scope.cockpit, true);
assert.equal(scope.website, true);
assert.equal(scope.examples_chat, true);
// E2e / smoke / deploy / secret / posthog scopes: false
// E2e / smoke / deploy / posthog scopes: false
assert.equal(scope.website_e2e, false);
assert.equal(scope.cockpit_e2e, false);
assert.equal(scope.cockpit_smoke, false);
assert.equal(scope.cockpit_examples, false);
assert.equal(scope.cockpit_secret, false);
assert.equal(scope.cockpit_deploy_smoke, false);
assert.equal(scope.posthog, false);
});
Expand Down Expand Up @@ -77,7 +75,6 @@ describe('classifyFromAffected — publishable lib broadcast', () => {
assert.equal(scope.cockpit, true);
assert.equal(scope.cockpit_examples, true);
assert.equal(scope.cockpit_smoke, true);
assert.equal(scope.cockpit_secret, true);
assert.equal(scope.cockpit_deploy_smoke, true);
assert.equal(scope.cockpit_e2e, true);
assert.equal(scope.examples_chat, true);
Expand Down Expand Up @@ -166,11 +163,11 @@ describe('classifyFromAffected — tag isolation', () => {
});

describe('SCOPE_KEYS export', () => {
it('contains the 11 documented scope keys', () => {
it('contains the 10 documented scope keys', () => {
assert.deepEqual(SCOPE_KEYS, [
'library', 'website', 'website_e2e',
'cockpit', 'cockpit_examples', 'cockpit_smoke',
'cockpit_secret', 'cockpit_deploy_smoke', 'cockpit_e2e',
'cockpit_deploy_smoke', 'cockpit_e2e',
'examples_chat', 'posthog',
]);
});
Expand Down
1 change: 0 additions & 1 deletion scripts/ci-workflow.spec.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,6 @@ describe('CI workflow', () => {
'cockpit',
'cockpit-examples-build',
'cockpit-smoke',
'cockpit-secret-integration',
'cockpit-deploy-smoke',
'examples-chat-smoke',
'examples-chat-e2e',
Expand Down
Loading