syntaur 0.36.0 → 0.37.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "syntaur",
3
- "version": "0.36.0",
3
+ "version": "0.37.0",
4
4
  "description": "Project workflow CLI with dashboard, Claude Code plugin, and Codex plugin",
5
5
  "homepage": "https://github.com/prong-horn/syntaur#readme",
6
6
  "repository": {
@@ -56,9 +56,11 @@
56
56
  "test": "vitest run",
57
57
  "test:watch": "vitest",
58
58
  "mirror-skills": "node scripts/mirror-skills-to-platforms.mjs",
59
+ "sync-plugin-version": "node scripts/sync-plugin-version.mjs",
59
60
  "build:skills-index": "node scripts/build-skills-index.mjs",
60
61
  "postinstall": "node scripts/install-macos-url-handler.mjs",
61
- "prepack": "node scripts/mirror-skills-to-platforms.mjs",
62
+ "version": "node scripts/sync-plugin-version.mjs && git add .claude-plugin/plugin.json platforms/claude-code/.claude-plugin/plugin.json platforms/codex/.codex-plugin/plugin.json",
63
+ "prepack": "node scripts/mirror-skills-to-platforms.mjs && node scripts/sync-plugin-version.mjs",
62
64
  "prepublishOnly": "npm run build && npm ci --prefix dashboard && npm run build --prefix dashboard",
63
65
  "try": "node scripts/try.mjs",
64
66
  "untry": "npm unlink -g syntaur && npm install -g syntaur@latest && echo '\\n✓ global syntaur restored to latest published version'"
@@ -5,7 +5,7 @@
5
5
  "name": "Brennen",
6
6
  "email": ""
7
7
  },
8
- "version": "0.8.0",
8
+ "version": "0.37.0",
9
9
  "skills": [
10
10
  "./skills/syntaur-protocol",
11
11
  "./skills/grab-assignment",
@@ -19,6 +19,53 @@ command -v jq >/dev/null 2>&1 || exit 0
19
19
  INPUT=$(cat)
20
20
  [ -z "$INPUT" ] && exit 0
21
21
 
22
+ # Run `syntaur --version` with a PORTABLE ~1s watchdog (background + kill) so it
23
+ # is bounded even where `timeout`/`gtimeout` are absent (stock macOS). Prints the
24
+ # trimmed version on success; prints nothing and returns non-zero if it hangs or
25
+ # fails. 1s + the dashboard curl's --max-time 3 stays under the hook's 5s budget.
26
+ syntaur_bounded_version() {
27
+ command -v syntaur >/dev/null 2>&1 || return 1
28
+ local out cpid kpid rc
29
+ out="${TMPDIR:-/tmp}/syntaur-ver.$$"
30
+ syntaur --version >"$out" 2>/dev/null &
31
+ cpid=$!
32
+ # Hard deadline via SIGKILL (uncatchable — a TERM-ignoring or hung CLI cannot
33
+ # block us) at ~1s, guaranteeing the `wait` below returns. `--version` is a
34
+ # node process with no descendants in practice, so killing it is complete.
35
+ ( sleep 1; kill -KILL "$cpid" 2>/dev/null ) >/dev/null 2>&1 &
36
+ kpid=$!
37
+ wait "$cpid" 2>/dev/null
38
+ rc=$?
39
+ # Stop the watchdog early on the fast path (and reap it).
40
+ kill -KILL "$kpid" 2>/dev/null
41
+ wait "$kpid" 2>/dev/null
42
+ if [ "$rc" -eq 0 ]; then
43
+ tr -d '[:space:]' <"$out" 2>/dev/null
44
+ rm -f "$out"
45
+ return 0
46
+ fi
47
+ rm -f "$out"
48
+ return 1
49
+ }
50
+
51
+ # --- Best-effort, non-blocking: warn when the installed plugin is stale vs the
52
+ # running CLI (the CLI updates via npm; the marketplace plugin copy does not).
53
+ # Plugin-global, so it runs BEFORE the context-dependent early exits below. Any
54
+ # failure → do nothing. NEVER changes the exit status (the hook always exits 0).
55
+ syntaur_plugin_drift_warn() {
56
+ local marker marker_ver cli_ver msg
57
+ marker="${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/plugins/syntaur}/.syntaur-install.json"
58
+ [ -f "$marker" ] || return 0
59
+ marker_ver=$(jq -r '.packageVersion // empty' "$marker" 2>/dev/null)
60
+ [ -n "$marker_ver" ] || return 0
61
+ cli_ver=$(syntaur_bounded_version) || return 0
62
+ [ -n "$cli_ver" ] || return 0
63
+ [ "$marker_ver" = "$cli_ver" ] && return 0
64
+ msg="Syntaur plugin v${marker_ver} differs from the installed CLI v${cli_ver} — run \`syntaur install-plugin --force\` to refresh."
65
+ jq -cn --arg c "$msg" '{hookSpecificOutput:{hookEventName:"SessionStart",additionalContext:$c}}' 2>/dev/null || true
66
+ }
67
+ syntaur_plugin_drift_warn || true
68
+
22
69
  SESSION_ID=$(printf '%s' "$INPUT" | jq -r '.session_id // empty' 2>/dev/null)
23
70
  TRANSCRIPT_PATH=$(printf '%s' "$INPUT" | jq -r '.transcript_path // empty' 2>/dev/null)
24
71
  CWD=$(printf '%s' "$INPUT" | jq -r '.cwd // empty' 2>/dev/null)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "syntaur",
3
- "version": "0.8.0",
3
+ "version": "0.37.0",
4
4
  "description": "Run Syntaur project and assignment workflows from Codex, including claiming work, planning, completing handoffs, session/server tracking, save-session-summary continuity, and write-boundary enforcement.",
5
5
  "author": {
6
6
  "name": "Brennen"