2026-03-10 22:28:37 -06:00
|
|
|
{
|
|
|
|
|
"name": "gsd-pi",
|
2026-03-20 07:07:25 +00:00
|
|
|
"version": "2.38.0",
|
2026-03-11 13:29:37 +04:00
|
|
|
"description": "GSD — Get Shit Done coding agent",
|
2026-03-11 00:53:15 -06:00
|
|
|
"license": "MIT",
|
2026-03-10 22:31:13 -06:00
|
|
|
"repository": {
|
|
|
|
|
"type": "git",
|
2026-03-14 14:59:02 -05:00
|
|
|
"url": "https://github.com/gsd-build/gsd-2.git"
|
2026-03-10 22:31:13 -06:00
|
|
|
},
|
2026-03-14 14:59:02 -05:00
|
|
|
"homepage": "https://github.com/gsd-build/gsd-2#readme",
|
2026-03-10 22:31:13 -06:00
|
|
|
"bugs": {
|
2026-03-14 14:59:02 -05:00
|
|
|
"url": "https://github.com/gsd-build/gsd-2/issues"
|
2026-03-10 22:31:13 -06:00
|
|
|
},
|
2026-03-10 22:28:37 -06:00
|
|
|
"type": "module",
|
2026-03-12 21:55:17 -06:00
|
|
|
"workspaces": [
|
2026-03-18 01:11:52 -06:00
|
|
|
"packages/*",
|
|
|
|
|
"studio"
|
2026-03-12 21:55:17 -06:00
|
|
|
],
|
2026-03-10 22:28:37 -06:00
|
|
|
"bin": {
|
2026-03-10 23:28:31 -06:00
|
|
|
"gsd": "dist/loader.js",
|
|
|
|
|
"gsd-cli": "dist/loader.js"
|
2026-03-10 22:28:37 -06:00
|
|
|
},
|
|
|
|
|
"files": [
|
|
|
|
|
"dist",
|
2026-03-12 21:55:17 -06:00
|
|
|
"packages",
|
2026-03-10 22:28:37 -06:00
|
|
|
"pkg",
|
|
|
|
|
"src/resources",
|
|
|
|
|
"scripts/postinstall.js",
|
2026-03-14 10:04:12 -06:00
|
|
|
"scripts/link-workspace-packages.cjs",
|
2026-03-10 22:28:37 -06:00
|
|
|
"package.json",
|
|
|
|
|
"README.md"
|
|
|
|
|
],
|
|
|
|
|
"piConfig": {
|
|
|
|
|
"name": "gsd",
|
|
|
|
|
"configDir": ".gsd"
|
|
|
|
|
},
|
|
|
|
|
"engines": {
|
feat: upgrade to Node.js 24 LTS across CI, Docker, and package config (#1165)
Node.js 24.11.0 entered LTS (Krypton) with support through April 2028.
This upgrades all CI pipelines, Docker images, and package metadata
from Node 22 to Node 24.
Changes:
- ci.yml: node-version 22 → 24 (build + windows-portability jobs)
- pipeline.yml: node-version 22 → 24 (dev-publish, test-verify, prod-release)
- build-native.yml: node-version 22 → 24, actions/checkout@v4 → v6,
actions/setup-node@v4 → v6
- cleanup-dev-versions.yml: node-version 22 → 24
- Dockerfile: node:22-bookworm → node:24-bookworm,
node:22-slim → node:24-slim
- package.json: engines.node >=20.6.0 → >=22.0.0 (supports both 22 and 24)
- @types/node: ^22.0.0 → ^24.0.0
Verified: tsc --noEmit passes, 1729 unit tests pass on Node 24.14.0.
2026-03-18 11:28:49 -04:00
|
|
|
"node": ">=22.0.0"
|
2026-03-10 22:28:37 -06:00
|
|
|
},
|
2026-03-17 16:17:22 -06:00
|
|
|
"packageManager": "npm@10.9.3",
|
2026-03-10 22:28:37 -06:00
|
|
|
"scripts": {
|
2026-03-12 21:55:17 -06:00
|
|
|
"build:pi-tui": "npm run build -w @gsd/pi-tui",
|
|
|
|
|
"build:pi-ai": "npm run build -w @gsd/pi-ai",
|
|
|
|
|
"build:pi-agent-core": "npm run build -w @gsd/pi-agent-core",
|
|
|
|
|
"build:pi-coding-agent": "npm run build -w @gsd/pi-coding-agent",
|
2026-03-13 14:05:41 -06:00
|
|
|
"build:native-pkg": "npm run build -w @gsd/native",
|
|
|
|
|
"build:pi": "npm run build:native-pkg && npm run build:pi-tui && npm run build:pi-ai && npm run build:pi-agent-core && npm run build:pi-coding-agent",
|
2026-03-14 13:36:32 -06:00
|
|
|
"build": "npm run build:pi && tsc && npm run copy-resources && npm run copy-themes && npm run copy-export-html",
|
2026-03-16 13:34:05 -05:00
|
|
|
"copy-resources": "node scripts/copy-resources.cjs",
|
|
|
|
|
"copy-themes": "node scripts/copy-themes.cjs",
|
|
|
|
|
"copy-export-html": "node scripts/copy-export-html.cjs",
|
feat: add GitHub Workflows skill with CI workflow and ci_monitor tool (#294)
* feat: add GitHub Workflows skill with CI workflow and ci_monitor tool
- Runs on push to main and feature branches
- Runs on pull requests to main
- Build + test pipeline using Node 22
Cross-platform CI monitoring tool for debugging GitHub Actions:
- `runs` - List recent workflow runs
- `watch` - Monitor running workflow
- `fail-fast` - Exit 1 on first failure (for scripts)
- `log-failed` - Show failed job logs
- `test-summary` - Extract test pass/fail counts
- `check-actions` - GraphQL query for action versions
- `grep` - Search logs with context
- `wait-for` - Block until deployment keyword appears
Pure Node.js - no shell interpolation, works on macOS/Windows/Linux.
Drift-immune skill that:
- Routes all CI operations through ci_monitor.cjs
- Fetches live docs from docs.github.com (no stale training data)
- Provides validation constraints (BEFORE/AFTER/EVIDENCE)
- Split tests into test:unit (141 tests, ~12s) and test:integration (5 tests)
- Fixed idle-recovery.test.ts for current implementation
- Removed AGENTS.md dead code from resource-loader.ts
- Moved npm run build out of tests (fixes ENOBUFS)
When CI fails, you need observable diagnostics:
- `gh run` output is not script-friendly
- ci_monitor.cjs provides structured output for automation
- The skill ensures AI uses the tool, not stale training data
* fix: resolve imports and path for current upstream version
- Updated imports from @mariozechner/pi-coding-agent to @gsd/pi-coding-agent
- Fixed integration test path calculation to use process.cwd()
- Kept test:unit and test:integration scripts
* fix: replace search provider preference instead of accumulating
AuthStorage.set() for api_key credentials appends to the existing list
rather than replacing. When setSearchProviderPreference was called twice
with different values, the second call appended the new value, leaving
the first value at index 0, which get() returned.
Fix: call auth.remove() before auth.set() to ensure only the latest
preference is stored.
https://claude.ai/code/session_01Qx7HRSDb117KzDZzdKk1KB
* fix: address all 10 open PR review comments
- package.json: run build before test:integration so a fresh checkout works
- pack-install.test.ts: replace execSync+shell redirects with execFileSync
argument arrays (portable, no shell parsing, paths with spaces safe)
- ci_monitor.test.ts: remove unconditional passed++ after assert; move
success message after the failed > 0 check so it only prints on success
- setup_gh.cjs: replace unzip/tar shell-outs with platform-specific
execFileSync calls (unzip on macOS, PowerShell Expand-Archive on Windows);
add compareVersions() for correct element-by-element semver comparison
- ci_monitor.cjs: add --repo/-R global option so repo is overrideable;
fix getLogs() to use gh run view --log --job instead of binary REST endpoint
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* fix: make all changed files fully cross-platform (Windows/macOS/Linux)
- pack-install.test.ts: use tar npm package instead of tar CLI; resolve
gsd binary as gsd.cmd on Windows; skip shebang check on Windows
- setup_gh.cjs: use execFileSync for all binary invocations; replace
which with where on Windows; add Windows PATH guidance; filter preferred
install dirs by platform; unify ZIP extraction to use process.platform
consistently; escape single quotes in PowerShell Expand-Archive args
- ci_monitor.cjs: use path.join for .github/workflows paths; replace
all split('\n') with split(/\r?\n/) to handle Windows CRLF output
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* refactor: simplify and deduplicate changed files
- ci_monitor.cjs: memoize getRepo() so gh repo view subprocess runs at
most once per invocation instead of once per command call in watch loops
- pack-install.test.ts: extract packTarball() helper to eliminate
duplicate npm pack logic across two tests; remove unused contents variable
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* refactor: remove redundant existsSync before canWrite() in findInstallDir
canWrite() already returns false for non-existent directories, so the
pre-check was a TOCTOU-style redundancy with no behavioral value.
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* fix: replace tar npm package with Node built-ins (zlib + manual tar parsing)
tar is not in the dependency tree. listTarEntries() decompresses via
createGunzip() and parses the 512-byte tar block format directly,
reading name/prefix/type/size fields per POSIX ustar spec. No external
dependency required. Also fixes the broken tarball variable reference
left over from the packTarball() refactor.
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* remove: drop setup_gh scripts in favour of ci_monitor
setup_gh.cjs and setup_gh.py were one-shot gh CLI installers.
ci_monitor.cjs covers the day-to-day CI use case and is the tool
the skill routes through. Environments that need gh installed can
use brew/winget/distro packages directly.
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* fix: run only unit tests in CI — integration tests cause ENOBUFS
The integration tests (npm pack → npm install → spawn node) exceed
the buffer limits of the CI runner environment. They are documented
as requiring a manual build+run step. CI now runs test:unit only.
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* fix: run all tests in CI without ENOBUFS
- ci.yml: run unit and integration as separate steps; build is already
its own step so test:integration doesn't need to rebuild
- package.json: remove npm run build from test:integration script
- pack-install.test.ts: npm install uses stdio:'ignore' to avoid
piping large output through Node buffers (root cause of ENOBUFS);
add early dist/ check with clear error message instead of rebuilding
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* fix: resolve ENOBUFS and clean up setup_gh references
- pack-install.test.ts: derive tarball filename from package.json
instead of piping npm pack --json stdout; use stdio:ignore throughout
to avoid exhausting OS pipe buffers on CI runners
- SKILL.md: remove setup_gh install instructions; assume gh is
pre-installed via system package manager; point to ci_monitor.cjs
- github_project_setup.py: remove setup_gh.py reference from error message
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* fix: address Copilot review comments on pack-install.test.ts
- listTarEntries: collect chunks in array, Buffer.concat once on end
instead of O(n²) repeated concat in data handler
- listTarEntries: attach error handler to createReadStream so read
errors reject the Promise instead of crashing the process
- npm pack: use stdio:['ignore','ignore','pipe'] to preserve stderr
for diagnostics while still avoiding ENOBUFS on stdout
- npm install: same — pipe stderr so failures include error output
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-14 00:31:17 -04:00
|
|
|
"test:unit": "node --import ./src/resources/extensions/gsd/tests/resolve-ts.mjs --experimental-strip-types --test src/resources/extensions/gsd/tests/*.test.ts src/resources/extensions/gsd/tests/*.test.mjs src/tests/*.test.ts",
|
fix: prevent ensureGitignore from adding .gsd when tracked in git (#1364) (#1367)
* rfc: GitOps branching & versioning strategy proposal
Proposes a Git-Flow Lite model with automated integration branches:
main ← production-ready, tagged releases only
next ← integration branch for next minor (PRs target here)
release/X.Y ← stabilization branch, only bugfixes allowed
hotfix/X.Y.Z ← emergency fixes cherry-picked to release
Includes:
- RFC document with lifecycle diagrams, migration path, open questions
- Workflow scaffolds (in docs/proposals/workflows/, NOT .github/):
- create-release.yml: manual dispatch to cut release branch from next
- sync-next.yml: auto-sync next branch after version tags
- backmerge.yml: auto back-merge release fixes to next
This is an experimental proposal requesting community feedback before
any implementation. The workflow files are inert scaffolds — they do
not run in CI.
* fix: prevent ensureGitignore from adding .gsd when tracked in git (#1364)
CRITICAL DATA-LOSS FIX: ensureGitignore() unconditionally added '.gsd' to
.gitignore even when .gsd/ was a real git-tracked directory, causing git to
report ~889 tracked files as deleted.
Root cause: BASELINE_PATTERNS included '.gsd' unconditionally, and the
gitignore modification ran BEFORE migration checks in auto-start.ts.
Changes:
- Add hasGitTrackedGsdFiles() helper using nativeLsFiles to detect tracked
.gsd/ content
- ensureGitignore() now skips the '.gsd' pattern when .gsd/ has tracked files
- untrackRuntimeFiles() now skips entirely when .gsd/ has tracked files
- migrateToExternalState() aborts when .gsd/ has tracked files
- Reorder auto-start.ts: migration runs BEFORE gitignore modification
- Add 8 regression tests covering all scenarios
Fixes #1364
* fix: break recursive dialog loop when all milestones complete (#1348)
Two interacting bugs:
1. Recursive dialog loop: When all milestones are complete, bootstrapAutoSession
calls showSmartEntry → sets pendingAutoStart → checkAutoStartAfterDiscuss
calls startAuto → bootstrapAutoSession → showSmartEntry → infinite loop.
The discuss workflow completes without producing a milestone directory, so
phase stays 'complete' and the cycle never breaks.
Fix: Add a re-entry counter (_consecutiveCompleteBootstraps) that tracks
how many times bootstrapAutoSession enters the 'complete' branch without
advancing. After 2 consecutive attempts, break the loop with a warning
message and return false.
2. Missing _releaseFunction = null in retry lock onCompromised handler:
The retry lock path in session-lock.ts set _lockCompromised but didn't
null out _releaseFunction, which could leave a stale reference that
masks the compromise detection in validateSessionLock().
Fixes #1348
* fix: self-heal stale roadmap checkbox for interrupted complete-slice (#1350)
When complete-slice is interrupted after writing SUMMARY.md and UAT.md but
before flipping the roadmap checkbox, auto-mode enters an infinite loop —
re-launching the same complete-slice unit because the dispatch loop uses
the roadmap checkbox as the sole 'slice done' signal.
Fix: Add a self-heal case in selfHealRuntimeRecords that detects when
SUMMARY + UAT exist but the roadmap checkbox is unchecked, and auto-fixes
the checkbox. This allows the verification to pass and the dispatch loop
to advance.
Fixes #1350
* fix: add EISDIR guard to complete/validate milestone prompts (#1343)
The LLM was passing tasks/ directory paths to the read tool during
milestone completion, causing EISDIR crashes. Added file system safety
instructions to both complete-milestone and validate-milestone prompts
telling the LLM to use ls/find for directory listing, not the read tool.
Fixes #1343
* feat: improve extension conflict messages with removal guidance (#1347)
When a user extension registers tools/commands that now ship as built-ins,
the conflict message now includes '(built-in tool supersedes — consider
removing <path>)' and the log level is downgraded from 'Extension load error'
to 'Extension conflict'.
Changes:
- resource-loader.ts: detect built-in vs user extension conflicts, add hint
- cli.ts: downgrade severity for superseded-tool conflicts
Fixes #1347
* test: fix always-skipped preferences test, add test:marketplace script
- preferences.test.ts: Replace always-skipped getIsolationMode test with
a filesystem-independent version that validates the default through
validatePreferences() instead of reading ~/.gsd/preferences.md.
Reduces skipped count from 3 → 2.
- package.json: Add test:marketplace script for running marketplace
contract tests (claude-import-tui, plugin-importer-live,
marketplace-discovery) with GSD_TEST_CLONE_MARKETPLACES=1.
These tests need external repos and self-skip in unit test runs.
Remaining 2 skips:
- Marketplace contract test suites (need external repos, run via test:marketplace)
- Windows-only tests in validate-directory.test.ts are platform-conditional
and correctly skip on macOS
* fix: use execFileSync in regression tests for Windows portability
The regression tests used execSync with shell-dependent constructs:
- '&&' command chaining (works in bash/cmd but fragile)
- Single-quoted commit messages (bash-only, cmd.exe splits on spaces)
Replaced with execFileSync via a git() helper that bypasses the shell
entirely. Each git operation is a separate call with proper argument
arrays, eliminating all shell interpretation issues.
Fixes windows-portability CI failure.
* fix: guard milestone completion against missing slice summaries (#1368)
Auto-mode could report a milestone as complete after executing only the
last slice, skipping earlier unexecuted slices. The milestone completion
signal fired based on roadmap checkbox state, which could be stale or
inconsistent after worktree transitions.
Changes:
- auto-dispatch.ts: Added slice SUMMARY file existence check to both
validating-milestone and completing-milestone dispatch rules. If any
slice lacks a SUMMARY file, dispatch stops with a diagnostic error
instead of proceeding to validation/completion.
- validate-milestone.test.ts: Updated tests to create slice summary
files (required by the new guard).
- file-watcher.test.ts: Fixed flaky 'auth.json change emits auth-changed
event' test by adding watcher initialization delay and increasing event
propagation timeout (race condition when run in full suite).
Fixes #1368
* fix: warn on common misspelled preference keys + verify field guidance (#1373, #1341)
#1373: Users setting 'taskIsolation.mode: none' instead of 'git.isolation: none'
got a generic 'unknown key' warning. Added KEY_MIGRATION_HINTS that map common
misspellings (taskIsolation, task_isolation, isolation, manage_gitignore, auto_push,
main_branch) to their correct git.* equivalents with actionable messages.
#1341: Planning agent writes aspirational prose in Verify fields ('Sections 3.1
and 3.2 exist with exact formulas. Zero TBD.') instead of executable commands.
Added explicit verify field rules to the plan template: must be mechanically
executable, with examples of good vs bad patterns for content tasks.
Fixes #1373, partially addresses #1341
* refactor: extract roadmap-mutations.ts + shared test-utils.ts
Consolidation:
- roadmap-mutations.ts: Extracted markSliceDoneInRoadmap() and markTaskDoneInPlan()
from duplicated implementations in doctor.ts, mechanical-completion.ts, and
auto-recovery.ts. All three callers used identical regex patterns.
mechanical-completion.ts and auto-recovery.ts now import the shared utility.
(doctor.ts deferred — touched by PR #1349)
- test-utils.ts: Shared cross-platform test utilities for GSD extension tests.
Provides git() helper (execFileSync, no shell), makeTempRepo() with
core.autocrlf=false, cleanup(), createFile(), safeReadFile(), and
writeMilestoneFixture(). 12 test files currently define their own versions
of these helpers — new tests should import from test-utils.ts instead.
Security audit: No injection vectors (sid/tid are alphanumeric from roadmap
parser), no path traversal, no secrets, no new dependencies.
* fix: port conflict false positive on non-Node projects + paused worktree resume (#1381, #1383)
projects without package.json. macOS AirPlay Receiver listens on port 5000,
causing a spurious warning on non-Node projects.
Fix: Skip port checks entirely when no package.json exists. When using
default ports, filter out 5000 on macOS.
in-memory only. Re-entering /gsd started a fresh bootstrap from the project
root instead of the active worktree.
Fix: pauseAuto() now writes paused-session.json to .gsd/runtime/ with
milestoneId, worktreePath, originalBasePath, and stepMode. startAuto()
checks for this file before bootstrap and restores the paused session
context, including worktree re-entry. stopAuto() cleans up the file.
Fixes #1381, #1383
* fix: catch spawn ENOENT in uncaught exception guard + snapshot session lock path (#1384, #1363)
uncaught exception and crashes auto-mode. The EPIPE guard now also catches
ENOENT from spawn syscalls — logs the error and continues instead of
terminating the process.
the lock path differently via gsdRoot() because basePath could be either the
project root or a worktree path. gsdRoot() produces different results for
each, so the lock was written to one path and validated against another.
Fix: Snapshot the resolved lock path (_snapshotLockPath) at acquisition time
and reuse it for all subsequent lock operations within the session.
Fixes #1384, #1363
* fix: suppress false-positive lock compromise + skip migration with active worktrees (#1362, #1337)
because the event loop stall delays the heartbeat mtime update. The handler
now checks elapsed time since acquisition — if within the 30-minute stale
window, it logs a warning and continues instead of setting _lockCompromised.
Real takeovers (past the stale window) still trigger the compromise flag.
even when .gsd/worktrees/ contained active git worktrees with locked
directory handles. This caused EBUSY errors and destructive data loss.
Migration now checks for active worktree directories and skips entirely
if any are found.
Fixes #1362, #1337
2026-03-19 19:06:01 -04:00
|
|
|
"test:marketplace": "GSD_TEST_CLONE_MARKETPLACES=1 node --import ./src/resources/extensions/gsd/tests/resolve-ts.mjs --experimental-strip-types --test src/resources/extensions/gsd/tests/claude-import-tui.test.ts src/resources/extensions/gsd/tests/plugin-importer-live.test.ts src/tests/marketplace-discovery.test.ts",
|
2026-03-17 18:29:26 -06:00
|
|
|
"test:coverage": "c8 --reporter=text --reporter=lcov --exclude='src/resources/extensions/gsd/tests/**' --exclude='src/tests/**' --exclude='scripts/**' --exclude='native/**' --exclude='node_modules/**' --check-coverage --statements=50 --lines=50 --branches=20 --functions=20 node --import ./src/resources/extensions/gsd/tests/resolve-ts.mjs --experimental-strip-types --test src/resources/extensions/gsd/tests/*.test.ts src/resources/extensions/gsd/tests/*.test.mjs src/tests/*.test.ts",
|
feat: add GitHub Workflows skill with CI workflow and ci_monitor tool (#294)
* feat: add GitHub Workflows skill with CI workflow and ci_monitor tool
- Runs on push to main and feature branches
- Runs on pull requests to main
- Build + test pipeline using Node 22
Cross-platform CI monitoring tool for debugging GitHub Actions:
- `runs` - List recent workflow runs
- `watch` - Monitor running workflow
- `fail-fast` - Exit 1 on first failure (for scripts)
- `log-failed` - Show failed job logs
- `test-summary` - Extract test pass/fail counts
- `check-actions` - GraphQL query for action versions
- `grep` - Search logs with context
- `wait-for` - Block until deployment keyword appears
Pure Node.js - no shell interpolation, works on macOS/Windows/Linux.
Drift-immune skill that:
- Routes all CI operations through ci_monitor.cjs
- Fetches live docs from docs.github.com (no stale training data)
- Provides validation constraints (BEFORE/AFTER/EVIDENCE)
- Split tests into test:unit (141 tests, ~12s) and test:integration (5 tests)
- Fixed idle-recovery.test.ts for current implementation
- Removed AGENTS.md dead code from resource-loader.ts
- Moved npm run build out of tests (fixes ENOBUFS)
When CI fails, you need observable diagnostics:
- `gh run` output is not script-friendly
- ci_monitor.cjs provides structured output for automation
- The skill ensures AI uses the tool, not stale training data
* fix: resolve imports and path for current upstream version
- Updated imports from @mariozechner/pi-coding-agent to @gsd/pi-coding-agent
- Fixed integration test path calculation to use process.cwd()
- Kept test:unit and test:integration scripts
* fix: replace search provider preference instead of accumulating
AuthStorage.set() for api_key credentials appends to the existing list
rather than replacing. When setSearchProviderPreference was called twice
with different values, the second call appended the new value, leaving
the first value at index 0, which get() returned.
Fix: call auth.remove() before auth.set() to ensure only the latest
preference is stored.
https://claude.ai/code/session_01Qx7HRSDb117KzDZzdKk1KB
* fix: address all 10 open PR review comments
- package.json: run build before test:integration so a fresh checkout works
- pack-install.test.ts: replace execSync+shell redirects with execFileSync
argument arrays (portable, no shell parsing, paths with spaces safe)
- ci_monitor.test.ts: remove unconditional passed++ after assert; move
success message after the failed > 0 check so it only prints on success
- setup_gh.cjs: replace unzip/tar shell-outs with platform-specific
execFileSync calls (unzip on macOS, PowerShell Expand-Archive on Windows);
add compareVersions() for correct element-by-element semver comparison
- ci_monitor.cjs: add --repo/-R global option so repo is overrideable;
fix getLogs() to use gh run view --log --job instead of binary REST endpoint
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* fix: make all changed files fully cross-platform (Windows/macOS/Linux)
- pack-install.test.ts: use tar npm package instead of tar CLI; resolve
gsd binary as gsd.cmd on Windows; skip shebang check on Windows
- setup_gh.cjs: use execFileSync for all binary invocations; replace
which with where on Windows; add Windows PATH guidance; filter preferred
install dirs by platform; unify ZIP extraction to use process.platform
consistently; escape single quotes in PowerShell Expand-Archive args
- ci_monitor.cjs: use path.join for .github/workflows paths; replace
all split('\n') with split(/\r?\n/) to handle Windows CRLF output
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* refactor: simplify and deduplicate changed files
- ci_monitor.cjs: memoize getRepo() so gh repo view subprocess runs at
most once per invocation instead of once per command call in watch loops
- pack-install.test.ts: extract packTarball() helper to eliminate
duplicate npm pack logic across two tests; remove unused contents variable
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* refactor: remove redundant existsSync before canWrite() in findInstallDir
canWrite() already returns false for non-existent directories, so the
pre-check was a TOCTOU-style redundancy with no behavioral value.
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* fix: replace tar npm package with Node built-ins (zlib + manual tar parsing)
tar is not in the dependency tree. listTarEntries() decompresses via
createGunzip() and parses the 512-byte tar block format directly,
reading name/prefix/type/size fields per POSIX ustar spec. No external
dependency required. Also fixes the broken tarball variable reference
left over from the packTarball() refactor.
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* remove: drop setup_gh scripts in favour of ci_monitor
setup_gh.cjs and setup_gh.py were one-shot gh CLI installers.
ci_monitor.cjs covers the day-to-day CI use case and is the tool
the skill routes through. Environments that need gh installed can
use brew/winget/distro packages directly.
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* fix: run only unit tests in CI — integration tests cause ENOBUFS
The integration tests (npm pack → npm install → spawn node) exceed
the buffer limits of the CI runner environment. They are documented
as requiring a manual build+run step. CI now runs test:unit only.
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* fix: run all tests in CI without ENOBUFS
- ci.yml: run unit and integration as separate steps; build is already
its own step so test:integration doesn't need to rebuild
- package.json: remove npm run build from test:integration script
- pack-install.test.ts: npm install uses stdio:'ignore' to avoid
piping large output through Node buffers (root cause of ENOBUFS);
add early dist/ check with clear error message instead of rebuilding
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* fix: resolve ENOBUFS and clean up setup_gh references
- pack-install.test.ts: derive tarball filename from package.json
instead of piping npm pack --json stdout; use stdio:ignore throughout
to avoid exhausting OS pipe buffers on CI runners
- SKILL.md: remove setup_gh install instructions; assume gh is
pre-installed via system package manager; point to ci_monitor.cjs
- github_project_setup.py: remove setup_gh.py reference from error message
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
* fix: address Copilot review comments on pack-install.test.ts
- listTarEntries: collect chunks in array, Buffer.concat once on end
instead of O(n²) repeated concat in data handler
- listTarEntries: attach error handler to createReadStream so read
errors reject the Promise instead of crashing the process
- npm pack: use stdio:['ignore','ignore','pipe'] to preserve stderr
for diagnostics while still avoiding ENOBUFS on stdout
- npm install: same — pipe stderr so failures include error output
https://claude.ai/code/session_01AT6CgcAB62kWcDsTJg9HZM
---------
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-14 00:31:17 -04:00
|
|
|
"test:integration": "node --import ./src/resources/extensions/gsd/tests/resolve-ts.mjs --experimental-strip-types --test src/resources/extensions/gsd/tests/*integration*.test.ts src/tests/integration/*.test.ts",
|
|
|
|
|
"test": "npm run test:unit && npm run test:integration",
|
2026-03-18 00:40:06 -06:00
|
|
|
"test:smoke": "node --experimental-strip-types tests/smoke/run.ts",
|
|
|
|
|
"test:fixtures": "node --experimental-strip-types tests/fixtures/run.ts",
|
|
|
|
|
"test:fixtures:record": "GSD_FIXTURE_MODE=record node --experimental-strip-types tests/fixtures/record.ts",
|
|
|
|
|
"test:live": "GSD_LIVE_TESTS=1 node --experimental-strip-types tests/live/run.ts",
|
2026-03-13 00:56:23 -06:00
|
|
|
"test:browser-tools": "node --test src/resources/extensions/browser-tools/tests/browser-tools-unit.test.cjs src/resources/extensions/browser-tools/tests/browser-tools-integration.test.mjs",
|
2026-03-13 12:21:09 -06:00
|
|
|
"test:native": "node --test packages/native/src/__tests__/grep.test.mjs",
|
feat: add pre-commit secret scanner and CI secret detection (#1148)
* feat: add pre-commit secret scanner and CI secret detection
Add a comprehensive secret scanning system to prevent accidental
credential leaks in commits and pull requests:
- scripts/secret-scan.sh: ERE-based scanner (macOS/Linux compatible)
that detects AWS keys, API tokens, private keys, database URLs,
GitHub/GitLab/Slack/Stripe/Google/npm tokens, and hardcoded passwords
- scripts/install-hooks.sh: one-command git pre-commit hook installer
- .secretscanignore: allowlist for known false positives (test fixtures,
env var references, placeholder values)
- CI job: secret-scan step in ci.yml scans PR diffs against origin/main
- npm scripts: test:secret-scan, secret-scan, secret-scan:install-hook
- 17 tests covering detection, non-detection, binary skipping, CI mode
* fix: exclude secret-scan test file from CI scanning
The test file contains intentional fake secrets as test inputs.
Add it to .secretscanignore so CI doesn't flag them.
* fix: skip secret-scan tests on Windows (requires bash/POSIX grep)
2026-03-18 09:33:17 -05:00
|
|
|
"test:secret-scan": "node --import ./src/resources/extensions/gsd/tests/resolve-ts.mjs --experimental-strip-types --test src/tests/secret-scan.test.ts",
|
|
|
|
|
"secret-scan": "bash scripts/secret-scan.sh",
|
|
|
|
|
"secret-scan:install-hook": "bash scripts/install-hooks.sh",
|
2026-03-13 12:21:09 -06:00
|
|
|
"build:native": "node native/scripts/build.js",
|
|
|
|
|
"build:native:dev": "node native/scripts/build.js --dev",
|
fix: read resources from dist/ to prevent branch-drift in npm-link setups (#314)
* fix: read resources from dist/ to prevent branch-drift in npm-link setups
initResources() reads extensions, prompts, skills, and agents from
src/resources/ — which points into the live working tree when gsd is
installed via npm link. Switching branches in the gsd repo changes
src/resources/ for ALL projects using gsd, causing stale or broken
extensions to be synced to ~/.gsd/agent/ on next launch.
Fix: the build step now copies src/resources/ to dist/resources/.
At runtime, resource-loader.ts and loader.ts prefer dist/resources/
(stable, set at build time) over src/resources/ (live working tree).
Fallback to src/resources/ is preserved for setups without a build.
Also adds npm run dev watch-resources watcher that syncs src/resources/
to dist/resources/ on file changes, running alongside tsc --watch.
* fix: cache prompt templates per session to prevent cross-session invalidation
When two gsd sessions run concurrently, the second session's
initResources() overwrites ~/.gsd/agent/ templates on disk. The first
session then reads a newer template that expects variables its in-memory
code doesn't know about, causing 'template declares {{X}} but no value
was provided' crashes that hang auto-mode indefinitely.
Fix: cache each template on first read. A running session uses the
template versions from when it first loaded them, immune to later
disk overwrites by other sessions.
2026-03-14 18:47:03 +01:00
|
|
|
"dev": "node scripts/dev.js",
|
2026-03-14 10:04:12 -06:00
|
|
|
"postinstall": "node scripts/link-workspace-packages.cjs && node scripts/postinstall.js",
|
2026-03-11 13:34:03 -07:00
|
|
|
"pi:install-global": "node scripts/install-pi-global.js",
|
|
|
|
|
"pi:uninstall-global": "node scripts/uninstall-pi-global.js",
|
2026-03-11 09:07:17 +01:00
|
|
|
"sync-pkg-version": "node scripts/sync-pkg-version.cjs",
|
2026-03-13 14:36:18 -06:00
|
|
|
"sync-platform-versions": "node native/scripts/sync-platform-versions.cjs",
|
2026-03-16 13:29:31 -05:00
|
|
|
"validate-pack": "node scripts/validate-pack.js",
|
2026-03-15 19:26:45 -06:00
|
|
|
"typecheck:extensions": "tsc --noEmit --project tsconfig.extensions.json",
|
2026-03-18 00:40:06 -06:00
|
|
|
"pipeline:version-stamp": "node scripts/version-stamp.mjs",
|
2026-03-18 11:17:43 -06:00
|
|
|
"release:changelog": "node scripts/generate-changelog.mjs",
|
|
|
|
|
"release:bump": "node scripts/bump-version.mjs",
|
|
|
|
|
"release:update-changelog": "node scripts/update-changelog.mjs",
|
2026-03-18 00:40:06 -06:00
|
|
|
"docker:build-runtime": "docker build --target runtime -t ghcr.io/gsd-build/gsd-pi .",
|
|
|
|
|
"docker:build-builder": "docker build --target builder -t ghcr.io/gsd-build/gsd-ci-builder .",
|
2026-03-18 22:22:54 -04:00
|
|
|
"prepublishOnly": "npm run sync-pkg-version && npm run sync-platform-versions && ([ \"$CI\" = 'true' ] || git diff --exit-code || (echo 'ERROR: version sync changed files — commit them before publishing' && exit 1)) && npm run build && npm run typecheck:extensions && npm run validate-pack",
|
|
|
|
|
"test:live-regression": "node --experimental-strip-types tests/live-regression/run.ts"
|
2026-03-10 22:28:37 -06:00
|
|
|
},
|
|
|
|
|
"dependencies": {
|
2026-03-14 11:16:14 -06:00
|
|
|
"@anthropic-ai/sdk": "^0.73.0",
|
feat: add anthropic-vertex provider for Claude on Vertex AI (#1533)
* feat: add anthropic-vertex provider for Claude models on Google Vertex AI
Add a new anthropic-vertex provider that enables using Claude models
(Opus 4.6, Sonnet 4.6, Haiku 4.5) through Google Vertex AI using the
@anthropic-ai/vertex-sdk package. Follows the same pattern as the
existing google/google-vertex provider split.
Detection uses ANTHROPIC_VERTEX_PROJECT_ID (same env var as Claude Code)
with CLOUD_ML_REGION for region selection, falling back to us-central1.
Extracts shared Anthropic utilities into anthropic-shared.ts (message
conversion, tool conversion, param building, stream processing) to
avoid duplication between anthropic.ts and anthropic-vertex.ts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add full Claude model set for anthropic-vertex provider
Add 200K context window variants for Opus 4.6 and Sonnet 4.6, plus
older models (Sonnet 4.5, Sonnet 4, Opus 4.5, Opus 4.1, Opus 4, Haiku 4.5).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: add @anthropic-ai/vertex-sdk to root dependencies
Required for the published package to resolve the vertex SDK at runtime.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: remove unnecessary comments to match codebase style
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: remove duplicate stream functions after rebase
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Nathan Roe <nathan.roe@carvana.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 01:14:13 -04:00
|
|
|
"@anthropic-ai/vertex-sdk": "^0.14.4",
|
2026-03-14 11:16:14 -06:00
|
|
|
"@aws-sdk/client-bedrock-runtime": "^3.983.0",
|
2026-03-12 09:18:13 -06:00
|
|
|
"@clack/prompts": "^1.1.0",
|
2026-03-14 11:16:14 -06:00
|
|
|
"@google/genai": "^1.40.0",
|
|
|
|
|
"@mariozechner/jiti": "^2.6.2",
|
2026-03-17 18:29:31 -06:00
|
|
|
"@mistralai/mistralai": "^1.14.1",
|
feat: add MCP server mode, /lint skill, E2E smoke tests
- Add native MCP server mode (--mode mcp): exposes GSD's tools via
Model Context Protocol over stdin/stdout for Claude Desktop, VS Code,
and other MCP-compatible clients. Uses @modelcontextprotocol/sdk.
- Add /lint skill: auto-detects ESLint, Biome, Prettier, rustfmt,
gofmt, Black, Ruff and runs with structured output
- Add 6 E2E smoke tests: --version, --help, config --help, update
--help, --list-models, and --mode text --print startup
- Fix diff-context.ts stdio type for CI compatibility
- Fix token-counter.ts tiktoken import for extensions typecheck
- Update help text and CLI to include --mode mcp
2026-03-16 13:56:31 -05:00
|
|
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
feat: add GitHub API client, diff-aware context, tiktoken token counting
- Add GitHub API integration via @octokit/rest: createGitHubClient,
getRepoInfo (parses HTTPS/SSH remotes), createPullRequest,
getPullRequest, listPullRequestReviews, createIssueComment
- Add diff-aware context module: getRecentlyChangedFiles,
getChangedFilesWithContext, rankFilesByRelevance — prioritizes
recently-changed files for context window budget allocation
- Add accurate token counting via tiktoken: countTokens (async),
countTokensSync, initTokenCounter — falls back to chars/4 heuristic
when tiktoken is unavailable
- 27 new tests across 3 test files
2026-03-16 13:50:00 -05:00
|
|
|
"@octokit/rest": "^22.0.1",
|
2026-03-14 11:16:14 -06:00
|
|
|
"@silvia-odwyer/photon-node": "^0.3.4",
|
|
|
|
|
"@sinclair/typebox": "^0.34.41",
|
|
|
|
|
"@types/mime-types": "^2.1.4",
|
|
|
|
|
"ajv": "^8.17.1",
|
|
|
|
|
"ajv-formats": "^3.0.1",
|
2026-03-16 13:31:15 -05:00
|
|
|
"chalk": "^5.6.2",
|
feat: add /review skill, /test skill, chokidar file watcher, subcommand help
- Add /review skill: reviews staged/unstaged/commit changes for security,
performance, bugs, and quality with structured findings by severity
- Add /test skill: auto-detects test framework, generates comprehensive
tests for source files, or runs suites with failure analysis
- Add chokidar file watcher: watches ~/.gsd/agent/ for config changes
(settings.json, auth.json, models.json, extensions/) with debounced
events on an EventBus
- Add --help per subcommand: `gsd config --help` and `gsd update --help`
show subcommand-specific usage information
- 8 new file-watcher tests (start/stop, event emission, debouncing,
unrelated file filtering)
2026-03-16 13:47:25 -05:00
|
|
|
"chokidar": "^5.0.0",
|
2026-03-14 11:16:14 -06:00
|
|
|
"diff": "^8.0.2",
|
|
|
|
|
"extract-zip": "^2.0.1",
|
|
|
|
|
"file-type": "^21.1.1",
|
|
|
|
|
"get-east-asian-width": "^1.3.0",
|
|
|
|
|
"glob": "^13.0.1",
|
|
|
|
|
"hosted-git-info": "^9.0.2",
|
|
|
|
|
"ignore": "^7.0.5",
|
|
|
|
|
"marked": "^15.0.12",
|
|
|
|
|
"mime-types": "^3.0.1",
|
|
|
|
|
"minimatch": "^10.2.3",
|
2026-03-17 18:29:31 -06:00
|
|
|
"openai": "^6.26.0",
|
2026-03-12 09:18:13 -06:00
|
|
|
"picocolors": "^1.1.1",
|
feat: TTSR + blob/artifact storage (ported from oh-my-pi)
* docs(M002): context, requirements, and roadmap
* feat: port TTSR and blob/artifact storage from oh-my-pi
Phase 1 — TTSR (Time Traveling Stream Rules):
- TtsrManager: regex-based stream monitoring with scope filtering,
repeat gating, and buffer isolation (picomatch replaces Bun.Glob)
- Rule loader: scans ~/.gsd/agent/rules/*.md and .gsd/rules/*.md
with YAML frontmatter parsing; project rules override global
- TTSR extension: wires into pi event lifecycle (session_start,
turn_start, message_update, turn_end, agent_end) to abort on
match and inject violation as system reminder via sendMessage
- Interrupt template for rule violation injection
Phase 2 — Blob/Artifact Storage:
- BlobStore: content-addressed storage at ~/.gsd/agent/blobs/ using
Node crypto (sha256), sync I/O, automatic deduplication
- ArtifactManager: session-scoped sequential artifact files stored
alongside session JSONL (lazy dir creation, resume-safe ID scan)
- Session manager integration: prepareForPersistence externalizes
images ≥1KB to blob store before JSONL write; resolveBlobRefs
rehydrates on session load; truncates strings >500KB
- Bash tool artifact spill: uses ArtifactManager instead of temp
files when available, includes artifact:// references in output
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: harden blob store, TTSR manager, and dep classification
- Validate SHA-256 hex format in BlobStore.get/has/parseBlobRef to
prevent path traversal via crafted blob references
- Cap TTSR per-stream buffers at 512KB to prevent unbounded memory growth
- Move picomatch from devDependencies to dependencies (runtime import)
- Warn on invalid regex in TTSR rule conditions instead of silent skip
- Remove .gsd/ planning files that were force-added past .gitignore
- Add trailing newline to ttsr-interrupt.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* test: add tests for blob store, artifact manager, TTSR manager, and rule loader
55 tests covering:
- BlobStore put/get/has, idempotency, path traversal rejection
- parseBlobRef/isBlobRef validation, externalize/resolve round-trips
- ArtifactManager sequential IDs, lazy dir creation, session resume
- TtsrManager rule matching, scope filtering, buffer isolation,
repeat gating, buffer size cap, injection persistence
- Rule loader frontmatter parsing, directory scanning, merge logic
Also fixes BlobStore constructor to avoid TS parameter property syntax
(incompatible with Node's strip-only TypeScript mode).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 08:43:56 -06:00
|
|
|
"picomatch": "^4.0.3",
|
2026-03-12 23:49:36 -06:00
|
|
|
"playwright": "^1.58.2",
|
2026-03-14 11:16:14 -06:00
|
|
|
"proper-lockfile": "^4.1.2",
|
|
|
|
|
"proxy-agent": "^6.5.0",
|
2026-03-14 10:45:52 -06:00
|
|
|
"sharp": "^0.34.5",
|
2026-03-14 11:16:14 -06:00
|
|
|
"sql.js": "^1.14.1",
|
|
|
|
|
"strip-ansi": "^7.1.0",
|
|
|
|
|
"undici": "^7.24.2",
|
|
|
|
|
"yaml": "^2.8.2",
|
|
|
|
|
"zod-to-json-schema": "^3.24.6"
|
2026-03-10 22:28:37 -06:00
|
|
|
},
|
|
|
|
|
"devDependencies": {
|
feat: upgrade to Node.js 24 LTS across CI, Docker, and package config (#1165)
Node.js 24.11.0 entered LTS (Krypton) with support through April 2028.
This upgrades all CI pipelines, Docker images, and package metadata
from Node 22 to Node 24.
Changes:
- ci.yml: node-version 22 → 24 (build + windows-portability jobs)
- pipeline.yml: node-version 22 → 24 (dev-publish, test-verify, prod-release)
- build-native.yml: node-version 22 → 24, actions/checkout@v4 → v6,
actions/setup-node@v4 → v6
- cleanup-dev-versions.yml: node-version 22 → 24
- Dockerfile: node:22-bookworm → node:24-bookworm,
node:22-slim → node:24-slim
- package.json: engines.node >=20.6.0 → >=22.0.0 (supports both 22 and 24)
- @types/node: ^22.0.0 → ^24.0.0
Verified: tsc --noEmit passes, 1729 unit tests pass on Node 24.14.0.
2026-03-18 11:28:49 -04:00
|
|
|
"@types/node": "^24.12.0",
|
feat: TTSR + blob/artifact storage (ported from oh-my-pi)
* docs(M002): context, requirements, and roadmap
* feat: port TTSR and blob/artifact storage from oh-my-pi
Phase 1 — TTSR (Time Traveling Stream Rules):
- TtsrManager: regex-based stream monitoring with scope filtering,
repeat gating, and buffer isolation (picomatch replaces Bun.Glob)
- Rule loader: scans ~/.gsd/agent/rules/*.md and .gsd/rules/*.md
with YAML frontmatter parsing; project rules override global
- TTSR extension: wires into pi event lifecycle (session_start,
turn_start, message_update, turn_end, agent_end) to abort on
match and inject violation as system reminder via sendMessage
- Interrupt template for rule violation injection
Phase 2 — Blob/Artifact Storage:
- BlobStore: content-addressed storage at ~/.gsd/agent/blobs/ using
Node crypto (sha256), sync I/O, automatic deduplication
- ArtifactManager: session-scoped sequential artifact files stored
alongside session JSONL (lazy dir creation, resume-safe ID scan)
- Session manager integration: prepareForPersistence externalizes
images ≥1KB to blob store before JSONL write; resolveBlobRefs
rehydrates on session load; truncates strings >500KB
- Bash tool artifact spill: uses ArtifactManager instead of temp
files when available, includes artifact:// references in output
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: harden blob store, TTSR manager, and dep classification
- Validate SHA-256 hex format in BlobStore.get/has/parseBlobRef to
prevent path traversal via crafted blob references
- Cap TTSR per-stream buffers at 512KB to prevent unbounded memory growth
- Move picomatch from devDependencies to dependencies (runtime import)
- Warn on invalid regex in TTSR rule conditions instead of silent skip
- Remove .gsd/ planning files that were force-added past .gitignore
- Add trailing newline to ttsr-interrupt.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* test: add tests for blob store, artifact manager, TTSR manager, and rule loader
55 tests covering:
- BlobStore put/get/has, idempotency, path traversal rejection
- parseBlobRef/isBlobRef validation, externalize/resolve round-trips
- ArtifactManager sequential IDs, lazy dir creation, session resume
- TtsrManager rule matching, scope filtering, buffer isolation,
repeat gating, buffer size cap, injection persistence
- Rule loader frontmatter parsing, directory scanning, merge logic
Also fixes BlobStore constructor to avoid TS parameter property syntax
(incompatible with Node's strip-only TypeScript mode).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 08:43:56 -06:00
|
|
|
"@types/picomatch": "^4.0.2",
|
2026-03-16 13:25:52 -05:00
|
|
|
"c8": "^11.0.0",
|
2026-03-13 00:56:23 -06:00
|
|
|
"jiti": "^2.6.1",
|
2026-03-10 22:28:37 -06:00
|
|
|
"typescript": "^5.4.0"
|
2026-03-10 23:28:31 -06:00
|
|
|
},
|
2026-03-13 14:48:14 +00:00
|
|
|
"optionalDependencies": {
|
2026-03-13 19:20:44 -03:00
|
|
|
"@gsd-build/engine-darwin-arm64": ">=2.10.2",
|
|
|
|
|
"@gsd-build/engine-darwin-x64": ">=2.10.2",
|
|
|
|
|
"@gsd-build/engine-linux-arm64-gnu": ">=2.10.2",
|
2026-03-16 13:25:52 -05:00
|
|
|
"@gsd-build/engine-linux-x64-gnu": ">=2.10.2",
|
2026-03-13 19:20:44 -03:00
|
|
|
"@gsd-build/engine-win32-x64-msvc": ">=2.10.2",
|
2026-03-14 11:16:14 -06:00
|
|
|
"fsevents": "~2.3.3",
|
|
|
|
|
"koffi": "^2.9.0"
|
2026-03-13 14:48:14 +00:00
|
|
|
},
|
2026-03-10 23:28:31 -06:00
|
|
|
"overrides": {
|
|
|
|
|
"gaxios": "7.1.4"
|
2026-03-10 22:28:37 -06:00
|
|
|
}
|
|
|
|
|
}
|