oh-my-opencode 5.0.0-beta.8 → 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/.opencode/command/publish.md +44 -16
- package/dist/agents/atlas/agent.d.ts +0 -1
- package/dist/cli/index.js +34 -31
- package/dist/cli/run/on-complete-hook.d.ts +2 -0
- package/dist/cli-node/index.js +34 -31
- 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 +25 -24
- package/dist/shared/shell-env.d.ts +1 -1
- package/dist/skills/ultimate-browsing/ATTRIBUTION.md +35 -8
- package/dist/skills/ultimate-browsing/engine/AGENTS.md +110 -0
- package/dist/tui.js +2 -2
- package/package.json +15 -14
- 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 +2 -2
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +2 -2
- 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/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/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/ultimate-browsing/ATTRIBUTION.md +35 -8
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +110 -0
- 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/ultimate-browsing/ATTRIBUTION.md +35 -8
- package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +110 -0
- 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
|
---
|
|
@@ -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
|
---
|
|
@@ -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 };
|
package/dist/cli/index.js
CHANGED
|
@@ -1019,7 +1019,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
1019
1019
|
this._exitCallback = (err) => {
|
|
1020
1020
|
if (err.code !== "commander.executeSubCommandAsync") {
|
|
1021
1021
|
throw err;
|
|
1022
|
-
}
|
|
1022
|
+
}
|
|
1023
1023
|
};
|
|
1024
1024
|
}
|
|
1025
1025
|
return this;
|
|
@@ -2145,7 +2145,7 @@ var package_default;
|
|
|
2145
2145
|
var init_package = __esm(() => {
|
|
2146
2146
|
package_default = {
|
|
2147
2147
|
name: "oh-my-opencode",
|
|
2148
|
-
version: "5.0.0-beta.
|
|
2148
|
+
version: "5.0.0-beta.9",
|
|
2149
2149
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
2150
2150
|
main: "./dist/index.js",
|
|
2151
2151
|
types: "dist/index.d.ts",
|
|
@@ -2281,6 +2281,7 @@ var init_package = __esm(() => {
|
|
|
2281
2281
|
"typecheck:script": "tsgo --noEmit -p script/tsconfig.json",
|
|
2282
2282
|
test: "bun test",
|
|
2283
2283
|
"test:codex": "bun run build:codex-install && bun run build:git-bash-mcp && bun run build:lsp-tools-mcp && bun run build:lsp-daemon && npm --prefix packages/lsp-tools-mcp test && npm --prefix packages/omo-codex/plugin ci && npm --prefix packages/omo-codex/plugin/components/ulw-loop test && bun run --cwd packages/omo-codex/plugin build && npm --prefix packages/omo-codex/plugin/components/codegraph run typecheck && npm --prefix packages/omo-codex/plugin/components/codegraph test && node scripts/check-third-party-notices.mjs --ship && bun test packages/omo-opencode/src/cli/cli-installer.platform.test.ts packages/omo-codex/src/install/codex-cache.test.ts packages/omo-codex/src/install/codex-cleanup.test.ts packages/omo-codex/src/install/codex-config-agent-cleanup.test.ts packages/omo-codex/src/install/codex-config-autonomous-features.test.ts packages/omo-codex/src/install/codex-config-reasoning.test.ts packages/omo-codex/src/install/codex-config-toml.test.ts packages/omo-codex/src/install/codex-project-local-cleanup.test.ts packages/omo-codex/src/install/install-codex-project-local-cleanup.test.ts packages/omo-codex/src/install/install-codex.test.ts packages/omo-codex/src/install/install-codex-packaged.test.ts packages/omo-codex/src/install/link-cached-plugin-agents.test.ts packages/omo-codex/src/**/*.test.ts packages/utils/src/jsonc-parser.test.ts packages/utils/src/frontmatter.test.ts packages/hashline-core/src/hash-computation.test.ts packages/hashline-core/src/smoke-untested-modules.test.ts packages/rules-engine/src/index.test.ts packages/rules-engine/src/security-boundary.test.ts packages/agents-md-core/src/injector.test.ts packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts && node --test packages/omo-codex/plugin/test/*.test.mjs packages/omo-codex/scripts/install-cache-copy.test.mjs packages/omo-codex/scripts/install-cli-args.test.mjs packages/omo-codex/scripts/install-delegated-command.test.mjs packages/omo-codex/scripts/install-config-autonomous-features.test.mjs packages/omo-codex/scripts/install-config-autonomous.test.mjs packages/omo-codex/scripts/install-config-reasoning.test.mjs packages/omo-codex/scripts/install-config.test.mjs packages/omo-codex/scripts/install-hook-targets.test.mjs packages/omo-codex/scripts/install-project-local-cleanup.test.mjs packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs packages/omo-codex/scripts/install-local-entrypoint.test.mjs packages/omo-codex/scripts/install-local-git-bash-preflight.test.mjs packages/omo-codex/scripts/install-local.test.mjs packages/omo-codex/scripts/install-marketplace-cache.test.mjs packages/omo-codex/scripts/install-mcp-context7-runtime.test.mjs packages/omo-codex/scripts/install-mcp-runtime.test.mjs packages/omo-codex/scripts/install-packaged-local.test.mjs packages/omo-codex/scripts/install-generated-bundle.test.mjs packages/omo-codex/scripts/install-agent-links.test.mjs packages/omo-codex/scripts/install-bin-links.test.mjs",
|
|
2284
|
+
"test:fast": "bun run script/test-fast.ts",
|
|
2284
2285
|
"test:senpi": "bun run build:senpi-plugin && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && bun test packages/omo-senpi",
|
|
2285
2286
|
"test:windows-codex": "bun run test:codex",
|
|
2286
2287
|
"build:git-bash-mcp": "bun run --cwd packages/git-bash-mcp build",
|
|
@@ -2325,7 +2326,7 @@ var init_package = __esm(() => {
|
|
|
2325
2326
|
zod: "^4.4.3"
|
|
2326
2327
|
},
|
|
2327
2328
|
devDependencies: {
|
|
2328
|
-
"@code-yeongyu/senpi": "2026.8.
|
|
2329
|
+
"@code-yeongyu/senpi": "2026.8.17",
|
|
2329
2330
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
2330
2331
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
2331
2332
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -2366,18 +2367,18 @@ var init_package = __esm(() => {
|
|
|
2366
2367
|
typescript: "^7.0.2"
|
|
2367
2368
|
},
|
|
2368
2369
|
optionalDependencies: {
|
|
2369
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
2370
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
2371
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
2372
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
2373
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
2374
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
2375
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
2376
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
2377
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
2378
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
2379
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
2380
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
2370
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.9",
|
|
2371
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.9",
|
|
2372
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.9",
|
|
2373
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.9",
|
|
2374
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.9",
|
|
2375
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.9",
|
|
2376
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.9",
|
|
2377
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.9",
|
|
2378
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.9",
|
|
2379
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.9",
|
|
2380
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.9",
|
|
2381
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.9"
|
|
2381
2382
|
},
|
|
2382
2383
|
overrides: {
|
|
2383
2384
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -18762,7 +18763,7 @@ function finalize(ctx, schema) {
|
|
|
18762
18763
|
result.$schema = "http://json-schema.org/draft-07/schema#";
|
|
18763
18764
|
} else if (ctx.target === "draft-04") {
|
|
18764
18765
|
result.$schema = "http://json-schema.org/draft-04/schema#";
|
|
18765
|
-
} else if (ctx.target === "openapi-3.0") {}
|
|
18766
|
+
} else if (ctx.target === "openapi-3.0") {}
|
|
18766
18767
|
if (ctx.external?.uri) {
|
|
18767
18768
|
const id = ctx.external.registry.get(schema)?.id;
|
|
18768
18769
|
if (!id)
|
|
@@ -19023,7 +19024,7 @@ var formatMap, stringProcessor = (schema, ctx, _json, _params) => {
|
|
|
19023
19024
|
if (val === undefined) {
|
|
19024
19025
|
if (ctx.unrepresentable === "throw") {
|
|
19025
19026
|
throw new Error("Literal `undefined` cannot be represented in JSON Schema");
|
|
19026
|
-
}
|
|
19027
|
+
}
|
|
19027
19028
|
} else if (typeof val === "bigint") {
|
|
19028
19029
|
if (ctx.unrepresentable === "throw") {
|
|
19029
19030
|
throw new Error("BigInt literals cannot be represented in JSON Schema");
|
|
@@ -83262,21 +83263,21 @@ var init_session_cursor = __esm(() => {
|
|
|
83262
83263
|
});
|
|
83263
83264
|
|
|
83264
83265
|
// packages/omo-opencode/src/shared/shell-env.ts
|
|
83265
|
-
function detectShellType() {
|
|
83266
|
-
if (
|
|
83267
|
-
const shell =
|
|
83266
|
+
function detectShellType(platform = process.platform, env2 = process.env) {
|
|
83267
|
+
if (env2.SHELL) {
|
|
83268
|
+
const shell = env2.SHELL;
|
|
83268
83269
|
if (shell.includes("csh") || shell.includes("tcsh")) {
|
|
83269
83270
|
return "csh";
|
|
83270
83271
|
}
|
|
83271
83272
|
return "unix";
|
|
83272
83273
|
}
|
|
83273
|
-
if (
|
|
83274
|
+
if (platform === "win32" && (env2.BASH_VERSION || env2.MSYSTEM || env2.WSL_DISTRO_NAME)) {
|
|
83274
83275
|
return "unix";
|
|
83275
83276
|
}
|
|
83276
|
-
if (
|
|
83277
|
+
if (env2.PSModulePath) {
|
|
83277
83278
|
return "powershell";
|
|
83278
83279
|
}
|
|
83279
|
-
return
|
|
83280
|
+
return platform === "win32" ? "cmd" : "unix";
|
|
83280
83281
|
}
|
|
83281
83282
|
var init_shell_env = () => {};
|
|
83282
83283
|
|
|
@@ -94629,7 +94630,7 @@ var package_default2;
|
|
|
94629
94630
|
var init_package2 = __esm(() => {
|
|
94630
94631
|
package_default2 = {
|
|
94631
94632
|
name: "@oh-my-opencode/omo-codex",
|
|
94632
|
-
version: "5.0.0-beta.
|
|
94633
|
+
version: "5.0.0-beta.9",
|
|
94633
94634
|
type: "module",
|
|
94634
94635
|
private: true,
|
|
94635
94636
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -106414,7 +106415,7 @@ function createJsonOutputManager(options = {}) {
|
|
|
106414
106415
|
|
|
106415
106416
|
// packages/omo-opencode/src/cli/run/on-complete-hook.ts
|
|
106416
106417
|
init_spawn_with_windows_hide();
|
|
106417
|
-
|
|
106418
|
+
init_shell_env();
|
|
106418
106419
|
init_logger2();
|
|
106419
106420
|
var defaultDeps3 = {
|
|
106420
106421
|
spawnWithWindowsHide,
|
|
@@ -106434,15 +106435,15 @@ async function readOutput(stream, streamName, deps = defaultDeps3) {
|
|
|
106434
106435
|
return "";
|
|
106435
106436
|
}
|
|
106436
106437
|
}
|
|
106437
|
-
function resolveHookShellCommand(command) {
|
|
106438
|
-
const shellType = detectShellType();
|
|
106438
|
+
function resolveHookShellCommand(command, platform, env3) {
|
|
106439
|
+
const shellType = detectShellType(platform, env3);
|
|
106439
106440
|
switch (shellType) {
|
|
106440
106441
|
case "powershell": {
|
|
106441
|
-
const powershellExecutable =
|
|
106442
|
+
const powershellExecutable = platform === "win32" ? "powershell.exe" : "pwsh";
|
|
106442
106443
|
return [powershellExecutable, "-NoProfile", "-Command", command];
|
|
106443
106444
|
}
|
|
106444
106445
|
case "cmd":
|
|
106445
|
-
return [
|
|
106446
|
+
return [env3.ComSpec || "cmd.exe", "/d", "/s", "/c", command];
|
|
106446
106447
|
case "csh":
|
|
106447
106448
|
return ["csh", "-c", command];
|
|
106448
106449
|
case "unix":
|
|
@@ -106458,10 +106459,12 @@ async function executeOnCompleteHook(options, deps = defaultDeps3) {
|
|
|
106458
106459
|
}
|
|
106459
106460
|
deps.log("Running on-complete hook", { command: trimmedCommand });
|
|
106460
106461
|
try {
|
|
106461
|
-
const
|
|
106462
|
+
const platform = deps.platform ?? process.platform;
|
|
106463
|
+
const env3 = deps.env ?? process.env;
|
|
106464
|
+
const shellCommand = resolveHookShellCommand(trimmedCommand, platform, env3);
|
|
106462
106465
|
const proc = deps.spawnWithWindowsHide(shellCommand, {
|
|
106463
106466
|
env: {
|
|
106464
|
-
...
|
|
106467
|
+
...env3,
|
|
106465
106468
|
SESSION_ID: sessionId,
|
|
106466
106469
|
EXIT_CODE: String(exitCode),
|
|
106467
106470
|
DURATION_MS: String(durationMs),
|
|
@@ -3,6 +3,8 @@ import { log } from "../../shared/logger";
|
|
|
3
3
|
type OnCompleteHookDeps = {
|
|
4
4
|
spawnWithWindowsHide: typeof spawnWithWindowsHide;
|
|
5
5
|
log: typeof log;
|
|
6
|
+
platform?: NodeJS.Platform;
|
|
7
|
+
env?: NodeJS.ProcessEnv;
|
|
6
8
|
};
|
|
7
9
|
export declare function executeOnCompleteHook(options: {
|
|
8
10
|
command: string;
|