mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-01 06:24:41 +01:00
* fix(context): record the save commit and flag work that landed after it /context-save recorded the branch, a timestamp and the modified files, but not the commit, so /context-restore could not tell that work landed after the save. A checkpoint saved before a step was committed came back with that step still listed as the plan. - gstack-slug --stamp-checkpoint also writes head:, the commit the save describes, next to remote:/project_root:/worktree:. - context-restore compares head: with HEAD before presenting. When commits landed after the save it prints how many and lists them, and moves Remaining Work under Verify first; a saved commit that left the branch history is reported the same way. Checkpoints saved before this keep their old sorting with a one-line note. - test/context-restore-head.test.ts runs the real save-path, stamp and head-check blocks in fixture repos: unchanged, moved, diverged after a reset, pre-tracking, and a malformed head: that must never execute. * fix(context-restore): name another branch as a cause when the saved commit is not in history Cross-branch resume (Conductor handoff) is a supported restore path, and there the checkpoint's commit is usually not an ancestor of HEAD. The diverged line said only 'rebased, reset, or not fetched'. It now names 'saved on another branch' first; the new test case covers a save on a feature branch restored from main. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs(changelog): unreleased entry for the context head check (port of #3316) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(context-restore): head check passes the fence lint, reads frontmatter only, prefers worktree:, and overrides provenance sorting - The block used a free-text placeholder, <the chosen file>, which the generated-bash lint (test/env-host-fence-conformance.test.ts) refuses on every host. It now uses the allowlisted <the FILE path printed above>, with prose naming the Step 2 choice. - head:, worktree: and project_root: are read from the leading frontmatter only (sed, no positional $N tokens Claude Code would rewrite), so a head: line in a checkpoint's notes no longer counts. - Outside git, the comparison uses the saved worktree: before project_root:, so a save from a nested linked worktree is not compared with the main tree. - The provenance rules now say they are skipped after HEAD_MOVED, HEAD_DIVERGED or HEAD_UNKNOWN, instead of contradicting the head check. - The re-stamp test checks the exit status and that the head moves. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --------- Co-authored-by: Yao Amevi A. Sossou <47247401+soyames@users.noreply.github.com> Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
119 lines
5.7 KiB
JSON
119 lines
5.7 KiB
JSON
{
|
|
"name": "gstack",
|
|
"version": "1.91.224",
|
|
"description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.",
|
|
"license": "MIT",
|
|
"type": "module",
|
|
"bin": {
|
|
"browse": "./browse/dist/browse",
|
|
"make-pdf": "./make-pdf/dist/pdf"
|
|
},
|
|
"scripts": {
|
|
"build": "bash scripts/build.sh",
|
|
"build:cso": "bash scripts/build-cso.sh",
|
|
"format:cso": "prettier --write 'lib/cso/*.ts'",
|
|
"format:cso:check": "prettier --check 'lib/cso/*.ts'",
|
|
"typecheck": "tsc -p tsconfig.json",
|
|
"typecheck:test": "bun run scripts/typecheck-test.ts",
|
|
"test:cso:docker": "bun test --max-concurrency 1 test/cso-docker-integration.test.ts test/cso-node-lifecycle-integration.test.ts test/cso-stack-cold-integration.test.ts",
|
|
"test:cso:macos": "bun test test/cso-macos-launcher.test.ts test/cso-registry-socket.test.ts",
|
|
"test:cso:windows": "bun test test/cso-windows-launcher.test.ts",
|
|
"vendor:xterm": "mkdir -p extension/lib && cp node_modules/xterm/lib/xterm.js extension/lib/xterm.js && cp node_modules/xterm/css/xterm.css extension/lib/xterm.css && cp node_modules/xterm-addon-fit/lib/xterm-addon-fit.js extension/lib/xterm-addon-fit.js",
|
|
"dev:make-pdf": "bun run make-pdf/src/cli.ts",
|
|
"dev:design": "bun run design/src/cli.ts",
|
|
"build:diagram-render": "cd lib/diagram-render && bun install && bun run scripts/build.ts",
|
|
"build:gates": "bun build --compile make-pdf/src/cli.ts --outfile make-pdf/dist/pdf --no-compile-autoload-dotenv --no-compile-autoload-bunfig && bun build --compile browse/src/cli.ts --outfile browse/dist/browse --no-compile-autoload-dotenv --no-compile-autoload-bunfig && bun run build:diagram-render",
|
|
"gen:skill-docs": "bun run scripts/gen-skill-docs.ts",
|
|
"gen:skill-docs:user": "bun run scripts/gen-skill-docs.ts --respect-detection",
|
|
"audit:manifest": "bun run scripts/prompt-audit-manifest.ts",
|
|
"dev": "bun run browse/src/cli.ts",
|
|
"server": "bun run browse/src/server.ts",
|
|
"test": "bun run scripts/test-free-shards.ts",
|
|
"test:free": "bun run scripts/test-free-shards.ts",
|
|
"test:windows": "bun run scripts/test-free-shards.ts --windows-only",
|
|
"test:ubicloud": "bash scripts/ubicloud/test-free.sh",
|
|
"test:evals": "bun run scripts/retired-command.ts test:evals",
|
|
"test:evals:all": "bun run scripts/retired-command.ts test:evals:all",
|
|
"test:e2e": "bun run scripts/retired-command.ts test:e2e",
|
|
"test:e2e:all": "bun run scripts/retired-command.ts test:e2e:all",
|
|
"test:gate": "bun run scripts/retired-command.ts test:gate",
|
|
"test:periodic": "bun run scripts/retired-command.ts test:periodic",
|
|
"test:gate:sharded": "bun run scripts/test-paid-shards.ts --tier gate",
|
|
"test:periodic:sharded": "EVALS_ALL=1 bun run scripts/test-paid-shards.ts --tier periodic",
|
|
"test:codex": "bun run scripts/retired-command.ts test:codex",
|
|
"test:codex:all": "bun run scripts/retired-command.ts test:codex:all",
|
|
"skill:check": "bun run scripts/skill-check.ts",
|
|
"dev:skill": "bun run scripts/dev-skill.ts",
|
|
"start": "bun run browse/src/server.ts",
|
|
"eval:bg": "bun run scripts/retired-command.ts eval:bg",
|
|
"eval:bg:all": "bun run scripts/retired-command.ts eval:bg:all",
|
|
"eval:bg:gate": "bun run scripts/eval-bg.ts gate",
|
|
"eval:bg:periodic": "bun run scripts/eval-bg.ts periodic",
|
|
"test:health": "bun run scripts/test-health-report.ts",
|
|
"test:exercised-map": "bun run scripts/exercised-map.ts",
|
|
"eval:list": "bun run scripts/eval-list.ts",
|
|
"eval:compare": "bun run scripts/eval-compare.ts",
|
|
"eval:summary": "bun run scripts/eval-summary.ts",
|
|
"eval:flake-rank": "bun run scripts/retired-command.ts eval:flake-rank",
|
|
"eval:pass-rates": "bun run scripts/eval-flake-rank.ts",
|
|
"eval:watch": "bun run scripts/retired-command.ts eval:watch",
|
|
"eval:select": "bun run scripts/eval-select.ts",
|
|
"analytics": "bun run scripts/analytics.ts",
|
|
"test:audit": "bun run scripts/retired-command.ts test:audit",
|
|
"slop": "npx slop-scan scan . 2>/dev/null || echo 'slop-scan not available (install with: npm i -g slop-scan)'",
|
|
"slop:diff": "bun run scripts/slop-diff.ts",
|
|
"test:quick": "bun run scripts/test-free-shards.ts --quick",
|
|
"test:pr": "EVALS_JOBS=${EVALS_JOBS:-2} bun run scripts/test-paid-shards.ts --tier gate --profile pr",
|
|
"test:release": "EVALS_ALL=1 EVALS_FRESH=1 EVALS_CACHE_PURPOSE=release bun run scripts/test-paid-shards.ts --tier gate --profile full && EVALS_ALL=1 EVALS_FRESH=1 EVALS_CACHE_PURPOSE=release bun run scripts/test-paid-shards.ts --tier periodic --profile full",
|
|
"eval:bg:pr": "bun run scripts/eval-bg.ts pr",
|
|
"eval:bg:release": "bun run scripts/eval-bg.ts release"
|
|
},
|
|
"dependencies": {
|
|
"@huggingface/transformers": "^4.3.1",
|
|
"@ngrok/ngrok": "^1.7.0",
|
|
"cross-spawn": "^7.0.6",
|
|
"diff": "^9.0.0",
|
|
"html-to-docx": "1.8.0",
|
|
"html-to-vdom": "0.7.0",
|
|
"marked": "^18.1.1",
|
|
"playwright": "^1.62.1",
|
|
"sharp": "^0.35.4",
|
|
"socks": "^2.8.10"
|
|
},
|
|
"engines": {
|
|
"bun": ">=1.4.2"
|
|
},
|
|
"keywords": [
|
|
"browser",
|
|
"automation",
|
|
"playwright",
|
|
"headless",
|
|
"cli",
|
|
"claude",
|
|
"ai-agent",
|
|
"devtools"
|
|
],
|
|
"devDependencies": {
|
|
"@anthropic-ai/claude-agent-sdk": "0.2.141",
|
|
"@anthropic-ai/sdk": "^0.78.0",
|
|
"@types/bun": "1.4.3",
|
|
"prettier": "3.9.10",
|
|
"typescript": "7.0.2",
|
|
"xterm": "^5.3.0",
|
|
"xterm-addon-fit": "^0.8.0"
|
|
},
|
|
"overrides": {
|
|
"@modelcontextprotocol/sdk": "1.31.0",
|
|
"adm-zip": "^0.6.1",
|
|
"fast-uri": "3.1.8",
|
|
"hono": "4.13.13",
|
|
"image-size": "2.0.4",
|
|
"ip-address": "10.7.3",
|
|
"proxy-addr": "2.0.8",
|
|
"sharp": "0.35.5"
|
|
},
|
|
"patchedDependencies": {
|
|
"playwright-core@1.62.1": "patches/playwright-core@1.62.1.patch"
|
|
}
|
|
}
|