@memnexus-ai/mx-agent-cli 0.1.51 → 0.1.52

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 (47) hide show
  1. package/dist/__tests__/claude-sync.test.js +20 -136
  2. package/dist/__tests__/claude-sync.test.js.map +1 -1
  3. package/dist/commands/create.d.ts.map +1 -1
  4. package/dist/commands/create.js +18 -137
  5. package/dist/commands/create.js.map +1 -1
  6. package/dist/commands/init.d.ts +2 -12
  7. package/dist/commands/init.d.ts.map +1 -1
  8. package/dist/commands/init.js +21 -70
  9. package/dist/commands/init.js.map +1 -1
  10. package/dist/commands/list.d.ts +0 -1
  11. package/dist/commands/list.d.ts.map +1 -1
  12. package/dist/commands/list.js +9 -39
  13. package/dist/commands/list.js.map +1 -1
  14. package/dist/commands/start.d.ts.map +1 -1
  15. package/dist/commands/start.js +18 -225
  16. package/dist/commands/start.js.map +1 -1
  17. package/dist/commands/update.d.ts.map +1 -1
  18. package/dist/commands/update.js +15 -28
  19. package/dist/commands/update.js.map +1 -1
  20. package/dist/index.js +1 -16
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/claude.d.ts +4 -15
  23. package/dist/lib/claude.d.ts.map +1 -1
  24. package/dist/lib/claude.js +44 -331
  25. package/dist/lib/claude.js.map +1 -1
  26. package/dist/lib/memory.d.ts +6 -1
  27. package/dist/lib/memory.d.ts.map +1 -1
  28. package/dist/lib/memory.js +11 -8
  29. package/dist/lib/memory.js.map +1 -1
  30. package/dist/lib/project-config.d.ts +7 -7
  31. package/dist/lib/project-config.d.ts.map +1 -1
  32. package/dist/lib/project-config.js +6 -3
  33. package/dist/lib/project-config.js.map +1 -1
  34. package/dist/lib/templates.d.ts +1 -39
  35. package/dist/lib/templates.d.ts.map +1 -1
  36. package/dist/lib/templates.js +25 -1239
  37. package/dist/lib/templates.js.map +1 -1
  38. package/dist/lib/worktree.d.ts +1 -19
  39. package/dist/lib/worktree.d.ts.map +1 -1
  40. package/dist/lib/worktree.js +4 -55
  41. package/dist/lib/worktree.js.map +1 -1
  42. package/package.json +2 -3
  43. package/README.md +0 -104
  44. package/dist/commands/new.d.ts +0 -30
  45. package/dist/commands/new.d.ts.map +0 -1
  46. package/dist/commands/new.js +0 -150
  47. package/dist/commands/new.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/lib/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/lib/memory.ts"],"names":[],"mappings":"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"}
@@ -17,15 +17,15 @@ export interface ProjectConfig {
17
17
  teamsDir?: string;
18
18
  /** Path under projectRoot to the roleguides directory (default: 'mx-agent-system/roleguides') */
19
19
  roleguidesDir?: string;
20
+ /**
21
+ * Project-scoped prefix for named memories (e.g. 'mail-client').
22
+ * All named memory keys created by mx-agent will be prefixed with this value
23
+ * to prevent collisions when multiple projects share the same MemNexus account.
24
+ * Default: '' (no prefix — backwards compatible with the MemNexus monorepo).
25
+ */
26
+ projectSlug?: string;
20
27
  }
21
28
  export declare const PROJECT_CONFIG_DEFAULTS: Required<ProjectConfig>;
22
- /**
23
- * Validate that config field values are safe for use in shell commands and path joins.
24
- * Throws a descriptive error if any field contains disallowed characters.
25
- * Called by loadProjectConfig before returning, and by the init command to validate
26
- * CLI option values before writing the config file.
27
- */
28
- export declare function validateProjectConfig(config: ProjectConfig): ProjectConfig;
29
29
  /**
30
30
  * Read mx-agent.config.json from projectRoot.
31
31
  *
@@ -1 +1 @@
1
- {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/lib/project-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qGAAqG;IACrG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iGAAiG;IACjG,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,aAAa,CAM3D,CAAC;AAKF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAgB1E;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAoB3E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAQrF"}
1
+ {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/lib/project-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qGAAqG;IACrG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iGAAiG;IACjG,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,aAAa,CAO3D,CAAC;AA4BF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAqB3E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CASrF"}
@@ -14,16 +14,16 @@ export const PROJECT_CONFIG_DEFAULTS = {
14
14
  configSource: 'mx-agent-system/agent-config',
15
15
  teamsDir: 'mx-agent-system/teams',
16
16
  roleguidesDir: 'mx-agent-system/roleguides',
17
+ projectSlug: '',
17
18
  };
18
19
  /** Characters that must not appear in config values used in shell commands */
19
20
  const SHELL_UNSAFE_RE = /[;|&`$(){}!#\\<>\n\r\x00]/;
20
21
  /**
21
22
  * Validate that config field values are safe for use in shell commands and path joins.
22
23
  * Throws a descriptive error if any field contains disallowed characters.
23
- * Called by loadProjectConfig before returning, and by the init command to validate
24
- * CLI option values before writing the config file.
24
+ * Called by loadProjectConfig before returning never throws from outside this module.
25
25
  */
26
- export function validateProjectConfig(config) {
26
+ function validateProjectConfig(config) {
27
27
  for (const [key, value] of Object.entries(config)) {
28
28
  if (typeof value !== 'string')
29
29
  continue;
@@ -64,6 +64,8 @@ export function loadProjectConfig(projectRoot) {
64
64
  config.teamsDir = parsed.teamsDir;
65
65
  if (typeof parsed.roleguidesDir === 'string')
66
66
  config.roleguidesDir = parsed.roleguidesDir;
67
+ if (typeof parsed.projectSlug === 'string')
68
+ config.projectSlug = parsed.projectSlug;
67
69
  }
68
70
  catch {
69
71
  return null;
@@ -86,6 +88,7 @@ export function resolveProjectConfig(c) {
86
88
  configSource: c?.configSource ?? PROJECT_CONFIG_DEFAULTS.configSource,
87
89
  teamsDir: c?.teamsDir ?? PROJECT_CONFIG_DEFAULTS.teamsDir,
88
90
  roleguidesDir: c?.roleguidesDir ?? PROJECT_CONFIG_DEFAULTS.roleguidesDir,
91
+ projectSlug: c?.projectSlug ?? PROJECT_CONFIG_DEFAULTS.projectSlug,
89
92
  };
90
93
  }
91
94
  //# sourceMappingURL=project-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../src/lib/project-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../src/lib/project-config.ts"],"names":[],"mappings":"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"}
@@ -9,31 +9,11 @@
9
9
  * Grants bash access and restricts to the worktree directory.
10
10
  */
11
11
  export declare const SETTINGS_JSON_TEMPLATE: string;
12
- /**
13
- * mx-guard-hook.sh — PreToolUse hook that runs mx-guard check before
14
- * allowing git push commands.
15
- */
16
- export declare const MX_GUARD_HOOK_SH_TEMPLATE = "#!/bin/bash\n# mx-guard pre-push enforcement hook\n# Runs mx-guard check before allowing git push commands.\n# Deployed by mx-agent create via syncClaudeConfig().\n#\n# Exit codes:\n# 0 = allow (not a push command, or mx-guard passes)\n# 2 = block (mx-guard found errors)\n\n# Read hook input from stdin\nINPUT=$(cat)\nCOMMAND=$(echo \"$INPUT\" | jq -r '.tool_input.command // empty')\n\n# Only intercept git push commands\nif [[ ! \"$COMMAND\" =~ ^git\\ push ]]; then\n exit 0\nfi\n\n# Check if mx-guard is available\nif ! command -v mx-guard &>/dev/null; then\n echo \"\u26A0 mx-guard not installed \u2014 skipping pre-push validation\"\n echo \" Install: pnpm install -g @memnexus-ai/mx-guard\"\n exit 0\nfi\n\n# Run mx-guard check (change-aware \u2014 only checks files on current branch)\necho \"Running mx-guard check before push...\"\necho \"\"\n\nmx-guard check\nGUARD_EXIT=$?\n\nif [ $GUARD_EXIT -ne 0 ]; then\n echo \"\"\n echo \"mx-guard: push blocked. Fix the errors above before pushing.\"\n echo \" To check specific rules: mx-guard check --rule <category>\"\n echo \" To see all rules: mx-guard rules\"\n exit 2\nfi\n\nexit 0\n";
17
12
  /**
18
13
  * Stub worktree-guard.sh hook.
19
14
  * Blocks branch switching to main and force-pushes.
20
15
  */
21
- export declare const WORKTREE_GUARD_SH_TEMPLATE = "#!/bin/bash\n# Worktree isolation guard - runs before every Bash command\n# Exit 0 = allow, Exit 2 = block (non-zero exit blocks the command)\n#\n# This hook enforces worktree isolation by:\n# 1. Blocking cd commands that leave the worktree directory\n# 2. Blocking dangerous git operations (belt-and-suspenders with settings.json)\n#\n# Requires environment variables set by `worktree start`:\n# - CLAUDE_WORKTREE_PATH: Absolute path to worktree (e.g., /workspace/.worktrees/foo)\n# - CLAUDE_WORKTREE_NAME: Worktree name (e.g., foo)\n\nset -euo pipefail\n\n# Read the tool input from stdin (JSON format)\nINPUT=$(cat)\n\n# Extract the command - handle both direct command and tool_input formats\nCOMMAND=$(echo \"$INPUT\" | jq -r '.tool_input.command // .command // empty' 2>/dev/null)\n\nif [[ -z \"$COMMAND\" ]]; then\n # Can't parse command, allow it (fail open)\n exit 0\nfi\n\n# Get worktree path from environment\nWORKTREE_PATH=\"${CLAUDE_WORKTREE_PATH:-}\"\n\n# If no worktree restriction set, allow everything\nif [[ -z \"$WORKTREE_PATH\" ]]; then\n exit 0\nfi\n\n# Normalize worktree path (remove trailing slash)\nWORKTREE_PATH=\"${WORKTREE_PATH%/}\"\n\n# Get current working directory\nCURRENT_DIR=$(pwd)\n\n# ============================================================\n# Rule 1: Block cd to paths outside worktree\n# ============================================================\nif echo \"$COMMAND\" | grep -qE '^\\s*cd\\s+' || echo \"$COMMAND\" | grep -qE '&&\\s*cd\\s+' || echo \"$COMMAND\" | grep -qE ';\\s*cd\\s+'; then\n # Extract cd target(s) from command\n # This handles: cd /path, cd path, command && cd path, etc.\n\n # Get all cd targets\n CD_TARGETS=$(echo \"$COMMAND\" | grep -oE 'cd\\s+[^;&|]+' | sed 's/cd\\s*//' | tr -d '\"'\"'\" || true)\n\n for TARGET in $CD_TARGETS; do\n # Skip empty targets\n [[ -z \"$TARGET\" ]] && continue\n\n # Resolve the path\n if [[ \"$TARGET\" == /* ]]; then\n # Absolute path\n RESOLVED=\"$TARGET\"\n elif [[ \"$TARGET\" == \"~\"* ]]; then\n # Home directory path\n RESOLVED=\"${TARGET/#\\~/$HOME}\"\n else\n # Relative path - resolve from current directory\n RESOLVED=$(cd \"$CURRENT_DIR\" 2>/dev/null && cd \"$TARGET\" 2>/dev/null && pwd) || RESOLVED=\"\"\n fi\n\n # Normalize resolved path\n RESOLVED=\"${RESOLVED%/}\"\n\n # Allow /tmp and /var/tmp\n if [[ \"$RESOLVED\" == /tmp* ]] || [[ \"$RESOLVED\" == /var/tmp* ]]; then\n continue\n fi\n\n # Allow paths within worktree\n if [[ \"$RESOLVED\" == \"$WORKTREE_PATH\"* ]]; then\n continue\n fi\n\n # Allow the scratchpad directory\n if [[ \"$RESOLVED\" == *\"/scratchpad\"* ]]; then\n continue\n fi\n\n # Allow the user's home directory (for inspecting global tools, configs, etc.)\n if [[ -n \"$HOME\" ]] && [[ \"$RESOLVED\" == \"$HOME\"* ]]; then\n continue\n fi\n\n # Block: path is outside worktree\n if [[ -n \"$RESOLVED\" ]]; then\n echo \"\"\n echo \"BLOCKED: Cannot navigate outside worktree\"\n echo \" Target: $TARGET\"\n echo \" Resolved: $RESOLVED\"\n echo \" Allowed: $WORKTREE_PATH (and /tmp)\"\n echo \"\"\n echo \"You are working in worktree: ${CLAUDE_WORKTREE_NAME:-unknown}\"\n echo \"Stay within your assigned worktree directory.\"\n echo \"\"\n exit 2\n fi\n done\nfi\n\n# ============================================================\n# Rule 2: Block git operations that could tangle state\n# (Belt-and-suspenders with settings.json deny rules)\n# ============================================================\n\n# Block checkout to main\nif echo \"$COMMAND\" | grep -qE 'git\\s+(checkout|switch)\\s+main(\\s|$)'; then\n echo \"\"\n echo \"BLOCKED: Cannot switch to main branch\"\n echo \" Command: $COMMAND\"\n echo \" Worktree: ${CLAUDE_WORKTREE_NAME:-unknown}\"\n echo \"\"\n echo \"To work on main, use a different worktree or the root workspace.\"\n echo \"\"\n exit 2\nfi\n\n# Block checkout -b (new branch creation)\nif echo \"$COMMAND\" | grep -qE 'git\\s+(checkout\\s+-b|switch\\s+(-c|--create))'; then\n echo \"\"\n echo \"BLOCKED: Cannot create new branches\"\n echo \" Command: $COMMAND\"\n echo \" Worktree: ${CLAUDE_WORKTREE_NAME:-unknown}\"\n echo \"\"\n echo \"Work on your assigned branch. Create PRs to merge changes.\"\n echo \"\"\n exit 2\nfi\n\n# Block merge\nif echo \"$COMMAND\" | grep -qE 'git\\s+merge\\s'; then\n echo \"\"\n echo \"BLOCKED: Cannot merge branches directly\"\n echo \" Command: $COMMAND\"\n echo \" Worktree: ${CLAUDE_WORKTREE_NAME:-unknown}\"\n echo \"\"\n echo \"Use pull requests to merge changes.\"\n echo \"\"\n exit 2\nfi\n\n# Block push to main\nif echo \"$COMMAND\" | grep -qE 'git\\s+push\\s+.*\\s*origin\\s+main'; then\n echo \"\"\n echo \"BLOCKED: Cannot push to main\"\n echo \" Command: $COMMAND\"\n echo \"\"\n echo \"Push to your worktree branch and create a PR.\"\n echo \"\"\n exit 2\nfi\n\n# ============================================================\n# All checks passed - allow the command\n# ============================================================\nexit 0\n";
22
- /**
23
- * auto-checkpoint.sh — PreCompact hook that saves a checkpoint memory
24
- * before context compaction so agents can resume after losing context.
25
- */
26
- export declare const AUTO_CHECKPOINT_SH_TEMPLATE = "#!/bin/bash\n# auto-checkpoint.sh \u2014 Claude Code PreCompact hook\n# Saves a checkpoint memory before context compaction so agents can resume\n# after losing context. Uses the /mx-checkpoint template format.\n#\n# Fires on: PreCompact (auto or manual compaction)\n# Input: JSON on stdin with transcript_path, session_id, trigger\n# Output: none (side-effect only \u2014 saves memory via mx CLI)\n# Exit: always 0 (never blocks compaction)\n\n# Fail-open: any error \u2192 allow compaction without saving\ntrap 'exit 0' ERR\n\n# \u2500\u2500 1. Parse hook input \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nINPUT=$(cat)\n\nTRANSCRIPT_PATH=$(echo \"$INPUT\" | jq -r '.transcript_path // empty' 2>/dev/null)\nSESSION_ID=$(echo \"$INPUT\" | jq -r '.session_id // empty' 2>/dev/null)\nTRIGGER=$(echo \"$INPUT\" | jq -r '.trigger // .source // \"auto\"' 2>/dev/null)\n\n# Skip if no transcript available or jq missing\nif [[ -z \"$TRANSCRIPT_PATH\" || ! -f \"$TRANSCRIPT_PATH\" ]]; then\n exit 0\nfi\n\ncommand -v jq >/dev/null 2>&1 || exit 0\ncommand -v mx >/dev/null 2>&1 || exit 0\n\n# \u2500\u2500 2. Extract context from transcript \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n# Recent user/assistant text (last ~200 lines of transcript, text content only)\nRECENT_TEXT=$(tail -200 \"$TRANSCRIPT_PATH\" | \\\n jq -r '\n select(.type == \"user\" or .type == \"assistant\") |\n .message.content[]? |\n select(.type == \"text\") |\n .text // empty\n ' 2>/dev/null | tail -c 8000)\n\n# Files touched (from tool_use entries: Read, Edit, Write, Glob)\nFILES_TOUCHED=$(tail -500 \"$TRANSCRIPT_PATH\" | \\\n jq -r '\n select(.type == \"assistant\") |\n .message.content[]? |\n select(.type == \"tool_use\") |\n .input.file_path // empty\n ' 2>/dev/null | grep -v '^$' | sort -u | head -30)\n\n# Git branch and PR references\nGIT_BRANCH=\"${CLAUDE_WORKTREE_BRANCH:-}\"\nif [[ -z \"$GIT_BRANCH\" ]]; then\n GIT_BRANCH=$(git branch --show-current 2>/dev/null || echo \"unknown\")\nfi\n\n# GitHub issue/PR references from recent text\nGH_REFS=$(echo \"$RECENT_TEXT\" | grep -oE '#[0-9]+|PR #[0-9]+|issue #[0-9]+' 2>/dev/null | sort -u | head -10 | tr '\\n' ', ' | sed 's/,$//')\n\n# Worktree info\nWORKTREE_NAME=\"${CLAUDE_WORKTREE_NAME:-unknown}\"\nWORKTREE_PATH=\"${CLAUDE_WORKTREE_PATH:-$(pwd)}\"\n\n# \u2500\u2500 3. Format checkpoint memory \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n# Build files list (indented)\nFILES_LIST=\"\"\nif [[ -n \"$FILES_TOUCHED\" ]]; then\n FILES_LIST=$(echo \"$FILES_TOUCHED\" | sed 's/^/- /')\nfi\n\nCONTENT=\"[Auto-Checkpoint] Context compaction (${TRIGGER}) \u2014 ${WORKTREE_NAME}\n\nBranch: ${GIT_BRANCH}\nSession: ${SESSION_ID}\nGitHub refs: ${GH_REFS:-none detected}\n\nGoal: [Auto-captured checkpoint before context compaction]\n\nCurrent status: Context window reached capacity. This checkpoint captures the working state just before compaction so the next session can resume.\n\nKey files:\n${FILES_LIST:-No file paths detected in recent transcript.}\n\nKey terms: ${WORKTREE_NAME}, ${GIT_BRANCH}, auto-checkpoint, context-compaction\n\nNext steps: Resume work from this checkpoint. Review the recent context below to understand what was in progress.\n\n---\nRecent context (last messages before compaction):\n\n${RECENT_TEXT:-No recent text extracted from transcript.}\"\n\n# \u2500\u2500 4. Save checkpoint memory \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n# Use a named memory so it's easy to find and gets overwritten each compaction\nmx memories create \\\n --name \"auto-checkpoint-${WORKTREE_NAME}\" \\\n --conversation-id \"NEW\" \\\n --content \"$CONTENT\" \\\n --topics \"checkpoint,context-compaction\" \\\n >/dev/null 2>&1 || true\n\n# Always allow compaction to proceed\nexit 0\n";
27
- /**
28
- * reload-checkpoint.sh — SessionStart hook (compact) that re-injects
29
- * the auto-checkpoint memory after context compaction.
30
- */
31
- export declare const RELOAD_CHECKPOINT_SH_TEMPLATE = "#!/bin/bash\n# reload-checkpoint.sh \u2014 Claude Code SessionStart hook (matcher: compact)\n# Re-injects the auto-checkpoint memory after context compaction.\n#\n# Fires on: SessionStart with source=compact (after compaction)\n# Input: JSON on stdin with session_id, source\n# Output: stdout text is injected into Claude's context\n# Exit: always 0\n\n# Fail-open: any error \u2192 start session without checkpoint injection\ntrap 'exit 0' ERR\n\n# \u2500\u2500 1. Determine worktree name \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nWORKTREE_NAME=\"${CLAUDE_WORKTREE_NAME:-}\"\n\n# If no worktree env var, try to detect from cwd\nif [[ -z \"$WORKTREE_NAME\" ]]; then\n INPUT=$(cat)\n CWD=$(echo \"$INPUT\" | jq -r '.cwd // empty' 2>/dev/null)\n if [[ \"$CWD\" == */.worktrees/* ]]; then\n WORKTREE_NAME=$(echo \"$CWD\" | sed 's|.*/.worktrees/||' | cut -d'/' -f1)\n fi\nfi\n\n# Can't identify worktree \u2192 nothing to reload\nif [[ -z \"$WORKTREE_NAME\" ]]; then\n exit 0\nfi\n\ncommand -v mx >/dev/null 2>&1 || exit 0\n\n# \u2500\u2500 2. Retrieve checkpoint memory \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nCHECKPOINT=$(mx memories get --name \"auto-checkpoint-${WORKTREE_NAME}\" 2>/dev/null)\n\nif [[ -z \"$CHECKPOINT\" || \"$CHECKPOINT\" == *\"not found\"* || \"$CHECKPOINT\" == *\"404\"* ]]; then\n exit 0\nfi\n\n# Extract just the content field from the JSON response\nCONTENT=$(echo \"$CHECKPOINT\" | jq -r '.content // empty' 2>/dev/null)\n\nif [[ -z \"$CONTENT\" ]]; then\n exit 0\nfi\n\n# \u2500\u2500 3. Output checkpoint for context injection \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n# Text written to stdout by SessionStart hooks is added to Claude's context.\n\ncat <<CHECKPOINT_EOF\n## Auto-Checkpoint Recovery\n\nThe following checkpoint was automatically saved before the last context compaction.\nUse it to resume your work. The checkpoint captures what you were working on,\nwhich files were involved, and the recent conversation context.\n\n---\n\n${CONTENT}\n\n---\n\n**Action:** Review this checkpoint and continue where you left off.\nIf you need more context, search memories with: mx memories search --query \"<topic>\" --recent 24h\nCHECKPOINT_EOF\n\nexit 0\n";
32
- /**
33
- * set-terminal-appearance.sh — SessionStart hook that sets VS Code terminal
34
- * tab title and color via OSC escape sequences written to /dev/tty.
35
- */
36
- export declare const SET_TERMINAL_APPEARANCE_SH_TEMPLATE = "#!/bin/bash\n# set-terminal-appearance.sh \u2014 Claude Code SessionStart hook\n# Sets the VS Code terminal tab title and color for the agent team.\n#\n# Fires on: SessionStart (all \u2014 no matcher filter)\n# Input: JSON on stdin (ignored)\n# Output: none (side-effect: writes OSC sequences to /dev/tty)\n# Exit: always 0\n#\n# Reads CLAUDE_TEAM_NAME and CLAUDE_TEAM_COLOR from environment\n# (set by mx-agent start via launchClaudeSession).\n# Writes escape sequences to /dev/tty to bypass Claude's stdin/stdout,\n# ensuring the tab title/color persist after Claude's TUI initializes.\n\nTEAM_NAME=\"${CLAUDE_TEAM_NAME:-}\"\nTEAM_COLOR=\"${CLAUDE_TEAM_COLOR:-}\"\n\n# Nothing to set \u2014 not launched via mx-agent\nif [[ -z \"$TEAM_NAME\" ]]; then\n exit 0\nfi\n\n# Drain stdin (hook contract requires reading input)\ncat > /dev/null 2>&1 || true\n\n# OSC 0: Set terminal tab title\nprintf '\\033]0;%s\\007' \"$TEAM_NAME\" > /dev/tty 2>/dev/null || true\n\n# OSC 633;P;tabColor: Set VS Code tab color (VS Code 1.94+ shell integration)\nif [[ -n \"$TEAM_COLOR\" ]]; then\n printf '\\033]633;P;tabColor=%s\\007' \"$TEAM_COLOR\" > /dev/tty 2>/dev/null || true\nfi\n\nexit 0\n";
16
+ export declare const WORKTREE_GUARD_SH_TEMPLATE = "#!/usr/bin/env bash\n# worktree-guard.sh \u2014 Claude Code PreToolUse hook\n# Blocks dangerous git operations in worktrees.\n# Customise this file for your project's safety requirements.\n\nset -euo pipefail\n\nTOOL_NAME=\"${CLAUDE_TOOL_NAME:-}\"\nTOOL_INPUT=\"${CLAUDE_TOOL_INPUT:-}\"\n\nif [[ \"$TOOL_NAME\" != \"Bash\" ]]; then\n exit 0\nfi\n\n# Block checkout/switch to base branch\nif echo \"$TOOL_INPUT\" | grep -qE 'git (checkout|switch) (main|master|develop)'; then\n echo \"Blocked: cannot switch to base branch from a worktree.\" >&2\n exit 1\nfi\n\n# Block force push to base branch\nif echo \"$TOOL_INPUT\" | grep -qE 'git push .*(--force|-f).*(main|master|develop)'; then\n echo \"Blocked: force push to base branch is not allowed.\" >&2\n exit 1\nfi\n\nexit 0\n";
37
17
  /**
38
18
  * Stub CLAUDE.md.template — the template that gets deployed into each worktree
39
19
  * as CLAUDE.md when running mx-agent create / mx-agent start.
@@ -41,22 +21,4 @@ export declare const SET_TERMINAL_APPEARANCE_SH_TEMPLATE = "#!/bin/bash\n# set-t
41
21
  * Users should replace this with project-specific instructions.
42
22
  */
43
23
  export declare const CLAUDE_MD_TEMPLATE = "# Agent Instructions\n\nThis file is deployed automatically into each agent worktree by `mx-agent`.\nReplace the contents below with your project-specific agent instructions.\n\n## Project Overview\n\n<!-- Describe your project here -->\n\n## Workflow\n\n<!-- Describe the expected workflow for agents -->\n\n## Rules\n\n1. Stay within your worktree directory.\n2. Do not push to the base branch directly \u2014 create a PR.\n3. Follow the project's coding conventions.\n";
44
- /**
45
- * .mcp.json deployed to each worktree root.
46
- * Configures the MX (MemNexus) MCP server for Claude Code.
47
- */
48
- export declare const MCP_JSON_TEMPLATE: string;
49
- export declare function newProjectDockerfileTemplate(): string;
50
- export declare function newProjectDevcontainerJsonTemplate(projectName: string): string;
51
- export declare function newProjectPostCreateShTemplate(projectName: string): string;
52
- export declare function newProjectPostStartShTemplate(projectName: string): string;
53
- export declare function newProjectGitignoreTemplate(): string;
54
- /**
55
- * Team-builder roleguide, adapted for external projects.
56
- *
57
- * Written to mx-agent-system/roleguides/team-builder.md by mx-agent new.
58
- * Based on the MemNexus internal team-builder roleguide; monorepo-specific
59
- * paths removed and replaced with generic project-relative references.
60
- */
61
- export declare function teamBuilderRoleguideTemplate(): string;
62
24
  //# sourceMappingURL=templates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/lib/templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QA+GlC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,2oCAyCrC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,mkKAgKtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,6gJAuGvC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,uqFAoEzC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mCAAmC,gqCAkC/C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,4dAkB9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAYtB,CAAC;AAIT,wBAAgB,4BAA4B,IAAI,MAAM,CAsBrD;AAED,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAiC9E;AAED,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAyE1E;AAED,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAkBzE;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAwBpD;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAshBrD"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/lib/templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAuBlC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,kxBA2BtC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,4dAkB9B,CAAC"}