Skip to content

Update runtime to 1.0.12-0#927

Merged
SteveSandersonMS merged 5 commits intomainfrom
stevesa/update-to-1.0.12-0
Mar 25, 2026
Merged

Update runtime to 1.0.12-0#927
SteveSandersonMS merged 5 commits intomainfrom
stevesa/update-to-1.0.12-0

Conversation

@SteveSandersonMS
Copy link
Contributor

@SteveSandersonMS SteveSandersonMS commented Mar 25, 2026

All the test fixes are because there's a breaking runtime change: ephemeral events are no longer included in the list of events returned to session.getMessages. Now, the only way to observe ephemeral events is to have an active event listener at the time they were raised, because the runtime doesn't even track them in memory after that.

This is a good change, because it means "resume" behaves the same whether you're resuming a session from disk or that's already active due to a different client. Previously there was an inconsistency whereby session.getMessages would return ephemeral events that happened during the current session execution but not ones that happened in earlier executions.

@SteveSandersonMS SteveSandersonMS requested a review from a team as a code owner March 25, 2026 16:34
Copilot AI review requested due to automatic review settings March 25, 2026 16:34
Copy link
Contributor

Copilot AI left a comment

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 updates the repo’s runtime/schema dependency to @github/copilot 1.0.12-0 and regenerates the session event models across SDKs to include the new steerable flag on session start metadata.

Changes:

  • Bump Node dependency @github/copilot to ^1.0.12-0 (and update lockfile).
  • Regenerate session event types/models to add optional steerable (Node/TS, Python, Go, .NET).
  • Ensure (de)serialization includes the new field where applicable (Python).

Reviewed changes

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

Show a summary per file
File Description
python/copilot/generated/session_events.py Adds steerable to the generated Data dataclass and updates from_dict/to_dict to parse/emit it.
nodejs/src/generated/session-events.ts Adds optional steerable to the session start event data typing.
nodejs/package.json Bumps @github/copilot dependency to ^1.0.12-0.
nodejs/package-lock.json Locks resolved @github/copilot and platform packages to 1.0.12-0.
go/generated_session_events.go Adds Steerable field to generated Data struct with JSON tag.
dotnet/src/Generated/SessionEvents.cs Adds Steerable to SessionStartData with JSON attributes.
Files not reviewed (1)
  • nodejs/package-lock.json: Language not supported

@github-actions
Copy link
Contributor

SDK Consistency Review ✅

I've reviewed this PR for cross-SDK consistency, and all changes maintain excellent consistency across the four SDK implementations.

Summary of Changes

This PR updates the runtime to version 1.0.12-0 and adds support for a new steerable field in session start events. Here's how the field is implemented across all SDKs:

SDK Implementation Location
Node.js/TypeScript steerable?: boolean; nodejs/src/generated/session-events.ts
Python steerable: bool | None = None python/copilot/generated/session_events.py
Go Steerable *bool go/generated_session_events.go
.NET public bool? Steerable { get; set; } dotnet/src/Generated/SessionEvents.cs

Consistency Analysis

Field naming: All SDKs use the correct casing convention for their language:

  • TypeScript: camelCase (steerable)
  • Python: snake_case (steerable)
  • Go: PascalCase (Steerable)
  • .NET: PascalCase (Steerable)

Type mapping: All use optional boolean, appropriately expressed in each language:

  • TypeScript: boolean? (optional via ?)
  • Python: bool | None (union with None)
  • Go: *bool (pointer for optionality)
  • .NET: bool? (nullable value type)

Documentation: All SDKs include the same documentation: "Whether this session supports remote steering via Mission Control"

Generated code: All changes are in generated files, indicating they came from the same schema update in the @github/copilot runtime package

Serialization: All implementations include proper JSON serialization/deserialization for the new field

Additional Changes

The PR also includes a test helper improvement in .NET (dotnet/test/Harness/TestHelper.cs) that adds an alreadyIdle parameter to handle resumed sessions more gracefully. This is .NET-specific test infrastructure and doesn't affect cross-SDK consistency.

Recommendation

This PR maintains excellent cross-SDK consistency. The new steerable field is uniformly available across all four SDK implementations with appropriate language-specific conventions. ✅ Approved from a consistency perspective.

Generated by SDK Consistency Review Agent for issue #927 ·

@github-actions
Copy link
Contributor

✅ Cross-SDK Consistency Review

This PR successfully maintains excellent consistency across all four SDK implementations. The changes fall into two categories:

1. Generated Type Addition: steerable property

All SDKs correctly added the new steerable?: boolean property to their SessionStartData types:

  • Node.js (nodejs/src/generated/session-events.ts): steerable?: boolean;
  • Python (python/copilot/generated/session_events.py): steerable: bool | None = None
  • Go (go/generated_session_events.go): Steerable *bool
  • .NET (dotnet/src/Generated/SessionEvents.cs): public bool? Steerable { get; set; }

All implementations include the correct documentation: "Whether this session supports remote steering via Mission Control"

2. Test Helper Enhancement: alreadyIdle parameter

All SDKs consistently added support for handling resumed sessions where session.idle events are ephemeral:

  • Node.js: getFinalAssistantMessage(session, { alreadyIdle: true })
  • Python: get_final_assistant_message(session, already_idle=True)
  • Go: GetFinalAssistantMessage(ctx, session, true) (variadic parameter)
  • .NET: GetFinalAssistantMessageAsync(session, alreadyIdle: true)

Each SDK applies this pattern consistently in the same two test scenarios:

  1. Resume session test - checking messages after resuming a completed session
  2. Event subscription test - verifying assistant response when idle was already observed

Language Convention Compliance ✅

The implementations correctly follow each language's naming conventions:

  • TypeScript: alreadyIdle (camelCase)
  • Python: already_idle (snake_case)
  • Go: alreadyIdle (camelCase for parameter)
  • C#: alreadyIdle (camelCase for parameter)

Verdict: No consistency issues found. This PR exemplifies excellent cross-SDK maintenance practices! 🎉

Generated by SDK Consistency Review Agent for issue #927 ·

@SteveSandersonMS SteveSandersonMS merged commit c70d632 into main Mar 25, 2026
36 checks passed
@SteveSandersonMS SteveSandersonMS deleted the stevesa/update-to-1.0.12-0 branch March 25, 2026 17:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants