oh-my-opencode 5.0.0-beta.7 → 5.0.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/command/publish.md +44 -16
- package/.agents/skills/publish/SKILL.md +44 -16
- package/.agents/skills/work-with-pr/SKILL.md +37 -23
- package/.opencode/command/publish.md +44 -16
- package/.opencode/skills/work-with-pr/SKILL.md +37 -23
- package/dist/agents/atlas/agent.d.ts +0 -1
- package/dist/agents/sisyphus/grok-4.d.ts +20 -0
- package/dist/agents/sisyphus/index.d.ts +2 -0
- package/dist/agents/sisyphus-agent-config.d.ts +6 -0
- package/dist/agents/sisyphus-agent-factory.d.ts +1 -1
- package/dist/agents/types.d.ts +2 -2
- package/dist/cli/index.js +465 -352
- package/dist/cli/run/on-complete-hook.d.ts +2 -0
- package/dist/cli-node/index.js +465 -352
- package/dist/hooks/atlas/final-wave-approval-gate.test-support.d.ts +50 -0
- package/dist/hooks/atlas/system-reminder-templates.d.ts +0 -1
- package/dist/index.js +283 -38
- package/dist/shared/normalize-sdk-response.d.ts +1 -0
- package/dist/shared/shell-env.d.ts +1 -1
- package/dist/skills/frontend/SKILL.md +10 -7
- package/dist/skills/frontend/references/design/_INDEX.md +1 -0
- package/dist/skills/frontend/references/design/stylegallery.md +80 -0
- package/dist/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
- package/dist/skills/ultimate-browsing/engine/AGENTS.md +110 -0
- package/dist/skills/ultimate-browsing/engine/templates/package.json +1 -1
- package/dist/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
- package/dist/skills/ulw-plan/SKILL.md +2 -2
- package/dist/skills/ulw-plan/references/full-workflow.md +27 -3
- package/dist/skills/ulw-plan/references/intent-clear.md +2 -1
- package/dist/skills/ulw-plan/references/intent-unclear.md +3 -3
- package/dist/tui.js +77 -9
- package/package.json +20 -19
- package/packages/lsp-core/src/lsp/client-diagnostics-concurrency.integration.test.ts +44 -0
- package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +0 -28
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +26 -4
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +26 -4
- package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +3 -17
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +11 -16
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +16 -23
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +9 -7
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +0 -6
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +6 -4
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +12 -9
- package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +28 -37
- package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +37 -69
- package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +2 -3
- package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +1 -15
- package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/test/cli.test.ts +0 -3
- package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +2 -16
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +3 -9
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +27 -3
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +2 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +3 -3
- package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +0 -136
- package/packages/omo-codex/plugin/components/ultrawork/test/skill-pointer.test.ts +0 -2
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +5 -3
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +0 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +0 -3
- package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +2 -35
- package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +4 -5
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +20 -20
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +10 -7
- package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +80 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +110 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
- package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +5 -3
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +27 -3
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +2 -1
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +3 -3
- package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +19 -173
- package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +4 -24
- package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +175 -13
- package/packages/omo-codex/plugin/test/aggregate.test.mjs +78 -2
- package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +19 -33
- package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +21 -27
- package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +0 -36
- package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +101 -0
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +1 -119
- package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +0 -40
- package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +6 -62
- package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +3 -36
- package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +0 -44
- package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +2 -6
- package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +0 -3
- package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +0 -3
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
- package/packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs +7 -2
- package/packages/shared-skills/skills/frontend/SKILL.md +10 -7
- package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -0
- package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +80 -0
- package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
- package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +110 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +2 -2
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +27 -3
- package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +2 -1
- package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +3 -3
- package/dist/tools/call-omo-agent/background-agent-executor.d.ts +0 -5
- package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +0 -92
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +0 -314
- package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +0 -24
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Publish oh-my-opencode to npm via GitHub Actions workflow
|
|
3
|
-
argument-hint: <patch|minor|major>
|
|
3
|
+
argument-hint: <patch|minor|major|explicit-semver>
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
|
|
@@ -54,15 +54,16 @@ This contract applies to the slash-command copies (`.agents/command/publish.md`,
|
|
|
54
54
|
|
|
55
55
|
## CRITICAL: ARGUMENT REQUIREMENT
|
|
56
56
|
|
|
57
|
-
**You MUST receive
|
|
57
|
+
**You MUST receive one release selector from the user.** Valid options:
|
|
58
58
|
- `patch`: Bug fixes, backward-compatible (1.1.7 → 1.1.8)
|
|
59
59
|
- `minor`: New features, backward-compatible (1.1.7 → 1.2.0)
|
|
60
60
|
- `major`: Breaking changes (1.1.7 → 2.0.0)
|
|
61
|
+
- An explicit valid semantic version, including a prerelease such as `5.0.0-beta.9`
|
|
61
62
|
|
|
62
|
-
**If the user did not provide a
|
|
63
|
-
> "To proceed with deployment,
|
|
63
|
+
**If the user did not provide a release selector, STOP IMMEDIATELY and ask:**
|
|
64
|
+
> "To proceed with deployment, specify `patch`, `minor`, `major`, or an explicit semantic version such as `5.0.0-beta.9`."
|
|
64
65
|
|
|
65
|
-
|
|
66
|
+
Reject any other value. Do not infer or repair malformed versions.
|
|
66
67
|
|
|
67
68
|
---
|
|
68
69
|
|
|
@@ -72,7 +73,7 @@ This contract applies to the slash-command copies (`.agents/command/publish.md`,
|
|
|
72
73
|
|
|
73
74
|
```
|
|
74
75
|
[
|
|
75
|
-
{ "id": "confirm-
|
|
76
|
+
{ "id": "confirm-release-input", "content": "Confirm release selector with user (patch/minor/major or explicit semver)", "status": "in_progress", "priority": "high" },
|
|
76
77
|
{ "id": "check-uncommitted", "content": "Check for uncommitted changes and commit if needed", "status": "pending", "priority": "high" },
|
|
77
78
|
{ "id": "sync-remote", "content": "Sync with remote (pull --rebase && push if unpushed commits)", "status": "pending", "priority": "high" },
|
|
78
79
|
{ "id": "run-workflow", "content": "Trigger GitHub Actions publish workflow", "status": "pending", "priority": "high" },
|
|
@@ -92,9 +93,23 @@ This contract applies to the slash-command copies (`.agents/command/publish.md`,
|
|
|
92
93
|
|
|
93
94
|
---
|
|
94
95
|
|
|
95
|
-
## STEP 1: CONFIRM
|
|
96
|
+
## STEP 1: CONFIRM AND CLASSIFY THE RELEASE SELECTOR
|
|
96
97
|
|
|
97
|
-
If the user already
|
|
98
|
+
If the user already supplied the selector in the command argument or message, that IS the confirmation. Parse it exactly once:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
RELEASE_INPUT="${ARGUMENTS}"
|
|
102
|
+
if [[ "$RELEASE_INPUT" =~ ^(patch|minor|major)$ ]]; then
|
|
103
|
+
RELEASE_KIND=bump
|
|
104
|
+
elif [[ "$RELEASE_INPUT" =~ ^([0-9]+\.){2}[0-9]+(-[0-9A-Za-z]+(\.[0-9A-Za-z]+)*)?$ ]]; then
|
|
105
|
+
RELEASE_KIND=version
|
|
106
|
+
else
|
|
107
|
+
echo "Invalid release selector: $RELEASE_INPUT" >&2
|
|
108
|
+
exit 1
|
|
109
|
+
fi
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Only ask and wait when no selector was provided.
|
|
98
113
|
|
|
99
114
|
---
|
|
100
115
|
|
|
@@ -125,16 +140,29 @@ This ensures the GitHub Actions workflow runs on the latest code including all l
|
|
|
125
140
|
|
|
126
141
|
## STEP 3: TRIGGER GITHUB ACTIONS WORKFLOW
|
|
127
142
|
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
gh workflow run publish -f bump={bump_type}
|
|
131
|
-
```
|
|
143
|
+
Dispatch from `dev`, pass bump selectors through `bump`, and pass exact versions through `version`. The required `bump` input remains `patch` for explicit-version dispatches but is ignored by the workflow because `version` takes precedence.
|
|
132
144
|
|
|
133
|
-
Wait 3 seconds, then get the run ID:
|
|
134
145
|
```bash
|
|
135
|
-
|
|
146
|
+
if [ "$RELEASE_KIND" = bump ]; then
|
|
147
|
+
RUN_URL="$(gh workflow run publish.yml --ref dev -f "bump=${RELEASE_INPUT}")"
|
|
148
|
+
else
|
|
149
|
+
RUN_URL="$(gh workflow run publish.yml --ref dev -f bump=patch -f "version=${RELEASE_INPUT}")"
|
|
150
|
+
fi
|
|
151
|
+
|
|
152
|
+
if ! [[ "$RUN_URL" =~ ^https://github.com/code-yeongyu/oh-my-openagent/actions/runs/[0-9]+$ ]]; then
|
|
153
|
+
echo "Publish dispatch did not return an exact workflow run URL: $RUN_URL" >&2
|
|
154
|
+
exit 1
|
|
155
|
+
fi
|
|
156
|
+
RUN_ID="${RUN_URL##*/}"
|
|
157
|
+
if ! [[ "$RUN_ID" =~ ^[0-9]+$ ]]; then
|
|
158
|
+
echo "Publish dispatch returned an invalid run ID: $RUN_ID" >&2
|
|
159
|
+
exit 1
|
|
160
|
+
fi
|
|
161
|
+
gh run view "${RUN_ID}" --json databaseId,status,url --jq '{databaseId,status,url}'
|
|
136
162
|
```
|
|
137
163
|
|
|
164
|
+
The returned run ID owns this release attempt. Never replace it with a latest-run lookup.
|
|
165
|
+
|
|
138
166
|
---
|
|
139
167
|
|
|
140
168
|
## STEP 4: WAIT FOR WORKFLOW COMPLETION
|
|
@@ -150,14 +178,14 @@ The publish run is a single workflow with sequential stages. Expected timeline (
|
|
|
150
178
|
|
|
151
179
|
Poll job-level status every 30 seconds and report stage transitions to the user:
|
|
152
180
|
```bash
|
|
153
|
-
gh run view {
|
|
181
|
+
gh run view "${RUN_ID}" --json status,conclusion,jobs --jq '{status, conclusion, stage: ([.jobs[] | select(.status=="in_progress") | .name] | join(", "))}'
|
|
154
182
|
```
|
|
155
183
|
|
|
156
184
|
**IMPORTANT: Use polling loop, NOT sleep commands.** Use the waiting time to draft the enhanced release summary (Step 6) — do not sit idle, and do not start any review activity.
|
|
157
185
|
|
|
158
186
|
If conclusion is `failure`, show error and stop:
|
|
159
187
|
```bash
|
|
160
|
-
gh run view {
|
|
188
|
+
gh run view "${RUN_ID}" --log-failed
|
|
161
189
|
```
|
|
162
190
|
|
|
163
191
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: publish
|
|
3
|
-
description: "Publish oh-my-opencode to npm by triggering the GitHub Actions publish workflow and verifying its artifacts. Ship-only: never runs pre-publish-review or re-reviews merged code unless the user explicitly asks. Argument: <patch|minor|major>. Triggers: publish, release, deploy, npm publish."
|
|
3
|
+
description: "Publish oh-my-opencode to npm by triggering the GitHub Actions publish workflow and verifying its artifacts. Ship-only: never runs pre-publish-review or re-reviews merged code unless the user explicitly asks. Argument: <patch|minor|major|explicit-semver>. Triggers: publish, release, deploy, npm publish."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
You are the release manager for oh-my-opencode. Execute the FULL publish workflow from start to finish.
|
|
@@ -53,15 +53,16 @@ This contract applies to the slash-command copies (`.agents/command/publish.md`,
|
|
|
53
53
|
|
|
54
54
|
## CRITICAL: ARGUMENT REQUIREMENT
|
|
55
55
|
|
|
56
|
-
**You MUST receive
|
|
56
|
+
**You MUST receive one release selector from the user.** Valid options:
|
|
57
57
|
- `patch`: Bug fixes, backward-compatible (1.1.7 → 1.1.8)
|
|
58
58
|
- `minor`: New features, backward-compatible (1.1.7 → 1.2.0)
|
|
59
59
|
- `major`: Breaking changes (1.1.7 → 2.0.0)
|
|
60
|
+
- An explicit valid semantic version, including a prerelease such as `5.0.0-beta.9`
|
|
60
61
|
|
|
61
|
-
**If the user did not provide a
|
|
62
|
-
> "To proceed with deployment,
|
|
62
|
+
**If the user did not provide a release selector, STOP IMMEDIATELY and ask:**
|
|
63
|
+
> "To proceed with deployment, specify `patch`, `minor`, `major`, or an explicit semantic version such as `5.0.0-beta.9`."
|
|
63
64
|
|
|
64
|
-
|
|
65
|
+
Reject any other value. Do not infer or repair malformed versions.
|
|
65
66
|
|
|
66
67
|
---
|
|
67
68
|
|
|
@@ -71,7 +72,7 @@ This contract applies to the slash-command copies (`.agents/command/publish.md`,
|
|
|
71
72
|
|
|
72
73
|
```
|
|
73
74
|
[
|
|
74
|
-
{ "id": "confirm-
|
|
75
|
+
{ "id": "confirm-release-input", "content": "Confirm release selector with user (patch/minor/major or explicit semver)", "status": "in_progress", "priority": "high" },
|
|
75
76
|
{ "id": "check-uncommitted", "content": "Check for uncommitted changes and commit if needed", "status": "pending", "priority": "high" },
|
|
76
77
|
{ "id": "sync-remote", "content": "Sync with remote (pull --rebase && push if unpushed commits)", "status": "pending", "priority": "high" },
|
|
77
78
|
{ "id": "run-workflow", "content": "Trigger GitHub Actions publish workflow", "status": "pending", "priority": "high" },
|
|
@@ -91,9 +92,23 @@ This contract applies to the slash-command copies (`.agents/command/publish.md`,
|
|
|
91
92
|
|
|
92
93
|
---
|
|
93
94
|
|
|
94
|
-
## STEP 1: CONFIRM
|
|
95
|
+
## STEP 1: CONFIRM AND CLASSIFY THE RELEASE SELECTOR
|
|
95
96
|
|
|
96
|
-
If the user already
|
|
97
|
+
If the user already supplied the selector in the command argument or message, that IS the confirmation. Parse it exactly once:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
RELEASE_INPUT="${ARGUMENTS}"
|
|
101
|
+
if [[ "$RELEASE_INPUT" =~ ^(patch|minor|major)$ ]]; then
|
|
102
|
+
RELEASE_KIND=bump
|
|
103
|
+
elif [[ "$RELEASE_INPUT" =~ ^([0-9]+\.){2}[0-9]+(-[0-9A-Za-z]+(\.[0-9A-Za-z]+)*)?$ ]]; then
|
|
104
|
+
RELEASE_KIND=version
|
|
105
|
+
else
|
|
106
|
+
echo "Invalid release selector: $RELEASE_INPUT" >&2
|
|
107
|
+
exit 1
|
|
108
|
+
fi
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Only ask and wait when no selector was provided.
|
|
97
112
|
|
|
98
113
|
---
|
|
99
114
|
|
|
@@ -124,16 +139,29 @@ This ensures the GitHub Actions workflow runs on the latest code including all l
|
|
|
124
139
|
|
|
125
140
|
## STEP 3: TRIGGER GITHUB ACTIONS WORKFLOW
|
|
126
141
|
|
|
127
|
-
|
|
128
|
-
```bash
|
|
129
|
-
gh workflow run publish -f bump={bump_type}
|
|
130
|
-
```
|
|
142
|
+
Dispatch from `dev`, pass bump selectors through `bump`, and pass exact versions through `version`. The required `bump` input remains `patch` for explicit-version dispatches but is ignored by the workflow because `version` takes precedence.
|
|
131
143
|
|
|
132
|
-
Wait 3 seconds, then get the run ID:
|
|
133
144
|
```bash
|
|
134
|
-
|
|
145
|
+
if [ "$RELEASE_KIND" = bump ]; then
|
|
146
|
+
RUN_URL="$(gh workflow run publish.yml --ref dev -f "bump=${RELEASE_INPUT}")"
|
|
147
|
+
else
|
|
148
|
+
RUN_URL="$(gh workflow run publish.yml --ref dev -f bump=patch -f "version=${RELEASE_INPUT}")"
|
|
149
|
+
fi
|
|
150
|
+
|
|
151
|
+
if ! [[ "$RUN_URL" =~ ^https://github.com/code-yeongyu/oh-my-openagent/actions/runs/[0-9]+$ ]]; then
|
|
152
|
+
echo "Publish dispatch did not return an exact workflow run URL: $RUN_URL" >&2
|
|
153
|
+
exit 1
|
|
154
|
+
fi
|
|
155
|
+
RUN_ID="${RUN_URL##*/}"
|
|
156
|
+
if ! [[ "$RUN_ID" =~ ^[0-9]+$ ]]; then
|
|
157
|
+
echo "Publish dispatch returned an invalid run ID: $RUN_ID" >&2
|
|
158
|
+
exit 1
|
|
159
|
+
fi
|
|
160
|
+
gh run view "${RUN_ID}" --json databaseId,status,url --jq '{databaseId,status,url}'
|
|
135
161
|
```
|
|
136
162
|
|
|
163
|
+
The returned run ID owns this release attempt. Never replace it with a latest-run lookup.
|
|
164
|
+
|
|
137
165
|
---
|
|
138
166
|
|
|
139
167
|
## STEP 4: WAIT FOR WORKFLOW COMPLETION
|
|
@@ -149,14 +177,14 @@ The publish run is a single workflow with sequential stages. Expected timeline (
|
|
|
149
177
|
|
|
150
178
|
Poll job-level status every 30 seconds and report stage transitions to the user:
|
|
151
179
|
```bash
|
|
152
|
-
gh run view {
|
|
180
|
+
gh run view "${RUN_ID}" --json status,conclusion,jobs --jq '{status, conclusion, stage: ([.jobs[] | select(.status=="in_progress") | .name] | join(", "))}'
|
|
153
181
|
```
|
|
154
182
|
|
|
155
183
|
**IMPORTANT: Use polling loop, NOT sleep commands.** Use the waiting time to draft the enhanced release summary (Step 6) — do not sit idle, and do not start any review activity.
|
|
156
184
|
|
|
157
185
|
If conclusion is `failure`, show error and stop:
|
|
158
186
|
```bash
|
|
159
|
-
gh run view {
|
|
187
|
+
gh run view "${RUN_ID}" --log-failed
|
|
160
188
|
```
|
|
161
189
|
|
|
162
190
|
---
|
|
@@ -196,12 +196,20 @@ while true:
|
|
|
196
196
|
|
|
197
197
|
### Gate A: CI Checks
|
|
198
198
|
|
|
199
|
-
CI is the fastest feedback loop.
|
|
199
|
+
CI is the fastest feedback loop. Subscribe to its completion via `monitor` — never block a model round-trip on `gh pr checks --watch`.
|
|
200
200
|
|
|
201
|
-
```
|
|
202
|
-
#
|
|
203
|
-
#
|
|
204
|
-
|
|
201
|
+
```
|
|
202
|
+
# Subscribe to CI completion — the monitor event wakes the session when checks finish.
|
|
203
|
+
# Do NOT use `gh pr checks --watch` as a blocking tool call; it burns a full model
|
|
204
|
+
# round-trip (~29s) on every poll. Instead, register a monitor and end the turn:
|
|
205
|
+
monitor({
|
|
206
|
+
description: "CI completion for PR $PR_NUMBER",
|
|
207
|
+
command: "gh pr checks $PR_NUMBER --watch --fail-fast",
|
|
208
|
+
filter: "completed|fail|cancel"
|
|
209
|
+
})
|
|
210
|
+
# → end turn; the monitor's matching line arrives as an injected event.
|
|
211
|
+
# For a single midpoint status peek (at most once), use:
|
|
212
|
+
# gh pr checks "$PR_NUMBER" # one-shot, no --watch
|
|
205
213
|
```
|
|
206
214
|
|
|
207
215
|
**On failure**: Get the failed run logs to understand what broke:
|
|
@@ -243,20 +251,21 @@ fi
|
|
|
243
251
|
|
|
244
252
|
**On issues**: Cubic's review body contains structured issue descriptions. Parse them, determine which are valid (some may be false positives), and fix the valid ones per the iteration discipline below.
|
|
245
253
|
|
|
246
|
-
Cubic reviews are triggered automatically on PR updates. After pushing a fix,
|
|
254
|
+
Cubic reviews are triggered automatically on PR updates. After pushing a fix, subscribe to the new review arriving — never spin a `for _ in $(seq 1 30)` polling loop that burns model round-trips.
|
|
247
255
|
|
|
248
|
-
```
|
|
249
|
-
#
|
|
250
|
-
#
|
|
256
|
+
```
|
|
257
|
+
# Subscribe to a NEW Cubic review after push. The monitor exits when a review
|
|
258
|
+
# newer than PUSH_TIME appears, or times out (quota exhausted → Gate B SKIPPED).
|
|
251
259
|
PUSH_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
#
|
|
259
|
-
|
|
260
|
+
monitor({
|
|
261
|
+
description: "Cubic review for PR $PR_NUMBER",
|
|
262
|
+
command: "LATEST=$(gh api repos/${REPO}/pulls/${PR_NUMBER}/reviews --jq '[.[] | select(.user.login == "cubic-dev-ai[bot]")] | last | .submitted_at // empty'); [ -n \"$LATEST\" ] && [ \"$LATEST\" > \"$PUSH_TIME\" ] && echo NEW_REVIEW || echo WAITING",
|
|
263
|
+
filter: "NEW_REVIEW",
|
|
264
|
+
timeout_ms: 600000 # 10 min bound — if no review arrives, Gate B is SKIPPED (quota exhausted)
|
|
265
|
+
})
|
|
266
|
+
# → end turn; if the monitor times out without NEW_REVIEW, treat Gate B as SKIPPED.
|
|
267
|
+
# For a single midpoint peek (at most once), use:
|
|
268
|
+
# gh api "repos/${REPO}/pulls/${PR_NUMBER}/reviews" --jq '[.[] | select(.user.login == "cubic-dev-ai[bot]")] | last | .submitted_at'
|
|
260
269
|
```
|
|
261
270
|
|
|
262
271
|
### Iteration discipline
|
|
@@ -292,13 +301,18 @@ gh pr merge "$PR_NUMBER" --merge --auto --delete-branch
|
|
|
292
301
|
# are green, fall back to a direct merge: gh pr merge "$PR_NUMBER" --merge --delete-branch
|
|
293
302
|
```
|
|
294
303
|
|
|
295
|
-
Then
|
|
304
|
+
Then subscribe to the merge completing — never block a model round-trip on an `until [ ... MERGED ]` polling loop:
|
|
296
305
|
|
|
297
|
-
```
|
|
298
|
-
#
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
306
|
+
```
|
|
307
|
+
# Subscribe to merge completion. The monitor exits when gh pr view returns MERGED.
|
|
308
|
+
monitor({
|
|
309
|
+
description: "Merge completion for PR $PR_NUMBER",
|
|
310
|
+
command: "[ \"$(gh pr view $PR_NUMBER --json state -q .state)\" = \"MERGED\" ] && echo MERGED || echo WAITING",
|
|
311
|
+
filter: "MERGED",
|
|
312
|
+
timeout_ms: 1800000 # 30 min bound for auto-merge to land after all gates pass
|
|
313
|
+
})
|
|
314
|
+
# → end turn; the MERGED event wakes the session for the cleanup step.
|
|
315
|
+
# If the monitor times out, check merge state once: gh pr view "$PR_NUMBER" --json state -q .state
|
|
302
316
|
```
|
|
303
317
|
|
|
304
318
|
If the user opted out of merging, skip the merge but STILL run the cleanup below: the worktree is removed either way.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Publish oh-my-opencode to npm via GitHub Actions workflow
|
|
3
|
-
argument-hint: <patch|minor|major>
|
|
3
|
+
argument-hint: <patch|minor|major|explicit-semver>
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
|
|
@@ -54,15 +54,16 @@ This contract applies to the slash-command copies (`.agents/command/publish.md`,
|
|
|
54
54
|
|
|
55
55
|
## CRITICAL: ARGUMENT REQUIREMENT
|
|
56
56
|
|
|
57
|
-
**You MUST receive
|
|
57
|
+
**You MUST receive one release selector from the user.** Valid options:
|
|
58
58
|
- `patch`: Bug fixes, backward-compatible (1.1.7 → 1.1.8)
|
|
59
59
|
- `minor`: New features, backward-compatible (1.1.7 → 1.2.0)
|
|
60
60
|
- `major`: Breaking changes (1.1.7 → 2.0.0)
|
|
61
|
+
- An explicit valid semantic version, including a prerelease such as `5.0.0-beta.9`
|
|
61
62
|
|
|
62
|
-
**If the user did not provide a
|
|
63
|
-
> "To proceed with deployment,
|
|
63
|
+
**If the user did not provide a release selector, STOP IMMEDIATELY and ask:**
|
|
64
|
+
> "To proceed with deployment, specify `patch`, `minor`, `major`, or an explicit semantic version such as `5.0.0-beta.9`."
|
|
64
65
|
|
|
65
|
-
|
|
66
|
+
Reject any other value. Do not infer or repair malformed versions.
|
|
66
67
|
|
|
67
68
|
---
|
|
68
69
|
|
|
@@ -72,7 +73,7 @@ This contract applies to the slash-command copies (`.agents/command/publish.md`,
|
|
|
72
73
|
|
|
73
74
|
```
|
|
74
75
|
[
|
|
75
|
-
{ "id": "confirm-
|
|
76
|
+
{ "id": "confirm-release-input", "content": "Confirm release selector with user (patch/minor/major or explicit semver)", "status": "in_progress", "priority": "high" },
|
|
76
77
|
{ "id": "check-uncommitted", "content": "Check for uncommitted changes and commit if needed", "status": "pending", "priority": "high" },
|
|
77
78
|
{ "id": "sync-remote", "content": "Sync with remote (pull --rebase && push if unpushed commits)", "status": "pending", "priority": "high" },
|
|
78
79
|
{ "id": "run-workflow", "content": "Trigger GitHub Actions publish workflow", "status": "pending", "priority": "high" },
|
|
@@ -92,9 +93,23 @@ This contract applies to the slash-command copies (`.agents/command/publish.md`,
|
|
|
92
93
|
|
|
93
94
|
---
|
|
94
95
|
|
|
95
|
-
## STEP 1: CONFIRM
|
|
96
|
+
## STEP 1: CONFIRM AND CLASSIFY THE RELEASE SELECTOR
|
|
96
97
|
|
|
97
|
-
If the user already
|
|
98
|
+
If the user already supplied the selector in the command argument or message, that IS the confirmation. Parse it exactly once:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
RELEASE_INPUT="${ARGUMENTS}"
|
|
102
|
+
if [[ "$RELEASE_INPUT" =~ ^(patch|minor|major)$ ]]; then
|
|
103
|
+
RELEASE_KIND=bump
|
|
104
|
+
elif [[ "$RELEASE_INPUT" =~ ^([0-9]+\.){2}[0-9]+(-[0-9A-Za-z]+(\.[0-9A-Za-z]+)*)?$ ]]; then
|
|
105
|
+
RELEASE_KIND=version
|
|
106
|
+
else
|
|
107
|
+
echo "Invalid release selector: $RELEASE_INPUT" >&2
|
|
108
|
+
exit 1
|
|
109
|
+
fi
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Only ask and wait when no selector was provided.
|
|
98
113
|
|
|
99
114
|
---
|
|
100
115
|
|
|
@@ -125,16 +140,29 @@ This ensures the GitHub Actions workflow runs on the latest code including all l
|
|
|
125
140
|
|
|
126
141
|
## STEP 3: TRIGGER GITHUB ACTIONS WORKFLOW
|
|
127
142
|
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
gh workflow run publish -f bump={bump_type}
|
|
131
|
-
```
|
|
143
|
+
Dispatch from `dev`, pass bump selectors through `bump`, and pass exact versions through `version`. The required `bump` input remains `patch` for explicit-version dispatches but is ignored by the workflow because `version` takes precedence.
|
|
132
144
|
|
|
133
|
-
Wait 3 seconds, then get the run ID:
|
|
134
145
|
```bash
|
|
135
|
-
|
|
146
|
+
if [ "$RELEASE_KIND" = bump ]; then
|
|
147
|
+
RUN_URL="$(gh workflow run publish.yml --ref dev -f "bump=${RELEASE_INPUT}")"
|
|
148
|
+
else
|
|
149
|
+
RUN_URL="$(gh workflow run publish.yml --ref dev -f bump=patch -f "version=${RELEASE_INPUT}")"
|
|
150
|
+
fi
|
|
151
|
+
|
|
152
|
+
if ! [[ "$RUN_URL" =~ ^https://github.com/code-yeongyu/oh-my-openagent/actions/runs/[0-9]+$ ]]; then
|
|
153
|
+
echo "Publish dispatch did not return an exact workflow run URL: $RUN_URL" >&2
|
|
154
|
+
exit 1
|
|
155
|
+
fi
|
|
156
|
+
RUN_ID="${RUN_URL##*/}"
|
|
157
|
+
if ! [[ "$RUN_ID" =~ ^[0-9]+$ ]]; then
|
|
158
|
+
echo "Publish dispatch returned an invalid run ID: $RUN_ID" >&2
|
|
159
|
+
exit 1
|
|
160
|
+
fi
|
|
161
|
+
gh run view "${RUN_ID}" --json databaseId,status,url --jq '{databaseId,status,url}'
|
|
136
162
|
```
|
|
137
163
|
|
|
164
|
+
The returned run ID owns this release attempt. Never replace it with a latest-run lookup.
|
|
165
|
+
|
|
138
166
|
---
|
|
139
167
|
|
|
140
168
|
## STEP 4: WAIT FOR WORKFLOW COMPLETION
|
|
@@ -150,14 +178,14 @@ The publish run is a single workflow with sequential stages. Expected timeline (
|
|
|
150
178
|
|
|
151
179
|
Poll job-level status every 30 seconds and report stage transitions to the user:
|
|
152
180
|
```bash
|
|
153
|
-
gh run view {
|
|
181
|
+
gh run view "${RUN_ID}" --json status,conclusion,jobs --jq '{status, conclusion, stage: ([.jobs[] | select(.status=="in_progress") | .name] | join(", "))}'
|
|
154
182
|
```
|
|
155
183
|
|
|
156
184
|
**IMPORTANT: Use polling loop, NOT sleep commands.** Use the waiting time to draft the enhanced release summary (Step 6) — do not sit idle, and do not start any review activity.
|
|
157
185
|
|
|
158
186
|
If conclusion is `failure`, show error and stop:
|
|
159
187
|
```bash
|
|
160
|
-
gh run view {
|
|
188
|
+
gh run view "${RUN_ID}" --log-failed
|
|
161
189
|
```
|
|
162
190
|
|
|
163
191
|
---
|
|
@@ -196,12 +196,20 @@ while true:
|
|
|
196
196
|
|
|
197
197
|
### Gate A: CI Checks
|
|
198
198
|
|
|
199
|
-
CI is the fastest feedback loop.
|
|
199
|
+
CI is the fastest feedback loop. Subscribe to its completion via `monitor` — never block a model round-trip on `gh pr checks --watch`.
|
|
200
200
|
|
|
201
|
-
```
|
|
202
|
-
#
|
|
203
|
-
#
|
|
204
|
-
|
|
201
|
+
```
|
|
202
|
+
# Subscribe to CI completion — the monitor event wakes the session when checks finish.
|
|
203
|
+
# Do NOT use `gh pr checks --watch` as a blocking tool call; it burns a full model
|
|
204
|
+
# round-trip (~29s) on every poll. Instead, register a monitor and end the turn:
|
|
205
|
+
monitor({
|
|
206
|
+
description: "CI completion for PR $PR_NUMBER",
|
|
207
|
+
command: "gh pr checks $PR_NUMBER --watch --fail-fast",
|
|
208
|
+
filter: "completed|fail|cancel"
|
|
209
|
+
})
|
|
210
|
+
# → end turn; the monitor's matching line arrives as an injected event.
|
|
211
|
+
# For a single midpoint status peek (at most once), use:
|
|
212
|
+
# gh pr checks "$PR_NUMBER" # one-shot, no --watch
|
|
205
213
|
```
|
|
206
214
|
|
|
207
215
|
**On failure**: Get the failed run logs to understand what broke:
|
|
@@ -243,20 +251,21 @@ fi
|
|
|
243
251
|
|
|
244
252
|
**On issues**: Cubic's review body contains structured issue descriptions. Parse them, determine which are valid (some may be false positives), and fix the valid ones per the iteration discipline below.
|
|
245
253
|
|
|
246
|
-
Cubic reviews are triggered automatically on PR updates. After pushing a fix,
|
|
254
|
+
Cubic reviews are triggered automatically on PR updates. After pushing a fix, subscribe to the new review arriving — never spin a `for _ in $(seq 1 30)` polling loop that burns model round-trips.
|
|
247
255
|
|
|
248
|
-
```
|
|
249
|
-
#
|
|
250
|
-
#
|
|
256
|
+
```
|
|
257
|
+
# Subscribe to a NEW Cubic review after push. The monitor exits when a review
|
|
258
|
+
# newer than PUSH_TIME appears, or times out (quota exhausted → Gate B SKIPPED).
|
|
251
259
|
PUSH_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
#
|
|
259
|
-
|
|
260
|
+
monitor({
|
|
261
|
+
description: "Cubic review for PR $PR_NUMBER",
|
|
262
|
+
command: "LATEST=$(gh api repos/${REPO}/pulls/${PR_NUMBER}/reviews --jq '[.[] | select(.user.login == "cubic-dev-ai[bot]")] | last | .submitted_at // empty'); [ -n \"$LATEST\" ] && [ \"$LATEST\" > \"$PUSH_TIME\" ] && echo NEW_REVIEW || echo WAITING",
|
|
263
|
+
filter: "NEW_REVIEW",
|
|
264
|
+
timeout_ms: 600000 # 10 min bound — if no review arrives, Gate B is SKIPPED (quota exhausted)
|
|
265
|
+
})
|
|
266
|
+
# → end turn; if the monitor times out without NEW_REVIEW, treat Gate B as SKIPPED.
|
|
267
|
+
# For a single midpoint peek (at most once), use:
|
|
268
|
+
# gh api "repos/${REPO}/pulls/${PR_NUMBER}/reviews" --jq '[.[] | select(.user.login == "cubic-dev-ai[bot]")] | last | .submitted_at'
|
|
260
269
|
```
|
|
261
270
|
|
|
262
271
|
### Iteration discipline
|
|
@@ -292,13 +301,18 @@ gh pr merge "$PR_NUMBER" --merge --auto --delete-branch
|
|
|
292
301
|
# are green, fall back to a direct merge: gh pr merge "$PR_NUMBER" --merge --delete-branch
|
|
293
302
|
```
|
|
294
303
|
|
|
295
|
-
Then
|
|
304
|
+
Then subscribe to the merge completing — never block a model round-trip on an `until [ ... MERGED ]` polling loop:
|
|
296
305
|
|
|
297
|
-
```
|
|
298
|
-
#
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
306
|
+
```
|
|
307
|
+
# Subscribe to merge completion. The monitor exits when gh pr view returns MERGED.
|
|
308
|
+
monitor({
|
|
309
|
+
description: "Merge completion for PR $PR_NUMBER",
|
|
310
|
+
command: "[ \"$(gh pr view $PR_NUMBER --json state -q .state)\" = \"MERGED\" ] && echo MERGED || echo WAITING",
|
|
311
|
+
filter: "MERGED",
|
|
312
|
+
timeout_ms: 1800000 # 30 min bound for auto-merge to land after all gates pass
|
|
313
|
+
})
|
|
314
|
+
# → end turn; the MERGED event wakes the session for the cleanup step.
|
|
315
|
+
# If the monitor times out, check merge state once: gh pr view "$PR_NUMBER" --json state -q .state
|
|
302
316
|
```
|
|
303
317
|
|
|
304
318
|
If the user opted out of merging, skip the merge but STILL run the cleanup below: the worktree is removed either way.
|
|
@@ -26,7 +26,6 @@ export interface OrchestratorContext {
|
|
|
26
26
|
availableSkills?: AvailableSkill[];
|
|
27
27
|
userCategories?: Record<string, CategoryConfig>;
|
|
28
28
|
}
|
|
29
|
-
export declare function getAtlasPrompt(model?: string): string;
|
|
30
29
|
export declare function createAtlasAgent(ctx: OrchestratorContext): AgentConfig;
|
|
31
30
|
export declare namespace createAtlasAgent {
|
|
32
31
|
export { MODE as mode };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Grok 4.5 / Grok 4.6 Sisyphus prompt.
|
|
3
|
+
*
|
|
4
|
+
* Tuned from field experience with Grok 4.6 (Eric Zakariasson's launch field
|
|
5
|
+
* guide): phrasing intensity ("work very hard") changes nothing, and the
|
|
6
|
+
* model's own taste fills gaps well, so this is deliberately the leanest
|
|
7
|
+
* Sisyphus variant. What does move the outcome:
|
|
8
|
+
* - an explicit verification loop ("keep iterating and verifying until it's
|
|
9
|
+
* production ready") is the single highest-leverage instruction;
|
|
10
|
+
* - a written definition of done, because otherwise the model decides done
|
|
11
|
+
* for you;
|
|
12
|
+
* - a narration split (quiet on small changes, narrate wide-radius work) that
|
|
13
|
+
* matches its information-dense communication style;
|
|
14
|
+
* - an anti-repetition nudge, since it duplicates component code unless asked
|
|
15
|
+
* to break it up.
|
|
16
|
+
*/
|
|
17
|
+
import type { AvailableAgent, AvailableTool, AvailableSkill, AvailableCategory } from "../dynamic-agent-prompt-builder";
|
|
18
|
+
import { categorizeTools } from "../dynamic-agent-prompt-builder";
|
|
19
|
+
export declare function buildGrok4SisyphusPrompt(model: string, availableAgents: AvailableAgent[], availableTools?: AvailableTool[], availableSkills?: AvailableSkill[], availableCategories?: AvailableCategory[], useTaskSystem?: boolean): string;
|
|
20
|
+
export { categorizeTools };
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* - gemini.ts: Corrective overlays for Gemini's aggressive tendencies
|
|
11
11
|
* - gpt-5-4.ts: Native GPT-5.4 prompt with block-structured guidance
|
|
12
12
|
* - gpt-5-5.ts: Native GPT-5.5 prompt with Codex-style sections
|
|
13
|
+
* - grok-4.ts: Shared Grok 4.5/4.6 prompt, verification-loop-centered and lean
|
|
13
14
|
* - kimi-k2-6.ts: Kimi K2.6 native prompt with thinking-mode stop conditions
|
|
14
15
|
* - kimi-k2-7.ts: Kimi K2.7 native prompt, restrained and outcome-first
|
|
15
16
|
* - kimi-k3.ts: Kimi K3 native prompt with explicit anti-overthinking calibration
|
|
@@ -22,6 +23,7 @@ export { buildClaudeFable5SisyphusPrompt } from "./claude-fable-5";
|
|
|
22
23
|
export { buildGeminiToolMandate, buildGeminiDelegationOverride, buildGeminiVerificationOverride, buildGeminiIntentGateEnforcement, buildGeminiToolGuide, buildGeminiToolCallExamples, } from "./gemini";
|
|
23
24
|
export { buildGpt54SisyphusPrompt } from "./gpt-5-4";
|
|
24
25
|
export { buildGpt55SisyphusPrompt } from "./gpt-5-5";
|
|
26
|
+
export { buildGrok4SisyphusPrompt } from "./grok-4";
|
|
25
27
|
export { buildGlm52SisyphusPrompt } from "./glm-5-2";
|
|
26
28
|
export { buildKimiK26SisyphusPrompt } from "./kimi-k2-6";
|
|
27
29
|
export { buildKimiK27SisyphusPrompt } from "./kimi-k2-7";
|
|
@@ -2,4 +2,10 @@ import type { AgentConfig } from "@opencode-ai/sdk";
|
|
|
2
2
|
import type { AgentMode } from "./types";
|
|
3
3
|
export declare function buildGptSisyphusAgentConfig(mode: AgentMode, model: string, prompt: string): AgentConfig;
|
|
4
4
|
export declare function buildGlmSisyphusAgentConfig(mode: AgentMode, model: string, prompt: string): AgentConfig;
|
|
5
|
+
/**
|
|
6
|
+
* Grok 4.5/4.6 are xAI reasoning models: they take a reasoning effort
|
|
7
|
+
* (grok family caps allow low/medium/high) and reject Anthropic-style
|
|
8
|
+
* thinking blocks, so this is the base config plus effort only.
|
|
9
|
+
*/
|
|
10
|
+
export declare function buildGrokSisyphusAgentConfig(mode: AgentMode, model: string, prompt: string): AgentConfig;
|
|
5
11
|
export declare function buildClaudeSisyphusAgentConfig(mode: AgentMode, model: string, prompt: string): AgentConfig;
|
|
@@ -9,7 +9,7 @@ declare const MODE: AgentMode;
|
|
|
9
9
|
* runtime model resolves to a different family than the configured one, the baked
|
|
10
10
|
* body is the wrong family and must be rebuilt (issue #5297/#5316).
|
|
11
11
|
*/
|
|
12
|
-
export type SisyphusPromptFamily = "kimi-k3" | "kimi-k2-7" | "kimi-k2-6" | "gpt-5-5" | "gpt-5-4" | "claude-fable-5" | "claude-opus-5" | "claude-opus-4-8" | "claude-opus-4-7" | "glm-5-2" | "fallback";
|
|
12
|
+
export type SisyphusPromptFamily = "kimi-k3" | "kimi-k2-7" | "kimi-k2-6" | "gpt-5-5" | "gpt-5-4" | "claude-fable-5" | "claude-opus-5" | "claude-opus-4-8" | "claude-opus-4-7" | "glm-5-2" | "grok-4" | "fallback";
|
|
13
13
|
export declare function resolveSisyphusPromptFamily(model: string): SisyphusPromptFamily;
|
|
14
14
|
export declare function createSisyphusAgent(model: string, availableAgents?: AvailableAgent[], availableToolNames?: string[], availableSkills?: AvailableSkill[], availableCategories?: AvailableCategory[], useTaskSystem?: boolean): AgentConfig;
|
|
15
15
|
export declare namespace createSisyphusAgent {
|
package/dist/agents/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AgentConfig } from "@opencode-ai/sdk";
|
|
2
|
-
import { isClaudeFable5Model, isClaudeFableOrMythosModel, isClaudeOpus46Model, isClaudeOpus47Model, isClaudeOpus47OrLaterModel, isClaudeOpus48Model, isClaudeOpus5Model, isGeminiModel, isGlmModel, isGptModel, isKimiK2Model, isKimiK27Model, isKimiK3Model, isMiniMaxModel } from "@oh-my-opencode/model-core";
|
|
3
|
-
export { isClaudeFable5Model, isClaudeFableOrMythosModel, isClaudeOpus46Model, isClaudeOpus47Model, isClaudeOpus47OrLaterModel, isClaudeOpus48Model, isClaudeOpus5Model, isGeminiModel, isGlmModel, isGptModel, isKimiK2Model, isKimiK27Model, isKimiK3Model, isMiniMaxModel, };
|
|
2
|
+
import { isClaudeFable5Model, isClaudeFableOrMythosModel, isClaudeOpus46Model, isClaudeOpus47Model, isClaudeOpus47OrLaterModel, isClaudeOpus48Model, isClaudeOpus5Model, isGeminiModel, isGlmModel, isGptModel, isGrok45Model, isGrok46Model, isKimiK2Model, isKimiK27Model, isKimiK3Model, isMiniMaxModel } from "@oh-my-opencode/model-core";
|
|
3
|
+
export { isClaudeFable5Model, isClaudeFableOrMythosModel, isClaudeOpus46Model, isClaudeOpus47Model, isClaudeOpus47OrLaterModel, isClaudeOpus48Model, isClaudeOpus5Model, isGeminiModel, isGlmModel, isGptModel, isGrok45Model, isGrok46Model, isKimiK2Model, isKimiK27Model, isKimiK3Model, isMiniMaxModel, };
|
|
4
4
|
/**
|
|
5
5
|
* Anthropic Opus 4.7+, Fable, and Mythos models reject thinking.type "enabled";
|
|
6
6
|
* they require adaptive thinking plus an effort, which OpenCode core derives from
|