@bradygaster/squad-sdk 0.8.19 → 0.8.21
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/README.md +296 -296
- package/dist/adapter/client.js +1 -1
- package/dist/adapter/client.js.map +1 -1
- package/dist/agents/charter-compiler.d.ts +4 -0
- package/dist/agents/charter-compiler.d.ts.map +1 -1
- package/dist/agents/charter-compiler.js +8 -0
- package/dist/agents/charter-compiler.js.map +1 -1
- package/dist/agents/history-shadow.js +30 -30
- package/dist/agents/index.js +1 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/lifecycle.js +1 -1
- package/dist/agents/lifecycle.js.map +1 -1
- package/dist/build/github-dist.js +42 -42
- package/dist/builders/index.d.ts +156 -0
- package/dist/builders/index.d.ts.map +1 -0
- package/dist/builders/index.js +404 -0
- package/dist/builders/index.js.map +1 -0
- package/dist/builders/types.d.ts +187 -0
- package/dist/builders/types.d.ts.map +1 -0
- package/dist/builders/types.js +12 -0
- package/dist/builders/types.js.map +1 -0
- package/dist/config/init.d.ts +6 -22
- package/dist/config/init.d.ts.map +1 -1
- package/dist/config/init.js +273 -185
- package/dist/config/init.js.map +1 -1
- package/dist/coordinator/coordinator.js +1 -1
- package/dist/coordinator/coordinator.js.map +1 -1
- package/dist/coordinator/index.js +1 -1
- package/dist/coordinator/index.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/runtime/otel-api.d.ts +38 -0
- package/dist/runtime/otel-api.d.ts.map +1 -0
- package/dist/runtime/otel-api.js +94 -0
- package/dist/runtime/otel-api.js.map +1 -0
- package/dist/runtime/otel-bridge.js +1 -1
- package/dist/runtime/otel-bridge.js.map +1 -1
- package/dist/runtime/otel.d.ts +1 -1
- package/dist/runtime/otel.d.ts.map +1 -1
- package/dist/runtime/otel.js +28 -12
- package/dist/runtime/otel.js.map +1 -1
- package/dist/runtime/squad-observer.js +1 -1
- package/dist/runtime/squad-observer.js.map +1 -1
- package/dist/sharing/consult.js +78 -78
- package/dist/streams/filter.d.ts +33 -0
- package/dist/streams/filter.d.ts.map +1 -0
- package/dist/streams/filter.js +29 -0
- package/dist/streams/filter.js.map +1 -0
- package/dist/streams/index.d.ts +9 -0
- package/dist/streams/index.d.ts.map +1 -0
- package/dist/streams/index.js +9 -0
- package/dist/streams/index.js.map +1 -0
- package/dist/streams/resolver.d.ts +40 -0
- package/dist/streams/resolver.d.ts.map +1 -0
- package/dist/streams/resolver.js +162 -0
- package/dist/streams/resolver.js.map +1 -0
- package/dist/streams/types.d.ts +44 -0
- package/dist/streams/types.d.ts.map +1 -0
- package/dist/streams/types.js +10 -0
- package/dist/streams/types.js.map +1 -0
- package/dist/tools/index.js +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/types.d.ts +20 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +208 -207
- package/templates/casting-history.json +4 -4
- package/templates/casting-policy.json +35 -35
- package/templates/casting-registry.json +3 -3
- package/templates/ceremonies.md +41 -41
- package/templates/charter.md +53 -53
- package/templates/constraint-tracking.md +38 -38
- package/templates/copilot-instructions.md +46 -46
- package/templates/history.md +10 -10
- package/templates/identity/now.md +9 -9
- package/templates/identity/wisdom.md +15 -15
- package/templates/mcp-config.md +98 -98
- package/templates/multi-agent-format.md +28 -28
- package/templates/orchestration-log.md +27 -27
- package/templates/plugin-marketplace.md +49 -49
- package/templates/raw-agent-output.md +37 -37
- package/templates/roster.md +60 -60
- package/templates/routing.md +54 -54
- package/templates/run-output.md +50 -50
- package/templates/scribe-charter.md +119 -119
- package/templates/skill.md +24 -24
- package/templates/skills/project-conventions/SKILL.md +56 -56
- package/templates/squad.agent.md +1146 -1146
- package/templates/workflows/squad-ci.yml +24 -24
- package/templates/workflows/squad-docs.yml +50 -50
- package/templates/workflows/squad-heartbeat.yml +316 -316
- package/templates/workflows/squad-insider-release.yml +61 -61
- package/templates/workflows/squad-issue-assign.yml +161 -161
- package/templates/workflows/squad-label-enforce.yml +181 -181
- package/templates/workflows/squad-preview.yml +55 -55
- package/templates/workflows/squad-promote.yml +120 -121
- package/templates/workflows/squad-release.yml +77 -77
- package/templates/workflows/squad-triage.yml +260 -260
- package/templates/workflows/sync-squad-labels.yml +169 -169
- package/dist/runtime/event-bus-otel-bridge.d.ts +0 -19
- package/dist/runtime/event-bus-otel-bridge.d.ts.map +0 -1
- package/dist/runtime/event-bus-otel-bridge.js +0 -61
- package/dist/runtime/event-bus-otel-bridge.js.map +0 -1
- package/templates/workflows/squad-main-guard.yml +0 -129
|
@@ -1,121 +1,120 @@
|
|
|
1
|
-
name: Squad Promote
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
workflow_dispatch:
|
|
5
|
-
inputs:
|
|
6
|
-
dry_run:
|
|
7
|
-
description: 'Dry run — show what would happen without pushing'
|
|
8
|
-
required: false
|
|
9
|
-
default: 'false'
|
|
10
|
-
type: choice
|
|
11
|
-
options: ['false', 'true']
|
|
12
|
-
|
|
13
|
-
permissions:
|
|
14
|
-
contents: write
|
|
15
|
-
|
|
16
|
-
jobs:
|
|
17
|
-
dev-to-preview:
|
|
18
|
-
name: Promote dev → preview
|
|
19
|
-
runs-on: ubuntu-latest
|
|
20
|
-
steps:
|
|
21
|
-
- uses: actions/checkout@v4
|
|
22
|
-
with:
|
|
23
|
-
fetch-depth: 0
|
|
24
|
-
token: ${{ secrets.GITHUB_TOKEN }}
|
|
25
|
-
|
|
26
|
-
- name: Configure git
|
|
27
|
-
run: |
|
|
28
|
-
git config user.name "github-actions[bot]"
|
|
29
|
-
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
30
|
-
|
|
31
|
-
- name: Fetch all branches
|
|
32
|
-
run: git fetch --all
|
|
33
|
-
|
|
34
|
-
- name: Show current state (dry run info)
|
|
35
|
-
run: |
|
|
36
|
-
echo "=== dev HEAD ===" && git log origin/dev -1 --oneline
|
|
37
|
-
echo "=== preview HEAD ===" && git log origin/preview -1 --oneline
|
|
38
|
-
echo "=== Files that would be stripped ==="
|
|
39
|
-
git diff origin/preview..origin/dev --name-only | grep -E "^(\.(ai-team|squad|ai-team-templates
|
|
40
|
-
|
|
41
|
-
- name: Merge dev → preview (strip forbidden paths)
|
|
42
|
-
if: ${{ inputs.dry_run == 'false' }}
|
|
43
|
-
run: |
|
|
44
|
-
git checkout preview
|
|
45
|
-
git merge origin/dev --no-commit --no-ff -X theirs || true
|
|
46
|
-
|
|
47
|
-
# Strip forbidden paths from merge commit
|
|
48
|
-
git rm -rf --cached --ignore-unmatch \
|
|
49
|
-
.ai-team/ \
|
|
50
|
-
.squad/ \
|
|
51
|
-
.ai-team-templates/ \
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
git
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
git config user.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
echo "===
|
|
90
|
-
echo "===
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
git
|
|
115
|
-
git
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
run: echo "🔍 Dry run complete — no changes pushed."
|
|
1
|
+
name: Squad Promote
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
dry_run:
|
|
7
|
+
description: 'Dry run — show what would happen without pushing'
|
|
8
|
+
required: false
|
|
9
|
+
default: 'false'
|
|
10
|
+
type: choice
|
|
11
|
+
options: ['false', 'true']
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: write
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
dev-to-preview:
|
|
18
|
+
name: Promote dev → preview
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
with:
|
|
23
|
+
fetch-depth: 0
|
|
24
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
25
|
+
|
|
26
|
+
- name: Configure git
|
|
27
|
+
run: |
|
|
28
|
+
git config user.name "github-actions[bot]"
|
|
29
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
30
|
+
|
|
31
|
+
- name: Fetch all branches
|
|
32
|
+
run: git fetch --all
|
|
33
|
+
|
|
34
|
+
- name: Show current state (dry run info)
|
|
35
|
+
run: |
|
|
36
|
+
echo "=== dev HEAD ===" && git log origin/dev -1 --oneline
|
|
37
|
+
echo "=== preview HEAD ===" && git log origin/preview -1 --oneline
|
|
38
|
+
echo "=== Files that would be stripped ==="
|
|
39
|
+
git diff origin/preview..origin/dev --name-only | grep -E "^(\.(ai-team|squad|ai-team-templates)|team-docs/|docs/proposals/)" || echo "(none)"
|
|
40
|
+
|
|
41
|
+
- name: Merge dev → preview (strip forbidden paths)
|
|
42
|
+
if: ${{ inputs.dry_run == 'false' }}
|
|
43
|
+
run: |
|
|
44
|
+
git checkout preview
|
|
45
|
+
git merge origin/dev --no-commit --no-ff -X theirs || true
|
|
46
|
+
|
|
47
|
+
# Strip forbidden paths from merge commit
|
|
48
|
+
git rm -rf --cached --ignore-unmatch \
|
|
49
|
+
.ai-team/ \
|
|
50
|
+
.squad/ \
|
|
51
|
+
.ai-team-templates/ \
|
|
52
|
+
team-docs/ \
|
|
53
|
+
"docs/proposals/" || true
|
|
54
|
+
|
|
55
|
+
# Commit if there are staged changes
|
|
56
|
+
if ! git diff --cached --quiet; then
|
|
57
|
+
git commit -m "chore: promote dev → preview (v$(node -e "console.log(require('./package.json').version)"))"
|
|
58
|
+
git push origin preview
|
|
59
|
+
echo "✅ Pushed preview branch"
|
|
60
|
+
else
|
|
61
|
+
echo "ℹ️ Nothing to commit — preview is already up to date"
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
- name: Dry run complete
|
|
65
|
+
if: ${{ inputs.dry_run == 'true' }}
|
|
66
|
+
run: echo "🔍 Dry run complete — no changes pushed."
|
|
67
|
+
|
|
68
|
+
preview-to-main:
|
|
69
|
+
name: Promote preview → main (release)
|
|
70
|
+
needs: dev-to-preview
|
|
71
|
+
runs-on: ubuntu-latest
|
|
72
|
+
steps:
|
|
73
|
+
- uses: actions/checkout@v4
|
|
74
|
+
with:
|
|
75
|
+
fetch-depth: 0
|
|
76
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
77
|
+
|
|
78
|
+
- name: Configure git
|
|
79
|
+
run: |
|
|
80
|
+
git config user.name "github-actions[bot]"
|
|
81
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
82
|
+
|
|
83
|
+
- name: Fetch all branches
|
|
84
|
+
run: git fetch --all
|
|
85
|
+
|
|
86
|
+
- name: Show current state
|
|
87
|
+
run: |
|
|
88
|
+
echo "=== preview HEAD ===" && git log origin/preview -1 --oneline
|
|
89
|
+
echo "=== main HEAD ===" && git log origin/main -1 --oneline
|
|
90
|
+
echo "=== Version ===" && node -e "console.log('v' + require('./package.json').version)"
|
|
91
|
+
|
|
92
|
+
- name: Validate preview is release-ready
|
|
93
|
+
run: |
|
|
94
|
+
git checkout preview
|
|
95
|
+
VERSION=$(node -e "console.log(require('./package.json').version)")
|
|
96
|
+
if ! grep -q "## \[$VERSION\]" CHANGELOG.md 2>/dev/null; then
|
|
97
|
+
echo "::error::Version $VERSION not found in CHANGELOG.md — update before releasing"
|
|
98
|
+
exit 1
|
|
99
|
+
fi
|
|
100
|
+
echo "✅ Version $VERSION has CHANGELOG entry"
|
|
101
|
+
|
|
102
|
+
# Verify no forbidden files on preview
|
|
103
|
+
FORBIDDEN=$(git ls-files | grep -E "^(\.(ai-team|squad|ai-team-templates)/|team-docs/|docs/proposals/)" || true)
|
|
104
|
+
if [ -n "$FORBIDDEN" ]; then
|
|
105
|
+
echo "::error::Forbidden files found on preview: $FORBIDDEN"
|
|
106
|
+
exit 1
|
|
107
|
+
fi
|
|
108
|
+
echo "✅ No forbidden files on preview"
|
|
109
|
+
|
|
110
|
+
- name: Merge preview → main
|
|
111
|
+
if: ${{ inputs.dry_run == 'false' }}
|
|
112
|
+
run: |
|
|
113
|
+
git checkout main
|
|
114
|
+
git merge origin/preview --no-ff -m "chore: promote preview → main (v$(node -e "console.log(require('./package.json').version)"))"
|
|
115
|
+
git push origin main
|
|
116
|
+
echo "✅ Pushed main — squad-release.yml will tag and publish the release"
|
|
117
|
+
|
|
118
|
+
- name: Dry run complete
|
|
119
|
+
if: ${{ inputs.dry_run == 'true' }}
|
|
120
|
+
run: echo "🔍 Dry run complete — no changes pushed."
|
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
name: Squad Release
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [main]
|
|
6
|
-
|
|
7
|
-
permissions:
|
|
8
|
-
contents: write
|
|
9
|
-
|
|
10
|
-
jobs:
|
|
11
|
-
release:
|
|
12
|
-
runs-on: ubuntu-latest
|
|
13
|
-
steps:
|
|
14
|
-
- uses: actions/checkout@v4
|
|
15
|
-
with:
|
|
16
|
-
fetch-depth: 0
|
|
17
|
-
|
|
18
|
-
- uses: actions/setup-node@v4
|
|
19
|
-
with:
|
|
20
|
-
node-version: 22
|
|
21
|
-
|
|
22
|
-
- name: Run tests
|
|
23
|
-
run: node --test test/*.test.js
|
|
24
|
-
|
|
25
|
-
- name: Validate version consistency
|
|
26
|
-
run: |
|
|
27
|
-
VERSION=$(node -e "console.log(require('./package.json').version)")
|
|
28
|
-
if ! grep -q "## \[$VERSION\]" CHANGELOG.md 2>/dev/null; then
|
|
29
|
-
echo "::error::Version $VERSION not found in CHANGELOG.md — update CHANGELOG.md before release"
|
|
30
|
-
exit 1
|
|
31
|
-
fi
|
|
32
|
-
echo "✅ Version $VERSION validated in CHANGELOG.md"
|
|
33
|
-
|
|
34
|
-
- name: Read version from package.json
|
|
35
|
-
id: version
|
|
36
|
-
run: |
|
|
37
|
-
VERSION=$(node -e "console.log(require('./package.json').version)")
|
|
38
|
-
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
39
|
-
echo "tag=v$VERSION" >> "$GITHUB_OUTPUT"
|
|
40
|
-
echo "📦 Version: $VERSION (tag: v$VERSION)"
|
|
41
|
-
|
|
42
|
-
- name: Check if tag already exists
|
|
43
|
-
id: check_tag
|
|
44
|
-
run: |
|
|
45
|
-
if git rev-parse "refs/tags/${{ steps.version.outputs.tag }}" >/dev/null 2>&1; then
|
|
46
|
-
echo "exists=true" >> "$GITHUB_OUTPUT"
|
|
47
|
-
echo "⏭️ Tag ${{ steps.version.outputs.tag }} already exists — skipping release."
|
|
48
|
-
else
|
|
49
|
-
echo "exists=false" >> "$GITHUB_OUTPUT"
|
|
50
|
-
echo "🆕 Tag ${{ steps.version.outputs.tag }} does not exist — creating release."
|
|
51
|
-
fi
|
|
52
|
-
|
|
53
|
-
- name: Create git tag
|
|
54
|
-
if: steps.check_tag.outputs.exists == 'false'
|
|
55
|
-
run: |
|
|
56
|
-
git config user.name "github-actions[bot]"
|
|
57
|
-
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
58
|
-
git tag -a "${{ steps.version.outputs.tag }}" -m "Release ${{ steps.version.outputs.tag }}"
|
|
59
|
-
git push origin "${{ steps.version.outputs.tag }}"
|
|
60
|
-
|
|
61
|
-
- name: Create GitHub Release
|
|
62
|
-
if: steps.check_tag.outputs.exists == 'false'
|
|
63
|
-
env:
|
|
64
|
-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
65
|
-
run: |
|
|
66
|
-
gh release create "${{ steps.version.outputs.tag }}" \
|
|
67
|
-
--title "${{ steps.version.outputs.tag }}" \
|
|
68
|
-
--generate-notes \
|
|
69
|
-
--latest
|
|
70
|
-
|
|
71
|
-
- name: Verify release
|
|
72
|
-
if: steps.check_tag.outputs.exists == 'false'
|
|
73
|
-
env:
|
|
74
|
-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
75
|
-
run: |
|
|
76
|
-
gh release view "${{ steps.version.outputs.tag }}"
|
|
77
|
-
echo "✅ Release ${{ steps.version.outputs.tag }} created and verified."
|
|
1
|
+
name: Squad Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: write
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
release:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
with:
|
|
16
|
+
fetch-depth: 0
|
|
17
|
+
|
|
18
|
+
- uses: actions/setup-node@v4
|
|
19
|
+
with:
|
|
20
|
+
node-version: 22
|
|
21
|
+
|
|
22
|
+
- name: Run tests
|
|
23
|
+
run: node --test test/*.test.js
|
|
24
|
+
|
|
25
|
+
- name: Validate version consistency
|
|
26
|
+
run: |
|
|
27
|
+
VERSION=$(node -e "console.log(require('./package.json').version)")
|
|
28
|
+
if ! grep -q "## \[$VERSION\]" CHANGELOG.md 2>/dev/null; then
|
|
29
|
+
echo "::error::Version $VERSION not found in CHANGELOG.md — update CHANGELOG.md before release"
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
32
|
+
echo "✅ Version $VERSION validated in CHANGELOG.md"
|
|
33
|
+
|
|
34
|
+
- name: Read version from package.json
|
|
35
|
+
id: version
|
|
36
|
+
run: |
|
|
37
|
+
VERSION=$(node -e "console.log(require('./package.json').version)")
|
|
38
|
+
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
39
|
+
echo "tag=v$VERSION" >> "$GITHUB_OUTPUT"
|
|
40
|
+
echo "📦 Version: $VERSION (tag: v$VERSION)"
|
|
41
|
+
|
|
42
|
+
- name: Check if tag already exists
|
|
43
|
+
id: check_tag
|
|
44
|
+
run: |
|
|
45
|
+
if git rev-parse "refs/tags/${{ steps.version.outputs.tag }}" >/dev/null 2>&1; then
|
|
46
|
+
echo "exists=true" >> "$GITHUB_OUTPUT"
|
|
47
|
+
echo "⏭️ Tag ${{ steps.version.outputs.tag }} already exists — skipping release."
|
|
48
|
+
else
|
|
49
|
+
echo "exists=false" >> "$GITHUB_OUTPUT"
|
|
50
|
+
echo "🆕 Tag ${{ steps.version.outputs.tag }} does not exist — creating release."
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
- name: Create git tag
|
|
54
|
+
if: steps.check_tag.outputs.exists == 'false'
|
|
55
|
+
run: |
|
|
56
|
+
git config user.name "github-actions[bot]"
|
|
57
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
58
|
+
git tag -a "${{ steps.version.outputs.tag }}" -m "Release ${{ steps.version.outputs.tag }}"
|
|
59
|
+
git push origin "${{ steps.version.outputs.tag }}"
|
|
60
|
+
|
|
61
|
+
- name: Create GitHub Release
|
|
62
|
+
if: steps.check_tag.outputs.exists == 'false'
|
|
63
|
+
env:
|
|
64
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
65
|
+
run: |
|
|
66
|
+
gh release create "${{ steps.version.outputs.tag }}" \
|
|
67
|
+
--title "${{ steps.version.outputs.tag }}" \
|
|
68
|
+
--generate-notes \
|
|
69
|
+
--latest
|
|
70
|
+
|
|
71
|
+
- name: Verify release
|
|
72
|
+
if: steps.check_tag.outputs.exists == 'false'
|
|
73
|
+
env:
|
|
74
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
75
|
+
run: |
|
|
76
|
+
gh release view "${{ steps.version.outputs.tag }}"
|
|
77
|
+
echo "✅ Release ${{ steps.version.outputs.tag }} created and verified."
|