Skip to content

Commit d2f62ce

Browse files
committed
Disable default Copilot sync assignment
1 parent 6f14fc7 commit d2f62ce

File tree

5 files changed

+56
-41
lines changed

5 files changed

+56
-41
lines changed

.github/workflows/codex-cli-watch.yml

Lines changed: 52 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ jobs:
218218
CHANGED_FLAGS: ${{ steps.detect.outputs.changed_flags }}
219219
CHANGED_MODELS: ${{ steps.detect.outputs.changed_models }}
220220
CHANGED_FEATURES: ${{ steps.detect.outputs.changed_features }}
221-
ASSIGNEE: ${{ vars.SDK_SYNC_ASSIGNEE != '' && vars.SDK_SYNC_ASSIGNEE || 'copilot' }}
221+
ASSIGNEE: ${{ vars.SDK_SYNC_ASSIGNEE }}
222222
with:
223223
script: |
224224
const currentSha = process.env.CURRENT_SHA;
@@ -229,7 +229,7 @@ jobs:
229229
const changedFlags = process.env.CHANGED_FLAGS || '- (not provided)';
230230
const changedModels = process.env.CHANGED_MODELS || '- (not provided)';
231231
const changedFeatures = process.env.CHANGED_FEATURES || '- (not provided)';
232-
const assignee = process.env.ASSIGNEE || 'copilot';
232+
const assignee = (process.env.ASSIGNEE || '').trim();
233233
234234
const shortCurrent = currentSha.slice(0, 7);
235235
const shortLatest = latestSha.slice(0, 7);
@@ -332,50 +332,65 @@ jobs:
332332
labels: [labelName],
333333
});
334334
335-
try {
336-
await github.rest.issues.addAssignees({
337-
owner: context.repo.owner,
338-
repo: context.repo.repo,
339-
issue_number: reusableIssue.number,
340-
assignees: [assignee],
341-
});
342-
core.info(`Updated existing sync issue #${reusableIssue.number} and assigned @${assignee}`);
343-
} catch (error) {
344-
core.warning(`Issue assignment failed (${error.message}) for #${reusableIssue.number}.`);
345-
await github.rest.issues.createComment({
346-
owner: context.repo.owner,
347-
repo: context.repo.repo,
348-
issue_number: reusableIssue.number,
349-
body: `Could not auto-assign @${assignee}. Please assign manually.`,
350-
});
335+
if (assignee) {
336+
try {
337+
await github.rest.issues.addAssignees({
338+
owner: context.repo.owner,
339+
repo: context.repo.repo,
340+
issue_number: reusableIssue.number,
341+
assignees: [assignee],
342+
});
343+
core.info(`Updated existing sync issue #${reusableIssue.number} and assigned @${assignee}`);
344+
} catch (error) {
345+
core.warning(`Issue assignment failed (${error.message}) for #${reusableIssue.number}.`);
346+
await github.rest.issues.createComment({
347+
owner: context.repo.owner,
348+
repo: context.repo.repo,
349+
issue_number: reusableIssue.number,
350+
body: `Could not auto-assign @${assignee}. Please assign manually.`,
351+
});
352+
}
353+
} else {
354+
core.info(`Updated existing sync issue #${reusableIssue.number} without assignee.`);
351355
}
352356
} else {
353-
try {
357+
if (assignee) {
358+
try {
359+
issue = await github.rest.issues.create({
360+
owner: context.repo.owner,
361+
repo: context.repo.repo,
362+
title,
363+
body,
364+
labels: [labelName],
365+
assignees: [assignee],
366+
});
367+
core.info(`Created and assigned issue #${issue.data.number} to @${assignee}`);
368+
} catch (error) {
369+
core.warning(`Issue assignment failed (${error.message}), creating without assignee.`);
370+
issue = await github.rest.issues.create({
371+
owner: context.repo.owner,
372+
repo: context.repo.repo,
373+
title,
374+
body,
375+
labels: [labelName],
376+
});
377+
378+
await github.rest.issues.createComment({
379+
owner: context.repo.owner,
380+
repo: context.repo.repo,
381+
issue_number: issue.data.number,
382+
body: `Could not auto-assign @${assignee}. Please assign manually.`,
383+
});
384+
}
385+
} else {
354386
issue = await github.rest.issues.create({
355387
owner: context.repo.owner,
356388
repo: context.repo.repo,
357389
title,
358390
body,
359391
labels: [labelName],
360-
assignees: [assignee],
361-
});
362-
core.info(`Created and assigned issue #${issue.data.number} to @${assignee}`);
363-
} catch (error) {
364-
core.warning(`Issue assignment failed (${error.message}), creating without assignee.`);
365-
issue = await github.rest.issues.create({
366-
owner: context.repo.owner,
367-
repo: context.repo.repo,
368-
title,
369-
body,
370-
labels: [labelName],
371-
});
372-
373-
await github.rest.issues.createComment({
374-
owner: context.repo.owner,
375-
repo: context.repo.repo,
376-
issue_number: issue.data.number,
377-
body: `Could not auto-assign @${assignee}. Please assign manually.`,
378392
});
393+
core.info(`Created sync issue #${issue.data.number} without assignee.`);
379394
}
380395
}
381396

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ If no new rule is detected -> do not update the file.
8989
- When asked to fix review findings, close every confirmed finding in the same pass; do not leave partial fixes.
9090
- Do not keep or add public sample projects; repository focus is SDK + tests only.
9191
- Upstream sync automation must track real `openai/codex` CLI changes (flags/models/features), not TypeScript SDK surface diffs, and open actionable repository issues for required SDK follow-up.
92-
- Automatically opened upstream sync issues must include change summary/checklist and assign Copilot by default.
92+
- Automatically opened upstream sync issues must include change summary/checklist and stay unassigned unless the user explicitly requests an assignee.
9393
- For `openai/codex` repo sync/update work, always inspect the bundled `models.json` catalog in `submodules/openai-codex` (prefer `codex-rs/models-manager/models.json`, fall back to `codex-rs/core/models.json` for older pins) and reconcile SDK model constants against that repo-authoritative source.
9494
- At the end of implementation/code-change tasks, create a git commit unless the user explicitly says not to, so the workspace ends in a reviewable state.
9595
- Run verification in this order:

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ var thread = client.StartThread(new ThreadOptions
9999

100100
`Ephemeral = false` forces rollout persistence even if your Codex config/profile enables `ephemeral = true`.
101101

102-
SDK turns still run through non-interactive `codex exec`, so the default CLI/App history views may hide them. To reopen a persisted SDK session outside the SDK, use `codex resume <threadId>` directly or `codex resume --include-non-interactive`.
102+
SDK turns still run through non-interactive `codex exec`, so the default CLI/App history views may hide them. To reopen a persisted SDK session outside the SDK, use `codex resume <threadId>` directly.
103103

104104
## Codex CLI Metadata
105105

docs/Features/release-and-sync-automation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ Keep package quality and upstream Codex CLI parity automatically verified throug
4747
- Completing a Codex CLI sync issue must update the pinned `submodules/openai-codex` commit after validation.
4848
- Sync issue body must derive flag changes from CLI source snapshots, model changes from the bundled `models.json` catalog (`codex-rs/models-manager/models.json` in current upstream, with fallback to `codex-rs/core/models.json` for older pins), and feature changes from `codex-rs/core/config.schema.json` so alerts stay actionable.
4949
- SDK model constants must cover every bundled slug from the pinned `submodules/openai-codex` `models.json` catalog whenever upstream Codex repo sync work updates the pinned submodule.
50-
- Sync issue must assign Copilot by default.
50+
- Sync issue must stay unassigned by default unless repository configuration explicitly provides an assignee.
5151
- Sync issue automation must keep at most one open `codex-cli-sync` issue at a time by updating the active issue and closing superseded ones when upstream advances again.
5252

5353
---

docs/Features/thread-run-flow.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ Provide deterministic thread-based execution over Codex CLI so C# consumers can
4747
- Codex executable resolution is deterministic: prefer npm-vendored native binary, then PATH lookup; on Windows PATH lookup checks `codex.exe`, `codex.cmd`, `codex.bat`, then `codex`.
4848
- Thread options map full Codex CLI flags (`profile`, `enable/disable`, OSS provider, ephemeral/color/progress/output options), plus raw `AdditionalCliArguments` passthrough for forward-compatible flags.
4949
- Explicit `ThreadOptions.Ephemeral = false` must override inherited Codex config/profile `ephemeral = true`, so SDK callers can force persistent rollout storage deterministically.
50-
- Non-ephemeral SDK runs persist as non-interactive `codex exec` sessions; they remain resumable by thread id, but Codex CLI pickers may require `codex resume --include-non-interactive` to list them.
50+
- Non-ephemeral SDK runs persist as non-interactive `codex exec` sessions; they remain resumable by thread id even when default CLI/App history pickers do not show them.
5151
- If thread web search options are not set, SDK does not emit `web_search` overrides and keeps effective CLI/config setting unchanged.
5252
- Cleanup failures are never silently swallowed; process/schema/image cleanup issues are logged through `ILogger`.
5353

0 commit comments

Comments
 (0)