Conversation
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/fb37a409-f510-46bc-92af-4af5823c2c42 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/fb37a409-f510-46bc-92af-4af5823c2c42 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
uses/with import syntax and import-schema validation
|
@copilot allow one level deep object definitions in import-schema It should be enough to recreate the qmd configuration data |
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/32fe5daa-b76d-433b-8bac-6b8318f7d59a Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Done in 8714dad. import-schema:
config:
type: object
properties:
apiKey:
type: string
required: true
timeout:
type: number
default: 30Sub-fields are validated (unknown keys, required checks, scalar type matching) and accessible via 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:
If you need me to access, download, or install something from one of these locations, you can either:
|
uses/with import syntax and import-schema validationuses/with import syntax and import-schema validation with object types
|
@copilot create a shared agentic workflow that uses import-schema and inputs to reimplement the "serena" tool support.
|
…-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>
Done in 242029a. Here's what was added:
import-schema:
languages:
type: array
items:
type: string
required: trueArray items are validated element-by-element. Arrays serialize as JSON ( Frontmatter expression substitution: New # Importing workflow
imports:
- uses: shared/mcp/serena.md
with:
languages: ["go", "typescript"]The shared workflow declares 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:
If you need me to access, download, or install something from one of these locations, you can either:
|
uses/with import syntax and import-schema validation with object typesuses/with import syntax and import-schema validation with object and array types
|
@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>
Done in 788997c. mcp-servers:
serena: ${{ github.aw.import-inputs.languages }}After expression substitution (e.g., I also fixed the schema validation to suppress 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:
If you need me to access, download, or install something from one of these locations, you can either:
|
|
@copilot mark tools.serena as deprecated |
…BFS nested uses/with import discovery Agent-Logs-Url: https://github.com/github/gh-aw/sessions/0a993e50-90c8-41fc-9c57-9898b485da68 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
|
Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details. 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:
If you need me to access, download, or install something from one of these locations, you can either:
|
…tegration tests Agent-Logs-Url: https://github.com/github/gh-aw/sessions/a13f6a87-d5ff-417b-a50d-7b019c6dd7c2 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Done in 791101d. Added two tests in
|
|
@copilot add check in importer that if it is imported more than once, the with values are matching. An imported script can only be imported once. |
…ed more than once Agent-Logs-Url: https://github.com/github/gh-aw/sessions/f05a6b29-51ad-4909-acd3-c875aaf8cf48 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Done in 70749d7.
Identical Four tests in 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:
If you need me to access, download, or install something from one of these locations, you can either:
|
uses/with import syntax, import-schema validation, deprecate tools.serena, and migrate workflows to serena-go.mduses/with import syntax, import-schema validation, deprecate tools.serena, migrate workflows to serena-go.md, and enforce single-import constraint
|
🌑 The shadows whisper... Smoke Codex failed. The oracle requires further meditation... |
|
✅ All tools validated successfully! Agent Container Smoke Test confirms agent container is ready. |
|
📰 BREAKING: Smoke Copilot is now investigating this pull request. Sources say the story is developing... |
|
🎬 THE END — Smoke Claude MISSION: ACCOMPLISHED! The hero saves the day! ✨ |
Agent Container Tool Check
Result: 12/12 tools available ✅ Overall Status: PASS
|
|
Smoke test results for run §23684090942:
Overall: ✅ PASS
|
There was a problem hiding this comment.
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*\}\}`) |
There was a problem hiding this comment.
🔍 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. |
There was a problem hiding this comment.
🔍 Smoke test review: Changeset correctly describes the uses/with import syntax addition and the deprecation of tools.serena. Clear and informative.
|
📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤 |
Smoke Test Results — Run §23684090954Core tests: ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅
Overall: PARTIAL (2 skipped, 0 failed)
|
There was a problem hiding this comment.
💥 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. |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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.
Imports currently only accept a string path or
{path, inputs}object. This adds auses/withform (mirroring GitHub Actions reusable workflow syntax), a top-levelimport-schemafield for declaring and validating those inputs, and new expressions for accessing them.New syntax
New: Parameterized Serena shared workflows
shared/mcp/serena.mdusesimport-schemato accept alanguagesarray and configures a complete explicit Serena MCP server (container, args, entrypoint, entrypointArgs, and workspace mount) — without relying on anytools.serenashorthand:shared/mcp/serena-go.mdis a Go-specific convenience wrapper that importsserena.mdpre-configured for Go:Deprecation:
tools.serenatools.serenais now deprecated in favour ofmcp-servers.serenavia theshared/mcp/serena.mdshared workflow. Compiling any workflow that usestools.serenaemits a deprecation warning:Existing workflows continue to compile without errors (backward compatible). The deprecation warning only fires when
tools.serenais explicitly set in the workflow frontmatter — it no longer fires incorrectly whenmcp-servers.serenais used via the recommended import path.Single-import constraint with
withconflict detectionA workflow file can now only be imported once per import graph. If the same file appears more than once, the
withvalues must be identical — conflicting values produce a compile-time error:Identical
withvalues (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.serenadirectly have been migrated:smoke-copilot.md,smoke-copilot-arm.md,smoke-claude.md,smoke-codex.md— now importshared/mcp/serena-go.mdjsweep.md— now usesimports: - uses: shared/mcp/serena.md with: languages: ["typescript"]daily-mcp-concurrency-analysis.md— now usesimports: - uses: shared/mcp/serena.md with: languages: ["go", "typescript"]Changes
pkg/parser/import_bfs.go—parseImportSpecsFromArraynow acceptsusesas alias forpathandwithas alias forinputs; BFS nested import discovery now handlesuses/withmap syntax (previously only plain strings), enabling chains likeserena-go.md → serena.mdto correctly propagatemcp-serversand tools to the parent workflow; addsvisitedInputsmap andcheckImportInputsConsistency/importInputsEqual/formatImportInputshelpers to enforce the single-import constraintpkg/parser/import_conflict_test.go— four tests covering: conflictingwithvalues (error), identicalwithvalues (ok), no-withdeduplication (ok), and transitive nested conflict (error)pkg/parser/import_field_extractor.go— validateswithvalues against the imported workflow'simport-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; addssubstituteImportInputsInContentto apply expression substitution to raw imported file content (including YAML frontmatter) before parsingpkg/parser/include_processor.go— addsimport-schemato the allowed fields list for shared workflow frontmatter; suppresses schema validation warnings for shared files containing unsubstituted${{ }}expressions in bothtoolsandmcp-serversfields (resolved at import time)pkg/parser/schemas/main_workflow_schema.json— addsimport-schematop-level property supporting scalar, object, and array types; extends import itemoneOfwithuses/withobject form; allows object and array values inwith; markstools.serenaasdeprecated: truewithx-deprecation-messagepkg/workflow/frontmatter_types.go— addsImportSchema map[string]anyfield toFrontmatterConfigpkg/workflow/expression_patterns.go— addsAWImportInputsPattern/AWImportInputsExpressionPatternforgithub.aw.import-inputs.*and dotted paths (github.aw.import-inputs.<key>.<subkey>)pkg/workflow/expression_extraction.go—SubstituteImportInputshandlesgithub.aw.inputs.*(legacy),github.aw.import-inputs.<key>(scalar/array), andgithub.aw.import-inputs.<key>.<subkey>(object sub-field); addsresolveImportInputPathfor dotted-path lookup; arrays and maps serialize as JSON (valid YAML inline syntax) viamarshalImportInputValuepkg/workflow/expression_safety_validation.go— permitsgithub.aw.import-inputs.*and dotted forms through expression safety checkspkg/workflow/tools_parser.go— removes thetools.serenadeprecation warning fromNewTools(was firing incorrectly formcp-servers.serenausage)pkg/workflow/compiler_orchestrator_tools.go— emits thetools.serenadeprecation warning only whentools.serenais explicitly set in the frontmattertools:section, before any mcp-servers mergingpkg/workflow/mcp_renderer.goandpkg/workflow/codex_mcp.go—case "serena":now routes to the generic custom MCP renderer when an explicitcontainer:config is present, instead of always using the hardcoded serena-specific rendererpkg/workflow/docker.go— Docker image collection reads the explicitcontainer:value from the serena config map first, falling back to language-based selection for legacytools.serenausagepkg/workflow/serena_go_import_test.go— addsTestImportSerenaGoMD(end-to-endmain.md → serena-go.md → serena.mdchain verifying Serena MCP container config, entrypoint args, and docker download step) andTestImportSerenaWithLanguagesMD(directserena.mdimport with multiple languages).github/workflows/shared/mcp/serena.md— parameterized shared workflow usingimport-schemawithlanguages: {type: array}that configures a complete explicit Serena MCP server (container, args, entrypoint, entrypointArgs, mounts) viamcp-servers.github/workflows/shared/mcp/serena-go.md— Go-specific convenience wrapper that importsserena.mdwithlanguages: ["go"]Backward compatibility is preserved: imports without
import-schemaaccept anywith/inputsvalues unchanged; workflows usingtools.serenacontinue 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
Changeset
uses/withimport syntax withimport-schemainput validation andgithub.aw.import-inputs.*expressions, and deprecatestools.serenain favor of shared Serena workflows backed bymcp-servers.serena.✨ PR Review Safe Output Test - Run 23684090954