@mcarvin/smart-diff 2.3.2 → 3.0.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.
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("ai"),require("node:path"),require("simple-git")):"function"==typeof define&&define.amd?define(["exports","ai","node:path","simple-git"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jsTemplate={},e.ai,e.node_path,e.simpleGit)}(this,function(e,t,n,i){"use strict";function o(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{l(i.next(e))}catch(e){r(e)}}function a(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}l((i=i.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;const r='You are a senior software engineer helping developers understand code and configuration changes from the git context they supplied.\nYou receive: commit subject lines (when available), changed file paths, and unified git patch(es)—either one range diff or concatenated per-commit patches, depending on how the diff was produced. Patches may be truncated mid-section with an explicit marker—do not infer changes beyond visible lines.\nExplain what changed in terms of behavior, APIs, data, configuration, security, and operational risk. Tie claims to the patch when possible.\nProduce a concise, developer-focused summary in Markdown.\nUse sections that fit the change (for example: Highlights, Breaking or risky changes, API / contract changes, Data & schema, Configuration & infra, Security & auth, Tests & quality). Omit empty sections.\nGroup related changes; do not list every individual file. When multiple commits appear in the context, briefly separate notable themes by commit when helpful.\nIf the user message includes a Team line, use that exact team name in the summary title (for example: "## <Team> – Change summary" or similar).',s="No LLM provider configured. Set LLM_PROVIDER (openai | openai-compatible | anthropic | google | bedrock | mistral | cohere | groq | xai | deepseek), or a provider API key (OPENAI_API_KEY, LLM_API_KEY, ANTHROPIC_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, MISTRAL_API_KEY, COHERE_API_KEY, GROQ_API_KEY, XAI_API_KEY, DEEPSEEK_API_KEY), or LLM_BASE_URL / OPENAI_BASE_URL for an OpenAI-compatible gateway, or JSON in OPENAI_DEFAULT_HEADERS / LLM_DEFAULT_HEADERS. Alternatively pass llmModelProvider to generateSummary or summarizeGitDiff.",a={openai:"gpt-4o-mini","openai-compatible":"gpt-4o-mini",anthropic:"claude-3-5-haiku-latest",google:"gemini-2.0-flash",bedrock:"anthropic.claude-3-5-haiku-20241022-v1:0",mistral:"mistral-small-latest",cohere:"command-r-08-2024",groq:"llama-3.1-8b-instant",xai:"grok-2-latest",deepseek:"deepseek-chat"},l=new Set(["openai","openai-compatible","anthropic","google","bedrock","mistral","cohere","groq","xai","deepseek"]);function d(e){var t;const n=null===(t=process.env[e])||void 0===t?void 0:t.trim();return n&&n.length>0?n:void 0}function c(){var e;return null!==(e=d("LLM_BASE_URL"))&&void 0!==e?e:d("OPENAI_BASE_URL")}function u(e){const t=null==e?void 0:e.trim();if(!t)return{};try{const e=JSON.parse(t);if("object"!=typeof e||null===e||Array.isArray(e))return{};const n={};for(const[t,i]of Object.entries(e))"string"==typeof i&&i.length>0&&(n[t]=i);return n}catch(e){return{}}}function f(){const e=u(process.env.OPENAI_DEFAULT_HEADERS),t=u(process.env.LLM_DEFAULT_HEADERS),n=Object.assign(Object.assign({},e),t);return Object.keys(n).length>0?n:void 0}function m(){var e;return null!==(e=d("LLM_API_KEY"))&&void 0!==e?e:d("OPENAI_API_KEY")}function p(){var e,t;const n=null===(e=d("LLM_PROVIDER"))||void 0===e?void 0:e.toLowerCase();return n&&(i=n,l.has(i))?n:c()?"openai-compatible":m()?"openai":d("ANTHROPIC_API_KEY")?"anthropic":(null!==(t=d("GOOGLE_GENERATIVE_AI_API_KEY"))&&void 0!==t?t:d("GOOGLE_API_KEY"))?"google":d("MISTRAL_API_KEY")?"mistral":d("COHERE_API_KEY")?"cohere":d("GROQ_API_KEY")?"groq":d("XAI_API_KEY")?"xai":d("DEEPSEEK_API_KEY")?"deepseek":f()?"openai":void 0;var i}function h(){return void 0!==p()}function g(e){return a[e]}function v(e,t,n){return o(this,void 0,void 0,function*(){try{return yield n()}catch(n){throw function(e){const t=new Error(`Failed to load optional provider package "${e.pkg}" for LLM_PROVIDER="${e.provider}". Install it with \`npm install ${e.pkg}\`.`);return t.cause=e.cause,t}({provider:e,pkg:t,cause:n})}})}function E(){return o(this,arguments,void 0,function*(e={}){var t,n,i;const r=null!==(t=e.provider)&&void 0!==t?t:p();if(!r)throw new Error("No LLM provider could be resolved. Set LLM_PROVIDER or a provider API key (OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, MISTRAL_API_KEY, COHERE_API_KEY, GROQ_API_KEY, XAI_API_KEY, DEEPSEEK_API_KEY), or LLM_BASE_URL for an OpenAI-compatible gateway.");const s=null!==(i=null!==(n=e.model)&&void 0!==n?n:d("LLM_MODEL"))&&void 0!==i?i:g(r);switch(r){case"openai":return function(e){return o(this,void 0,void 0,function*(){const{createOpenAI:t}=yield import("@ai-sdk/openai"),n=m(),i=f();return t(Object.assign(Object.assign({},n?{apiKey:n}:{}),i?{headers:i}:{}))(e)})}(s);case"openai-compatible":return function(e){return o(this,void 0,void 0,function*(){var t;const{createOpenAICompatible:n}=yield import("@ai-sdk/openai-compatible"),i=c();if(!i)throw new Error("openai-compatible provider requires LLM_BASE_URL or OPENAI_BASE_URL to be set.");const o=m(),r=f();return n(Object.assign(Object.assign({name:null!==(t=d("LLM_PROVIDER_NAME"))&&void 0!==t?t:"openai-compatible",baseURL:i},o?{apiKey:o}:{}),r?{headers:r}:{}))(e)})}(s);case"anthropic":return function(e){return o(this,void 0,void 0,function*(){const t=yield v("anthropic","@ai-sdk/anthropic",()=>import("@ai-sdk/anthropic")),n=d("ANTHROPIC_API_KEY");return t.createAnthropic(n?{apiKey:n}:void 0)(e)})}(s);case"google":return function(e){return o(this,void 0,void 0,function*(){var t;const n=yield v("google","@ai-sdk/google",()=>import("@ai-sdk/google")),i=null!==(t=d("GOOGLE_GENERATIVE_AI_API_KEY"))&&void 0!==t?t:d("GOOGLE_API_KEY");return n.createGoogleGenerativeAI(i?{apiKey:i}:void 0)(e)})}(s);case"bedrock":return function(e){return o(this,void 0,void 0,function*(){return(yield v("bedrock","@ai-sdk/amazon-bedrock",()=>import("@ai-sdk/amazon-bedrock"))).createAmazonBedrock()(e)})}(s);case"mistral":return function(e){return o(this,void 0,void 0,function*(){const t=yield v("mistral","@ai-sdk/mistral",()=>import("@ai-sdk/mistral")),n=d("MISTRAL_API_KEY");return t.createMistral(n?{apiKey:n}:void 0)(e)})}(s);case"cohere":return function(e){return o(this,void 0,void 0,function*(){const t=yield v("cohere","@ai-sdk/cohere",()=>import("@ai-sdk/cohere")),n=d("COHERE_API_KEY");return t.createCohere(n?{apiKey:n}:void 0)(e)})}(s);case"groq":return function(e){return o(this,void 0,void 0,function*(){const t=yield v("groq","@ai-sdk/groq",()=>import("@ai-sdk/groq")),n=d("GROQ_API_KEY");return t.createGroq(n?{apiKey:n}:void 0)(e)})}(s);case"xai":return function(e){return o(this,void 0,void 0,function*(){const t=yield v("xai","@ai-sdk/xai",()=>import("@ai-sdk/xai")),n=d("XAI_API_KEY");return t.createXai(n?{apiKey:n}:void 0)(e)})}(s);case"deepseek":return function(e){return o(this,void 0,void 0,function*(){const t=yield v("deepseek","@ai-sdk/deepseek",()=>import("@ai-sdk/deepseek")),n=d("DEEPSEEK_API_KEY");return t.createDeepSeek(n?{apiKey:n}:void 0)(e)})}(s);default:throw new Error(`Unhandled LLM provider: ${String(r)}`)}})}function _(e){var t,n;if(void 0!==e&&Number.isFinite(e)&&e>0)return Math.trunc(e);const i=(null===(t=process.env.LLM_MAX_DIFF_CHARS)||void 0===t?void 0:t.trim())||(null===(n=process.env.OPENAI_MAX_DIFF_CHARS)||void 0===n?void 0:n.trim());if(i){const e=Number.parseInt(i,10);if(Number.isFinite(e)&&e>0)return e}return 12e4}function y(e,t){if(e.length<=t)return e;const n=`\n\n--- TRUNCATED: unified diff was ${e.length} characters; only the first ${t} were sent. Narrow the ref range, adjust commit/path filters, or raise maxDiffChars / LLM_MAX_DIFF_CHARS only if your model context allows. ---\n`;return e.slice(0,t)+n}function A(e){return o(this,void 0,void 0,function*(){var n;const{diffText:i,fileNames:a,commits:l,flags:d,llmModelProvider:c,diffSummary:u}=e;if(!c&&!h())throw new Error(s);const f=_(d.maxDiffChars),m=i.length>f,p=function(e,t,n,i,o){var r,s;const a=e.from,l=null!==(r=e.to)&&void 0!==r?r:"HEAD",d=null===(s=e.team)||void 0===s?void 0:s.trim(),c=(new Date).toISOString(),u=d?`Team: ${d}\n`:"",f=function(e){var t,n;const i=(null!==(t=e.commitMessageIncludeRegexes)&&void 0!==t?t:[]).map(e=>e.trim()).filter(Boolean),o=(null!==(n=e.commitMessageExcludeRegexes)&&void 0!==n?n:[]).map(e=>e.trim()).filter(Boolean),r=i.length>0?`Commit message include regexes (OR): ${i.map(e=>JSON.stringify(e)).join(", ")}\n`:"",s=o.length>0?`Commit message exclude regexes: ${o.map(e=>JSON.stringify(e)).join(", ")}\n`:"";if(!r&&!s)return"Commit message filters: none.\nGit context shape: single unified diff for the full ref range.\n";return`${r}${s}Git context shape: concatenated per-commit unified patches for commits that pass the message filters.\n`}(e),m=t.length>0?t.map(e=>`- ${e.hash.slice(0,7)} ${e.message.replace(/\r?\n/g," ")}`).join("\n"):"- (no commits in range after filtering)",p=n.length>0?n.join("\n"):"(no paths in diff scope)",h=o?`=== Structured git context (JSON summary) ===\n${JSON.stringify(o,null,2)}\n\n`:"";return`${u}Date: ${c}\n\nGit refs: ${a}..${l}\n`+f+"\n=== Included commits (subject lines) ===\n"+`${m}\n\n=== Changed paths ===\n`+`${p}\n\n`+h+"=== Git context (unified diff(s); patches may be truncated with an explicit marker) ===\n"+i}(d,l,a,y(i,f),u),g=null!==(n=d.systemPrompt)&&void 0!==n?n:r,v=function(){var e;const t=null!==(e=process.env.LLM_MAX_TOKENS)&&void 0!==e?e:process.env.OPENAI_MAX_TOKENS,n=void 0!==t?Number.parseInt(t,10):4e3;return Number.isFinite(n)&&n>0?n:4e3}(),A=yield function(e,n,i,r,s){return o(this,void 0,void 0,function*(){const o=r?yield r():yield E(Object.assign(Object.assign({},s.provider?{provider:s.provider}:{}),s.model?{model:s.model}:{})),a=(yield t.generateText({model:o,system:n,prompt:e,temperature:.2,maxOutputTokens:i})).text.trim();return a.length>0?a:"No summary generated by the model."})}(p,g,v,c,d);return m?`> **Truncated diff:** The unified diff was ${i.length} characters; only the first ${f} were sent to the model. The summary may not reflect the full change set. Narrow the ref range, adjust path filters, or raise \`maxDiffChars\` / \`LLM_MAX_DIFF_CHARS\`—often together with switching to a model whose context window can fit a larger prompt.\n\n`+A:A})}function P(e){const t=e.trim().replace(/\\/g,"/").replace(/^\/+/,"").replace(/\/+$/,"");return t.length>0?t:"."}function I(e,t){const i=n.resolve(e,t);if(n.relative(e,i).split(/[/\\]/).includes(".."))throw new Error(`Path escapes repository root: ${JSON.stringify(t)}`)}function L(e,t){var n,i,o,r;const s=null!==(i=null===(n=null==t?void 0:t.includeFolders)||void 0===n?void 0:n.filter(e=>e.trim().length>0))&&void 0!==i?i:[],a=null!==(r=null===(o=null==t?void 0:t.excludeFolders)||void 0===o?void 0:o.filter(e=>e.trim().length>0))&&void 0!==r?r:[],l=s.map(P).filter(e=>"."!==e&&""!==e),d=a.map(P).filter(e=>"."!==e&&""!==e),c=l.length>0?l:["."];for(const t of c)I(e,t);for(const t of d)I(e,t);const u=[];if(0===l.length)u.push(".");else for(const e of l)u.push(e);for(const e of d)u.push(`:(exclude)${e}`);return u}function x(e,t){try{return new RegExp(e,"i")}catch(n){throw new Error(`Invalid ${t} regular expression: ${JSON.stringify(e)}`)}}function O(e,t,n){const i=(null!=t?t:[]).map(e=>e.trim()).filter(e=>e.length>0),o=(null!=n?n:[]).map(e=>e.trim()).filter(e=>e.length>0),r=i.map((e,t)=>x(e,`commit message include pattern[${t}]`)),s=o.map((e,t)=>x(e,`commit message exclude pattern[${t}]`));return e.filter(e=>function(e,t,n){for(const t of n)if(t.test(e))return!1;return!(t.length>0&&!t.some(t=>t.test(e)))}(e.message,r,s))}const k=["package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","bun.lockb","go.sum","Cargo.lock","Gemfile.lock","composer.lock","Pipfile.lock","poetry.lock","uv.lock","Podfile.lock","node_modules","dist","build","out","coverage","__snapshots__"];function b(e){return!Number.isFinite(e)||e<0?0:Math.trunc(e)}function R(e){const t=[];return void 0!==(null==e?void 0:e.contextLines)&&t.push(`-U${b(e.contextLines)}`),(null==e?void 0:e.ignoreWhitespace)&&t.push("-w"),t}const w=["diff --git ","index ","new file mode ","deleted file mode ","old mode ","new mode ","similarity index ","dissimilarity index ","rename from ","rename to ","copy from ","copy to "];function M(e){return e.split(/\r?\n/).filter(e=>!function(e){for(const t of w)if(e.startsWith(t))return!0;return!1}(e)).join("\n")}function S(e){return/^--- (a\/|b\/|"a\/|"b\/|\/dev\/null)/.test(e)||/^\+\+\+ (a\/|b\/|"a\/|"b\/|\/dev\/null)/.test(e)}function D(e,t){if(!(null==t?void 0:t.stripDiffPreamble)&&void 0===(null==t?void 0:t.maxHunkLines))return e;let n=e;return t.stripDiffPreamble&&(n=M(n)),void 0!==t.maxHunkLines&&(n=function(e,t){const n=b(t),i=e.split(/\r?\n/),o=[];let r=!1,s=[];const a=()=>{if(s.length>n){const e=s.length-n;o.push(...s.slice(0,n)),o.push(`[... ${e} diff line${1===e?"":"s"} elided ...]`)}else o.push(...s);s=[],r=!1};for(const e of i)e.startsWith("@@")?(r&&a(),o.push(e),r=!0):e.startsWith("diff --git ")||S(e)?(r&&a(),o.push(e)):r?s.push(e):o.push(e);return r&&a(),o.join("\n")}(n,t.maxHunkLines)),n}const $={A:"added",D:"deleted",R:"renamed",C:"copied",T:"type-changed",M:"modified"};function K(e){var t;return null!==(t=$[e.charAt(0)])&&void 0!==t?t:"unknown"}function N(e,t){if(e===t)return e;const n=["deleted","added","renamed","copied","type-changed","modified","unknown"];return n.indexOf(e)<=n.indexOf(t)?e:t}function T(e){const t=e.split("\t");let n=null;if(t.length>=2){const e=t[0],i=K(e),o=e.startsWith("R")||e.startsWith("C");o&&t.length>=3?n={path:t[2],status:i,oldPath:t[1]}:o||(n={path:t[1],status:i})}return n}function C(e){const t=e.split("\t");if(t.length<3)return null;const n=t[0],i=t[1],o=t.slice(2).join("\t"),r="-"!==n&&Number.parseInt(n,10)||0,s="-"!==i&&Number.parseInt(i,10)||0,a=function(e){const t=/^(.*?)\{(.+?) => (.+?)\}(.*)$/.exec(e);return t?`${t[1]}${t[3].trim()}${t[4]}`:e}(o);return{key:a,additions:r,deletions:s}}function Y(e){const t=e.split("\t");if(t.length<3)return null;const n=K(t.shift()),i=t[0],o=t[1],r=i&&"-"!==i&&Number.parseInt(i,10)||0,s=o&&"-"!==o&&Number.parseInt(o,10)||0;return 3===t.length?{status:n,additions:r,deletions:s,newPath:t[2]}:4===t.length?{status:n,additions:r,deletions:s,oldPath:t[2],newPath:t[3]}:null}function G(e,t){var n,i;const{newPath:o,status:r,additions:s,deletions:a,oldPath:l}=t,d=e.get(o);d?(d.additions+=s,d.deletions+=a,d.status=N(d.status,r),l&&(d.oldPath=null!==(n=d.oldPath)&&void 0!==n?n:l),d.newPath=null!==(i=d.newPath)&&void 0!==i?i:o):e.set(o,{path:o,status:r,additions:s,deletions:a,oldPath:l,newPath:l?o:void 0})}const F={added:"A",deleted:"D",renamed:"R100",copied:"C100","type-changed":"T",modified:"M",unknown:"X"};function j(e,t){const n=(i=e.status,F[i]);var i;return e.oldPath?`${n}\t${t.additions}\t${t.deletions}\t${e.oldPath}\t${e.path}`:`${n}\t${t.additions}\t${t.deletions}\t${e.path}`}function H(e,t){var n;const i=new Map;!function(e,t){var n;for(const i of e.split(/\r?\n/)){const e=i.trim();if(!e)continue;const o=C(e);if(!o)continue;const r=null!==(n=t.get(o.key))&&void 0!==n?n:{additions:0,deletions:0};t.set(o.key,{additions:r.additions+o.additions,deletions:r.deletions+o.deletions})}}(t,i);const o=function(e){var t;const n=new Map;for(const i of e){const e=n.get(i.path);e?(e.status=N(e.status,i.status),i.oldPath&&(e.oldPath=null!==(t=e.oldPath)&&void 0!==t?t:i.oldPath)):n.set(i.path,Object.assign({},i))}return n}(function(e){const t=[];for(const n of e.split(/\r?\n/)){const e=n.trim();if(!e)continue;const i=T(e);i&&t.push(i)}return t}(e)),r=[];for(const[e,t]of o){const o=null!==(n=i.get(e))&&void 0!==n?n:{additions:0,deletions:0};r.push(j(t,o))}return function(e){const t=new Map;for(const n of e.split(/\r?\n/)){const e=n.trim();if(!e)continue;const i=Y(e);i&&G(t,i)}const n=Array.from(t.values());return{files:n,totalFiles:n.length,totalAdditions:n.reduce((e,t)=>e+t.additions,0),totalDeletions:n.reduce((e,t)=>e+t.deletions,0)}}(r.join("\n"))}function U(e=process.cwd()){return i.simpleGit(e)}function B(e,t,n){return o(this,void 0,void 0,function*(){return(yield e.log({from:t,to:n})).all})}function q(e){return o(this,void 0,void 0,function*(){return(yield e.revparse(["--show-toplevel"])).trim()})}function X(e,t,n){return o(this,void 0,void 0,function*(){const i=null!=n?n:yield q(e);return{repoRoot:i,specs:L(i,t)}})}function W(e,t){return o(this,void 0,void 0,function*(){const{from:n,to:i,commits:o,filterByCommits:r,pathFilter:s,repoRootOverride:a,shaping:l}=t,{specs:d}=yield X(e,s,a),c=R(l);if(!r){return D(yield e.diff([...c,`${n}..${i}`,"--",...d]),l)}return(yield Promise.all(o.map(t=>e.diff([...c,`${t.hash}^!`,"--",...d])))).map(e=>D(e,l)).filter(Boolean).join("\n")})}function V(e,t){return o(this,void 0,void 0,function*(){const{from:n,to:i,commits:r,filterByCommits:s,pathFilter:a,repoRootOverride:l,shaping:d}=t,{specs:c}=yield X(e,a,l),u=(null==d?void 0:d.ignoreWhitespace)?["-w"]:[];if(!s){const[t,o]=yield Promise.all([e.diff([...u,"--numstat",`${n}..${i}`,"--",...c]),e.diff([...u,"--name-status",`${n}..${i}`,"--",...c])]);return H(o,t)}const f=yield Promise.all(r.map(t=>o(this,void 0,void 0,function*(){const n=`${t.hash}^!`,[i,o]=yield Promise.all([e.diff([...u,"--numstat",n,"--",...c]),e.diff([...u,"--name-status",n,"--",...c])]);return{numOutput:i,nameOutput:o}})));return H(f.map(e=>e.nameOutput).filter(Boolean).join("\n"),f.map(e=>e.numOutput).filter(Boolean).join("\n"))})}function J(e,t){return o(this,void 0,void 0,function*(){const{from:n,to:i,commits:r,filterByCommits:s,pathFilter:a,repoRootOverride:l}=t,{specs:d}=yield X(e,a,l);if(!s){return(yield e.diff(["--name-only",`${n}..${i}`,"--",...d])).split(/\r?\n/).map(e=>e.trim()).filter(Boolean)}const c=new Set;return yield Promise.all(r.map(t=>o(this,void 0,void 0,function*(){(yield e.show(["--name-only","--pretty=format:",t.hash,"--",...d])).split(/\r?\n/).map(e=>e.trim()).filter(Boolean).forEach(e=>c.add(e))}))),Array.from(c)})}function z(e){return(null!=e?e:[]).some(e=>e.trim().length>0)}e.DEFAULT_GIT_DIFF_SYSTEM_PROMPT=r,e.DEFAULT_NOISE_EXCLUDES=k,e.LLM_GATEWAY_REQUIRED_MESSAGE=s,e.buildDiffPathspecs=L,e.buildDiffShapingGitArgs=R,e.createGitClient=U,e.defaultModelForProvider=g,e.detectLlmProvider=p,e.filterCommitsByMessageRegexes=O,e.generateSummary=A,e.getChangedFiles=J,e.getCommits=B,e.getDiff=W,e.getDiffSummary=V,e.getRepoRoot=q,e.isLlmProviderConfigured=h,e.parseLlmDefaultHeadersFromEnv=f,e.resolveLanguageModel=E,e.resolveLlmBaseUrl=c,e.resolveLlmMaxDiffChars=_,e.shapeUnifiedDiff=D,e.summarizeGitDiff=function(e){return o(this,void 0,void 0,function*(){var t,n;const i=null!==(t=e.git)&&void 0!==t?t:U(e.cwd),o=e.from,r=null!==(n=e.to)&&void 0!==n?n:"HEAD",s=function(e){var t;const n=null!==(t=e.excludeFolders)&&void 0!==t?t:[];if(!e.excludeDefaultNoise)return n.length>0?n:void 0;const i=new Set,o=[];for(const e of[...k,...n]){const t=e.trim();t&&!i.has(t)&&(i.add(t),o.push(e))}return o}(e),a=z(e.includeFolders)||z(s)?{includeFolders:e.includeFolders,excludeFolders:s}:void 0,l=yield B(i,o,r),d=O(l,e.commitMessageIncludeRegexes,e.commitMessageExcludeRegexes),c=function(e,t,n){return!(!z(n.commitMessageIncludeRegexes)&&!z(n.commitMessageExcludeRegexes))||t.length!==e.length}(l,d,e),u=function(e){const t={};return void 0!==e.contextLines&&(t.contextLines=e.contextLines),e.ignoreWhitespace&&(t.ignoreWhitespace=!0),e.stripDiffPreamble&&(t.stripDiffPreamble=!0),void 0!==e.maxHunkLines&&(t.maxHunkLines=e.maxHunkLines),Object.keys(t).length>0?t:void 0}(e),f={from:o,to:r,commits:d,filterByCommits:c,pathFilter:a,shaping:u},[m,p,h]=yield Promise.all([W(i,f),J(i,f),V(i,f)]);return A({diffText:m,fileNames:p,commits:d,flags:{from:o,to:r,team:e.teamName,model:e.model,provider:e.provider,maxDiffChars:e.maxDiffChars,systemPrompt:e.systemPrompt,commitMessageIncludeRegexes:e.commitMessageIncludeRegexes,commitMessageExcludeRegexes:e.commitMessageExcludeRegexes},llmModelProvider:e.llmModelProvider,diffSummary:h})})},e.truncateUnifiedDiffForLlm=y});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("ai"),require("node:path"),require("node:child_process"),require("node:util")):"function"==typeof define&&define.amd?define(["exports","ai","node:path","node:child_process","node:util"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jsTemplate={},e.ai,e.node_path,e.node_child_process,e.node_util)}(this,function(e,t,n,i,o){"use strict";function r(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{l(i.next(e))}catch(e){r(e)}}function a(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}l((i=i.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;const s='You are a senior software engineer helping developers understand code and configuration changes from the git context they supplied.\nYou receive: commit subject lines (when available), changed file paths, and unified git patch(es)—either one range diff or concatenated per-commit patches, depending on how the diff was produced. Patches may be truncated mid-section with an explicit marker—do not infer changes beyond visible lines.\nExplain what changed in terms of behavior, APIs, data, configuration, security, and operational risk. Tie claims to the patch when possible.\nProduce a concise, developer-focused summary in Markdown.\nUse sections that fit the change (for example: Highlights, Breaking or risky changes, API / contract changes, Data & schema, Configuration & infra, Security & auth, Tests & quality). Omit empty sections.\nGroup related changes; do not list every individual file. When multiple commits appear in the context, briefly separate notable themes by commit when helpful.\nIf the user message includes a Team line, use that exact team name in the summary title (for example: "## <Team> – Change summary" or similar).',a="No LLM provider configured. Set LLM_PROVIDER (openai | openai-compatible | anthropic | google | bedrock | mistral | cohere | groq | xai | deepseek), or a provider API key (OPENAI_API_KEY, LLM_API_KEY, ANTHROPIC_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, MISTRAL_API_KEY, COHERE_API_KEY, GROQ_API_KEY, XAI_API_KEY, DEEPSEEK_API_KEY), or LLM_BASE_URL / OPENAI_BASE_URL for an OpenAI-compatible gateway, or JSON in OPENAI_DEFAULT_HEADERS / LLM_DEFAULT_HEADERS. Alternatively pass llmModelProvider to generateSummary or summarizeGitDiff.",l={openai:"gpt-4o-mini","openai-compatible":"gpt-4o-mini",anthropic:"claude-haiku-4-5-20251001",google:"gemini-2.0-flash",bedrock:"anthropic.claude-3-5-haiku-20241022-v1:0",mistral:"mistral-small-latest",cohere:"command-r-08-2024",groq:"llama-3.1-8b-instant",xai:"grok-2-latest",deepseek:"deepseek-chat"},d=new Set(["openai","openai-compatible","anthropic","google","bedrock","mistral","cohere","groq","xai","deepseek"]);function c(e){var t;const n=null===(t=process.env[e])||void 0===t?void 0:t.trim();return n&&n.length>0?n:void 0}function u(){var e;return null!==(e=c("LLM_BASE_URL"))&&void 0!==e?e:c("OPENAI_BASE_URL")}function f(e){const t=null==e?void 0:e.trim();if(!t)return{};try{const e=JSON.parse(t);if("object"!=typeof e||null===e||Array.isArray(e))return{};const n={};for(const[t,i]of Object.entries(e))"string"==typeof i&&i.length>0&&(n[t]=i);return n}catch(e){return{}}}function m(){const e=f(process.env.OPENAI_DEFAULT_HEADERS),t=f(process.env.LLM_DEFAULT_HEADERS),n=Object.assign(Object.assign({},e),t);return Object.keys(n).length>0?n:void 0}function p(){var e;return null!==(e=c("LLM_API_KEY"))&&void 0!==e?e:c("OPENAI_API_KEY")}function h(){var e,t,n;const i=null===(e=c("LLM_PROVIDER"))||void 0===e?void 0:e.toLowerCase();return i&&(o=i,d.has(o))?i:u()?"openai-compatible":p()?"openai":c("ANTHROPIC_API_KEY")?"anthropic":(null!==(t=c("GOOGLE_GENERATIVE_AI_API_KEY"))&&void 0!==t?t:c("GOOGLE_API_KEY"))?"google":c("MISTRAL_API_KEY")?"mistral":c("COHERE_API_KEY")?"cohere":c("GROQ_API_KEY")?"groq":c("XAI_API_KEY")?"xai":c("DEEPSEEK_API_KEY")?"deepseek":(null!==(n=c("AWS_ACCESS_KEY_ID"))&&void 0!==n?n:c("AWS_PROFILE"))?"bedrock":m()?"openai":void 0;var o}function v(){return void 0!==h()}function g(e){return l[e]}function E(e,t,n){return r(this,void 0,void 0,function*(){try{return yield n()}catch(n){throw function(e){const t=new Error(`Failed to load optional provider package "${e.pkg}" for LLM_PROVIDER="${e.provider}". Install it with \`npm install ${e.pkg}\`.`);return t.cause=e.cause,t}({provider:e,pkg:t,cause:n})}})}function _(){return r(this,arguments,void 0,function*(e={}){var t,n,i;const o=null!==(t=e.provider)&&void 0!==t?t:h();if(!o)throw new Error("No LLM provider could be resolved. Set LLM_PROVIDER or a provider API key (OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, MISTRAL_API_KEY, COHERE_API_KEY, GROQ_API_KEY, XAI_API_KEY, DEEPSEEK_API_KEY), or LLM_BASE_URL for an OpenAI-compatible gateway.");const s=null!==(i=null!==(n=e.model)&&void 0!==n?n:c("LLM_MODEL"))&&void 0!==i?i:g(o);switch(o){case"openai":return function(e){return r(this,void 0,void 0,function*(){const t=yield E("openai","@ai-sdk/openai",()=>import("@ai-sdk/openai")),n=p(),i=m();return t.createOpenAI(Object.assign(Object.assign({},n?{apiKey:n}:{}),i?{headers:i}:{}))(e)})}(s);case"openai-compatible":return function(e){return r(this,void 0,void 0,function*(){var t;const{createOpenAICompatible:n}=yield E("openai-compatible","@ai-sdk/openai-compatible",()=>import("@ai-sdk/openai-compatible")),i=u();if(!i)throw new Error("openai-compatible provider requires LLM_BASE_URL or OPENAI_BASE_URL to be set.");const o=p(),r=m();return n(Object.assign(Object.assign({name:null!==(t=c("LLM_PROVIDER_NAME"))&&void 0!==t?t:"openai-compatible",baseURL:i},o?{apiKey:o}:{}),r?{headers:r}:{}))(e)})}(s);case"anthropic":return function(e){return r(this,void 0,void 0,function*(){const t=yield E("anthropic","@ai-sdk/anthropic",()=>import("@ai-sdk/anthropic")),n=c("ANTHROPIC_API_KEY");return t.createAnthropic(n?{apiKey:n}:void 0)(e)})}(s);case"google":return function(e){return r(this,void 0,void 0,function*(){var t;const n=yield E("google","@ai-sdk/google",()=>import("@ai-sdk/google")),i=null!==(t=c("GOOGLE_GENERATIVE_AI_API_KEY"))&&void 0!==t?t:c("GOOGLE_API_KEY");return n.createGoogleGenerativeAI(i?{apiKey:i}:void 0)(e)})}(s);case"bedrock":return function(e){return r(this,void 0,void 0,function*(){return(yield E("bedrock","@ai-sdk/amazon-bedrock",()=>import("@ai-sdk/amazon-bedrock"))).createAmazonBedrock()(e)})}(s);case"mistral":return function(e){return r(this,void 0,void 0,function*(){const t=yield E("mistral","@ai-sdk/mistral",()=>import("@ai-sdk/mistral")),n=c("MISTRAL_API_KEY");return t.createMistral(n?{apiKey:n}:void 0)(e)})}(s);case"cohere":return function(e){return r(this,void 0,void 0,function*(){const t=yield E("cohere","@ai-sdk/cohere",()=>import("@ai-sdk/cohere")),n=c("COHERE_API_KEY");return t.createCohere(n?{apiKey:n}:void 0)(e)})}(s);case"groq":return function(e){return r(this,void 0,void 0,function*(){const t=yield E("groq","@ai-sdk/groq",()=>import("@ai-sdk/groq")),n=c("GROQ_API_KEY");return t.createGroq(n?{apiKey:n}:void 0)(e)})}(s);case"xai":return function(e){return r(this,void 0,void 0,function*(){const t=yield E("xai","@ai-sdk/xai",()=>import("@ai-sdk/xai")),n=c("XAI_API_KEY");return t.createXai(n?{apiKey:n}:void 0)(e)})}(s);case"deepseek":return function(e){return r(this,void 0,void 0,function*(){const t=yield E("deepseek","@ai-sdk/deepseek",()=>import("@ai-sdk/deepseek")),n=c("DEEPSEEK_API_KEY");return t.createDeepSeek(n?{apiKey:n}:void 0)(e)})}(s);default:throw new Error(`Unhandled LLM provider: ${String(o)}`)}})}function y(e){var t,n;if(void 0!==e&&Number.isFinite(e)&&e>0)return Math.trunc(e);const i=(null===(t=process.env.LLM_MAX_DIFF_CHARS)||void 0===t?void 0:t.trim())||(null===(n=process.env.OPENAI_MAX_DIFF_CHARS)||void 0===n?void 0:n.trim());if(i){const e=Number.parseInt(i,10);if(Number.isFinite(e)&&e>0)return e}return 12e4}function A(e,t){if(e.length<=t)return e;const n=`\n\n--- TRUNCATED: unified diff was ${e.length} characters; only the first ${t} were sent. Narrow the ref range, adjust commit/path filters, or raise maxDiffChars / LLM_MAX_DIFF_CHARS only if your model context allows. ---\n`;return e.slice(0,t)+n}function P(){var e;const t=null===(e=process.env.LLM_TEMPERATURE)||void 0===e?void 0:e.trim();if(t){const e=Number.parseFloat(t);if(Number.isFinite(e))return Math.min(2,Math.max(0,e))}return.2}function I(e){return r(this,void 0,void 0,function*(){var n;const{diffText:i,fileNames:o,commits:l,flags:d,llmModelProvider:c,diffSummary:u}=e;if(!c&&!v())throw new Error(a);const f=y(d.maxDiffChars),m=i.length>f,p=function(e,t,n,i,o){var r,s;const a=e.from,l=null!==(r=e.to)&&void 0!==r?r:"HEAD",d=null===(s=e.team)||void 0===s?void 0:s.trim(),c=(new Date).toISOString(),u=d?`Team: ${d}\n`:"",f=function(e){var t,n;const i=(null!==(t=e.commitMessageIncludeRegexes)&&void 0!==t?t:[]).map(e=>e.trim()).filter(Boolean),o=(null!==(n=e.commitMessageExcludeRegexes)&&void 0!==n?n:[]).map(e=>e.trim()).filter(Boolean),r=i.length>0?`Commit message include regexes (OR): ${i.map(e=>JSON.stringify(e)).join(", ")}\n`:"",s=o.length>0?`Commit message exclude regexes: ${o.map(e=>JSON.stringify(e)).join(", ")}\n`:"";if(!r&&!s)return"Commit message filters: none.\nGit context shape: single unified diff for the full ref range.\n";return`${r}${s}Git context shape: concatenated per-commit unified patches for commits that pass the message filters.\n`}(e),m=t.length>0?t.map(e=>`- ${e.hash.slice(0,7)} ${e.message.replace(/\r?\n/g," ")}`).join("\n"):"- (no commits in range after filtering)",p=n.length>0?n.join("\n"):"(no paths in diff scope)",h=o?`=== Structured git context (JSON summary) ===\n${JSON.stringify(o,null,2)}\n\n`:"";return`${u}Date: ${c}\n\nGit refs: ${a}..${l}\n`+f+"\n=== Included commits (subject lines) ===\n"+`${m}\n\n=== Changed paths ===\n`+`${p}\n\n`+h+"=== Git context (unified diff(s); patches may be truncated with an explicit marker) ===\n"+i}(d,l,o,A(i,f),u),h=null!==(n=d.systemPrompt)&&void 0!==n?n:s,g=function(){var e;const t=null!==(e=process.env.LLM_MAX_TOKENS)&&void 0!==e?e:process.env.OPENAI_MAX_TOKENS,n=void 0!==t?Number.parseInt(t,10):4e3;return Number.isFinite(n)&&n>0?n:4e3}(),E=yield function(e,n,i,o,s){return r(this,void 0,void 0,function*(){const r=o?yield o():yield _(Object.assign(Object.assign({},s.provider?{provider:s.provider}:{}),s.model?{model:s.model}:{})),a=(yield t.generateText({model:r,system:n,prompt:e,temperature:P(),maxOutputTokens:i})).text.trim();return a.length>0?a:"No summary generated by the model."})}(p,h,g,c,d);return m?`> **Truncated diff:** The unified diff was ${i.length} characters; only the first ${f} were sent to the model. The summary may not reflect the full change set. Narrow the ref range, adjust path filters, or raise \`maxDiffChars\` / \`LLM_MAX_DIFF_CHARS\`—often together with switching to a model whose context window can fit a larger prompt.\n\n`+E:E})}function L(e){const t=e.trim().replace(/\\/g,"/").replace(/^\/+/,"").replace(/\/+$/,"");return t.length>0?t:"."}function b(e,t){const i=n.resolve(e),o=n.resolve(e,t);if(o!==i&&!o.startsWith(i+n.sep))throw new Error(`Path escapes repository root: ${JSON.stringify(t)}`)}function x(e,t){var n,i,o,r;const s=null!==(i=null===(n=null==t?void 0:t.includeFolders)||void 0===n?void 0:n.filter(e=>e.trim().length>0))&&void 0!==i?i:[],a=null!==(r=null===(o=null==t?void 0:t.excludeFolders)||void 0===o?void 0:o.filter(e=>e.trim().length>0))&&void 0!==r?r:[],l=s.map(L).filter(e=>"."!==e&&""!==e),d=a.map(L).filter(e=>"."!==e&&""!==e),c=l.length>0?l:["."];for(const t of c)b(e,t);for(const t of d)b(e,t);const u=[];if(0===l.length)u.push(".");else for(const e of l)u.push(e);for(const e of d)u.push(`:(exclude)${e}`);return u}function O(e,t){try{return new RegExp(e,"i")}catch(n){throw new Error(`Invalid ${t} regular expression: ${JSON.stringify(e)}`)}}function k(e,t,n){const i=(null!=t?t:[]).map(e=>e.trim()).filter(e=>e.length>0),o=(null!=n?n:[]).map(e=>e.trim()).filter(e=>e.length>0),r=i.map((e,t)=>O(e,`commit message include pattern[${t}]`)),s=o.map((e,t)=>O(e,`commit message exclude pattern[${t}]`));return e.filter(e=>function(e,t,n){for(const t of n)if(t.test(e))return!1;return!(t.length>0&&!t.some(t=>t.test(e)))}(e.message,r,s))}const R=["package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","bun.lockb","go.sum","Cargo.lock","Gemfile.lock","composer.lock","Pipfile.lock","poetry.lock","uv.lock","Podfile.lock","node_modules","dist","build","out","coverage","__snapshots__"];function w(e){return!Number.isFinite(e)||e<0?0:Math.trunc(e)}function M(e){const t=[];return void 0!==(null==e?void 0:e.contextLines)&&t.push(`-U${w(e.contextLines)}`),(null==e?void 0:e.ignoreWhitespace)&&t.push("-w"),t}const S=["diff --git ","index ","new file mode ","deleted file mode ","old mode ","new mode ","similarity index ","dissimilarity index ","rename from ","rename to ","copy from ","copy to "];function D(e){return e.split(/\r?\n/).filter(e=>!function(e){for(const t of S)if(e.startsWith(t))return!0;return!1}(e)).join("\n")}function $(e){return/^--- (a\/|b\/|"a\/|"b\/|\/dev\/null)/.test(e)||/^\+\+\+ (a\/|b\/|"a\/|"b\/|\/dev\/null)/.test(e)}function N(e,t){if(!(null==t?void 0:t.stripDiffPreamble)&&void 0===(null==t?void 0:t.maxHunkLines))return e;let n=e;return t.stripDiffPreamble&&(n=D(n)),void 0!==t.maxHunkLines&&(n=function(e,t){const n=w(t),i=e.split(/\r?\n/),o=[];let r=!1,s=[];const a=()=>{if(s.length>n){const e=s.length-n;o.push(...s.slice(0,n)),o.push(`[... ${e} diff line${1===e?"":"s"} elided ...]`)}else o.push(...s);s=[],r=!1};for(const e of i)e.startsWith("@@")?(r&&a(),o.push(e),r=!0):e.startsWith("diff --git ")||$(e)?(r&&a(),o.push(e)):r?s.push(e):o.push(e);return r&&a(),o.join("\n")}(n,t.maxHunkLines)),n}const K={A:"added",D:"deleted",R:"renamed",C:"copied",T:"type-changed",M:"modified"};function T(e){var t;return null!==(t=K[e.charAt(0)])&&void 0!==t?t:"unknown"}function C(e,t){if(e===t)return e;const n=["deleted","added","renamed","copied","type-changed","modified","unknown"];return n.indexOf(e)<=n.indexOf(t)?e:t}function F(e){const t=e.split("\t");let n=null;if(t.length>=2){const e=t[0],i=T(e),o=e.startsWith("R")||e.startsWith("C");o&&t.length>=3?n={path:t[2],status:i,oldPath:t[1]}:o||(n={path:t[1],status:i})}return n}function Y(e){const t=e.split("\t");if(t.length<3)return null;const n=t[0],i=t[1],o=t.slice(2).join("\t"),r="-"===n||"-"===i||void 0,s="-"!==n&&Number.parseInt(n,10)||0,a="-"!==i&&Number.parseInt(i,10)||0,l=function(e){const t=/^(.*?)\{(.+?) => (.+?)\}(.*)$/.exec(e);return t?`${t[1]}${t[3].trim()}${t[4]}`:e}(o);return Object.assign({key:l,additions:s,deletions:a},r?{binary:r}:{})}function G(e){const t=e.split("\t");if(t.length<3)return null;const n=T(t.shift()),i=t[0],o=t[1],r=i&&"-"!==i&&Number.parseInt(i,10)||0,s=o&&"-"!==o&&Number.parseInt(o,10)||0;return 3===t.length?{status:n,additions:r,deletions:s,newPath:t[2]}:4===t.length?{status:n,additions:r,deletions:s,oldPath:t[2],newPath:t[3]}:null}function j(e,t){var n,i;const{newPath:o,status:r,additions:s,deletions:a,oldPath:l}=t,d=e.get(o);d?(d.additions+=s,d.deletions+=a,d.status=C(d.status,r),l&&(d.oldPath=null!==(n=d.oldPath)&&void 0!==n?n:l),d.newPath=null!==(i=d.newPath)&&void 0!==i?i:o):e.set(o,{path:o,status:r,additions:s,deletions:a,oldPath:l,newPath:l?o:void 0})}const H={added:"A",deleted:"D",renamed:"R100",copied:"C100","type-changed":"T",modified:"M",unknown:"X"};function B(e,t){const n=(i=e.status,H[i]);var i;return e.oldPath?`${n}\t${t.additions}\t${t.deletions}\t${e.oldPath}\t${e.path}`:`${n}\t${t.additions}\t${t.deletions}\t${e.path}`}function U(e,t){var n,i;const o=new Map;!function(e,t){var n;for(const i of e.split(/\r?\n/)){const e=i.trim();if(!e)continue;const o=Y(e);if(!o)continue;const r=null!==(n=t.get(o.key))&&void 0!==n?n:{additions:0,deletions:0},s=o.binary||r.binary||void 0;t.set(o.key,Object.assign({additions:r.additions+o.additions,deletions:r.deletions+o.deletions},s?{binary:s}:{}))}}(t,o);const r=function(e){var t;const n=new Map;for(const i of e){const e=n.get(i.path);e?(e.status=C(e.status,i.status),i.oldPath&&(e.oldPath=null!==(t=e.oldPath)&&void 0!==t?t:i.oldPath)):n.set(i.path,Object.assign({},i))}return n}(function(e){const t=[];for(const n of e.split(/\r?\n/)){const e=n.trim();if(!e)continue;const i=F(e);i&&t.push(i)}return t}(e)),s=[];for(const[e,t]of r){const i=null!==(n=o.get(e))&&void 0!==n?n:{additions:0,deletions:0};s.push(B(t,i))}const a=function(e){const t=new Map;for(const n of e.split(/\r?\n/)){const e=n.trim();if(!e)continue;const i=G(e);i&&j(t,i)}const n=Array.from(t.values());return{files:n,totalFiles:n.length,totalAdditions:n.reduce((e,t)=>e+t.additions,0),totalDeletions:n.reduce((e,t)=>e+t.deletions,0)}}(s.join("\n"));for(const e of a.files)(null===(i=o.get(e.path))||void 0===i?void 0:i.binary)&&(e.binary=!0);return a}const q=o.promisify(i.execFile);function W(e=process.cwd(),t){return{run:n=>q("git",n,Object.assign({cwd:e,maxBuffer:104857600},void 0!==t?{timeout:t}:{})).then(({stdout:e})=>e)}}function X(e,t,n){return r(this,void 0,void 0,function*(){return(yield e.run(["log","--format=%H%x1f%s",`${t}..${n}`])).split("\n").filter(Boolean).map(e=>{const t=e.indexOf("");return{hash:t>=0?e.slice(0,t):e,message:t>=0?e.slice(t+1):""}})})}function V(e){return r(this,void 0,void 0,function*(){return(yield e.run(["rev-parse","--show-toplevel"])).trim()})}function J(e,t,n){return r(this,void 0,void 0,function*(){const i=null!=n?n:yield V(e);return{repoRoot:i,specs:x(i,t)}})}function z(e,t){return r(this,void 0,void 0,function*(){const{from:n,to:i,commits:o,filterByCommits:r,pathFilter:s,repoRootOverride:a,shaping:l}=t,{specs:d}=yield J(e,s,a),c=M(l);if(!r){return N(yield e.run(["diff",...c,`${n}..${i}`,"--",...d]),l)}return(yield Promise.all(o.map(t=>e.run(["diff",...c,`${t.hash}^!`,"--",...d])))).map(e=>N(e,l)).filter(Boolean).join("\n")})}function Q(e,t){return r(this,void 0,void 0,function*(){const{from:n,to:i,commits:o,filterByCommits:s,pathFilter:a,repoRootOverride:l,shaping:d}=t,{specs:c}=yield J(e,a,l),u=(null==d?void 0:d.ignoreWhitespace)?["-w"]:[];if(!s){const[t,o]=yield Promise.all([e.run(["diff",...u,"--numstat",`${n}..${i}`,"--",...c]),e.run(["diff",...u,"--name-status",`${n}..${i}`,"--",...c])]);return U(o,t)}const f=yield Promise.all(o.map(t=>r(this,void 0,void 0,function*(){const n=`${t.hash}^!`,[i,o]=yield Promise.all([e.run(["diff",...u,"--numstat",n,"--",...c]),e.run(["diff",...u,"--name-status",n,"--",...c])]);return{numOutput:i,nameOutput:o}})));return U(f.map(e=>e.nameOutput).filter(Boolean).join("\n"),f.map(e=>e.numOutput).filter(Boolean).join("\n"))})}function Z(e,t){return r(this,void 0,void 0,function*(){const{from:n,to:i,commits:o,filterByCommits:s,pathFilter:a,repoRootOverride:l}=t,{specs:d}=yield J(e,a,l);if(!s){return(yield e.run(["diff","--name-only",`${n}..${i}`,"--",...d])).split(/\r?\n/).map(e=>e.trim()).filter(Boolean).sort()}const c=yield Promise.all(o.map(t=>r(this,void 0,void 0,function*(){return(yield e.run(["show","--name-only","--pretty=format:",t.hash,"--",...d])).split(/\r?\n/).map(e=>e.trim()).filter(Boolean)})));return[...new Set(c.flat())].sort()})}function ee(e){return(null!=e?e:[]).some(e=>e.trim().length>0)}e.DEFAULT_GIT_DIFF_SYSTEM_PROMPT=s,e.DEFAULT_NOISE_EXCLUDES=R,e.LLM_GATEWAY_REQUIRED_MESSAGE=a,e.buildDiffPathspecs=x,e.buildDiffShapingGitArgs=M,e.createGitClient=W,e.defaultModelForProvider=g,e.detectLlmProvider=h,e.filterCommitsByMessageRegexes=k,e.generateSummary=I,e.getChangedFiles=Z,e.getCommits=X,e.getDiff=z,e.getDiffSummary=Q,e.getRepoRoot=V,e.isLlmProviderConfigured=v,e.parseLlmDefaultHeadersFromEnv=m,e.resolveLanguageModel=_,e.resolveLlmBaseUrl=u,e.resolveLlmMaxDiffChars=y,e.shapeUnifiedDiff=N,e.summarizeGitDiff=function(e){return r(this,void 0,void 0,function*(){var t,n;const i=null!==(t=e.git)&&void 0!==t?t:W(e.cwd),o=e.from,r=null!==(n=e.to)&&void 0!==n?n:"HEAD",s=function(e){var t;const n=null!==(t=e.excludeFolders)&&void 0!==t?t:[];if(!e.excludeDefaultNoise)return n.length>0?n:void 0;const i=new Set,o=[];for(const e of[...R,...n]){const t=e.trim();t&&!i.has(t)&&(i.add(t),o.push(e))}return o}(e),a=ee(e.includeFolders)||ee(s)?{includeFolders:e.includeFolders,excludeFolders:s}:void 0,l=yield X(i,o,r),d=k(l,e.commitMessageIncludeRegexes,e.commitMessageExcludeRegexes),c=function(e,t,n){return!(!ee(n.commitMessageIncludeRegexes)&&!ee(n.commitMessageExcludeRegexes))||t.length!==e.length}(l,d,e),u=function(e){const t={};return void 0!==e.contextLines&&(t.contextLines=e.contextLines),e.ignoreWhitespace&&(t.ignoreWhitespace=!0),e.stripDiffPreamble&&(t.stripDiffPreamble=!0),void 0!==e.maxHunkLines&&(t.maxHunkLines=e.maxHunkLines),Object.keys(t).length>0?t:void 0}(e),f={from:o,to:r,commits:d,filterByCommits:c,pathFilter:a,shaping:u},[m,p,h]=yield Promise.all([z(i,f),Z(i,f),Q(i,f)]);return I({diffText:m,fileNames:p,commits:d,flags:{from:o,to:r,team:e.teamName,model:e.model,provider:e.provider,maxDiffChars:e.maxDiffChars,systemPrompt:e.systemPrompt,commitMessageIncludeRegexes:e.commitMessageIncludeRegexes,commitMessageExcludeRegexes:e.commitMessageExcludeRegexes},llmModelProvider:e.llmModelProvider,diffSummary:h})})},e.truncateUnifiedDiffForLlm=A});
2
2
  //# sourceMappingURL=index.min.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.min.umd.js","sources":["../node_modules/tslib/tslib.es6.js","../src/ai/aiConstants.ts","../src/ai/llmProviders.ts","../src/ai/aiSummary.ts","../src/git/diffPathspecs.ts","../src/git/commitMessageFilter.ts","../src/git/diffShaping.ts","../src/git/diffGitStatus.ts","../src/git/diffNameStatusParse.ts","../src/git/diffNumstatParse.ts","../src/git/diffSummaryParse.ts","../src/git/diffSummaryBuild.ts","../src/git/gitDiffOps.ts","../src/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","SuppressedError","DEFAULT_GIT_DIFF_SYSTEM_PROMPT","LLM_GATEWAY_REQUIRED_MESSAGE","DEFAULT_MODEL_BY_PROVIDER","openai","anthropic","google","bedrock","mistral","cohere","groq","xai","deepseek","VALID_PROVIDERS","Set","readEnv","name","_a","process","env","trim","length","undefined","resolveLlmBaseUrl","parseHeaderJsonObject","raw","trimmed","parsed","JSON","parse","Array","isArray","out","key","Object","entries","parseLlmDefaultHeadersFromEnv","base","OPENAI_DEFAULT_HEADERS","override","LLM_DEFAULT_HEADERS","merged","assign","keys","resolveOpenAiApiKey","detectLlmProvider","explicit","toLowerCase","has","_b","isLlmProviderConfigured","defaultModelForProvider","provider","importOptional","pkg","loader","cause","failure","err","Error","wrapMissingPeer","resolveLanguageModel","this","arguments","options","modelId","_c","model","createOpenAI","import","apiKey","headers","createOpenAiModel","createOpenAICompatible","baseURL","createOpenAiCompatibleModel","mod","createAnthropic","createAnthropicModel","createGoogleGenerativeAI","createGoogleModel","createAmazonBedrock","createBedrockModel","createMistral","createMistralModel","createCohere","createCohereModel","createGroq","createGroqModel","createXai","createXaiModel","createDeepSeek","createDeepseekModel","String","resolveLlmMaxDiffChars","cliOverride","Number","isFinite","Math","trunc","LLM_MAX_DIFF_CHARS","OPENAI_MAX_DIFF_CHARS","parseInt","truncateUnifiedDiffForLlm","diffText","maxChars","marker","slice","generateSummary","input","fileNames","commits","flags","llmModelProvider","diffSummary","maxDiffChars","diffTruncated","userContent","from","to","team","ts","Date","toISOString","teamLine","filterBlock","includes","commitMessageIncludeRegexes","map","s","filter","Boolean","excludes","commitMessageExcludeRegexes","incLine","r","stringify","join","excLine","formatRegexFilterLines","commitBlock","c","hash","message","replace","pathsBlock","structuredDiffSection","buildUserContent","systemPrompt","maxOutputTokens","LLM_MAX_TOKENS","OPENAI_MAX_TOKENS","resolveMaxOutputTokens","summary","text","generateText","system","prompt","temperature","callLlm","normalizeRepoRelativePath","p","noTrailingSlash","assertPathUnderRepo","repoRoot","userPath","abs","relative","split","buildDiffPathspecs","pathFilter","includeRaw","includeFolders","excludeRaw","_d","excludeFolders","toValidate","inc","exc","specs","push","compileRegex","pattern","label","RegExp","filterCommitsByMessageRegexes","includePatterns","excludePatterns","includeRes","i","excludeRes","ex","test","some","commitMessagePassesFilters","DEFAULT_NOISE_EXCLUDES","normalizeContextLines","buildDiffShapingGitArgs","shaping","args","contextLines","ignoreWhitespace","PREAMBLE_NOISE_PREFIXES","stripPreambleLines","line","prefix","startsWith","isPreambleNoiseLine","isFileHeaderLine","shapeUnifiedDiff","stripDiffPreamble","maxHunkLines","limit","lines","inHunk","hunkBuf","flushHunk","elided","elideLargeHunks","GIT_STATUS_BY_FIRST_CHAR","A","D","R","C","T","M","mapGitStatus","statusCode","charAt","mergeStatus","existing","precedence","indexOf","parseNameStatusLine","parts","entry","statusToken","status","isRenameOrCopy","path","oldPath","parseNumStatLine","addStr","delStr","pathField","additions","deletions","brace","exec","numStatPathToLookupKey","parseTabDiffSummaryLine","shift","add0","del0","newPath","mergeParsedDiffSummaryLine","fileMap","get","set","STATUS_TO_SYNTHETIC_PREFIX","added","deleted","renamed","copied","modified","unknown","buildSyntheticDiffLine","meta","counts","buildDiffSummaryFromGitOutputs","nameStatusOutput","numStatOutput","numMap","Map","into","rawLine","prev","accumulateNumStat","mergedName","byPath","mergeNameEntriesByPath","parseNameStatusLines","syntheticLines","diffOutput","files","values","totalFiles","totalAdditions","reduce","sum","file","totalDeletions","parseDiffSummary","createGitClient","cwd","simpleGit","getCommits","git","log","all","getRepoRoot","revparse","getDiffPathContext","repoRootOverride","getDiff","query","filterByCommits","shapingArgs","diff","getDiffSummary","whitespaceArgs","numOutput","nameOutput","pairs","range","getChangedFiles","f","fileSet","show","forEach","add","hasNonEmptyTrimmed","arr","effectiveExcludeFolders","userExcludes","excludeDefaultNoise","seen","buildEffectiveExcludeFolders","allCommits","filteredCommits","filtered","opts","shouldFilterByCommits","buildShapingFromOptions","rangeQuery","teamName"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.min.umd.js","sources":["../node_modules/tslib/tslib.es6.js","../src/ai/aiConstants.ts","../src/ai/llmProviders.ts","../src/ai/aiSummary.ts","../src/git/diffPathspecs.ts","../src/git/commitMessageFilter.ts","../src/git/diffShaping.ts","../src/git/diffGitStatus.ts","../src/git/diffNameStatusParse.ts","../src/git/diffNumstatParse.ts","../src/git/diffSummaryParse.ts","../src/git/diffSummaryBuild.ts","../src/git/gitDiffOps.ts","../src/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","SuppressedError","DEFAULT_GIT_DIFF_SYSTEM_PROMPT","LLM_GATEWAY_REQUIRED_MESSAGE","DEFAULT_MODEL_BY_PROVIDER","openai","anthropic","google","bedrock","mistral","cohere","groq","xai","deepseek","VALID_PROVIDERS","Set","readEnv","name","_a","process","env","trim","length","undefined","resolveLlmBaseUrl","parseHeaderJsonObject","raw","trimmed","parsed","JSON","parse","Array","isArray","out","key","Object","entries","parseLlmDefaultHeadersFromEnv","base","OPENAI_DEFAULT_HEADERS","override","LLM_DEFAULT_HEADERS","merged","assign","keys","resolveOpenAiApiKey","detectLlmProvider","explicit","toLowerCase","has","_b","_c","isLlmProviderConfigured","defaultModelForProvider","provider","importOptional","pkg","loader","cause","failure","err","Error","wrapMissingPeer","resolveLanguageModel","this","arguments","options","modelId","model","mod","import","apiKey","headers","createOpenAI","createOpenAiModel","createOpenAICompatible","baseURL","createOpenAiCompatibleModel","createAnthropic","createAnthropicModel","createGoogleGenerativeAI","createGoogleModel","createAmazonBedrock","createBedrockModel","createMistral","createMistralModel","createCohere","createCohereModel","createGroq","createGroqModel","createXai","createXaiModel","createDeepSeek","createDeepseekModel","String","resolveLlmMaxDiffChars","cliOverride","Number","isFinite","Math","trunc","LLM_MAX_DIFF_CHARS","OPENAI_MAX_DIFF_CHARS","parseInt","truncateUnifiedDiffForLlm","diffText","maxChars","marker","slice","resolveLlmTemperature","LLM_TEMPERATURE","parseFloat","min","max","generateSummary","input","fileNames","commits","flags","llmModelProvider","diffSummary","maxDiffChars","diffTruncated","userContent","from","to","team","ts","Date","toISOString","teamLine","filterBlock","includes","commitMessageIncludeRegexes","map","s","filter","Boolean","excludes","commitMessageExcludeRegexes","incLine","r","stringify","join","excLine","formatRegexFilterLines","commitBlock","c","hash","message","replace","pathsBlock","structuredDiffSection","buildUserContent","systemPrompt","maxOutputTokens","LLM_MAX_TOKENS","OPENAI_MAX_TOKENS","resolveMaxOutputTokens","summary","text","generateText","system","prompt","temperature","callLlm","normalizeRepoRelativePath","p","noTrailingSlash","assertPathUnderRepo","repoRoot","userPath","absRoot","abs","startsWith","sep","buildDiffPathspecs","pathFilter","includeRaw","includeFolders","excludeRaw","_d","excludeFolders","toValidate","inc","exc","specs","push","compileRegex","pattern","label","RegExp","filterCommitsByMessageRegexes","includePatterns","excludePatterns","includeRes","i","excludeRes","ex","test","some","commitMessagePassesFilters","DEFAULT_NOISE_EXCLUDES","normalizeContextLines","buildDiffShapingGitArgs","shaping","args","contextLines","ignoreWhitespace","PREAMBLE_NOISE_PREFIXES","stripPreambleLines","split","line","prefix","isPreambleNoiseLine","isFileHeaderLine","shapeUnifiedDiff","stripDiffPreamble","maxHunkLines","limit","lines","inHunk","hunkBuf","flushHunk","elided","elideLargeHunks","GIT_STATUS_BY_FIRST_CHAR","A","D","R","C","T","M","mapGitStatus","statusCode","charAt","mergeStatus","existing","precedence","indexOf","parseNameStatusLine","parts","entry","statusToken","status","isRenameOrCopy","path","oldPath","parseNumStatLine","addStr","delStr","pathField","binary","additions","deletions","brace","exec","numStatPathToLookupKey","parseTabDiffSummaryLine","shift","add0","del0","newPath","mergeParsedDiffSummaryLine","fileMap","get","set","STATUS_TO_SYNTHETIC_PREFIX","added","deleted","renamed","copied","modified","unknown","buildSyntheticDiffLine","meta","counts","buildDiffSummaryFromGitOutputs","nameStatusOutput","numStatOutput","numMap","Map","into","rawLine","prev","accumulateNumStat","mergedName","byPath","mergeNameEntriesByPath","parseNameStatusLines","syntheticLines","diffOutput","files","values","totalFiles","totalAdditions","reduce","sum","file","totalDeletions","parseDiffSummary","execFileAsync","promisify","execFile","createGitClient","cwd","timeout","run","maxBuffer","stdout","getCommits","git","getRepoRoot","getDiffPathContext","repoRootOverride","getDiff","query","filterByCommits","shapingArgs","all","getDiffSummary","whitespaceArgs","numOutput","nameOutput","pairs","range","getChangedFiles","f","sort","results","flat","hasNonEmptyTrimmed","arr","effectiveExcludeFolders","userExcludes","excludeDefaultNoise","seen","add","buildEffectiveExcludeFolders","allCommits","filteredCommits","filtered","opts","shouldFilterByCommits","buildShapingFromOptions","rangeQuery","teamName"],"mappings":"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","x_google_ignoreList":[0]}
package/dist/index.mjs CHANGED
@@ -1,6 +1,7 @@
1
1
  import { generateText } from 'ai';
2
- import { resolve, relative } from 'node:path';
3
- import { simpleGit } from 'simple-git';
2
+ import { resolve, sep } from 'node:path';
3
+ import { execFile } from 'node:child_process';
4
+ import { promisify } from 'node:util';
4
5
 
5
6
  /******************************************************************************
6
7
  Copyright (c) Microsoft Corporation.
@@ -51,7 +52,7 @@ const LLM_GATEWAY_REQUIRED_MESSAGE = "No LLM provider configured. Set LLM_PROVID
51
52
  const DEFAULT_MODEL_BY_PROVIDER = {
52
53
  openai: "gpt-4o-mini",
53
54
  "openai-compatible": "gpt-4o-mini",
54
- anthropic: "claude-3-5-haiku-latest",
55
+ anthropic: "claude-haiku-4-5-20251001",
55
56
  google: "gemini-2.0-flash",
56
57
  bedrock: "anthropic.claude-3-5-haiku-20241022-v1:0",
57
58
  mistral: "mistral-small-latest",
@@ -118,7 +119,7 @@ function resolveOpenAiApiKey() {
118
119
  return (_a = readEnv("LLM_API_KEY")) !== null && _a !== void 0 ? _a : readEnv("OPENAI_API_KEY");
119
120
  }
120
121
  function detectLlmProvider() {
121
- var _a, _b;
122
+ var _a, _b, _c;
122
123
  const explicit = (_a = readEnv("LLM_PROVIDER")) === null || _a === void 0 ? void 0 : _a.toLowerCase();
123
124
  if (explicit && isValidProviderId(explicit)) {
124
125
  return explicit;
@@ -143,6 +144,8 @@ function detectLlmProvider() {
143
144
  return "xai";
144
145
  if (readEnv("DEEPSEEK_API_KEY"))
145
146
  return "deepseek";
147
+ if ((_c = readEnv("AWS_ACCESS_KEY_ID")) !== null && _c !== void 0 ? _c : readEnv("AWS_PROFILE"))
148
+ return "bedrock";
146
149
  if (parseLlmDefaultHeadersFromEnv())
147
150
  return "openai";
148
151
  return undefined;
@@ -155,17 +158,17 @@ function defaultModelForProvider(provider) {
155
158
  }
156
159
  function createOpenAiModel(modelId) {
157
160
  return __awaiter(this, void 0, void 0, function* () {
158
- const { createOpenAI } = yield import('@ai-sdk/openai');
161
+ const mod = yield importOptional("openai", "@ai-sdk/openai", () => import('@ai-sdk/openai'));
159
162
  const apiKey = resolveOpenAiApiKey();
160
163
  const headers = parseLlmDefaultHeadersFromEnv();
161
- const provider = createOpenAI(Object.assign(Object.assign({}, (apiKey ? { apiKey } : {})), (headers ? { headers } : {})));
164
+ const provider = mod.createOpenAI(Object.assign(Object.assign({}, (apiKey ? { apiKey } : {})), (headers ? { headers } : {})));
162
165
  return provider(modelId);
163
166
  });
164
167
  }
165
168
  function createOpenAiCompatibleModel(modelId) {
166
169
  return __awaiter(this, void 0, void 0, function* () {
167
170
  var _a;
168
- const { createOpenAICompatible } = yield import('@ai-sdk/openai-compatible');
171
+ const { createOpenAICompatible } = yield importOptional("openai-compatible", "@ai-sdk/openai-compatible", () => import('@ai-sdk/openai-compatible'));
169
172
  const baseURL = resolveLlmBaseUrl();
170
173
  if (!baseURL) {
171
174
  throw new Error("openai-compatible provider requires LLM_BASE_URL or OPENAI_BASE_URL to be set.");
@@ -328,6 +331,17 @@ function resolveMaxOutputTokens() {
328
331
  const parsed = raw !== undefined ? Number.parseInt(raw, 10) : 4000;
329
332
  return Number.isFinite(parsed) && parsed > 0 ? parsed : 4000;
330
333
  }
334
+ function resolveLlmTemperature() {
335
+ var _a;
336
+ const raw = (_a = process.env.LLM_TEMPERATURE) === null || _a === void 0 ? void 0 : _a.trim();
337
+ if (raw) {
338
+ const parsed = Number.parseFloat(raw);
339
+ if (Number.isFinite(parsed)) {
340
+ return Math.min(2, Math.max(0, parsed));
341
+ }
342
+ }
343
+ return 0.2;
344
+ }
331
345
  function generateSummary(input) {
332
346
  return __awaiter(this, void 0, void 0, function* () {
333
347
  var _a;
@@ -407,7 +421,7 @@ function callLlm(userContent, systemPrompt, maxOutputTokens, llmModelProvider, f
407
421
  model,
408
422
  system: systemPrompt,
409
423
  prompt: userContent,
410
- temperature: 0.2,
424
+ temperature: resolveLlmTemperature(),
411
425
  maxOutputTokens,
412
426
  });
413
427
  const text = result.text.trim();
@@ -422,10 +436,9 @@ function normalizeRepoRelativePath(p) {
422
436
  return noTrailingSlash.length > 0 ? noTrailingSlash : ".";
423
437
  }
424
438
  function assertPathUnderRepo(repoRoot, userPath) {
439
+ const absRoot = resolve(repoRoot);
425
440
  const abs = resolve(repoRoot, userPath);
426
- const rel = relative(repoRoot, abs);
427
- const segments = rel.split(/[/\\]/);
428
- if (segments.includes("..")) {
441
+ if (abs !== absRoot && !abs.startsWith(absRoot + sep)) {
429
442
  throw new Error(`Path escapes repository root: ${JSON.stringify(userPath)}`);
430
443
  }
431
444
  }
@@ -703,10 +716,11 @@ function parseNumStatLine(line) {
703
716
  const addStr = parts[0];
704
717
  const delStr = parts[1];
705
718
  const pathField = parts.slice(2).join("\t");
719
+ const binary = addStr === "-" || delStr === "-" ? true : undefined;
706
720
  const additions = addStr !== "-" ? Number.parseInt(addStr, 10) || 0 : 0;
707
721
  const deletions = delStr !== "-" ? Number.parseInt(delStr, 10) || 0 : 0;
708
722
  const key = numStatPathToLookupKey(pathField);
709
- return { key, additions, deletions };
723
+ return Object.assign({ key, additions, deletions }, (binary ? { binary } : {}));
710
724
  }
711
725
  function accumulateNumStat(numStatOutput, into) {
712
726
  var _a;
@@ -718,10 +732,8 @@ function accumulateNumStat(numStatOutput, into) {
718
732
  if (!parsed)
719
733
  continue;
720
734
  const prev = (_a = into.get(parsed.key)) !== null && _a !== void 0 ? _a : { additions: 0, deletions: 0 };
721
- into.set(parsed.key, {
722
- additions: prev.additions + parsed.additions,
723
- deletions: prev.deletions + parsed.deletions,
724
- });
735
+ const binary = parsed.binary || prev.binary || undefined;
736
+ into.set(parsed.key, Object.assign({ additions: prev.additions + parsed.additions, deletions: prev.deletions + parsed.deletions }, (binary ? { binary } : {})));
725
737
  }
726
738
  }
727
739
 
@@ -811,7 +823,7 @@ function buildSyntheticDiffLine(meta, counts) {
811
823
  return `${prefix}\t${counts.additions}\t${counts.deletions}\t${meta.path}`;
812
824
  }
813
825
  function buildDiffSummaryFromGitOutputs(nameStatusOutput, numStatOutput) {
814
- var _a;
826
+ var _a, _b;
815
827
  const numMap = new Map();
816
828
  accumulateNumStat(numStatOutput, numMap);
817
829
  const mergedName = mergeNameEntriesByPath(parseNameStatusLines(nameStatusOutput));
@@ -820,21 +832,39 @@ function buildDiffSummaryFromGitOutputs(nameStatusOutput, numStatOutput) {
820
832
  const counts = (_a = numMap.get(path)) !== null && _a !== void 0 ? _a : { additions: 0, deletions: 0 };
821
833
  syntheticLines.push(buildSyntheticDiffLine(meta, counts));
822
834
  }
823
- return parseDiffSummary(syntheticLines.join("\n"));
835
+ const summary = parseDiffSummary(syntheticLines.join("\n"));
836
+ for (const file of summary.files) {
837
+ if ((_b = numMap.get(file.path)) === null || _b === void 0 ? void 0 : _b.binary) {
838
+ file.binary = true;
839
+ }
840
+ }
841
+ return summary;
824
842
  }
825
843
 
826
- function createGitClient(cwd = process.cwd()) {
827
- return simpleGit(cwd);
844
+ const execFileAsync = promisify(execFile);
845
+ function createGitClient(cwd = process.cwd(), timeout) {
846
+ return {
847
+ run: (args) => execFileAsync("git", args, Object.assign({ cwd, maxBuffer: 100 * 1024 * 1024 }, (timeout !== undefined ? { timeout } : {}))).then(({ stdout }) => stdout),
848
+ };
828
849
  }
829
850
  function getCommits(git, from, to) {
830
851
  return __awaiter(this, void 0, void 0, function* () {
831
- const logResult = yield git.log({ from, to });
832
- return logResult.all;
852
+ const output = yield git.run(["log", "--format=%H%x1f%s", `${from}..${to}`]);
853
+ return output
854
+ .split("\n")
855
+ .filter(Boolean)
856
+ .map((line) => {
857
+ const sep = line.indexOf("\x1f");
858
+ return {
859
+ hash: sep >= 0 ? line.slice(0, sep) : line,
860
+ message: sep >= 0 ? line.slice(sep + 1) : "",
861
+ };
862
+ });
833
863
  });
834
864
  }
835
865
  function getRepoRoot(git) {
836
866
  return __awaiter(this, void 0, void 0, function* () {
837
- const root = yield git.revparse(["--show-toplevel"]);
867
+ const root = yield git.run(["rev-parse", "--show-toplevel"]);
838
868
  return root.trim();
839
869
  });
840
870
  }
@@ -851,7 +881,8 @@ function getDiff(git, query) {
851
881
  const { specs } = yield getDiffPathContext(git, pathFilter, repoRootOverride);
852
882
  const shapingArgs = buildDiffShapingGitArgs(shaping);
853
883
  if (!filterByCommits) {
854
- const raw = yield git.diff([
884
+ const raw = yield git.run([
885
+ "diff",
855
886
  ...shapingArgs,
856
887
  `${from}..${to}`,
857
888
  "--",
@@ -859,7 +890,7 @@ function getDiff(git, query) {
859
890
  ]);
860
891
  return shapeUnifiedDiff(raw, shaping);
861
892
  }
862
- const patches = yield Promise.all(commits.map((c) => git.diff([...shapingArgs, `${c.hash}^!`, "--", ...specs])));
893
+ const patches = yield Promise.all(commits.map((c) => git.run(["diff", ...shapingArgs, `${c.hash}^!`, "--", ...specs])));
863
894
  return patches
864
895
  .map((p) => shapeUnifiedDiff(p, shaping))
865
896
  .filter(Boolean)
@@ -873,14 +904,16 @@ function getDiffSummary(git, query) {
873
904
  const whitespaceArgs = (shaping === null || shaping === void 0 ? void 0 : shaping.ignoreWhitespace) ? ["-w"] : [];
874
905
  if (!filterByCommits) {
875
906
  const [numOutput, nameOutput] = yield Promise.all([
876
- git.diff([
907
+ git.run([
908
+ "diff",
877
909
  ...whitespaceArgs,
878
910
  "--numstat",
879
911
  `${from}..${to}`,
880
912
  "--",
881
913
  ...specs,
882
914
  ]),
883
- git.diff([
915
+ git.run([
916
+ "diff",
884
917
  ...whitespaceArgs,
885
918
  "--name-status",
886
919
  `${from}..${to}`,
@@ -893,8 +926,22 @@ function getDiffSummary(git, query) {
893
926
  const pairs = yield Promise.all(commits.map((c) => __awaiter(this, void 0, void 0, function* () {
894
927
  const range = `${c.hash}^!`;
895
928
  const [numOutput, nameOutput] = yield Promise.all([
896
- git.diff([...whitespaceArgs, "--numstat", range, "--", ...specs]),
897
- git.diff([...whitespaceArgs, "--name-status", range, "--", ...specs]),
929
+ git.run([
930
+ "diff",
931
+ ...whitespaceArgs,
932
+ "--numstat",
933
+ range,
934
+ "--",
935
+ ...specs,
936
+ ]),
937
+ git.run([
938
+ "diff",
939
+ ...whitespaceArgs,
940
+ "--name-status",
941
+ range,
942
+ "--",
943
+ ...specs,
944
+ ]),
898
945
  ]);
899
946
  return { numOutput, nameOutput };
900
947
  })));
@@ -914,7 +961,8 @@ function getChangedFiles(git, query) {
914
961
  const { from, to, commits, filterByCommits, pathFilter, repoRootOverride } = query;
915
962
  const { specs } = yield getDiffPathContext(git, pathFilter, repoRootOverride);
916
963
  if (!filterByCommits) {
917
- const output = yield git.diff([
964
+ const output = yield git.run([
965
+ "diff",
918
966
  "--name-only",
919
967
  `${from}..${to}`,
920
968
  "--",
@@ -923,24 +971,24 @@ function getChangedFiles(git, query) {
923
971
  return output
924
972
  .split(/\r?\n/)
925
973
  .map((f) => f.trim())
926
- .filter(Boolean);
974
+ .filter(Boolean)
975
+ .sort();
927
976
  }
928
- const fileSet = new Set();
929
- yield Promise.all(commits.map((c) => __awaiter(this, void 0, void 0, function* () {
930
- const output = yield git.show([
977
+ const results = yield Promise.all(commits.map((c) => __awaiter(this, void 0, void 0, function* () {
978
+ const output = yield git.run([
979
+ "show",
931
980
  "--name-only",
932
981
  "--pretty=format:",
933
982
  c.hash,
934
983
  "--",
935
984
  ...specs,
936
985
  ]);
937
- output
986
+ return output
938
987
  .split(/\r?\n/)
939
988
  .map((f) => f.trim())
940
- .filter(Boolean)
941
- .forEach((f) => fileSet.add(f));
989
+ .filter(Boolean);
942
990
  })));
943
- return Array.from(fileSet);
991
+ return [...new Set(results.flat())].sort();
944
992
  });
945
993
  }
946
994