sf-git-ai-meta-insights 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.2.0](https://github.com/mcarvin8/sf-git-ai-meta-insights/compare/v2.1.0...v2.2.0) (2026-04-21)
4
+
5
+
6
+ ### Features
7
+
8
+ * **ai:** support all Vercel AI SDK providers via smart-diff v2 ([#16](https://github.com/mcarvin8/sf-git-ai-meta-insights/issues/16)) ([8be7458](https://github.com/mcarvin8/sf-git-ai-meta-insights/commit/8be7458111081e5cad3f07646b08346154f2401b))
9
+
3
10
  ## [2.1.0](https://github.com/mcarvin8/sf-git-ai-meta-insights/compare/v2.0.1...v2.1.0) (2026-04-19)
4
11
 
5
12
 
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  ## Overview
11
11
 
12
- This plugin summarizes metadata changes between two Git refs, optionally filters commits by message, and writes a Markdown file using an **OpenAI-compatible** LLM. A configured gateway (API key and/or base URL and/or default headers) is **required**.
12
+ This plugin summarizes metadata changes between two Git refs, optionally filters commits by message, and writes a Markdown file using any LLM provider supported by the [Vercel AI SDK](https://sdk.vercel.ai) — OpenAI, Anthropic, Google Gemini, Amazon Bedrock, Mistral, Cohere, Groq, xAI, DeepSeek, or any OpenAI-compatible gateway. A configured provider (API key, base URL, and/or default headers) is **required**.
13
13
 
14
14
  ![Markdown Summary Example](https://raw.githubusercontent.com/mcarvin8/sf-git-ai-meta-insights/main/.github/images/summary-example.png)
15
15
 
@@ -27,18 +27,18 @@ Summarize metadata changes between two Git refs and write the generated summary
27
27
 
28
28
  #### Flags
29
29
 
30
- | Flag | Short | Required | Default | Description |
31
- | ----------------------------- | ----- | -------- | --------------------- | ----------------------------------------------------------------------------------------------- |
32
- | `--from` | `-f` | Yes | | Start reference for the git diff range (e.g. `HEAD~1`, a tag, or a commit hash). |
33
- | `--to` | `-t` | No | `HEAD` | End reference for the git diff range. |
34
- | `--commit-message-include` | `-m` | No | | Include commits whose messages match any of these regex patterns (repeatable, OR). |
35
- | `--commit-message-exclude` | `-e` | No | | Exclude commits whose messages match any of these regex patterns (repeatable, OR). |
36
- | `--include-package-directory` | `-i` | No | | Extra repo-relative package paths merged with `sfdx-project.json` directories (repeatable). |
37
- | `--exclude-package-directory` | `-x` | No | | Exclude package paths from the configured list and add git `:(exclude)` pathspecs (repeatable). |
38
- | `--team` | | No | | Team or squad label for the summary (also via `METADATA_AUDIT_TEAM` or `SF_GIT_AI_TEAM`). |
39
- | `--output` | `-p` | No | `metadata-summary.md` | Output file path for the generated summary. |
40
- | `--model` | | No | `gpt-4o-mini` | OpenAI model used for the summary. |
41
- | `--max-diff-chars` | | No | | Max characters of unified diff text sent to the model (5,000–5,000,000). |
30
+ | Flag | Short | Required | Default | Description |
31
+ | ----------------------------- | ----- | -------- | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
32
+ | `--from` | `-f` | Yes | | Start reference for the git diff range (e.g. `HEAD~1`, a tag, or a commit hash). |
33
+ | `--to` | `-t` | No | `HEAD` | End reference for the git diff range. |
34
+ | `--commit-message-include` | `-m` | No | | Include commits whose messages match any of these regex patterns (repeatable, OR). |
35
+ | `--commit-message-exclude` | `-e` | No | | Exclude commits whose messages match any of these regex patterns (repeatable, OR). |
36
+ | `--include-package-directory` | `-i` | No | | Extra repo-relative package paths merged with `sfdx-project.json` directories (repeatable). |
37
+ | `--exclude-package-directory` | `-x` | No | | Exclude package paths from the configured list and add git `:(exclude)` pathspecs (repeatable). |
38
+ | `--team` | | No | | Team or squad label for the summary (also via `METADATA_AUDIT_TEAM` or `SF_GIT_AI_TEAM`). |
39
+ | `--output` | `-p` | No | `metadata-summary.md` | Output file path for the generated summary. |
40
+ | `--model` | | No | _provider default_ | Override the chat model id. Defaults to the resolved provider's default (e.g. `gpt-4o-mini` for OpenAI, `claude-3-5-haiku-latest` for Anthropic). Can also be set with `LLM_MODEL`. |
41
+ | `--max-diff-chars` | | No | | Max characters of unified diff text sent to the model (5,000–5,000,000). |
42
42
 
43
43
  #### Examples
44
44
 
@@ -67,36 +67,69 @@ Summarize only commits whose messages match a regex:
67
67
  sf sgai metadata summarize --from main --to HEAD --commit-message-include "(feature|fix)"
68
68
  ```
69
69
 
70
- Set a specific OpenAI model:
70
+ Override the chat model (any model id your configured provider supports):
71
71
 
72
72
  ```bash
73
- sf sgai metadata summarize --from HEAD~1 --to HEAD --model gpt-4o-mini
73
+ sf sgai metadata summarize --from HEAD~1 --to HEAD --model claude-3-5-sonnet-latest
74
74
  ```
75
75
 
76
76
  ## Requirements
77
77
 
78
78
  - `sf` CLI installed
79
79
  - Node.js 20 or later
80
- - **OpenAI configuration**—see below
80
+ - A configured LLM provider—see [Provider configuration](#provider-configuration)
81
81
  - A Salesforce DX project repository with a `sfdx-project.json` file present in the repo root (unless you pass only `--include-package-directory` paths)
82
82
  - [Git Bash](https://git-scm.com/install/)
83
83
 
84
84
  This plugin reads `packageDirectories` from `sfdx-project.json` (when present) to scope the git diff, merges optional CLI include/exclude paths, then sends context to the model.
85
85
 
86
- ### OpenAI Configuration
86
+ ### Provider configuration
87
87
 
88
- The plugin requires an **OpenAI-compatible** endpoint. At minimum, set an API key or base URL:
88
+ The plugin delegates provider resolution to [`@mcarvin/smart-diff`](https://github.com/mcarvin8/smart-diff), which uses the Vercel AI SDK. Any of the supported providers below will work — set credentials for whichever one you want to use. If multiple are set, `LLM_PROVIDER` explicitly selects one; otherwise the resolver auto-detects based on which env vars are present.
89
89
 
90
- | Variable | Purpose |
91
- | --------------------- | ------------------------------------------- |
92
- | `OPENAI_API_KEY` | API key for api.openai.com or your gateway. |
93
- | `LLM_BASE_URL` | Base URL for an OpenAI-compatible gateway. |
94
- | `LLM_DEFAULT_HEADERS` | JSON object of extra HTTP headers. |
90
+ | Provider (`LLM_PROVIDER`) | Credential env vars | Default model |
91
+ | ------------------------- | -------------------------------------------------------------------------- | ------------------------------------------ |
92
+ | `openai` | `OPENAI_API_KEY` or `LLM_API_KEY` | `gpt-4o-mini` |
93
+ | `openai-compatible` | `LLM_BASE_URL`/`OPENAI_BASE_URL` (required); API key and/or custom headers | `gpt-4o-mini` |
94
+ | `anthropic` | `ANTHROPIC_API_KEY` | `claude-3-5-haiku-latest` |
95
+ | `google` | `GOOGLE_GENERATIVE_AI_API_KEY` or `GOOGLE_API_KEY` | `gemini-2.0-flash` |
96
+ | `bedrock` | Standard AWS credential chain (env / profile / role) | `anthropic.claude-3-5-haiku-20241022-v1:0` |
97
+ | `mistral` | `MISTRAL_API_KEY` | `mistral-small-latest` |
98
+ | `cohere` | `COHERE_API_KEY` | `command-r-08-2024` |
99
+ | `groq` | `GROQ_API_KEY` | `llama-3.1-8b-instant` |
100
+ | `xai` | `XAI_API_KEY` | `grok-2-latest` |
101
+ | `deepseek` | `DEEPSEEK_API_KEY` | `deepseek-chat` |
102
+
103
+ All supported provider SDKs ship with the plugin — once you run `sf plugins install sf-git-ai-meta-insights`, no extra `npm install` is needed to switch between OpenAI, Anthropic, Google, Bedrock, Mistral, Cohere, Groq, xAI, or DeepSeek. Just set the env vars for whichever provider you want to use.
104
+
105
+ #### Common env vars
106
+
107
+ | Variable | Purpose |
108
+ | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
109
+ | `LLM_PROVIDER` | Explicit provider id from the table above. |
110
+ | `LLM_MODEL` | Overrides the per-provider default model id (also settable per-run via `--model`). |
111
+ | `OPENAI_BASE_URL` / `LLM_BASE_URL` | Base URL for an OpenAI-compatible gateway; presence alone auto-selects the `openai-compatible` provider. |
112
+ | `OPENAI_DEFAULT_HEADERS` / `LLM_DEFAULT_HEADERS` | JSON object of extra headers merged onto OpenAI / OpenAI-compatible requests. `LLM_*` overrides `OPENAI_*` key-by-key. |
113
+ | `OPENAI_MAX_DIFF_CHARS` / `LLM_MAX_DIFF_CHARS` | Max size of unified diff text sent to the model (default ~120k characters). Also settable per-run via `--max-diff-chars`. |
95
114
 
96
115
  > `LLM_*` variants override their `OPENAI_*` counterparts when both are set.
97
- > For the full list of supported environment variables, see the [`@mcarvin/smart-diff` documentation](https://github.com/mcarvin8/smart-diff#llm-configuration).
116
+ > For the full list of supported environment variables, see the [`@mcarvin/smart-diff` documentation](https://github.com/mcarvin8/smart-diff#provider-configuration).
98
117
 
99
- **PowerShell example with a company gateway**
118
+ #### Example: native OpenAI
119
+
120
+ ```powershell
121
+ $env:OPENAI_API_KEY = "sk-..."
122
+ sf sgai metadata summarize --from HEAD~1 --to HEAD
123
+ ```
124
+
125
+ #### Example: Anthropic Claude
126
+
127
+ ```powershell
128
+ $env:ANTHROPIC_API_KEY = "sk-ant-..."
129
+ sf sgai metadata summarize --from HEAD~1 --to HEAD --model claude-3-5-sonnet-latest
130
+ ```
131
+
132
+ #### Example: company-managed OpenAI-compatible gateway
100
133
 
101
134
  ```powershell
102
135
  $env:LLM_BASE_URL = "https://llm-gateway.mycompany.example/v1"
@@ -104,11 +137,9 @@ $env:LLM_DEFAULT_HEADERS = '{"Authorization":"Bearer <token>","x-tenant-id":"sal
104
137
  sf sgai metadata summarize --from HEAD~1 --to HEAD
105
138
  ```
106
139
 
107
- ![Command Example with Company Gateway](https://raw.githubusercontent.com/mcarvin8/sf-git-ai-meta-insights/main/.github/images/cmd-example.png)
108
-
109
140
  ## Built With
110
141
 
111
- The plugin's core logic is imported from [`@mcarvin/smart-diff`](https://github.com/mcarvin8/smart-diff) library, which is a general solution to turn git diffs from any git repository into OpenAI summaries.
142
+ The plugin's core logic is imported from the [`@mcarvin/smart-diff`](https://github.com/mcarvin8/smart-diff) library, a general-purpose tool that turns git diffs from any repository into Markdown summaries using any Vercel AI SDK provider.
112
143
 
113
144
  ## License
114
145
 
@@ -0,0 +1,8 @@
1
+ /**
2
+ * LLM provider configuration — re-exported from `@mcarvin/smart-diff` so this plugin shares one implementation.
3
+ *
4
+ * `@mcarvin/smart-diff` v2 uses the Vercel AI SDK under the hood and supports OpenAI, OpenAI-compatible
5
+ * gateways, Anthropic, Google, Bedrock, Mistral, Cohere, Groq, xAI, and DeepSeek.
6
+ */
7
+ export type { LlmProviderId, ResolveLanguageModelOptions } from '@mcarvin/smart-diff';
8
+ export { LLM_GATEWAY_REQUIRED_MESSAGE, defaultModelForProvider, detectLlmProvider, isLlmProviderConfigured, parseLlmDefaultHeadersFromEnv, resolveLanguageModel, resolveLlmBaseUrl, } from '@mcarvin/smart-diff';
@@ -0,0 +1,2 @@
1
+ export { LLM_GATEWAY_REQUIRED_MESSAGE, defaultModelForProvider, detectLlmProvider, isLlmProviderConfigured, parseLlmDefaultHeadersFromEnv, resolveLanguageModel, resolveLlmBaseUrl, } from '@mcarvin/smart-diff';
2
+ //# sourceMappingURL=llmProviderConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llmProviderConfig.js","sourceRoot":"","sources":["../../src/ai/llmProviderConfig.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,6BAA6B,EAC7B,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
@@ -1,2 +1,2 @@
1
- /** System prompt for OpenAI when summarizing Salesforce metadata git changes. */
2
- export declare const SALESFORCE_METADATA_SYSTEM_PROMPT = "You are a senior Salesforce architect helping developers understand Salesforce metadata changes from the git context they supplied.\nYou receive: commit subject lines (when available), changed metadata paths, and unified git patch(es) scoped to Salesforce metadata package directories\u2014either 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\u2014do not infer changes beyond visible lines.\nExplain what functionality changed: user-visible behavior, automations, integrations, data model, and security/access. Tie claims to the patch when possible.\nProduce a concise, developer-focused summary in Markdown.\nUse sections: Highlights, Risky or breaking changes, Data model changes, Automation & flows, Security & access.\nGroup related changes; do not list every individual component or file. When multiple commits appear in the context, briefly separate notable themes by commit when helpful.";
1
+ /** System prompt used by the configured LLM provider when summarizing Salesforce metadata git changes. */
2
+ export declare const SALESFORCE_METADATA_SYSTEM_PROMPT = "You are a senior Salesforce architect helping developers understand Salesforce metadata changes from the git context they supplied.\nYou receive: commit subject lines (when available), changed metadata paths, and unified git patch(es) scoped to Salesforce metadata package directories\u2014either 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\u2014do not infer changes beyond visible lines.\nExplain what functionality changed: user-visible behavior, automations, integrations, data model, and security/access. Tie claims to the patch when possible.\nProduce a concise, developer-focused summary in Markdown.\nBegin the output with the exact top-level heading \"# Metadata Change Summary\" (or \"# <Team> \u2013 Metadata Change Summary\" when the user message contains a Team line) and no content above it.\nUse sections: Highlights, Risky or breaking changes, Data model changes, Automation & flows, Security & access.\nGroup related changes; do not list every individual component or file. When multiple commits appear in the context, briefly separate notable themes by commit when helpful.";
@@ -1,8 +1,9 @@
1
- /** System prompt for OpenAI when summarizing Salesforce metadata git changes. */
1
+ /** System prompt used by the configured LLM provider when summarizing Salesforce metadata git changes. */
2
2
  export const SALESFORCE_METADATA_SYSTEM_PROMPT = `You are a senior Salesforce architect helping developers understand Salesforce metadata changes from the git context they supplied.
3
3
  You receive: commit subject lines (when available), changed metadata paths, and unified git patch(es) scoped to Salesforce metadata package directories—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.
4
4
  Explain what functionality changed: user-visible behavior, automations, integrations, data model, and security/access. Tie claims to the patch when possible.
5
5
  Produce a concise, developer-focused summary in Markdown.
6
+ Begin the output with the exact top-level heading "# Metadata Change Summary" (or "# <Team> – Metadata Change Summary" when the user message contains a Team line) and no content above it.
6
7
  Use sections: Highlights, Risky or breaking changes, Data model changes, Automation & flows, Security & access.
7
8
  Group related changes; do not list every individual component or file. When multiple commits appear in the context, briefly separate notable themes by commit when helpful.`;
8
9
  //# sourceMappingURL=salesforceMetadataPrompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"salesforceMetadataPrompt.js","sourceRoot":"","sources":["../../src/ai/salesforceMetadataPrompt.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,CAAC,MAAM,iCAAiC,GAAG;;;;;4KAK2H,CAAC"}
1
+ {"version":3,"file":"salesforceMetadataPrompt.js","sourceRoot":"","sources":["../../src/ai/salesforceMetadataPrompt.ts"],"names":[],"mappings":"AAAA,0GAA0G;AAC1G,MAAM,CAAC,MAAM,iCAAiC,GAAG;;;;;;4KAM2H,CAAC"}
@@ -15,7 +15,7 @@ export default class SgaiMetadataSummarize extends SfCommand<SgaiMetadataSummari
15
15
  'exclude-package-directory': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
16
  team: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
17
  output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
18
- model: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
18
+ model: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
19
  'max-diff-chars': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
20
  };
21
21
  run(): Promise<SgaiMetadataSummarizeResult>;
@@ -1,7 +1,7 @@
1
1
  import { writeFile } from 'node:fs/promises';
2
2
  import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
3
3
  import { Messages, SfError } from '@salesforce/core';
4
- import { createGitClient, filterCommitsByMessageRegexes, getCommits, LLM_GATEWAY_REQUIRED_MESSAGE, shouldUseLlmGateway, summarizeGitDiff, } from '@mcarvin/smart-diff';
4
+ import { createGitClient, filterCommitsByMessageRegexes, getCommits, isLlmProviderConfigured, LLM_GATEWAY_REQUIRED_MESSAGE, summarizeGitDiff, } from '@mcarvin/smart-diff';
5
5
  import { SALESFORCE_METADATA_SYSTEM_PROMPT } from '../../../ai/salesforceMetadataPrompt.js';
6
6
  import { resolveMetadataSummaryTeam } from '../../../salesforce/metadataSummaryContext.js';
7
7
  import { getSalesforceMetadataIncludeFolders, normalizeRepoRelativeFolderPath, } from '../../../salesforce/sfdxPackagePaths.js';
@@ -145,7 +145,6 @@ export default class SgaiMetadataSummarize extends SfCommand {
145
145
  summary: messages.getMessage('flags.model.summary'),
146
146
  description: messages.getMessage('flags.model.description'),
147
147
  required: false,
148
- default: 'gpt-4o-mini',
149
148
  }),
150
149
  'max-diff-chars': Flags.integer({
151
150
  summary: messages.getMessage('flags.max-diff-chars.summary'),
@@ -156,8 +155,8 @@ export default class SgaiMetadataSummarize extends SfCommand {
156
155
  async run() {
157
156
  const { flags } = await this.parse(SgaiMetadataSummarize);
158
157
  validateMaxDiffCharsRange(flags['max-diff-chars']);
159
- if (!shouldUseLlmGateway()) {
160
- throw new SfError(LLM_GATEWAY_REQUIRED_MESSAGE, 'NoLlmGateway');
158
+ if (!isLlmProviderConfigured()) {
159
+ throw new SfError(LLM_GATEWAY_REQUIRED_MESSAGE, 'NoLlmProvider');
161
160
  }
162
161
  const from = flags.from;
163
162
  const to = flags.to ?? 'HEAD';
@@ -1 +1 @@
1
- {"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../../src/commands/sgai/metadata/summarize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,UAAU,EACV,4BAA4B,EAC5B,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAEL,mCAAmC,EACnC,+BAA+B,GAChC,MAAM,yCAAyC,CAAC;AAEjD,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC;AAE7F,SAAS,yBAAyB,CAAC,YAAgC;IACjE,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO;IACvC,IAAI,YAAY,GAAG,IAAI,IAAI,YAAY,GAAG,SAAS,EAAE,CAAC;QACpD,MAAM,IAAI,OAAO,CACf,iEAAiE,YAAY,IAAI,EACjF,qBAAqB,CACtB,CAAC;IACJ,CAAC;AACH,CAAC;AAOD,SAAS,mCAAmC,CAAC,KAA8B;IAIzE,MAAM,OAAO,GAAG,kBAAkB,CAChC,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CACzF,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,4BAA4B,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,4BAA4B,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAOD,KAAK,UAAU,+BAA+B,CAC5C,GAAc,EACd,KAA4B;IAE5B,MAAM,yBAAyB,GAAG,4BAA4B,CAAC,KAAK,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC,CAAC;IACzG,MAAM,yBAAyB,GAAG,MAAM,mCAAmC,CACzE,GAAG,EACH,yBAAyB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAC7E,CAAC;IACF,MAAM,qBAAqB,GAAG,4BAA4B,CAAC,KAAK,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC,CAAC;IACrG,MAAM,cAAc,GAAG,4BAA4B,CAAC,yBAAyB,EAAE,qBAAqB,CAAC,CAAC;IACtG,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,kCAAkC,CACzC,OAAqB,EACrB,eAA6B,EAC7B,cAAwB,EACxB,cAAwB,EACxB,IAAY,EACZ,EAAU;IAEV,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QACnH,MAAM,IAAI,OAAO,CACf,QAAQ,CAAC,UAAU,CAAC,6BAA6B,EAAE;YACjD,IAAI;YACJ,EAAE;YACF,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;SAC/B,CAAC,EACF,sBAAsB,CACvB,CAAC;IACJ,CAAC;AACH,CAAC;AAMD,SAAS,4BAA4B,CAAC,QAAkB,EAAE,IAA2B;IACnF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,6BAA6B,CAC3B,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAC7B,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1C,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,MAAM,GACV,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,wCAAwC,CAAC;YAC3G,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,OAAO,CACf,0BAA0B,IAAI,wBAAwB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAC/E,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,CACvE,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAG,MAAkB;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS;YAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,4BAA4B,CAAC,GAAG,MAAkB;IACzD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,+BAA+B,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YAClD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,SAAsC;IAChF,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAE5D,MAAM,CAAU,KAAK,GAAG;QAC7B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC;YAClD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC;YAC1D,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC;YACf,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,kBAAkB,CAAC;YAChD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC;YACxD,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC;YACrC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,sCAAsC,CAAC;YACpE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,0CAA0C,CAAC;YAC5E,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC;YACrC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,sCAAsC,CAAC;YACpE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,0CAA0C,CAAC;YAC5E,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,2BAA2B,EAAE,KAAK,CAAC,MAAM,CAAC;YACxC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,yCAAyC,CAAC;YACvE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,6CAA6C,CAAC;YAC/E,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,2BAA2B,EAAE,KAAK,CAAC,MAAM,CAAC;YACxC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,yCAAyC,CAAC;YACvE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,6CAA6C,CAAC;YAC/E,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC;YAClD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC;YAC1D,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC;YACpD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YAC5D,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,qBAAqB;SAC/B,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC;YACnD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,yBAAyB,CAAC;YAC3D,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,aAAa;SACvB,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC9B,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,8BAA8B,CAAC;YAC5D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,kCAAkC,CAAC;YACpE,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAE1D,yBAAyB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEnD,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,OAAO,CAAC,4BAA4B,EAAE,cAAc,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,MAAM,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,qBAAqB,CAAC;QACzD,MAAM,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,4BAA4B,EAAE,GACnF,mCAAmC,CAAC,KAAK,CAAC,CAAC;QAE7C,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,MAAM,EAAE,cAAc,EAAE,yBAAyB,EAAE,GAAG,MAAM,+BAA+B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAExG,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,6BAA6B,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAChG,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,eAAe,GAAG,6BAA6B,CACnD,OAAO,EACP,2BAA2B,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,SAAS,EAChF,4BAA4B,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,SAAS,CACnF,CAAC;QAEF,kCAAkC,CAChC,OAAO,EACP,eAAe,EACf,2BAA2B,EAC3B,4BAA4B,EAC5B,IAAI,EACJ,EAAE,CACH,CAAC;QAEF,MAAM,QAAQ,GAAG,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExD,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC;YACrC,IAAI;YACJ,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,GAAG;YACH,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,cAAc;YACd,cAAc,EAAE,yBAAyB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS;YAC5F,YAAY,EAAE,iCAAiC;YAC/C,QAAQ;YACR,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,YAAY,EAAE,gBAAgB;YAC9B,2BAA2B,EAAE,2BAA2B,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,SAAS;YAC7G,2BAA2B,EAAE,4BAA4B,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,SAAS;SAChH,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;QAExD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC"}
1
+ {"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../../src/commands/sgai/metadata/summarize.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ Generate an AI-powered summary of changed Salesforce metadata from a git diff.
4
4
 
5
5
  # description
6
6
 
7
- Summarize metadata changes between two Git refs using a configured OpenAI-compatible LLM (required—see environment variables below). Optionally filter commits by include/exclude message regexes, narrow paths with `--include-package-directory` / `--exclude-package-directory`, and write the model output to a markdown file.
7
+ Summarize metadata changes between two Git refs using any LLM provider supported by the Vercel AI SDK — OpenAI, Anthropic, Google Gemini, Amazon Bedrock, Mistral, Cohere, Groq, xAI, DeepSeek, or any OpenAI-compatible gateway. A configured provider (API key, base URL, and/or default headers) is required see the README for environment variables. Optionally filter commits by include/exclude message regexes, narrow paths with `--include-package-directory` / `--exclude-package-directory`, and write the model output to a markdown file.
8
8
 
9
9
  # errors.noPackageDirectories
10
10
 
@@ -68,7 +68,7 @@ Optional team or squad label for the summary.
68
68
 
69
69
  # flags.team.description
70
70
 
71
- When set, includes a team line in the OpenAI user prompt. If omitted, `METADATA_AUDIT_TEAM` or `SF_GIT_AI_TEAM` is used when set; otherwise no team is included.
71
+ When set, includes a team line in the LLM user prompt. If omitted, `METADATA_AUDIT_TEAM` or `SF_GIT_AI_TEAM` is used when set; otherwise no team is included.
72
72
 
73
73
  # flags.output.summary
74
74
 
@@ -80,11 +80,11 @@ The path to the markdown file where the AI summary is written. Defaults to metad
80
80
 
81
81
  # flags.model.summary
82
82
 
83
- OpenAI model used for the summary.
83
+ Chat model id used for the summary.
84
84
 
85
85
  # flags.model.description
86
86
 
87
- The OpenAI model to use when creating the AI-generated metadata summary.
87
+ Override the chat model used when creating the AI-generated metadata summary. Must be a model id supported by the resolved LLM provider (for example `gpt-4o` for OpenAI, `claude-3-5-sonnet-latest` for Anthropic, `gemini-2.0-flash` for Google). When omitted, the plugin uses `LLM_MODEL` if set, otherwise the resolved provider's default model.
88
88
 
89
89
  # flags.max-diff-chars.summary
90
90
 
package/oclif.lock CHANGED
@@ -2,6 +2,116 @@
2
2
  # yarn lockfile v1
3
3
 
4
4
 
5
+ "@ai-sdk/amazon-bedrock@^4.0.96":
6
+ version "4.0.96"
7
+ resolved "https://registry.yarnpkg.com/@ai-sdk/amazon-bedrock/-/amazon-bedrock-4.0.96.tgz#75e51a1b1a8e0d2e5d2f6c2643692ebf17d4f10c"
8
+ integrity sha512-Mc4Ias2jRMD1jOB6xWtKNPdhECeuCZyIlbr9EAGfBnyBt++sS13ziZh9qv9TdyMCAZJ7xoQcpbchoRJcKwPdpA==
9
+ dependencies:
10
+ "@ai-sdk/anthropic" "3.0.71"
11
+ "@ai-sdk/provider" "3.0.8"
12
+ "@ai-sdk/provider-utils" "4.0.23"
13
+ "@smithy/eventstream-codec" "^4.0.1"
14
+ "@smithy/util-utf8" "^4.0.0"
15
+ aws4fetch "^1.0.20"
16
+
17
+ "@ai-sdk/anthropic@3.0.71", "@ai-sdk/anthropic@^3.0.71":
18
+ version "3.0.71"
19
+ resolved "https://registry.yarnpkg.com/@ai-sdk/anthropic/-/anthropic-3.0.71.tgz#33eddbbd6aa6aea51156acbb4e2d15846e9a6389"
20
+ integrity sha512-bUWOzrzR0gJKJO/PLGMR4uH2dqEgqGhrsCV+sSpk4KtOEnUQlfjZI/F7BFlqSvVpFbjdgYRRLysAeEZpJ6S1lg==
21
+ dependencies:
22
+ "@ai-sdk/provider" "3.0.8"
23
+ "@ai-sdk/provider-utils" "4.0.23"
24
+
25
+ "@ai-sdk/cohere@^3.0.30":
26
+ version "3.0.30"
27
+ resolved "https://registry.yarnpkg.com/@ai-sdk/cohere/-/cohere-3.0.30.tgz#5ab9c8c4f995d0dba255df9322c04d4c154018d2"
28
+ integrity sha512-j3fe/6lUUkHPD/51OgMXN9UD7p1QSQEAlroIinmb3MhJ1s+O0MnqdRa30IM7dRHafNp0FQ9X4YpobY85iMknUQ==
29
+ dependencies:
30
+ "@ai-sdk/provider" "3.0.8"
31
+ "@ai-sdk/provider-utils" "4.0.23"
32
+
33
+ "@ai-sdk/deepseek@^2.0.29":
34
+ version "2.0.29"
35
+ resolved "https://registry.yarnpkg.com/@ai-sdk/deepseek/-/deepseek-2.0.29.tgz#f2a959d491e3a61390c9d47f1207f4af36a373a1"
36
+ integrity sha512-cn4+xV0menm/4JKEDElnVGiUilHvi6AD4ZK/sY7DXP/Wb7Yb3Vr86NyYM6mGBE/Shk3mWHoHbzggVnF5x0uMEA==
37
+ dependencies:
38
+ "@ai-sdk/provider" "3.0.8"
39
+ "@ai-sdk/provider-utils" "4.0.23"
40
+
41
+ "@ai-sdk/gateway@3.0.104":
42
+ version "3.0.104"
43
+ resolved "https://registry.yarnpkg.com/@ai-sdk/gateway/-/gateway-3.0.104.tgz#3ad45f88907f385544d416397a33e82f1efd0758"
44
+ integrity sha512-ZKX5n74io8VIRlhIMSLWVlvT3sXC8Z7cZ9GHuWBWZDVi96+62AIsWuLGvMfcBA1STYuSoDrp6rIziZmvrTq0TA==
45
+ dependencies:
46
+ "@ai-sdk/provider" "3.0.8"
47
+ "@ai-sdk/provider-utils" "4.0.23"
48
+ "@vercel/oidc" "3.2.0"
49
+
50
+ "@ai-sdk/google@^3.0.64":
51
+ version "3.0.64"
52
+ resolved "https://registry.yarnpkg.com/@ai-sdk/google/-/google-3.0.64.tgz#14dfadcf63aa66aa7f2d22b5012803814083551f"
53
+ integrity sha512-CbR82EgGPNrj/6q0HtclwuCqe0/pDShyv3nWDP/A9DroujzWXnLMlUJVrgPOsg4b40zQCwwVs2XSKCxvt/4QaA==
54
+ dependencies:
55
+ "@ai-sdk/provider" "3.0.8"
56
+ "@ai-sdk/provider-utils" "4.0.23"
57
+
58
+ "@ai-sdk/groq@^3.0.35":
59
+ version "3.0.35"
60
+ resolved "https://registry.yarnpkg.com/@ai-sdk/groq/-/groq-3.0.35.tgz#993d843ca09c3b5129deb9117ac05e6be5932b8c"
61
+ integrity sha512-LXoPwSKaqXst9LyLN2J7gK8n7RldQLbP2zsnBYxXcOsXKrtceksqtbsmGXujvab2TM9FisquAw/ZG2hTbD5vnQ==
62
+ dependencies:
63
+ "@ai-sdk/provider" "3.0.8"
64
+ "@ai-sdk/provider-utils" "4.0.23"
65
+
66
+ "@ai-sdk/mistral@^3.0.30":
67
+ version "3.0.30"
68
+ resolved "https://registry.yarnpkg.com/@ai-sdk/mistral/-/mistral-3.0.30.tgz#1645e9c5a2e2fa3cd62ed400c29827abf113c5e6"
69
+ integrity sha512-+j4IXRSk9E661cFSafmIr+XHOzwjFagawwzMOlSqwL6U4Sq4PCFLDF+oHbX5NUqNjUL7FD1zi/9lBIfa41pUvw==
70
+ dependencies:
71
+ "@ai-sdk/provider" "3.0.8"
72
+ "@ai-sdk/provider-utils" "4.0.23"
73
+
74
+ "@ai-sdk/openai-compatible@2.0.41", "@ai-sdk/openai-compatible@^2.0.41":
75
+ version "2.0.41"
76
+ resolved "https://registry.yarnpkg.com/@ai-sdk/openai-compatible/-/openai-compatible-2.0.41.tgz#1f8269e3670b61f1d583ae985856f66753be0847"
77
+ integrity sha512-kNAGINk71AlOXx10Dq/PXw4t/9XjdK8uxfpVElRwtSFMdeSiLVt58p9TPx4/FJD+hxZuVhvxYj9r42osxWq79g==
78
+ dependencies:
79
+ "@ai-sdk/provider" "3.0.8"
80
+ "@ai-sdk/provider-utils" "4.0.23"
81
+
82
+ "@ai-sdk/openai@^3.0.53":
83
+ version "3.0.53"
84
+ resolved "https://registry.yarnpkg.com/@ai-sdk/openai/-/openai-3.0.53.tgz#e2fde1f48eca955a259c4d8fbcc5a086b53ea504"
85
+ integrity sha512-Wld+Rbc05KaUn08uBt06eEuwcgalcIFtIl32Yp+GxuZXUQwOb6YeAuq+C6da4ch6BurFoqEaLemJVwjBb7x+PQ==
86
+ dependencies:
87
+ "@ai-sdk/provider" "3.0.8"
88
+ "@ai-sdk/provider-utils" "4.0.23"
89
+
90
+ "@ai-sdk/provider-utils@4.0.23":
91
+ version "4.0.23"
92
+ resolved "https://registry.yarnpkg.com/@ai-sdk/provider-utils/-/provider-utils-4.0.23.tgz#fa0e89d6756816d8a0015f556e0b20df6df14dfa"
93
+ integrity sha512-z8GlDaCmRSDlqkMF2f4/RFgWxdarvIbyuk+m6WXT1LYgsnGiXRJGTD2Z1+SDl3LqtFuRtGX1aghYvQLoHL/9pg==
94
+ dependencies:
95
+ "@ai-sdk/provider" "3.0.8"
96
+ "@standard-schema/spec" "^1.1.0"
97
+ eventsource-parser "^3.0.6"
98
+
99
+ "@ai-sdk/provider@3.0.8":
100
+ version "3.0.8"
101
+ resolved "https://registry.yarnpkg.com/@ai-sdk/provider/-/provider-3.0.8.tgz#fd7fac7533c03534ac1d3fb710a6b96e2aa00263"
102
+ integrity sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ==
103
+ dependencies:
104
+ json-schema "^0.4.0"
105
+
106
+ "@ai-sdk/xai@^3.0.83":
107
+ version "3.0.83"
108
+ resolved "https://registry.yarnpkg.com/@ai-sdk/xai/-/xai-3.0.83.tgz#7ebef403450edff1fabaff45dcfda53af943fbb3"
109
+ integrity sha512-SuQz68BZGeuZjrSUJAzku97IlhdiNJJBsvG/Tvm3K2tuxkBS7TJq0fH4/AzAM7w2H2jxVUgboP7kRR6IfpRxcg==
110
+ dependencies:
111
+ "@ai-sdk/openai-compatible" "2.0.41"
112
+ "@ai-sdk/provider" "3.0.8"
113
+ "@ai-sdk/provider-utils" "4.0.23"
114
+
5
115
  "@alcalzone/ansi-tokenize@^0.1.3":
6
116
  version "0.1.3"
7
117
  resolved "https://registry.npmjs.org/@alcalzone/ansi-tokenize/-/ansi-tokenize-0.1.3.tgz"
@@ -1649,15 +1759,26 @@
1649
1759
  resolved "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz"
1650
1760
  integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==
1651
1761
 
1652
- "@mcarvin/smart-diff@1.1.0":
1653
- version "1.1.0"
1654
- resolved "https://registry.yarnpkg.com/@mcarvin/smart-diff/-/smart-diff-1.1.0.tgz#9d44563d10ccd849c2fa9f604bcb432247cc9ecb"
1655
- integrity sha512-YVF5QQU7whI2QXUYiz3HH8XVIRbxKbIg2yMs79TZLyKZF/+Jt4frTgj/hzsrQsBdxOdNPnvQyc1ChFjBPpF+nA==
1762
+ "@mcarvin/smart-diff@^2.0.0":
1763
+ version "2.0.0"
1764
+ resolved "https://registry.yarnpkg.com/@mcarvin/smart-diff/-/smart-diff-2.0.0.tgz#e7d8a6d1e349199238feb0c81da4f20e105aa972"
1765
+ integrity sha512-I1vTfEmAw7dwHNZXylWth5DKMdxMCjs8BB0SmBBuDOPw9QTTP8QvyDrSSB8+8I0tlnlgdWhSuxfhpFTAWyaJ3g==
1656
1766
  dependencies:
1767
+ "@ai-sdk/openai" "^3.0.53"
1768
+ "@ai-sdk/openai-compatible" "^2.0.41"
1769
+ ai "^6.0.168"
1657
1770
  fs-extra "^11.3.4"
1658
- openai "^6.34.0"
1659
1771
  simple-git "^3.20.0"
1660
1772
  tslib "^2.6.2"
1773
+ optionalDependencies:
1774
+ "@ai-sdk/amazon-bedrock" "^4.0.96"
1775
+ "@ai-sdk/anthropic" "^3.0.71"
1776
+ "@ai-sdk/cohere" "^3.0.30"
1777
+ "@ai-sdk/deepseek" "^2.0.29"
1778
+ "@ai-sdk/google" "^3.0.64"
1779
+ "@ai-sdk/groq" "^3.0.35"
1780
+ "@ai-sdk/mistral" "^3.0.30"
1781
+ "@ai-sdk/xai" "^3.0.83"
1661
1782
 
1662
1783
  "@nodelib/fs.scandir@2.1.5":
1663
1784
  version "2.1.5"
@@ -1787,6 +1908,11 @@
1787
1908
  strip-ansi "^7.1.2"
1788
1909
  wrap-ansi "^9.0.2"
1789
1910
 
1911
+ "@opentelemetry/api@1.9.0":
1912
+ version "1.9.0"
1913
+ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe"
1914
+ integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==
1915
+
1790
1916
  "@pinojs/redact@^0.4.0":
1791
1917
  version "0.4.0"
1792
1918
  resolved "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz"
@@ -2133,6 +2259,16 @@
2133
2259
  "@smithy/url-parser" "^4.2.13"
2134
2260
  tslib "^2.6.2"
2135
2261
 
2262
+ "@smithy/eventstream-codec@^4.0.1":
2263
+ version "4.2.14"
2264
+ resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-4.2.14.tgz#4963ca27242b80c5b1d11dcd3ea1bee2a3c5f96d"
2265
+ integrity sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw==
2266
+ dependencies:
2267
+ "@aws-crypto/crc32" "5.2.0"
2268
+ "@smithy/types" "^4.14.1"
2269
+ "@smithy/util-hex-encoding" "^4.2.2"
2270
+ tslib "^2.6.2"
2271
+
2136
2272
  "@smithy/eventstream-codec@^4.2.13":
2137
2273
  version "4.2.13"
2138
2274
  resolved "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.13.tgz"
@@ -2408,6 +2544,13 @@
2408
2544
  dependencies:
2409
2545
  tslib "^2.6.2"
2410
2546
 
2547
+ "@smithy/types@^4.14.1":
2548
+ version "4.14.1"
2549
+ resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.14.1.tgz#aba92b4cdb406f2a2b062e82f1e3728d809a7c23"
2550
+ integrity sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==
2551
+ dependencies:
2552
+ tslib "^2.6.2"
2553
+
2411
2554
  "@smithy/url-parser@^4.2.12", "@smithy/url-parser@^4.2.13":
2412
2555
  version "4.2.13"
2413
2556
  resolved "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.13.tgz"
@@ -2548,7 +2691,7 @@
2548
2691
  "@smithy/util-buffer-from" "^2.2.0"
2549
2692
  tslib "^2.6.2"
2550
2693
 
2551
- "@smithy/util-utf8@^4.2.2":
2694
+ "@smithy/util-utf8@^4.0.0", "@smithy/util-utf8@^4.2.2":
2552
2695
  version "4.2.2"
2553
2696
  resolved "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz"
2554
2697
  integrity sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==
@@ -2571,6 +2714,11 @@
2571
2714
  dependencies:
2572
2715
  tslib "^2.6.2"
2573
2716
 
2717
+ "@standard-schema/spec@^1.1.0":
2718
+ version "1.1.0"
2719
+ resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8"
2720
+ integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==
2721
+
2574
2722
  "@szmarczak/http-timer@^5.0.1":
2575
2723
  version "5.0.1"
2576
2724
  resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz"
@@ -2948,6 +3096,11 @@
2948
3096
  resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz"
2949
3097
  integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==
2950
3098
 
3099
+ "@vercel/oidc@3.2.0":
3100
+ version "3.2.0"
3101
+ resolved "https://registry.yarnpkg.com/@vercel/oidc/-/oidc-3.2.0.tgz#5782a4d4904443f015808705b5537cf9c3b68528"
3102
+ integrity sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug==
3103
+
2951
3104
  JSONStream@^1.3.5:
2952
3105
  version "1.3.5"
2953
3106
  resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz"
@@ -3000,6 +3153,16 @@ aggregate-error@^3.0.0:
3000
3153
  clean-stack "^2.0.0"
3001
3154
  indent-string "^4.0.0"
3002
3155
 
3156
+ ai@^6.0.168:
3157
+ version "6.0.168"
3158
+ resolved "https://registry.yarnpkg.com/ai/-/ai-6.0.168.tgz#314a8622481c3dbceaef4d911a1c132df59dc1ef"
3159
+ integrity sha512-2HqCJuO+1V2aV7vfYs5LFEUfxbkGX+5oa54q/gCCTL7KLTdbxcCu5D7TdLA5kwsrs3Szgjah9q6D9tpjHM3hUQ==
3160
+ dependencies:
3161
+ "@ai-sdk/gateway" "3.0.104"
3162
+ "@ai-sdk/provider" "3.0.8"
3163
+ "@ai-sdk/provider-utils" "4.0.23"
3164
+ "@opentelemetry/api" "1.9.0"
3165
+
3003
3166
  ajv@^6.12.4:
3004
3167
  version "6.14.0"
3005
3168
  resolved "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz"
@@ -3252,6 +3415,11 @@ available-typed-arrays@^1.0.7:
3252
3415
  dependencies:
3253
3416
  possible-typed-array-names "^1.0.0"
3254
3417
 
3418
+ aws4fetch@^1.0.20:
3419
+ version "1.0.20"
3420
+ resolved "https://registry.yarnpkg.com/aws4fetch/-/aws4fetch-1.0.20.tgz#090d6c65e32c6df645dd5e5acf04cc56da575cbe"
3421
+ integrity sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==
3422
+
3255
3423
  babel-jest@^29.7.0:
3256
3424
  version "29.7.0"
3257
3425
  resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz"
@@ -4660,6 +4828,11 @@ events@^3.3.0:
4660
4828
  resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz"
4661
4829
  integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
4662
4830
 
4831
+ eventsource-parser@^3.0.6:
4832
+ version "3.0.8"
4833
+ resolved "https://registry.yarnpkg.com/eventsource-parser/-/eventsource-parser-3.0.8.tgz#1c792503e4080455d00701bb1f7a1d60734d0e58"
4834
+ integrity sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ==
4835
+
4663
4836
  execa@^1.0.0:
4664
4837
  version "1.0.0"
4665
4838
  resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz"
@@ -6436,6 +6609,11 @@ json-schema-traverse@^1.0.0:
6436
6609
  resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz"
6437
6610
  integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
6438
6611
 
6612
+ json-schema@^0.4.0:
6613
+ version "0.4.0"
6614
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5"
6615
+ integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
6616
+
6439
6617
  json-stable-stringify-without-jsonify@^1.0.1:
6440
6618
  version "1.0.1"
6441
6619
  resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
@@ -7417,11 +7595,6 @@ oniguruma-to-es@^2.2.0:
7417
7595
  regex "^5.1.1"
7418
7596
  regex-recursion "^5.1.1"
7419
7597
 
7420
- openai@^6.34.0:
7421
- version "6.34.0"
7422
- resolved "https://registry.yarnpkg.com/openai/-/openai-6.34.0.tgz#93483a1044e2dcd62891bba580772b9cb792395d"
7423
- integrity sha512-yEr2jdGf4tVFYG6ohmr3pF6VJuveP0EA/sS8TBx+4Eq5NT10alu5zg2dmxMXMgqpihRDQlFGpRt2XwsGj+Fyxw==
7424
-
7425
7598
  optionator@^0.9.3:
7426
7599
  version "0.9.4"
7427
7600
  resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz"
@@ -8647,16 +8820,7 @@ string-length@^4.0.1:
8647
8820
  char-regex "^1.0.2"
8648
8821
  strip-ansi "^6.0.0"
8649
8822
 
8650
- "string-width-cjs@npm:string-width@^4.2.0":
8651
- version "4.2.3"
8652
- resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
8653
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
8654
- dependencies:
8655
- emoji-regex "^8.0.0"
8656
- is-fullwidth-code-point "^3.0.0"
8657
- strip-ansi "^6.0.1"
8658
-
8659
- string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
8823
+ "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
8660
8824
  version "4.2.3"
8661
8825
  resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
8662
8826
  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -8737,14 +8901,7 @@ stringify-entities@^4.0.0:
8737
8901
  character-entities-html4 "^2.0.0"
8738
8902
  character-entities-legacy "^3.0.0"
8739
8903
 
8740
- "strip-ansi-cjs@npm:strip-ansi@^6.0.1":
8741
- version "6.0.1"
8742
- resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
8743
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
8744
- dependencies:
8745
- ansi-regex "^5.0.1"
8746
-
8747
- strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1:
8904
+ "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1:
8748
8905
  version "6.0.1"
8749
8906
  resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
8750
8907
  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -9467,7 +9624,7 @@ workerpool@^9.2.0:
9467
9624
  resolved "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz"
9468
9625
  integrity sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==
9469
9626
 
9470
- "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
9627
+ "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
9471
9628
  version "7.0.0"
9472
9629
  resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
9473
9630
  integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -9485,15 +9642,6 @@ wrap-ansi@^6.2.0:
9485
9642
  string-width "^4.1.0"
9486
9643
  strip-ansi "^6.0.0"
9487
9644
 
9488
- wrap-ansi@^7.0.0:
9489
- version "7.0.0"
9490
- resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
9491
- integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
9492
- dependencies:
9493
- ansi-styles "^4.0.0"
9494
- string-width "^4.1.0"
9495
- strip-ansi "^6.0.0"
9496
-
9497
9645
  wrap-ansi@^8.1.0:
9498
9646
  version "8.1.0"
9499
9647
  resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz"
@@ -9674,7 +9822,7 @@ yoga-wasm-web@~0.3.3:
9674
9822
  resolved "https://registry.npmjs.org/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz"
9675
9823
  integrity sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==
9676
9824
 
9677
- zod@^4.1.12:
9825
+ zod@^4.1.12, zod@^4.1.8:
9678
9826
  version "4.3.6"
9679
9827
  resolved "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz"
9680
9828
  integrity sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==
@@ -3,7 +3,7 @@
3
3
  "sgai:metadata:summarize": {
4
4
  "aliases": [],
5
5
  "args": {},
6
- "description": "Summarize metadata changes between two Git refs using a configured OpenAI-compatible LLM (required—see environment variables below). Optionally filter commits by include/exclude message regexes, narrow paths with `--include-package-directory` / `--exclude-package-directory`, and write the model output to a markdown file.",
6
+ "description": "Summarize metadata changes between two Git refs using any LLM provider supported by the Vercel AI SDK — OpenAI, Anthropic, Google Gemini, Amazon Bedrock, Mistral, Cohere, Groq, xAI, DeepSeek, or any OpenAI-compatible gateway. A configured provider (API key, base URL, and/or default headers) is required see the README for environment variables. Optionally filter commits by include/exclude message regexes, narrow paths with `--include-package-directory` / `--exclude-package-directory`, and write the model output to a markdown file.",
7
7
  "examples": [
8
8
  "<%= config.bin %> <%= command.id %> --from HEAD~5 --to HEAD --commit-message-include \"(feature|fix)\" --output changes.md",
9
9
  "<%= config.bin %> <%= command.id %> --from HEAD~5 --to HEAD --commit-message-include \"feat\" --commit-message-exclude \"wip\" --exclude-package-directory force-app/main/default/lwc/temp",
@@ -87,7 +87,7 @@
87
87
  "type": "option"
88
88
  },
89
89
  "team": {
90
- "description": "When set, includes a team line in the OpenAI user prompt. If omitted, `METADATA_AUDIT_TEAM` or `SF_GIT_AI_TEAM` is used when set; otherwise no team is included.",
90
+ "description": "When set, includes a team line in the LLM user prompt. If omitted, `METADATA_AUDIT_TEAM` or `SF_GIT_AI_TEAM` is used when set; otherwise no team is included.",
91
91
  "name": "team",
92
92
  "required": false,
93
93
  "summary": "Optional team or squad label for the summary.",
@@ -107,11 +107,10 @@
107
107
  "type": "option"
108
108
  },
109
109
  "model": {
110
- "description": "The OpenAI model to use when creating the AI-generated metadata summary.",
110
+ "description": "Override the chat model used when creating the AI-generated metadata summary. Must be a model id supported by the resolved LLM provider (for example `gpt-4o` for OpenAI, `claude-3-5-sonnet-latest` for Anthropic, `gemini-2.0-flash` for Google). When omitted, the plugin uses `LLM_MODEL` if set, otherwise the resolved provider's default model.",
111
111
  "name": "model",
112
112
  "required": false,
113
- "summary": "OpenAI model used for the summary.",
114
- "default": "gpt-4o-mini",
113
+ "summary": "Chat model id used for the summary.",
115
114
  "hasDynamicHelp": false,
116
115
  "multiple": false,
117
116
  "type": "option"
@@ -154,5 +153,5 @@
154
153
  ]
155
154
  }
156
155
  },
157
- "version": "2.1.0"
156
+ "version": "2.2.0"
158
157
  }
package/package.json CHANGED
@@ -1,12 +1,21 @@
1
1
  {
2
2
  "name": "sf-git-ai-meta-insights",
3
3
  "description": "Provide AI-generated summaries on Salesforce metadata changes by analyzing the git diff.",
4
- "version": "2.1.0",
4
+ "version": "2.2.0",
5
5
  "dependencies": {
6
- "@mcarvin/smart-diff": "1.1.0",
6
+ "@ai-sdk/amazon-bedrock": "^4.0.96",
7
+ "@ai-sdk/anthropic": "^3.0.71",
8
+ "@ai-sdk/cohere": "^3.0.30",
9
+ "@ai-sdk/deepseek": "^2.0.29",
10
+ "@ai-sdk/google": "^3.0.64",
11
+ "@ai-sdk/groq": "^3.0.35",
12
+ "@ai-sdk/mistral": "^3.0.30",
13
+ "@ai-sdk/xai": "^3.0.83",
14
+ "@mcarvin/smart-diff": "^2.0.0",
7
15
  "@oclif/core": "^4",
8
16
  "@salesforce/core": "^8",
9
- "@salesforce/sf-plugins-core": "^12"
17
+ "@salesforce/sf-plugins-core": "^12",
18
+ "zod": "^4.1.8"
10
19
  },
11
20
  "devDependencies": {
12
21
  "@jest/globals": "^29.7.0",
@@ -1,5 +0,0 @@
1
- /**
2
- * OpenAI-compatible LLM gateways — re-exported from `@mcarvin/smart-diff` so this plugin shares one implementation.
3
- */
4
- export type { OpenAiLikeClient, OpenAiLikeClientInit } from '@mcarvin/smart-diff';
5
- export { createOpenAiLikeClient, LLM_GATEWAY_REQUIRED_MESSAGE, parseLlmDefaultHeadersFromEnv, resolveLlmBaseUrl, resolveOpenAiLikeClientInit, shouldUseLlmGateway, splitPromotableAuthorizationFromHeaders, } from '@mcarvin/smart-diff';
@@ -1,2 +0,0 @@
1
- export { createOpenAiLikeClient, LLM_GATEWAY_REQUIRED_MESSAGE, parseLlmDefaultHeadersFromEnv, resolveLlmBaseUrl, resolveOpenAiLikeClientInit, shouldUseLlmGateway, splitPromotableAuthorizationFromHeaders, } from '@mcarvin/smart-diff';
2
- //# sourceMappingURL=openAiConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openAiConfig.js","sourceRoot":"","sources":["../../src/ai/openAiConfig.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,6BAA6B,EAC7B,iBAAiB,EACjB,2BAA2B,EAC3B,mBAAmB,EACnB,uCAAuC,GACxC,MAAM,qBAAqB,CAAC"}