{"version":3,"file":"post-commit.mjs","names":[],"sources":["../../src/hooks/post-commit.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\n\nconst exec = promisify(execFile);\n\nfunction isSdkChildContext(payload: unknown): boolean {\n  if (process.env[\"AGENTMEMORY_SDK_CHILD\"] === \"1\") return true;\n  if (!payload || typeof payload !== \"object\") return false;\n  return (payload as { entrypoint?: unknown }).entrypoint === \"sdk-ts\";\n}\n\nconst REST_URL = process.env[\"AGENTMEMORY_URL\"] || \"http://localhost:3111\";\nconst SECRET = process.env[\"AGENTMEMORY_SECRET\"] || \"\";\nconst TIMEOUT_MS = 1500;\n\nfunction authHeaders(): Record<string, string> {\n  const h: Record<string, string> = { \"Content-Type\": \"application/json\" };\n  if (SECRET) h[\"Authorization\"] = `Bearer ${SECRET}`;\n  return h;\n}\n\nasync function git(args: string[], cwd: string): Promise<string | null> {\n  try {\n    const { stdout } = await exec(\"git\", args, { cwd, timeout: 1500 });\n    return stdout.trim();\n  } catch {\n    return null;\n  }\n}\n\nasync function main() {\n  let input = \"\";\n  for await (const chunk of process.stdin) {\n    input += chunk;\n  }\n\n  let data: Record<string, unknown> = {};\n  if (input.trim()) {\n    try {\n      data = JSON.parse(input);\n    } catch {\n      // Direct invocation from .git/hooks/post-commit may pass no stdin.\n    }\n  }\n\n  if (isSdkChildContext(data)) return;\n\n  const cwd =\n    (data.cwd as string) ||\n    process.env[\"AGENTMEMORY_CWD\"] ||\n    process.cwd();\n  const sessionId =\n    (data.session_id as string) ||\n    process.env[\"AGENTMEMORY_SESSION_ID\"] ||\n    undefined;\n\n  const sha =\n    process.env[\"AGENTMEMORY_COMMIT_SHA\"] ||\n    (await git([\"rev-parse\", \"HEAD\"], cwd));\n  if (!sha) return;\n\n  const branch = await git([\"rev-parse\", \"--abbrev-ref\", \"HEAD\"], cwd);\n  const repo = await git([\"config\", \"--get\", \"remote.origin.url\"], cwd);\n  const message = await git([\"log\", \"-1\", \"--pretty=%B\", sha], cwd);\n  const author = await git([\"log\", \"-1\", \"--pretty=%an <%ae>\", sha], cwd);\n  const authoredAt = await git([\"log\", \"-1\", \"--pretty=%aI\", sha], cwd);\n  const filesRaw = await git(\n    [\"diff-tree\", \"--no-commit-id\", \"--name-only\", \"-r\", sha],\n    cwd,\n  );\n  const files = filesRaw ? filesRaw.split(\"\\n\").filter(Boolean) : undefined;\n\n  const body = {\n    sessionId,\n    sha,\n    branch: branch || undefined,\n    repo: repo || undefined,\n    message: message || undefined,\n    author: author || undefined,\n    authoredAt: authoredAt || undefined,\n    files,\n  };\n\n  try {\n    await fetch(`${REST_URL}/agentmemory/session/commit`, {\n      method: \"POST\",\n      headers: authHeaders(),\n      body: JSON.stringify(body),\n      signal: AbortSignal.timeout(TIMEOUT_MS),\n    });\n  } catch {\n    // best-effort\n  }\n}\n\nmain();\n"],"mappings":";;;;AAKA,MAAM,OAAO,UAAU,SAAS;AAEhC,SAAS,kBAAkB,SAA2B;AACpD,KAAI,QAAQ,IAAI,6BAA6B,IAAK,QAAO;AACzD,KAAI,CAAC,WAAW,OAAO,YAAY,SAAU,QAAO;AACpD,QAAQ,QAAqC,eAAe;;AAG9D,MAAM,WAAW,QAAQ,IAAI,sBAAsB;AACnD,MAAM,SAAS,QAAQ,IAAI,yBAAyB;AACpD,MAAM,aAAa;AAEnB,SAAS,cAAsC;CAC7C,MAAM,IAA4B,EAAE,gBAAgB,oBAAoB;AACxE,KAAI,OAAQ,GAAE,mBAAmB,UAAU;AAC3C,QAAO;;AAGT,eAAe,IAAI,MAAgB,KAAqC;AACtE,KAAI;EACF,MAAM,EAAE,WAAW,MAAM,KAAK,OAAO,MAAM;GAAE;GAAK,SAAS;GAAM,CAAC;AAClE,SAAO,OAAO,MAAM;SACd;AACN,SAAO;;;AAIX,eAAe,OAAO;CACpB,IAAI,QAAQ;AACZ,YAAW,MAAM,SAAS,QAAQ,MAChC,UAAS;CAGX,IAAI,OAAgC,EAAE;AACtC,KAAI,MAAM,MAAM,CACd,KAAI;AACF,SAAO,KAAK,MAAM,MAAM;SAClB;AAKV,KAAI,kBAAkB,KAAK,CAAE;CAE7B,MAAM,MACH,KAAK,OACN,QAAQ,IAAI,sBACZ,QAAQ,KAAK;CACf,MAAM,YACH,KAAK,cACN,QAAQ,IAAI,6BACZ,KAAA;CAEF,MAAM,MACJ,QAAQ,IAAI,6BACX,MAAM,IAAI,CAAC,aAAa,OAAO,EAAE,IAAI;AACxC,KAAI,CAAC,IAAK;CAEV,MAAM,SAAS,MAAM,IAAI;EAAC;EAAa;EAAgB;EAAO,EAAE,IAAI;CACpE,MAAM,OAAO,MAAM,IAAI;EAAC;EAAU;EAAS;EAAoB,EAAE,IAAI;CACrE,MAAM,UAAU,MAAM,IAAI;EAAC;EAAO;EAAM;EAAe;EAAI,EAAE,IAAI;CACjE,MAAM,SAAS,MAAM,IAAI;EAAC;EAAO;EAAM;EAAsB;EAAI,EAAE,IAAI;CACvE,MAAM,aAAa,MAAM,IAAI;EAAC;EAAO;EAAM;EAAgB;EAAI,EAAE,IAAI;CACrE,MAAM,WAAW,MAAM,IACrB;EAAC;EAAa;EAAkB;EAAe;EAAM;EAAI,EACzD,IACD;CACD,MAAM,QAAQ,WAAW,SAAS,MAAM,KAAK,CAAC,OAAO,QAAQ,GAAG,KAAA;CAEhE,MAAM,OAAO;EACX;EACA;EACA,QAAQ,UAAU,KAAA;EAClB,MAAM,QAAQ,KAAA;EACd,SAAS,WAAW,KAAA;EACpB,QAAQ,UAAU,KAAA;EAClB,YAAY,cAAc,KAAA;EAC1B;EACD;AAED,KAAI;AACF,QAAM,MAAM,GAAG,SAAS,8BAA8B;GACpD,QAAQ;GACR,SAAS,aAAa;GACtB,MAAM,KAAK,UAAU,KAAK;GAC1B,QAAQ,YAAY,QAAQ,WAAW;GACxC,CAAC;SACI;;AAKV,MAAM"}