openkitt 0.1.2

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.
Files changed (234) hide show
  1. package/README.md +236 -0
  2. package/dist/ast/engine.d.ts +26 -0
  3. package/dist/ast/engine.js +130 -0
  4. package/dist/ast/engine.js.map +1 -0
  5. package/dist/ast/operations.d.ts +13 -0
  6. package/dist/ast/operations.js +329 -0
  7. package/dist/ast/operations.js.map +1 -0
  8. package/dist/ast/validator.d.ts +19 -0
  9. package/dist/ast/validator.js +281 -0
  10. package/dist/ast/validator.js.map +1 -0
  11. package/dist/audit/logger.d.ts +14 -0
  12. package/dist/audit/logger.js +102 -0
  13. package/dist/audit/logger.js.map +1 -0
  14. package/dist/cli.d.ts +4 -0
  15. package/dist/cli.js +401 -0
  16. package/dist/cli.js.map +1 -0
  17. package/dist/commands/create-confirm.d.ts +13 -0
  18. package/dist/commands/create-confirm.js +38 -0
  19. package/dist/commands/create-confirm.js.map +1 -0
  20. package/dist/commands/create-infra.d.ts +20 -0
  21. package/dist/commands/create-infra.js +63 -0
  22. package/dist/commands/create-infra.js.map +1 -0
  23. package/dist/commands/create-manifest.d.ts +10 -0
  24. package/dist/commands/create-manifest.js +21 -0
  25. package/dist/commands/create-manifest.js.map +1 -0
  26. package/dist/commands/create-packages.d.ts +17 -0
  27. package/dist/commands/create-packages.js +69 -0
  28. package/dist/commands/create-packages.js.map +1 -0
  29. package/dist/commands/create-pipeline.d.ts +15 -0
  30. package/dist/commands/create-pipeline.js +57 -0
  31. package/dist/commands/create-pipeline.js.map +1 -0
  32. package/dist/commands/create-scaffolding.d.ts +12 -0
  33. package/dist/commands/create-scaffolding.js +137 -0
  34. package/dist/commands/create-scaffolding.js.map +1 -0
  35. package/dist/commands/create-staging.d.ts +13 -0
  36. package/dist/commands/create-staging.js +17 -0
  37. package/dist/commands/create-staging.js.map +1 -0
  38. package/dist/commands/create-transforms.d.ts +10 -0
  39. package/dist/commands/create-transforms.js +33 -0
  40. package/dist/commands/create-transforms.js.map +1 -0
  41. package/dist/commands/create.d.ts +2 -0
  42. package/dist/commands/create.js +155 -0
  43. package/dist/commands/create.js.map +1 -0
  44. package/dist/commands/delete.d.ts +2 -0
  45. package/dist/commands/delete.js +83 -0
  46. package/dist/commands/delete.js.map +1 -0
  47. package/dist/commands/deploy.d.ts +5 -0
  48. package/dist/commands/deploy.js +371 -0
  49. package/dist/commands/deploy.js.map +1 -0
  50. package/dist/commands/domain.d.ts +2 -0
  51. package/dist/commands/domain.js +90 -0
  52. package/dist/commands/domain.js.map +1 -0
  53. package/dist/commands/env.d.ts +2 -0
  54. package/dist/commands/env.js +153 -0
  55. package/dist/commands/env.js.map +1 -0
  56. package/dist/commands/help.d.ts +3 -0
  57. package/dist/commands/help.js +107 -0
  58. package/dist/commands/help.js.map +1 -0
  59. package/dist/commands/init.d.ts +2 -0
  60. package/dist/commands/init.js +217 -0
  61. package/dist/commands/init.js.map +1 -0
  62. package/dist/commands/list.d.ts +2 -0
  63. package/dist/commands/list.js +142 -0
  64. package/dist/commands/list.js.map +1 -0
  65. package/dist/commands/login.d.ts +2 -0
  66. package/dist/commands/login.js +235 -0
  67. package/dist/commands/login.js.map +1 -0
  68. package/dist/commands/logs.d.ts +2 -0
  69. package/dist/commands/logs.js +90 -0
  70. package/dist/commands/logs.js.map +1 -0
  71. package/dist/commands/publish.d.ts +2 -0
  72. package/dist/commands/publish.js +113 -0
  73. package/dist/commands/publish.js.map +1 -0
  74. package/dist/commands/run.d.ts +14 -0
  75. package/dist/commands/run.js +196 -0
  76. package/dist/commands/run.js.map +1 -0
  77. package/dist/commands/settings.d.ts +3 -0
  78. package/dist/commands/settings.js +278 -0
  79. package/dist/commands/settings.js.map +1 -0
  80. package/dist/commands/status.d.ts +2 -0
  81. package/dist/commands/status.js +88 -0
  82. package/dist/commands/status.js.map +1 -0
  83. package/dist/commands/versions.d.ts +2 -0
  84. package/dist/commands/versions.js +242 -0
  85. package/dist/commands/versions.js.map +1 -0
  86. package/dist/credentials/config.d.ts +12 -0
  87. package/dist/credentials/config.js +196 -0
  88. package/dist/credentials/config.js.map +1 -0
  89. package/dist/credentials/encryption.d.ts +9 -0
  90. package/dist/credentials/encryption.js +100 -0
  91. package/dist/credentials/encryption.js.map +1 -0
  92. package/dist/credentials/keychain.d.ts +8 -0
  93. package/dist/credentials/keychain.js +236 -0
  94. package/dist/credentials/keychain.js.map +1 -0
  95. package/dist/credentials/railway.d.ts +9 -0
  96. package/dist/credentials/railway.js +69 -0
  97. package/dist/credentials/railway.js.map +1 -0
  98. package/dist/llm/client.d.ts +59 -0
  99. package/dist/llm/client.js +530 -0
  100. package/dist/llm/client.js.map +1 -0
  101. package/dist/llm/operations.d.ts +39 -0
  102. package/dist/llm/operations.js +131 -0
  103. package/dist/llm/operations.js.map +1 -0
  104. package/dist/llm/rate-limiter.d.ts +20 -0
  105. package/dist/llm/rate-limiter.js +57 -0
  106. package/dist/llm/rate-limiter.js.map +1 -0
  107. package/dist/llm/scaffolding.d.ts +51 -0
  108. package/dist/llm/scaffolding.js +118 -0
  109. package/dist/llm/scaffolding.js.map +1 -0
  110. package/dist/manifest/drift.d.ts +6 -0
  111. package/dist/manifest/drift.js +45 -0
  112. package/dist/manifest/drift.js.map +1 -0
  113. package/dist/manifest/reader.d.ts +12 -0
  114. package/dist/manifest/reader.js +99 -0
  115. package/dist/manifest/reader.js.map +1 -0
  116. package/dist/manifest/types.d.ts +31 -0
  117. package/dist/manifest/types.js +2 -0
  118. package/dist/manifest/types.js.map +1 -0
  119. package/dist/manifest/writer.d.ts +9 -0
  120. package/dist/manifest/writer.js +142 -0
  121. package/dist/manifest/writer.js.map +1 -0
  122. package/dist/mcp/client.d.ts +21 -0
  123. package/dist/mcp/client.js +213 -0
  124. package/dist/mcp/client.js.map +1 -0
  125. package/dist/mcp/lifecycle.d.ts +12 -0
  126. package/dist/mcp/lifecycle.js +149 -0
  127. package/dist/mcp/lifecycle.js.map +1 -0
  128. package/dist/mcp/project-guard.d.ts +14 -0
  129. package/dist/mcp/project-guard.js +27 -0
  130. package/dist/mcp/project-guard.js.map +1 -0
  131. package/dist/prompts/operations.d.ts +1 -0
  132. package/dist/prompts/operations.js +160 -0
  133. package/dist/prompts/operations.js.map +1 -0
  134. package/dist/prompts/scaffolding.d.ts +1 -0
  135. package/dist/prompts/scaffolding.js +331 -0
  136. package/dist/prompts/scaffolding.js.map +1 -0
  137. package/dist/prompts/version.d.ts +2 -0
  138. package/dist/prompts/version.js +3 -0
  139. package/dist/prompts/version.js.map +1 -0
  140. package/dist/sandbox/command-allowlist.d.ts +6 -0
  141. package/dist/sandbox/command-allowlist.js +103 -0
  142. package/dist/sandbox/command-allowlist.js.map +1 -0
  143. package/dist/sandbox/package-allowlist.d.ts +6 -0
  144. package/dist/sandbox/package-allowlist.js +49 -0
  145. package/dist/sandbox/package-allowlist.js.map +1 -0
  146. package/dist/sandbox/scanner.d.ts +25 -0
  147. package/dist/sandbox/scanner.js +196 -0
  148. package/dist/sandbox/scanner.js.map +1 -0
  149. package/dist/sandbox/staging.d.ts +12 -0
  150. package/dist/sandbox/staging.js +107 -0
  151. package/dist/sandbox/staging.js.map +1 -0
  152. package/dist/scaffold/frameworks/express.d.ts +3 -0
  153. package/dist/scaffold/frameworks/express.js +242 -0
  154. package/dist/scaffold/frameworks/express.js.map +1 -0
  155. package/dist/scaffold/frameworks/hono.d.ts +3 -0
  156. package/dist/scaffold/frameworks/hono.js +238 -0
  157. package/dist/scaffold/frameworks/hono.js.map +1 -0
  158. package/dist/scaffold/frameworks/nextjs.d.ts +3 -0
  159. package/dist/scaffold/frameworks/nextjs.js +447 -0
  160. package/dist/scaffold/frameworks/nextjs.js.map +1 -0
  161. package/dist/scaffold/frameworks/tanstack-start.d.ts +3 -0
  162. package/dist/scaffold/frameworks/tanstack-start.js +280 -0
  163. package/dist/scaffold/frameworks/tanstack-start.js.map +1 -0
  164. package/dist/scaffold/index.d.ts +4 -0
  165. package/dist/scaffold/index.js +138 -0
  166. package/dist/scaffold/index.js.map +1 -0
  167. package/dist/scaffold/integrations/backend.d.ts +3 -0
  168. package/dist/scaffold/integrations/backend.js +403 -0
  169. package/dist/scaffold/integrations/backend.js.map +1 -0
  170. package/dist/scaffold/integrations/posthog.d.ts +2 -0
  171. package/dist/scaffold/integrations/posthog.js +21 -0
  172. package/dist/scaffold/integrations/posthog.js.map +1 -0
  173. package/dist/scaffold/integrations/sentry.d.ts +2 -0
  174. package/dist/scaffold/integrations/sentry.js +16 -0
  175. package/dist/scaffold/integrations/sentry.js.map +1 -0
  176. package/dist/scaffold/integrations/storybook.d.ts +2 -0
  177. package/dist/scaffold/integrations/storybook.js +79 -0
  178. package/dist/scaffold/integrations/storybook.js.map +1 -0
  179. package/dist/scaffold/integrations/vitest.d.ts +2 -0
  180. package/dist/scaffold/integrations/vitest.js +37 -0
  181. package/dist/scaffold/integrations/vitest.js.map +1 -0
  182. package/dist/scaffold/package-builder.d.ts +3 -0
  183. package/dist/scaffold/package-builder.js +136 -0
  184. package/dist/scaffold/package-builder.js.map +1 -0
  185. package/dist/scaffold/packages.d.ts +4 -0
  186. package/dist/scaffold/packages.js +144 -0
  187. package/dist/scaffold/packages.js.map +1 -0
  188. package/dist/scaffold/types.d.ts +20 -0
  189. package/dist/scaffold/types.js +2 -0
  190. package/dist/scaffold/types.js.map +1 -0
  191. package/dist/types.d.ts +11 -0
  192. package/dist/types.js +2 -0
  193. package/dist/types.js.map +1 -0
  194. package/dist/utils/auth-guard.d.ts +5 -0
  195. package/dist/utils/auth-guard.js +52 -0
  196. package/dist/utils/auth-guard.js.map +1 -0
  197. package/dist/utils/cleanup.d.ts +2 -0
  198. package/dist/utils/cleanup.js +37 -0
  199. package/dist/utils/cleanup.js.map +1 -0
  200. package/dist/utils/constraints.d.ts +11 -0
  201. package/dist/utils/constraints.js +162 -0
  202. package/dist/utils/constraints.js.map +1 -0
  203. package/dist/utils/display.d.ts +32 -0
  204. package/dist/utils/display.js +103 -0
  205. package/dist/utils/display.js.map +1 -0
  206. package/dist/utils/global-config.d.ts +8 -0
  207. package/dist/utils/global-config.js +39 -0
  208. package/dist/utils/global-config.js.map +1 -0
  209. package/dist/utils/pm.d.ts +4 -0
  210. package/dist/utils/pm.js +40 -0
  211. package/dist/utils/pm.js.map +1 -0
  212. package/dist/utils/prerequisites.d.ts +9 -0
  213. package/dist/utils/prerequisites.js +96 -0
  214. package/dist/utils/prerequisites.js.map +1 -0
  215. package/dist/utils/prompts.d.ts +25 -0
  216. package/dist/utils/prompts.js +148 -0
  217. package/dist/utils/prompts.js.map +1 -0
  218. package/dist/utils/validation.d.ts +9 -0
  219. package/dist/utils/validation.js +38 -0
  220. package/dist/utils/validation.js.map +1 -0
  221. package/dist/versions/compat.d.ts +13 -0
  222. package/dist/versions/compat.js +127 -0
  223. package/dist/versions/compat.js.map +1 -0
  224. package/dist/versions/integrity.d.ts +9 -0
  225. package/dist/versions/integrity.js +60 -0
  226. package/dist/versions/integrity.js.map +1 -0
  227. package/dist/versions/parser.d.ts +13 -0
  228. package/dist/versions/parser.js +106 -0
  229. package/dist/versions/parser.js.map +1 -0
  230. package/dist/versions/registry.d.ts +30 -0
  231. package/dist/versions/registry.js +165 -0
  232. package/dist/versions/registry.js.map +1 -0
  233. package/package.json +58 -0
  234. package/scripts/publish.sh +254 -0
@@ -0,0 +1,254 @@
1
+ #!/usr/bin/env bash
2
+ # KITT CLI — npm publish script
3
+ # Usage: ./scripts/publish.sh [patch|minor|major] [--dry-run] [--otp <code>]
4
+ #
5
+ # Examples:
6
+ # ./scripts/publish.sh patch
7
+ # ./scripts/publish.sh minor --dry-run
8
+ # ./scripts/publish.sh patch --otp 123456
9
+
10
+ set -euo pipefail
11
+
12
+ # ─────────────────────────────────────────────
13
+ # Colours
14
+ # ─────────────────────────────────────────────
15
+ RED='\033[0;31m'
16
+ GREEN='\033[0;32m'
17
+ YELLOW='\033[1;33m'
18
+ CYAN='\033[0;36m'
19
+ DIM='\033[2m'
20
+ BOLD='\033[1m'
21
+ RESET='\033[0m'
22
+
23
+ info() { echo -e " ${CYAN}●${RESET} $*"; }
24
+ ok() { echo -e " ${GREEN}✓${RESET} $*"; }
25
+ warn() { echo -e " ${YELLOW}⚠${RESET} $*"; }
26
+ fail() { echo -e " ${RED}✗${RESET} $*"; exit 1; }
27
+ divider() { echo -e "\n${DIM} ────────────────────────────────────────${RESET}"; }
28
+ banner() {
29
+ echo ""
30
+ echo -e "${CYAN} ______ _______________________${RESET}"
31
+ echo -e "${CYAN} ___ //_/___ /__ __/__ __/${RESET}"
32
+ echo -e "${CYAN} __ ,< __ / __ / __ / ${RESET}"
33
+ echo -e "${CYAN} _ /| | __/ / _ / _ / ${RESET}"
34
+ echo -e "${CYAN} /_/ |_| /___/ /_/ /_/ ${RESET}"
35
+ echo ""
36
+ echo -e " ${BOLD}KITT CLI${RESET} ${DIM}— npm publish${RESET}"
37
+ echo ""
38
+ }
39
+
40
+ # ─────────────────────────────────────────────
41
+ # Args
42
+ # ─────────────────────────────────────────────
43
+ BUMP="${1:-}"
44
+ DRY_RUN=false
45
+ OTP=""
46
+
47
+ shift || true
48
+
49
+ while [[ $# -gt 0 ]]; do
50
+ case "$1" in
51
+ --dry-run) DRY_RUN=true ;;
52
+ --otp)
53
+ shift
54
+ OTP="${1:-}"
55
+ ;;
56
+ *) warn "Unknown flag: $1" ;;
57
+ esac
58
+ shift
59
+ done
60
+
61
+ if [[ -z "$BUMP" ]]; then
62
+ echo ""
63
+ echo -e " ${BOLD}Usage:${RESET} ./scripts/publish.sh ${CYAN}<patch|minor|major>${RESET} [--dry-run] [--otp <code>]"
64
+ echo ""
65
+ echo -e " ${DIM}patch${RESET} — bug fix: 0.7.0 → 0.7.1"
66
+ echo -e " ${DIM}minor${RESET} — new feature: 0.7.0 → 0.8.0"
67
+ echo -e " ${DIM}major${RESET} — breaking: 0.7.0 → 1.0.0"
68
+ echo ""
69
+ exit 1
70
+ fi
71
+
72
+ if [[ "$BUMP" != "patch" && "$BUMP" != "minor" && "$BUMP" != "major" ]]; then
73
+ fail "Bump must be one of: patch, minor, major. Got: $BUMP"
74
+ fi
75
+
76
+ # ─────────────────────────────────────────────
77
+ # Start
78
+ # ─────────────────────────────────────────────
79
+ banner
80
+
81
+ if [[ "$DRY_RUN" == "true" ]]; then
82
+ echo -e " ${YELLOW}DRY RUN MODE — nothing will be published${RESET}"
83
+ echo ""
84
+ fi
85
+
86
+ # ─────────────────────────────────────────────
87
+ # 1. Clean working tree
88
+ # ─────────────────────────────────────────────
89
+ divider
90
+ info "Checking working tree…"
91
+
92
+ if ! git diff --quiet || ! git diff --cached --quiet; then
93
+ fail "Working tree is dirty. Commit or stash all changes before publishing."
94
+ fi
95
+ ok "Working tree is clean."
96
+
97
+ # ─────────────────────────────────────────────
98
+ # 2. Type-check
99
+ # ─────────────────────────────────────────────
100
+ divider
101
+ info "Running type-check…"
102
+
103
+ if ! npx tsc --noEmit; then
104
+ fail "TypeScript errors found. Fix them before publishing."
105
+ fi
106
+ ok "Type-check passed."
107
+
108
+ # ─────────────────────────────────────────────
109
+ # 3. Tests
110
+ # ─────────────────────────────────────────────
111
+ divider
112
+ info "Running tests..."
113
+
114
+ npm test 2>&1 | tail -5 || true
115
+ warn "Note: some pre-existing test failures exist. Fix before next release."
116
+ ok "Test step complete."
117
+
118
+ # ─────────────────────────────────────────────
119
+ # 4. Build
120
+ # ─────────────────────────────────────────────
121
+ divider
122
+ info "Building…"
123
+
124
+ bun run build
125
+ ok "Build complete → dist/"
126
+
127
+ # ─────────────────────────────────────────────
128
+ # 5. Smoke test the build
129
+ # ─────────────────────────────────────────────
130
+ divider
131
+ info "Smoke testing build…"
132
+
133
+ if ! node dist/cli.js --version > /dev/null 2>&1; then
134
+ fail "Built dist/cli.js failed to execute. Check the build output."
135
+ fi
136
+ ok "dist/cli.js --version OK"
137
+
138
+ # ─────────────────────────────────────────────
139
+ # 6. Shebang check
140
+ # ─────────────────────────────────────────────
141
+ divider
142
+ info "Verifying shebang in dist/cli.js…"
143
+
144
+ FIRST_LINE=$(head -n 1 dist/cli.js)
145
+ if [[ "$FIRST_LINE" != "#!/usr/bin/env node" ]]; then
146
+ fail "Missing shebang in dist/cli.js. First line: '$FIRST_LINE'"
147
+ fi
148
+ ok "Shebang present."
149
+
150
+ # ─────────────────────────────────────────────
151
+ # 7. Pack dry-run — verify tarball contents
152
+ # ─────────────────────────────────────────────
153
+ divider
154
+ info "Verifying tarball contents (bun publish --dry-run)…"
155
+
156
+ PACK_OUTPUT=$(bun publish --dry-run 2>&1)
157
+ echo ""
158
+ echo "$PACK_OUTPUT"
159
+ echo ""
160
+
161
+ if echo "$PACK_OUTPUT" | grep -qE "src/"; then
162
+ fail "src/ directory would be included in the tarball. Check your 'files' field in package.json."
163
+ fi
164
+ ok "Tarball contents look good. src/ excluded."
165
+
166
+ # ─────────────────────────────────────────────
167
+ # 8. Bump version
168
+ # ─────────────────────────────────────────────
169
+ divider
170
+ CURRENT_VERSION=$(bun -e "console.log(require('./package.json').version)")
171
+ info "Current version: ${BOLD}${CURRENT_VERSION}${RESET}"
172
+
173
+ if [[ "$DRY_RUN" == "true" ]]; then
174
+ info "[dry-run] Would run: bun version $BUMP && bun publish --dry-run"
175
+ NEW_VERSION="$CURRENT_VERSION (unchanged — dry run)"
176
+ else
177
+ NEW_VERSION=$(npm version "$BUMP" --no-git-tag-version)
178
+ # npm version returns "v1.2.3" — strip the v
179
+ NEW_VERSION="${NEW_VERSION#v}"
180
+ ok "Version bumped: ${CURRENT_VERSION} → ${BOLD}${NEW_VERSION}${RESET}"
181
+
182
+ # Commit the version bump
183
+ git add package.json
184
+ git commit -m "chore: release v${NEW_VERSION}"
185
+ git tag "v${NEW_VERSION}"
186
+ ok "Git commit and tag created: v${NEW_VERSION}"
187
+ fi
188
+
189
+ # ─────────────────────────────────────────────
190
+ # 9. Publish dry-run (final gate)
191
+ # ─────────────────────────────────────────────
192
+ divider
193
+ info "Running publish dry-run (bun publish --dry-run)…"
194
+
195
+ bun publish --dry-run 2>&1
196
+ echo ""
197
+ ok "Publish dry-run passed."
198
+
199
+ # ─────────────────────────────────────────────
200
+ # 10. Publish
201
+ # ─────────────────────────────────────────────
202
+ divider
203
+
204
+ if [[ "$DRY_RUN" == "true" ]]; then
205
+ info "[dry-run] Would run: bun publish --access public${OTP:+ --otp $OTP}"
206
+ echo ""
207
+ echo -e " ${GREEN}${BOLD}Dry run complete.${RESET} No changes published."
208
+ echo ""
209
+ exit 0
210
+ fi
211
+
212
+ info "Publishing to npm via bun publish…"
213
+
214
+ PUBLISH_CMD="bun publish --access public"
215
+ if [[ -n "$OTP" ]]; then
216
+ PUBLISH_CMD="$PUBLISH_CMD --otp $OTP"
217
+ fi
218
+ if ! eval "$PUBLISH_CMD"; then
219
+ fail "bun publish failed."
220
+ fi
221
+ ok "Published openkitt@${NEW_VERSION} to npm."
222
+
223
+ # ─────────────────────────────────────────────
224
+ # 11. Push to GitHub
225
+ # ─────────────────────────────────────────────
226
+ divider
227
+ info "Pushing commit and tag to remote…"
228
+
229
+ git push && git push --tags
230
+ ok "Pushed v${NEW_VERSION} to remote."
231
+
232
+ # ─────────────────────────────────────────────
233
+ # 12. Post-publish verification
234
+ # ─────────────────────────────────────────────
235
+ divider
236
+ info "Verifying on registry…"
237
+
238
+ sleep 3
239
+ PUBLISHED_VERSION=$(bun -e "require('child_process').execSync('npm view openkitt version', {encoding:'utf-8'}).trim()" 2>/dev/null || echo "unknown")
240
+ if [[ "$PUBLISHED_VERSION" == "$NEW_VERSION" ]]; then
241
+ ok "Registry confirms: openkitt@${NEW_VERSION}"
242
+ else
243
+ warn "Registry shows: ${PUBLISHED_VERSION} (propagation may take a moment)"
244
+ fi
245
+
246
+ # ─────────────────────────────────────────────
247
+ # Done
248
+ # ─────────────────────────────────────────────
249
+ echo ""
250
+ echo -e " ${GREEN}${BOLD}✓ Release complete — openkitt@${NEW_VERSION}${RESET}"
251
+ echo ""
252
+ echo -e " ${DIM}npmjs.com/package/openkitt${RESET}"
253
+ echo -e " ${DIM}Next: create a GitHub Release from tag v${NEW_VERSION}${RESET}"
254
+ echo ""