Skip to content

feat: support uses/with import syntax, import-schema validation, deprecate tools.serena, migrate workflows to serena-go.md, and enforce single-import constraint - #23192

Merged
pelikhan merged 14 commits into
mainfrom
copilot/extend-compiler-import-schemas
Mar 28, 2026
Merged

Conversation

CopilotAI commented Mar 27, 2026

Copy link
Copy Markdown
Contributor

Imports currently only accept a string path or {path, inputs} object. This adds a uses/with form (mirroring GitHub Actions reusable workflow syntax), a top-level import-schema field for declaring and validating those inputs, and new expressions for accessing them.

New syntax

# Shared workflow (shared/worker.md)
---
import-schema:
region:
type: stringrequired: trueenvironment:
type: choiceoptions: [staging, production]required: truecount:
type: numberdefault: 10languages:
type: arrayitems:
type: stringrequired: trueconfig:
type: objectdescription: Configuration objectproperties:
apiKey:
type: stringrequired: truetimeout:
type: numberdefault: 30
---
Deploy ${{ github.aw.import-inputs.count }} items to ${{ github.aw.import-inputs.region }}.API key: ${{ github.aw.import-inputs.config.apiKey }}.Languages: ${{ github.aw.import-inputs.languages }}.
# Importing workflowimports:
- uses: shared/worker.mdwith:
region: us-east-1environment: stagingcount: 5languages: ["go", "typescript"]config:
apiKey: my-secret-keytimeout: 60

New: Parameterized Serena shared workflows

shared/mcp/serena.md uses import-schema to accept a languages array and configures a complete explicit Serena MCP server (container, args, entrypoint, entrypointArgs, and workspace mount) — without relying on any tools.serena shorthand:

# Any workflowimports:
- uses: shared/mcp/serena.mdwith:
languages: ["go", "typescript"]

shared/mcp/serena-go.md is a Go-specific convenience wrapper that imports serena.md pre-configured for Go:

# Any Go workflowimports:
- shared/mcp/serena-go.md

Deprecation: tools.serena

tools.serena is now deprecated in favour of mcp-servers.serena via the shared/mcp/serena.md shared workflow. Compiling any workflow that uses tools.serena emits a deprecation warning:

⚠ 'tools.serena' is deprecated. Use 'mcp-servers.serena' with the shared/mcp/serena.md workflow instead:
imports:
- uses: shared/mcp/serena.md
with:
languages: ["go", "typescript"]

Existing workflows continue to compile without errors (backward compatible). The deprecation warning only fires when tools.serena is explicitly set in the workflow frontmatter — it no longer fires incorrectly when mcp-servers.serena is used via the recommended import path.

Single-import constraint with with conflict detection

A workflow file can now only be imported once per import graph. If the same file appears more than once, the with values must be identical — conflicting values produce a compile-time error:

import conflict: 'shared/worker.md' is imported more than once with different 'with' values.
An imported workflow can only be imported once per workflow.
Previous 'with': {"region":"us-east-1"}
New 'with': {"region":"eu-west-1"}

Identical with values (including both empty) continue to be silently deduplicated. The check applies to both direct imports and transitively discovered nested imports.

Migrated workflows

All agentic workflows that previously used tools.serena directly have been migrated:

  • smoke-copilot.md, smoke-copilot-arm.md, smoke-claude.md, smoke-codex.md — now import shared/mcp/serena-go.md
  • jsweep.md — now uses imports: - uses: shared/mcp/serena.md with: languages: ["typescript"]
  • daily-mcp-concurrency-analysis.md — now uses imports: - uses: shared/mcp/serena.md with: languages: ["go", "typescript"]

Changes

  • pkg/parser/import_bfs.goparseImportSpecsFromArray now accepts uses as alias for path and with as alias for inputs; BFS nested import discovery now handles uses/with map syntax (previously only plain strings), enabling chains like serena-go.md → serena.md to correctly propagate mcp-servers and tools to the parent workflow; adds visitedInputs map and checkImportInputsConsistency/importInputsEqual/formatImportInputs helpers to enforce the single-import constraint
  • pkg/parser/import_conflict_test.go — four tests covering: conflicting with values (error), identical with values (ok), no-with deduplication (ok), and transitive nested conflict (error)
  • pkg/parser/import_field_extractor.go — validates with values against the imported workflow's import-schema: required fields, unknown keys, type matching (string, number, boolean, choice, object, array), choice membership, object sub-property validation, and per-element array item type validation; adds substituteImportInputsInContent to apply expression substitution to raw imported file content (including YAML frontmatter) before parsing
  • pkg/parser/include_processor.go — adds import-schema to the allowed fields list for shared workflow frontmatter; suppresses schema validation warnings for shared files containing unsubstituted ${{ }} expressions in both tools and mcp-servers fields (resolved at import time)
  • pkg/parser/schemas/main_workflow_schema.json — adds import-schema top-level property supporting scalar, object, and array types; extends import item oneOf with uses/with object form; allows object and array values in with; marks tools.serena as deprecated: true with x-deprecation-message
  • pkg/workflow/frontmatter_types.go — adds ImportSchema map[string]any field to FrontmatterConfig
  • pkg/workflow/expression_patterns.go — adds AWImportInputsPattern / AWImportInputsExpressionPattern for github.aw.import-inputs.* and dotted paths (github.aw.import-inputs.<key>.<subkey>)
  • pkg/workflow/expression_extraction.goSubstituteImportInputs handles github.aw.inputs.* (legacy), github.aw.import-inputs.<key> (scalar/array), and github.aw.import-inputs.<key>.<subkey> (object sub-field); adds resolveImportInputPath for dotted-path lookup; arrays and maps serialize as JSON (valid YAML inline syntax) via marshalImportInputValue
  • pkg/workflow/expression_safety_validation.go — permits github.aw.import-inputs.* and dotted forms through expression safety checks
  • pkg/workflow/tools_parser.go — removes the tools.serena deprecation warning from NewTools (was firing incorrectly for mcp-servers.serena usage)
  • pkg/workflow/compiler_orchestrator_tools.go — emits the tools.serena deprecation warning only when tools.serena is explicitly set in the frontmatter tools: section, before any mcp-servers merging
  • pkg/workflow/mcp_renderer.go and pkg/workflow/codex_mcp.gocase "serena": now routes to the generic custom MCP renderer when an explicit container: config is present, instead of always using the hardcoded serena-specific renderer
  • pkg/workflow/docker.go — Docker image collection reads the explicit container: value from the serena config map first, falling back to language-based selection for legacy tools.serena usage
  • pkg/workflow/serena_go_import_test.go — adds TestImportSerenaGoMD (end-to-end main.md → serena-go.md → serena.md chain verifying Serena MCP container config, entrypoint args, and docker download step) and TestImportSerenaWithLanguagesMD (direct serena.md import with multiple languages)
  • .github/workflows/shared/mcp/serena.md — parameterized shared workflow using import-schema with languages: {type: array} that configures a complete explicit Serena MCP server (container, args, entrypoint, entrypointArgs, mounts) via mcp-servers
  • .github/workflows/shared/mcp/serena-go.md — Go-specific convenience wrapper that imports serena.md with languages: ["go"]

Backward compatibility is preserved: imports without import-schema accept any with/inputs values unchanged; workflows using tools.serena continue to compile with a deprecation warning.


🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.



✨ PR Review Safe Output Test - Run 23673763387

💥 [THE END] — Illustrated by Smoke Claude ·


Changeset

  • Type: patch
  • Description: Adds support for uses/with import syntax with import-schema input validation and github.aw.import-inputs.* expressions, and deprecates tools.serena in favor of shared Serena workflows backed by mcp-servers.serena.

Generated by Changeset Generator for issue #23192 ·



✨ PR Review Safe Output Test - Run 23684090954

💥 [THE END] — Illustrated by Smoke Claude ·

CopilotAI changed the title [WIP] Add support for import schemas in compilerfeat: support uses/with import syntax and import-schema validationMar 27, 2026
CopilotAI requested a review from pelikhanMarch 27, 2026 01:21
@pelikhan

Copy link
Copy Markdown
Collaborator

@copilot allow one level deep object definitions in import-schema

It should be enough to recreate the qmd configuration data

CopilotAI commented Mar 27, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot allow one level deep object definitions in import-schema

It should be enough to recreate the qmd configuration data

Done in 8714dad. import-schema now supports type: object with a one-level deep properties map:

import-schema:
config:
type: objectproperties:
apiKey:
type: stringrequired: truetimeout:
type: numberdefault: 30

Sub-fields are validated (unknown keys, required checks, scalar type matching) and accessible via ${{ github.aw.import-inputs.config.apiKey }} expressions in the shared workflow prompt.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha 0 -j ACCEPT (http block)

If you need me to access, download, or install something from one of these locations, you can either:

CopilotAI changed the title feat: support uses/with import syntax and import-schema validationfeat: support uses/with import syntax and import-schema validation with object typesMar 27, 2026
@pelikhan

Copy link
Copy Markdown
Collaborator

@copilot create a shared agentic workflow that uses import-schema and inputs to reimplement the "serena" tool support.

  • add support for array of string as import input simple type
  • takes the list of languages to add
  • configures the MCP and the runtimes based on the languages selected

…-schema
- Add `type: array` with optional `items` validation to import-schema
- Apply expression substitution to imported workflow frontmatter before processing,
enabling `tools.serena: ${{ github.aw.import-inputs.languages }}` patterns
- Serialize arrays as JSON when substituting into raw content (valid YAML inline)
- Add `import-schema` to allowed fields list for shared workflow frontmatter
- Suppress schema validation warnings for shared files with unsubstituted expressions
- Create `.github/workflows/shared/mcp/serena.md` using import-schema with languages array
- Add TestImportSchemaArrayType with 4 sub-tests covering valid/invalid array inputs
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/bc90492b-01ba-40ad-a7e2-d311ab30a41c
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>

CopilotAI commented Mar 27, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot create a shared agentic workflow that uses import-schema and inputs to reimplement the "serena" tool support.

  • add support for array of string as import input simple type...

Done in 242029a. Here's what was added:

type: array support in import-schema:

import-schema:
languages:
type: arrayitems:
type: stringrequired: true

Array items are validated element-by-element. Arrays serialize as JSON (["go","typescript"]) when substituted into raw YAML frontmatter, producing valid inline YAML.

Frontmatter expression substitution:
${{ github.aw.import-inputs.* }} expressions are now applied to the imported workflow's raw content (including YAML frontmatter) before parsing. This allows fields like tools.serena and runtimes to be driven by import inputs.

New shared/mcp/serena.md:

# Importing workflowimports:
- uses: shared/mcp/serena.mdwith:
languages: ["go", "typescript"]

The shared workflow declares languages via import-schema, sets tools: serena: ${{ github.aw.import-inputs.languages }}, and provides the standard Serena instructions in its markdown body. Adding runtimes to the shared workflow for node/python can be done the same way once you decide on the desired runtime mapping.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw GO111MODULE 64/bin/go git rev-�� --show-toplevel /bin/sh /usr/bin/git cd actions/setupgit GOPROXY 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw GO111MODULE ache/go/1.25.0/x64/bin/go git rev-�� --show-toplevel go /usr/bin/git -json GO111MODULE ache/go/1.25.0/x64/bin/go git (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw GO111MODULE ache/go/1.25.0/x64/bin/go git rev-�� /v0.47.4 go /usr/bin/git -json GO111MODULE ache/go/1.25.0/x64/bin/go git (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /usr/bin/git GOINSECURE GOMOD GOMODCACHE git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha -json GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha ck &#39;scripts/**/*GOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE sh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha k/gh-aw/gh-aw/.github/workflows/blog-auditor.md GOPROXY /usr/bin/git GOSUMDB GOWORK 64/bin/go git rev-�� --show-toplevel go /usr/bin/git ays.md GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go git rev-�� --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha .repository }}, Run: ${{ github.run_id }} sh /usr/bin/git &#34;prettier&#34; --chegit go 64/bin/go git rev-�� --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha sistency_GoAndJavaScript2778968398/001/test-empty-frontmatter.md GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha sistency_GoAndJavaScript2778968398/001/test-simple-frontmatter.md GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/upload-artifact/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha --show-toplevel go /usr/bin/git -json GO111MODULE ache/go/1.25.0/x64/bin/go git rev-�� --show-toplevel go /usr/bin/git TH=&#34;$(find &#34;/tmpgit GO111MODULE /opt/hostedtoolc/home/REDACTED/work/gh-aw/gh-aw/.github/workflows git (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility install --package-lock-only /usr/bin/git bility_SameInput/usr/bin/gh GO111MODULE /opt/hostedtoolcgraphql git rev-�� --show-toplevel go /usr/bin/git -json GO111MODULE /opt/pipx_bin/bainspect git (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0 --jq .object.sha --show-toplevel go /usr/bin/git -json GO111MODULE 0/x64/bin/node git rev-�� --show-toplevel go /usr/bin/gh ithub/workflows//usr/bin/gh GO111MODULE /opt/hostedtoolcgraphql gh (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v0.1.2
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq .object.sha -json GO111MODULE ache/node/24.14.0/x64/bin/node GOINSECURE GOMOD GOMODCACHE go t-28�� bility_SameInputSameOutput3897917875/001/stability-test.md GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 0/x64/bin/node GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/pkg/tool/linux_amd64/link GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/link (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq .object.sha --show-toplevel go /usr/bin/git with-tools.md GO111MODULE 64/bin/go git rev-�� --show-toplevel ache/go/1.25.0/xGO111MODULE /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha GOSUMDB GOWORK 64/bin/go GOINSECURE GOMOD GOMODCACHE go k/gh�� -json GO111MODULE 64/bin/go GOINSECURE GOMOD erignore go (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/# --jq .object.sha --show-toplevel go /usr/bin/git -json GO111MODULE nfig/composer/ve/home/REDACTED/work/gh-aw/gh-aw/.github/workflows git rev-�� --show-toplevel go /home/REDACTED/.local/bin/node -json GO111MODULE 0/x64/bin/node node (http block)
  • https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha GOSUMDB GOWORK 64/bin/go GOINSECURE GOMOD GOMODCACHE go k/gh�� -json GO111MODULE 64/bin/go GOINSECURE GOMOD erignore go (http block)

If you need me to access, download, or install something from one of these locations, you can either:

CopilotAI changed the title feat: support uses/with import syntax and import-schema validation with object typesfeat: support uses/with import syntax and import-schema validation with object and array typesMar 27, 2026
@pelikhan

Copy link
Copy Markdown
Collaborator

@copilot reimplement the Serena tool functionality in the Serena.md workflows WITHOUT using tools.serena

- Replace `tools: serena:` with `mcp-servers: serena:` in shared/mcp/serena.md
- Also suppress mcp-servers schema validation warnings for shared files
containing unsubstituted ${{ }} expressions (same as tools)
- Update TestImportSchemaArrayType to match the new mcp-servers.serena pattern
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/d50d23b1-dff6-4543-a803-70560a92d071
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>

CopilotAI commented Mar 27, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot reimplement the Serena tool functionality in the Serena.md workflows WITHOUT using tools.serena

Done in 788997c. shared/mcp/serena.md now uses mcp-servers.serena instead of tools.serena:

mcp-servers:
serena: ${{ github.aw.import-inputs.languages }}

After expression substitution (e.g., languages: ["go", "typescript"]), the mcp-servers.serena value is merged into the tools map and compiled identically to the equivalent tools.serena: ["go", "typescript"] — producing the same container, entrypoint, and MCP gateway configuration. The source file no longer contains tools.serena.

I also fixed the schema validation to suppress mcp-servers warnings (same as tools) when the shared file contains unsubstituted ${{ }} expressions that are resolved at import time.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw k/gh-aw/gh-aw/pk/home/REDACTED/work/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/pre�� k/gh-aw/gh-aw/pk--write x_amd64/vet k/gh�� ath ../../../.pr**/*.json k/gh-aw/gh-aw/pk--ignore-path x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw k/gh-aw/gh-aw/pk-c k/gh-aw/gh-aw/pknpx prettier --write &#39;../../../**/*.json&#39; &#39;!../../../pkg/workflow/js/**/*.json&#39; --ignore-path x_amd64/vet /pre�� k/gh-aw/gh-aw/pkg/cli/workflows/-errorsas k/gh-aw/gh-aw/pkg/cli/workflows/-ifaceassert x_amd64/vet k/gh-aw/gh-aw/pkgit k/gh-aw/gh-aw/pkconfig k/gh-aw/gh-aw/pk--get x_amd64/vet (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha npx prettier --write &#39;../../../**/*.json&#39; &#39;!../../../pkg/workflow/js/**/*.json&#39; --ignore-path ache/go/1.25.0/xconfig /usr/bin/git se 8479175/b033/vetrev-parse r: $owner, name:--show-toplevel git -c log.showsignature=false log /usr/bin/git -n1 --format=format:rev-parse 242029a22e26 git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha xterm-color x_amd64/vet k/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/sh nore 04e97293 x_amd64/vet git -C te &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.prettierignore config k/gh-aw/gh-aw/node_modules/.bin/sh remote.origin.urgit (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha ithub/workflows /tmp/go-build3358479175/b043/vet.cfg repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } example-blocked-/opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/compile user.name bin/bash /opt/hostedtoolc-trimpath k/gh�� js/**/*.json&#39; ---p -buildtags repository(owne-lang=go1.25 -errorsas -ifaceassert erignore /opt/hostedtoolc-goversion (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha /tmp/TestHashConsistency_GoAndJavaScript4246386549/001/test-complex-frontmatter-with-tools.md ache/go/1.25.0/x64/pkg/tool/linu-f ache/node/24.14.0/x64/bin/node */*.json&#39; &#39;!../.git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --show-toplevel node /usr/bin/git k/gh-aw/gh-aw/.ggit **/*.cjs 64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel 64/pkg/tool/linux_amd64/asm /usr/bin/git k/gh-aw/gh-aw/.ggit --write /usr/bin/gh git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha run format:cjs /node_modules/.bin/sh ./../pkg/workflogit (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha npx prettier --write &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.pr**/*.json 64/pkg/tool/linux_amd64/vet /snap/bin/sh ./../pkg/workflogit .cfg $name) { has--show-toplevel sh -c &#34;prettier&#34; --write &#39;scripts/**/*.js&#39; --ignore-path .prettierignore --log-level=error 64/pkg/tool/linurev-parse /home/REDACTED/node_modules/.bin/node tierignore -data-downloaderrev-parse de_modules/.bin/--show-toplevel node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha .repository }}, Run: ${{ github.run_id }} bash /usr/bin/git ty-test.md -tests _modules/.bin/sh--show-toplevel git rev-�� --show-toplevel node /usr/bin/git ../pkg/workflow/git **/*.cjs (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha t0 m0s /bin/sh -silent &gt;/dev/nugit .cfg r: $owner, name:--show-toplevel /bin/sh -c npx prettier --write &#39;scripts/**/*.js&#39; --ignore-path .prettierignore --log-level=error 2&gt;&amp;1 64/pkg/tool/linux_amd64/vet /home/REDACTED/go/bin/sh ettierignore l r: $owner, name:--show-toplevel sh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha npx prettier --write &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.pr**/*.json 64/pkg/tool/linurev-parse /opt/hostedtoolcache/go/1.25.0/x64/bin/sh ./../pkg/workflogit .cfg 64/pkg/tool/linu--show-toplevel sh -c &#34;prettier&#34; --write &#39;scripts/**/*.js&#39; --ignore-path .prettierignore --log-level=error 64/pkg/tool/linuconfig /home/REDACTED/work/gh-aw/gh-aw/node_modules/.bin/node tierignore (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha sistency_GoAndJavaScript4246386549/001/test-simple-frontmatter.md 64/pkg/tool/linuconfig /opt/pipx_bin/sh ./../pkg/workflogit (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha npx prettier --write &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.pr**/*.json 64/pkg/tool/linurev-parse /home/REDACTED/.local/bin/sh ./../pkg/workflogit (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha sistency_GoAndJavaScript4246386549/001/test-empty-frontmatter.md 64/pkg/tool/linurev-parse ache/node/24.14.0/x64/bin/node ./../pkg/workflogit .cfg 64/pkg/tool/linu--show-toplevel sh t-12�� bility_SameInputSameOutput2900646373/001/stability-test.md 64/pkg/tool/linuconfig /home/REDACTED/work/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/node rt (http block)
  • https://api.github.com/repos/actions/upload-artifact/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq .object.sha /home/REDACTED/work/gh-aw/gh-aw/.github/workflows rev-parse tions/setup/js/node_modules/.bin/sh --noprofile (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha ath ../../../.pr**/*.json (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha --show-toplevel /usr/bin/gh /usr/bin/git graphql -f k/_temp/ghcca-node/node/bin/sh git rev-�� --show-toplevel git e te &#39;../../../**/git rev-parse /opt/hostedtoolc/home/REDACTED/work/gh-aw/gh-aw/.github/workflows gh (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility install --package-lock-only /usr/bin/git **/*.cjs **/*.ts /home/REDACTED/.lographql git rev-�� --show-toplevel node /usr/bin/git prettier --write ache/node/24.14.inspect git (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0 --jq .object.sha ath ../../../.pr**/*.json (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0 --jq .object.sha --show-toplevel git /usr/bin/git te &#39;scripts/**/*node rev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/gh te &#39;../../../**//usr/bin/gh rev-parse /opt/hostedtoolcgraphql gh (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v0.1.2
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq .object.sha -w actions/setup/js/node_modules/flatted/golang/pkg/flatted/flatted.go /home/REDACTED/.local/bin/node cmd/gh-aw/capitagit cmd/gh-aw/commanrev-parse cmd/gh-aw/format--show-toplevel node /opt�� prettier --write /snap/bin/sh --ignore-path .prettierignore --log-level=erro--show-toplevel sh (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq .object.sha k/gh-aw/gh-aw/.github/workflows bash 86_64/sh l (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq .object.sha (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq .object.sha /tmp/TestHashStability_SameInputSameOutput2900646373/001/stability-test.md ache/go/1.25.0/x**/*.cjs /usr/bin/git ath ../../../.prgit 8479175/b074/vetrev-parse son git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linurev-parse /opt/hostedtoolcache/node/24.14.0/x64/bin/node re --log-level=esed /tmp/go-build335s/-\{2,\}/-/g repository(owner: $owner, name:--show-toplevel node (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha */*.json&#39; &#39;!../../../pkg/workflow/js/**/*.json&#39; --ignore-path 8479175/b260/vet.cfg 8479175/b001/workflow.test -nxv --local 0/x64/bin/bash 8479175/b001/workflow.test e=/t�� h ../../../.prettierignore m0s k/gh-aw/node_modules/.bin/sh nore credential.usern/home/REDACTED/work/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/prettier 86_64/bash /opt/hostedtoolc../../../**/*.json (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/# --jq .object.sha --noprofile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/# --jq .object.sha --show-toplevel docker $name) { hasDiscussionsEnabled } } inspect mcp/fetch nfig/composer/ve/home/REDACTED/work/gh-aw/gh-aw/.github/workflows git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/link /home/REDACTED/.local/bin/node /tmp/go-build155/usr/bin/gh -importcfg /home/REDACTED/worgraphql node (http block)
  • https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha */*.json&#39; &#39;!../../../pkg/workflow/js/**/*.json&#39; --ignore-path git modules/@npmcli/run-script/lib/node-gyp-bin/sh get --local ache/go/1.25.0/x&#34;prettier&#34; --write &#39;scripts/**/*.js&#39; --ignore-path .prettierignore --log-level=error /opt/hostedtoolcache/go/1.25.0/xconfig -V=f�� h ../../../.prettierignore (&#39;stdio_mcp_tool:&#39;) print(json.dumps(stdio, ind repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } nore credential.usern/home/REDACTED/work/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/prettier 0/x64/bin/bash /opt/hostedtoolc../../../**/*.json (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan

Copy link
Copy Markdown
Collaborator

@copilot mark tools.serena as deprecated

@github-actions

github-actionsBot commented Mar 28, 2026

Copy link
Copy Markdown
Contributor

🌑 The shadows whisper... Smoke Codex failed. The oracle requires further meditation...

@github-actions

github-actionsBot commented Mar 28, 2026

Copy link
Copy Markdown
Contributor

✅ All tools validated successfully! Agent Container Smoke Test confirms agent container is ready.

@github-actions

Copy link
Copy Markdown
Contributor

📰 BREAKING: Smoke Copilot is now investigating this pull request. Sources say the story is developing...

@github-actions

github-actionsBot commented Mar 28, 2026

Copy link
Copy Markdown
Contributor

🎬 THE ENDSmoke ClaudeMISSION: ACCOMPLISHED! The hero saves the day! ✨

@github-actions

Copy link
Copy Markdown
Contributor

Agent Container Tool Check

ToolStatusVersion
bash5.2.21
shavailable
git2.53.0
jq1.7
yqv4.52.4
curl8.5.0
gh2.88.1
nodev20.20.1
python33.12.3
gogo1.24.13
javaopenjdk 21.0.10
dotnet10.0.201

Result: 12/12 tools available ✅

Overall Status: PASS

🔧 Tool validation by Agent Container Smoke Test ·

@github-actions

Copy link
Copy Markdown
Contributor

Smoke test results for run §23684090942:

TestStatus
GitHub MCP (last 2 merged PRs)
MCP Scripts GH CLI
Serena MCP
Playwright (github.com)
Web Fetch
File Writing + Bash
Discussion Interaction
Build gh-aw
Discussion Creation
Workflow Dispatch
PR Review

Overall: ✅ PASS

@pelikhan

📰 BREAKING: Report filed by Smoke Copilot ·

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Smoke test review for PR #23192. Changeset and expression extraction changes look correct. The import-schema feature with uses/with syntax is well-implemented.

📰 BREAKING: Report filed by Smoke Copilot

// awImportInputsExprRegex matches ${{ github.aw.import-inputs.<key> }} and
// ${{ github.aw.import-inputs.<key>.<subkey> }} expressions (import-schema form).
// Captures the full dotted path (e.g. "count" or "config.apiKey").
var awImportInputsExprRegex = regexp.MustCompile(`\$\{\{\s*github\.aw\.import-inputs\.([a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)?)\s*\}\}`)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Smoke test review: New awImportInputsExprRegex looks good. The pattern correctly handles github.aw.import-inputs.<key> expressions for typed input validation in imported workflows.

"gh-aw": patch
---

Add support for workflow imports using `uses`/`with` syntax with `import-schema` validation, including typed input validation and `github.aw.import-inputs.*` expression support in imported content.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Smoke test review: Changeset correctly describes the uses/with import syntax addition and the deprecation of tools.serena. Clear and informative.

@github-actions

Copy link
Copy Markdown
Contributor

📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test Results — Run §23684090954

Core tests: ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅
PR review tests: ✅ ✅ ✅ ⚠️ ✅ ✅ ⚠️

#Test
1GitHub MCP
2GH CLI
3Serena (11 symbols)
4Make build
5Playwright
6Tavily search
7-8File write + bash
9Discussion comment
10AW MCP status
11Slack safe output
12Update PR
13Review comments
14Submit review
15Resolve thread⚠️ skipped
16Add reviewer
17Push to branch
18Close test PR⚠️ skipped

Overall: PARTIAL (2 skipped, 0 failed)

💥 [THE END] — Illustrated by Smoke Claude ·

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💥 Automated smoke test review - all systems nominal!

💥 [THE END] — Illustrated by Smoke Claude

"gh-aw": patch
---

Add support for workflow imports using `uses`/`with` syntax with `import-schema` validation, including typed input validation and `github.aw.import-inputs.*` expression support in imported content.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good changeset description — clearly summarizes the import schema additions and the tools.serena deprecation in one concise entry.

# Resolved workflow manifest:
# Imports:
# - shared/mcp/serena-go.md
# - shared/mcp/serena.md

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding shared/mcp/serena.md to the resolved imports list looks correct — this aligns with the migration from tools.serena to the new shared MCP server workflow.

@pelikhan
pelikhan marked this pull request as ready for review March 28, 2026 11:39
CopilotAI review requested due to automatic review settings March 28, 2026 11:39

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR expands the workflow import system to support GitHub Actions–style uses/with syntax, introduces import-schema for validating imported inputs, adds github.aw.import-inputs.* expressions, and migrates Serena usage away from tools.serena toward shared workflows with explicit mcp-servers.serena configuration.

Changes:

  • Add uses/with import spec parsing, nested import propagation, and enforce single-import consistency (conflicting with values error).
  • Add import-schema support: schema declaration, with validation, and expression substitution via github.aw.import-inputs.*.
  • Deprecate tools.serena, add shared Serena workflows, update renderers/docker image collection, and migrate existing workflows/locks.

Reviewed changes

Copilot reviewed 49 out of 49 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
pkg/workflow/tools_parser.goUpdates tool documentation to mark Serena as deprecated in the tools section.
pkg/workflow/strict_mode_serena_test.goAdjusts strict-mode tests to clarify deprecated-but-allowed Serena behavior.
pkg/workflow/serena_go_import_test.goAdds end-to-end tests for serena-go.md → serena.md import chains and MCP config rendering.
pkg/workflow/mcp_renderer.goRoutes serena to the custom MCP renderer when explicit container config is present.
pkg/workflow/frontmatter_types.goAdds import-schema to typed frontmatter config.
pkg/workflow/expression_safety_validation.goAllows github.aw.import-inputs.* (including dotted object access) through safety validation.
pkg/workflow/expression_patterns.goAdds regex patterns for github.aw.import-inputs.* extraction/substitution.
pkg/workflow/expression_extraction.goImplements substitution for github.aw.import-inputs.* values, including dotted lookup and JSON serialization for arrays/maps.
pkg/workflow/docker.goCollects Serena Docker images from explicit container: config first, with legacy fallback.
pkg/workflow/compiler_orchestrator_tools.goEmits tools.serena deprecation warnings only for explicit tools.serena usage in top-level frontmatter.
pkg/workflow/codex_mcp.goMirrors serena custom-rendering behavior for Codex MCP output.
pkg/parser/schemas/main_workflow_schema.jsonExtends schema with import-schema, uses/with import item form, and marks tools.serena deprecated.
pkg/parser/include_processor.goPermits import-schema in shared frontmatter and defers validation when unsubstituted expressions exist.
pkg/parser/import_field_extractor.goSubstitutes import inputs into raw content, validates with against import-schema, and extracts fields from substituted content.
pkg/parser/import_conflict_test.goAdds unit tests for conflicting/duplicate imports and transitive conflict detection.
pkg/parser/import_bfs.goParses uses/with in nested imports and enforces single-import input consistency via visitedInputs.
.github/workflows/shared/mcp/serena.mdAdds parameterized Serena shared workflow with explicit MCP server config and import-schema.
.github/workflows/shared/mcp/serena-go.mdAdds Go wrapper workflow importing serena.md via uses/with.
.github/workflows/smoke-copilot.mdMigrates Serena configuration to shared Serena imports.
.github/workflows/smoke-copilot-arm.mdMigrates Serena configuration to shared Serena imports.
.github/workflows/smoke-codex.mdMigrates Serena configuration to shared Serena imports.
.github/workflows/smoke-claude.mdMigrates Serena configuration to shared Serena imports.
.github/workflows/jsweep.mdMigrates Serena configuration to imports: uses: shared/mcp/serena.md with languages input.
.github/workflows/daily-mcp-concurrency-analysis.mdMigrates Serena configuration to shared Serena import with multi-language input.
.github/workflows/terminal-stylist.lock.ymlUpdates resolved manifest and rendered prompt/config output after Serena import chain changes.
.github/workflows/smoke-codex.lock.ymlUpdates resolved manifest and MCP config rendering after Serena import chain changes.
.github/workflows/sergo.lock.ymlUpdates resolved manifest and rendered prompt/config output after Serena import chain changes.
.github/workflows/repository-quality-improver.lock.ymlUpdates resolved manifest and rendered prompt/config output after Serena import chain changes.
.github/workflows/q.lock.ymlUpdates resolved manifest and rendered prompt/config output after Serena import chain changes.
.github/workflows/mcp-inspector.lock.ymlUpdates resolved manifest and rendered prompt/config output after Serena import chain changes.
.github/workflows/jsweep.lock.ymlUpdates resolved manifest and rendered prompt/config output after Serena import chain changes.
.github/workflows/glossary-maintainer.lock.ymlUpdates resolved manifest and rendered prompt/config output after Serena import chain changes.
.github/workflows/duplicate-code-detector.lock.ymlUpdates resolved manifest and rendered prompt/config output after Serena import chain changes.
.github/workflows/daily-testify-uber-super-expert.lock.ymlUpdates resolved manifest and rendered prompt/config output after Serena import chain changes.
.github/workflows/daily-mcp-concurrency-analysis.lock.ymlUpdates resolved manifest and rendered prompt/config output after Serena import chain changes.
.github/workflows/daily-function-namer.lock.ymlUpdates resolved manifest and rendered prompt/config output after Serena import chain changes.
.github/workflows/daily-file-diet.lock.ymlUpdates resolved manifest and rendered prompt/config output after Serena import chain changes.
.github/workflows/daily-compiler-quality.lock.ymlUpdates resolved manifest and rendered prompt/config output after Serena import chain changes.
.github/workflows/archie.lock.ymlUpdates resolved manifest and rendered prompt/config output after Serena import chain changes.
.changeset/patch-add-import-schema-uses-with.mdAdds changeset entry describing new import syntax/schema and Serena deprecation/migration.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@pelikhan

Copy link
Copy Markdown
Collaborator

@copilot use technical doc writer

  • update imports docs with new syntax
  • Update Serena docs with deprecation notice in favor of import

…te Serena guide with deprecation notice
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/bf26247c-4cc3-45c1-9048-fa1dbc11dd30
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>

CopilotAI commented Mar 28, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot use technical doc writer

  • update imports docs with new syntax ...

Done in 723519e.

docs/src/content/docs/reference/imports.md:

  • Added a "Parameterized imports (uses/with)" subsection under Syntax with a concrete example
  • Added a "Single-import constraint" subsection documenting the conflict-detection error message
  • Added a full "Import Schema (import-schema)" section with the type table (string, number, boolean, choice, array, object), ${{ github.aw.import-inputs.* }} expression docs, and a complete caller example
  • Added import-schema: to the Allowed Import Fields list

docs/src/content/docs/guides/serena.md:

  • Added a [!WARNING] deprecation notice at the top pointing to the migration section
  • Replaced the Quick Start section with import-based examples (shared/mcp/serena.md and shared/mcp/serena-go.md)
  • Added a "Migration from tools.serena" section with before/after snippets and the compiler warning text
  • Updated usage examples to use the import syntax

@pelikhan

Copy link
Copy Markdown
Collaborator

…estifylint)
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/ae9513a1-b9f8-4242-814d-110a956fa40d
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>

CopilotAI commented Mar 28, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot lint go https://github.com/github/gh-aw/actions/runs/23684747031/job/69002356056

Fixed in 17f3092. Replaced assert.True(t, strings.Contains(...)) with assert.Contains(t, ...) and removed the now-unused strings import in pkg/workflow/serena_go_import_test.go.

@pelikhan
pelikhan merged commit 3239a61 into mainMar 28, 2026
55 checks passed
@pelikhan
pelikhan deleted the copilot/extend-compiler-import-schemas branch March 28, 2026 12:24
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@pelikhan