release-note 0.0.1 → 0.0.2
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/dist/generate-CsLUDr-g.mjs.map +1 -1
- package/dist/index.d.mts +21 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-CsLUDr-g.mjs","names":["z"],"sources":["../src/constants/providers.ts","../src/config/config-schema.ts","../src/config/resolve-config.ts","../src/lib/git.ts","../src/generate/prompt.ts","../src/generate/tools.ts","../src/generate/index.ts"],"sourcesContent":["type ProviderRecord = Record<string, { create: string }>\n\nexport const SUPPORTED_PROVIDERS = {\n '@ai-sdk/openai': { create: 'createOpenAI' },\n '@ai-sdk/openai-compatible': { create: 'createOpenAICompatible' },\n '@ai-sdk/anthropic': { create: 'createAnthropic' },\n '@ai-sdk/google': { create: 'createGoogleGenerativeAI' },\n '@ai-sdk/xai': { create: 'createXai' },\n '@ai-sdk/azure': { create: 'createAzure' },\n '@ai-sdk/amazon-bedrock': { create: 'createAmazonBedrock' },\n '@ai-sdk/groq': { create: 'createGroq' },\n '@ai-sdk/fal': { create: 'createFal' },\n '@ai-sdk/deepinfra': { create: 'createDeepInfra' },\n '@ai-sdk/google-vertex': { create: 'createVertex' },\n '@ai-sdk/mistral': { create: 'createMistral' },\n '@ai-sdk/togetherai': { create: 'createTogetherAI' },\n '@ai-sdk/cohere': { create: 'createCohere' },\n '@ai-sdk/fireworks': { create: 'createFireworks' },\n '@ai-sdk/deepseek': { create: 'createDeepSeek' },\n '@ai-sdk/cerebras': { create: 'createCerebras' },\n '@ai-sdk/perplexity': { create: 'createPerplexity' },\n '@ai-sdk/luma': { create: 'createLuma' },\n '@ai-sdk/baseten': { create: 'createBaseten' },\n '@openrouter/ai-sdk-provider': { create: 'createOpenRouter' },\n} as const satisfies ProviderRecord\n","import { SUPPORTED_PROVIDERS } from '@/constants/providers.js'\nimport { z } from 'zod'\n\nexport const gitCommitTargetSchema = z.union([\n z.object({ tag: z.string().describe('Git tag regex') }),\n z.object({ commit: z.string().describe('Git commit hash') }),\n])\n\nexport const providerOptionsSchema = z.object({\n apiUrl: z.string().optional(),\n apiKeyEnv: z.union([z.string(), z.array(z.string())]).optional(),\n\n provider: z\n .enum(Object.keys(SUPPORTED_PROVIDERS))\n .default('@ai-sdk/openai-compatible'),\n\n headers: z.record(z.string(), z.string()).optional(),\n options: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const generateConfigSchema = z\n .object({\n match: gitCommitTargetSchema.default({ tag: '.*' }),\n model: z.string().min(1),\n steps: z.number().int().positive().optional(),\n })\n .extend(providerOptionsSchema.shape)\n","import { Provider } from 'ai'\nimport chalk from 'chalk'\nimport fs from 'fs'\nimport { parse } from 'jsonc-parser'\nimport path from 'path'\nimport z from 'zod'\nimport { generateConfigSchema, providerOptionsSchema } from './config-schema.js'\n\nconst CONFIG_PATHS = [\n 'release-note.json',\n 'release-note.jsonc',\n '.github/release-note.json',\n '.github/release-note.jsonc',\n]\n\nexport async function resolveConfig(\n cwd: string,\n configPaths: string[] = CONFIG_PATHS\n) {\n for (const configPath of configPaths) {\n const fullPath = path.join(cwd, configPath)\n\n if (fs.existsSync(fullPath)) {\n console.log(chalk.green(`Using config file: ${fullPath}`))\n\n try {\n const configContent = await fs.promises.readFile(fullPath, 'utf8')\n return generateConfigSchema.parse(parse(configContent))\n } catch {\n console.error(chalk.red(`Error parsing config file: ${fullPath}`))\n throw new Error(`Invalid config file: ${fullPath}`)\n }\n }\n }\n\n return generateConfigSchema.parse({})\n}\n\nconst PROVIDERS_FACTORY: Record<string, { create: string }> = {\n '@ai-sdk/openai': { create: 'createOpenAI' },\n '@ai-sdk/anthropic': { create: 'createAnthropic' },\n '@openrouter/ai-sdk-provider': { create: 'createOpenRouter' },\n}\n\nfunction resolveApiKey(\n vars: string | string[] | undefined\n): string | undefined {\n let resolvedApiKey: string | undefined\n\n const apiKeyEnvVars = typeof vars === 'string' ? [vars] : (vars ?? [])\n\n for (const envVar of apiKeyEnvVars) {\n resolvedApiKey = process.env[envVar]\n break\n }\n\n return resolvedApiKey\n}\n\nexport async function resolveProvider(\n name: string,\n options: z.infer<typeof providerOptionsSchema>\n): Promise<Provider['languageModel'] | null> {\n const resolvedApiKey = resolveApiKey(options.apiKeyEnv)\n\n if (name === '@ai-sdk/openai-compatible') {\n if (!options.apiUrl) {\n throw new Error('\"\"apiUrl\"\" is required for openai-compatible provider')\n }\n\n if (!resolvedApiKey) {\n throw new Error('No API key found in the specified environment variables')\n }\n\n const { createOpenAICompatible } = await import('@ai-sdk/openai-compatible')\n return createOpenAICompatible({\n name,\n apiKey: resolvedApiKey,\n baseURL: options?.apiUrl,\n headers: options?.headers,\n ...options?.options,\n })\n }\n\n const provider = PROVIDERS_FACTORY[name]\n if (provider) {\n const mod = await import(name)\n return mod[provider.create]({\n apiKey: resolvedApiKey,\n baseURL: options?.apiUrl,\n headers: options?.headers,\n ...options?.options,\n })\n }\n\n return null\n}\n","import { gitCommitTargetSchema } from '@/config/config-schema.js'\nimport { objectPick, Prettify } from 'daily-code'\nimport { DefaultLogFields, type SimpleGit } from 'simple-git'\nimport z from 'zod'\n\nexport type GitCommitInfo = Prettify<\n Pick<\n DefaultLogFields,\n 'hash' | 'date' | 'message' | 'author_name' | 'author_email'\n >\n>\n\nasync function getGitCommitHash(\n git: SimpleGit,\n target: z.infer<typeof gitCommitTargetSchema>,\n offset = 0\n): Promise<string> {\n if ('tag' in target) {\n const regex = new RegExp(target.tag)\n const { all: tags } = await git.tags({ '--sort': '-v:refname' })\n const matched = tags.filter((tag) => regex.test(tag))\n if (matched.length === 0) {\n throw new Error(`No tags matched pattern: ${target.tag}`)\n }\n\n if (offset < 0 || offset >= matched.length) {\n throw new Error(\n `Offset ${offset} out of range: only ${matched.length} tag(s) matched pattern ${target.tag}`\n )\n }\n\n const tag = matched[offset]\n const hash = await git.revparse([tag])\n return hash.trim()\n }\n\n if ('commit' in target) {\n const hash = await git.revparse([target.commit])\n return hash.trim()\n }\n\n throw new Error('Invalid target: must contain either \"tag\" or \"commit\"')\n}\n\nexport async function getGitCommitsInfo(\n git: SimpleGit,\n match: z.infer<typeof gitCommitTargetSchema>\n): Promise<GitCommitInfo[]> {\n const latest = await getGitCommitHash(git, match, 1)\n const current = await getGitCommitHash(git, match, 0)\n const log = await git.log({ from: latest, to: current })\n return [...log.all].map((c) =>\n objectPick(c, ['hash', 'date', 'message', 'author_name', 'author_email'])\n )\n}\n","import { GitCommitInfo } from '@/lib/git.js'\n\nexport function buildSystemPrompt(maxTools: number) {\n return `You are a helpful assistant for generating release notes based on git commit history.\nThe release notes should be concise, informative, and highlight the key changes, new features, bug fixes, and any important information that users should be aware of. The release note should be well-structured and easy to read. You are allowed to use up to ${maxTools} tools to gather necessary information from the git repository to generate accurate and comprehensive release notes.\n\n**Target audience**: end users, product managers, and non-technical stakeholders. Write the release note for them, not for engineers reviewing the implementation.\n\n## Guidelines:\n- Summarize the key changes in a clear and concise manner, focusing on user-facing impact.\n- Describe WHAT changed for the user and WHY it matters, not HOW it is implemented internally.\n- DO NOT reveal internal implementation details. This includes but is not limited to: source code, code snippets, internal file names, internal file paths, class names, function names, variable names, API route paths, database table names, configuration keys, or any other internal identifiers.\n- DO NOT include sensitive information such as credentials, secrets, tokens, internal URLs, private endpoints, or environment-specific values.\n- Skip trivial changes that do not impact users (e.g., minor refactoring, file renames, formatting changes, internal tooling, dependency bumps with no user-visible effect).\n- Use plain language that can be easily understood by a wide audience, including non-technical stakeholders. Avoid technical jargon, library/framework names, and implementation-specific terminology unless absolutely necessary.\n\n\n## Output format:\n- Group related changes together under appropriate headings (e.g., \"New Features\", \"Bug Fixes\", \"Improvements\", \"Breaking Changes\").\n- Use bullet points to list individual changes for better readability.\n- If there are breaking changes, clearly indicate them in a separate section and provide guidance on how to adapt to these changes from a user perspective.\n- DO NOT use a top-level title to wrap the content as \"Release Note\"; just directly write the sections.\n- DO NOT use --- to separate sections, use ## for headings instead.\n- Output ONLY the release note content, with no preamble, explanation, or commentary.\n`\n}\n\nexport function buildUserPrompt(commits: GitCommitInfo[]) {\n const commitsList = commits.map((c) =>\n [\n `- Commithash: ${c.hash}`,\n ` - Timestamp: ${c.date}`,\n ` - Author: ${c.author_name} <${c.author_email}>`,\n ` > ${c.message}`,\n ].join('\\n')\n )\n\n return `Here are the commits related to the release:\n${commitsList.join('\\n')}\n`\n}\n","import { tool, ToolSet } from 'ai'\nimport chalk from 'chalk'\nimport { SimpleGit } from 'simple-git'\nimport z from 'zod'\n\nfunction parseLsTree(output: string): string[] {\n return output\n .split('\\n')\n .filter((line) => line.length > 0)\n .map((line) => {\n const tabIdx = line.indexOf('\\t')\n return tabIdx >= 0 ? line.slice(tabIdx + 1) : ''\n })\n}\n\nexport function generateTools(\n git: SimpleGit,\n logger?: (...args: unknown[]) => void\n): ToolSet {\n return {\n check_diff: tool({\n description:\n 'Get the full diff of a specific commit. Returns the patch showing all changes (additions, deletions, modifications) introduced by the commit.',\n inputSchema: z.object({\n commithash: z\n .string()\n .describe(\n 'The commit hash, tag, branch, or any other git ref resolvable by git rev-parse.'\n ),\n }),\n execute: async ({ commithash }) => {\n logger?.(chalk.cyan(`[check_diff] fetching diff for ${commithash}`))\n const diff = await git.raw([\n 'show',\n '--no-color',\n '--pretty=format:',\n commithash,\n ])\n logger?.(\n chalk.green(\n `[check_diff] ${commithash} -> ${diff.length} chars of diff`\n )\n )\n return diff\n },\n }),\n browse_code: tool({\n description:\n 'Browse the code at a specific commit. If the path points to a file, returns its content. If the path points to a folder, returns the list of files and sub-folders it contains. Pass an empty string for the path to browse the repository root.',\n inputSchema: z.object({\n commithash: z\n .string()\n .describe(\n 'The commit hash, tag, branch, or any other git ref resolvable by git rev-parse.'\n ),\n path: z\n .string()\n .describe(\n 'Path to a file or folder within the repository, relative to the repo root. Use forward slashes. Pass an empty string for the root.'\n ),\n }),\n execute: async ({ commithash, path }) => {\n const normalized = path.replace(/^\\/+|\\/+$/g, '')\n logger?.(\n chalk.cyan(\n `[browse_code] ${commithash} @ ${normalized === '' ? '/' : normalized}`\n )\n )\n\n if (normalized === '') {\n const output = await git.raw(['ls-tree', commithash])\n const items = parseLsTree(output)\n logger?.(\n chalk.green(\n `[browse_code] root -> folder with ${items.length} item(s)`\n )\n )\n return { type: 'folder', items }\n }\n\n const ref = `${commithash}:${normalized}`\n let objectType: string\n try {\n objectType = (await git.raw(['cat-file', '-t', ref])).trim()\n } catch {\n logger?.(chalk.yellow(`[browse_code] ${ref} does not exist`))\n return { error: \"doesn't exists\" }\n }\n\n if (objectType === 'tree') {\n const output = await git.raw(['ls-tree', ref])\n const items = parseLsTree(output)\n logger?.(\n chalk.green(\n `[browse_code] ${normalized} -> folder with ${items.length} item(s)`\n )\n )\n return { type: 'folder', items }\n }\n\n if (objectType === 'blob') {\n const content = await git.show(ref)\n logger?.(\n chalk.green(\n `[browse_code] ${normalized} -> file with ${content.length} chars`\n )\n )\n return { type: 'file', content }\n }\n\n logger?.(\n chalk.yellow(\n `[browse_code] ${ref} has unsupported object type \"${objectType}\"`\n )\n )\n return { error: \"doesn't exists\" }\n },\n }),\n }\n}\n","import { generateConfigSchema } from '@/config/config-schema.js'\nimport { resolveProvider } from '@/config/resolve-config.js'\nimport { getGitCommitsInfo } from '@/lib/git.js'\nimport { generateText, stepCountIs } from 'ai'\nimport { simpleGit } from 'simple-git'\nimport z from 'zod'\nimport { buildSystemPrompt, buildUserPrompt } from './prompt.js'\nimport { generateTools } from './tools.js'\n\ntype GenerateOptions = z.infer<typeof generateConfigSchema> & {\n logger?: (...args: unknown[]) => void\n}\n\nexport async function generateReleaseNote(\n cwd: string,\n options: GenerateOptions\n) {\n const git = simpleGit(cwd)\n const commits = await getGitCommitsInfo(git, options.match)\n\n const provider = await resolveProvider(options.provider, options)\n if (!provider) {\n throw new Error(`Unsupported provider: ${options.provider}`)\n }\n\n const maxSteps = options.steps ?? (commits.length + 1) * 2\n const result = await generateText({\n model: provider(options.model),\n\n prompt: buildUserPrompt(commits).trim(),\n system: buildSystemPrompt(maxSteps).trim(),\n\n tools: generateTools(git, options.logger),\n stopWhen: stepCountIs(maxSteps),\n })\n\n return {\n commits,\n note: result.text,\n\n provider: {\n usage: result.totalUsage,\n response: result.response,\n },\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate-CsLUDr-g.mjs","names":["z"],"sources":["../src/constants/providers.ts","../src/config/config-schema.ts","../src/config/resolve-config.ts","../src/lib/git.ts","../src/generate/prompt.ts","../src/generate/tools.ts","../src/generate/index.ts"],"sourcesContent":["type ProviderRecord = Record<string, { create: string }>\n\nexport const SUPPORTED_PROVIDERS = {\n '@ai-sdk/openai': { create: 'createOpenAI' },\n '@ai-sdk/openai-compatible': { create: 'createOpenAICompatible' },\n '@ai-sdk/anthropic': { create: 'createAnthropic' },\n '@ai-sdk/google': { create: 'createGoogleGenerativeAI' },\n '@ai-sdk/xai': { create: 'createXai' },\n '@ai-sdk/azure': { create: 'createAzure' },\n '@ai-sdk/amazon-bedrock': { create: 'createAmazonBedrock' },\n '@ai-sdk/groq': { create: 'createGroq' },\n '@ai-sdk/fal': { create: 'createFal' },\n '@ai-sdk/deepinfra': { create: 'createDeepInfra' },\n '@ai-sdk/google-vertex': { create: 'createVertex' },\n '@ai-sdk/mistral': { create: 'createMistral' },\n '@ai-sdk/togetherai': { create: 'createTogetherAI' },\n '@ai-sdk/cohere': { create: 'createCohere' },\n '@ai-sdk/fireworks': { create: 'createFireworks' },\n '@ai-sdk/deepseek': { create: 'createDeepSeek' },\n '@ai-sdk/cerebras': { create: 'createCerebras' },\n '@ai-sdk/perplexity': { create: 'createPerplexity' },\n '@ai-sdk/luma': { create: 'createLuma' },\n '@ai-sdk/baseten': { create: 'createBaseten' },\n '@openrouter/ai-sdk-provider': { create: 'createOpenRouter' },\n} as const satisfies ProviderRecord\n","import { SUPPORTED_PROVIDERS } from '@/constants/providers.js'\nimport { z } from 'zod'\n\nexport const gitCommitTargetSchema = z.union([\n z.object({ tag: z.string().describe('Git tag regex') }),\n z.object({ commit: z.string().describe('Git commit hash') }),\n])\n\nexport const providerOptionsSchema = z.object({\n apiUrl: z.string().optional(),\n apiKeyEnv: z.union([z.string(), z.array(z.string())]).optional(),\n\n provider: z\n .enum(\n Object.keys(SUPPORTED_PROVIDERS) as (keyof typeof SUPPORTED_PROVIDERS)[]\n )\n .default('@ai-sdk/openai-compatible'),\n\n headers: z.record(z.string(), z.string()).optional(),\n options: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const generateConfigSchema = z\n .object({\n match: gitCommitTargetSchema.default({ tag: '.*' }),\n model: z.string().min(1),\n steps: z.number().int().positive().optional(),\n })\n .extend(providerOptionsSchema.shape)\n","import { Provider } from 'ai'\nimport chalk from 'chalk'\nimport fs from 'fs'\nimport { parse } from 'jsonc-parser'\nimport path from 'path'\nimport z from 'zod'\nimport { generateConfigSchema, providerOptionsSchema } from './config-schema.js'\n\nconst CONFIG_PATHS = [\n 'release-note.json',\n 'release-note.jsonc',\n '.github/release-note.json',\n '.github/release-note.jsonc',\n]\n\nexport async function resolveConfig(\n cwd: string,\n configPaths: string[] = CONFIG_PATHS\n) {\n for (const configPath of configPaths) {\n const fullPath = path.join(cwd, configPath)\n\n if (fs.existsSync(fullPath)) {\n console.log(chalk.green(`Using config file: ${fullPath}`))\n\n try {\n const configContent = await fs.promises.readFile(fullPath, 'utf8')\n return generateConfigSchema.parse(parse(configContent))\n } catch {\n console.error(chalk.red(`Error parsing config file: ${fullPath}`))\n throw new Error(`Invalid config file: ${fullPath}`)\n }\n }\n }\n\n return generateConfigSchema.parse({})\n}\n\nconst PROVIDERS_FACTORY: Record<string, { create: string }> = {\n '@ai-sdk/openai': { create: 'createOpenAI' },\n '@ai-sdk/anthropic': { create: 'createAnthropic' },\n '@openrouter/ai-sdk-provider': { create: 'createOpenRouter' },\n}\n\nfunction resolveApiKey(\n vars: string | string[] | undefined\n): string | undefined {\n let resolvedApiKey: string | undefined\n\n const apiKeyEnvVars = typeof vars === 'string' ? [vars] : (vars ?? [])\n\n for (const envVar of apiKeyEnvVars) {\n resolvedApiKey = process.env[envVar]\n break\n }\n\n return resolvedApiKey\n}\n\nexport async function resolveProvider(\n name: string,\n options: z.infer<typeof providerOptionsSchema>\n): Promise<Provider['languageModel'] | null> {\n const resolvedApiKey = resolveApiKey(options.apiKeyEnv)\n\n if (name === '@ai-sdk/openai-compatible') {\n if (!options.apiUrl) {\n throw new Error('\"\"apiUrl\"\" is required for openai-compatible provider')\n }\n\n if (!resolvedApiKey) {\n throw new Error('No API key found in the specified environment variables')\n }\n\n const { createOpenAICompatible } = await import('@ai-sdk/openai-compatible')\n return createOpenAICompatible({\n name,\n apiKey: resolvedApiKey,\n baseURL: options?.apiUrl,\n headers: options?.headers,\n ...options?.options,\n })\n }\n\n const provider = PROVIDERS_FACTORY[name]\n if (provider) {\n const mod = await import(name)\n return mod[provider.create]({\n apiKey: resolvedApiKey,\n baseURL: options?.apiUrl,\n headers: options?.headers,\n ...options?.options,\n })\n }\n\n return null\n}\n","import { gitCommitTargetSchema } from '@/config/config-schema.js'\nimport { objectPick, Prettify } from 'daily-code'\nimport { DefaultLogFields, type SimpleGit } from 'simple-git'\nimport z from 'zod'\n\nexport type GitCommitInfo = Prettify<\n Pick<\n DefaultLogFields,\n 'hash' | 'date' | 'message' | 'author_name' | 'author_email'\n >\n>\n\nasync function getGitCommitHash(\n git: SimpleGit,\n target: z.infer<typeof gitCommitTargetSchema>,\n offset = 0\n): Promise<string> {\n if ('tag' in target) {\n const regex = new RegExp(target.tag)\n const { all: tags } = await git.tags({ '--sort': '-v:refname' })\n const matched = tags.filter((tag) => regex.test(tag))\n if (matched.length === 0) {\n throw new Error(`No tags matched pattern: ${target.tag}`)\n }\n\n if (offset < 0 || offset >= matched.length) {\n throw new Error(\n `Offset ${offset} out of range: only ${matched.length} tag(s) matched pattern ${target.tag}`\n )\n }\n\n const tag = matched[offset]\n const hash = await git.revparse([tag])\n return hash.trim()\n }\n\n if ('commit' in target) {\n const hash = await git.revparse([target.commit])\n return hash.trim()\n }\n\n throw new Error('Invalid target: must contain either \"tag\" or \"commit\"')\n}\n\nexport async function getGitCommitsInfo(\n git: SimpleGit,\n match: z.infer<typeof gitCommitTargetSchema>\n): Promise<GitCommitInfo[]> {\n const latest = await getGitCommitHash(git, match, 1)\n const current = await getGitCommitHash(git, match, 0)\n const log = await git.log({ from: latest, to: current })\n return [...log.all].map((c) =>\n objectPick(c, ['hash', 'date', 'message', 'author_name', 'author_email'])\n )\n}\n","import { GitCommitInfo } from '@/lib/git.js'\n\nexport function buildSystemPrompt(maxTools: number) {\n return `You are a helpful assistant for generating release notes based on git commit history.\nThe release notes should be concise, informative, and highlight the key changes, new features, bug fixes, and any important information that users should be aware of. The release note should be well-structured and easy to read. You are allowed to use up to ${maxTools} tools to gather necessary information from the git repository to generate accurate and comprehensive release notes.\n\n**Target audience**: end users, product managers, and non-technical stakeholders. Write the release note for them, not for engineers reviewing the implementation.\n\n## Guidelines:\n- Summarize the key changes in a clear and concise manner, focusing on user-facing impact.\n- Describe WHAT changed for the user and WHY it matters, not HOW it is implemented internally.\n- DO NOT reveal internal implementation details. This includes but is not limited to: source code, code snippets, internal file names, internal file paths, class names, function names, variable names, API route paths, database table names, configuration keys, or any other internal identifiers.\n- DO NOT include sensitive information such as credentials, secrets, tokens, internal URLs, private endpoints, or environment-specific values.\n- Skip trivial changes that do not impact users (e.g., minor refactoring, file renames, formatting changes, internal tooling, dependency bumps with no user-visible effect).\n- Use plain language that can be easily understood by a wide audience, including non-technical stakeholders. Avoid technical jargon, library/framework names, and implementation-specific terminology unless absolutely necessary.\n\n\n## Output format:\n- Group related changes together under appropriate headings (e.g., \"New Features\", \"Bug Fixes\", \"Improvements\", \"Breaking Changes\").\n- Use bullet points to list individual changes for better readability.\n- If there are breaking changes, clearly indicate them in a separate section and provide guidance on how to adapt to these changes from a user perspective.\n- DO NOT use a top-level title to wrap the content as \"Release Note\"; just directly write the sections.\n- DO NOT use --- to separate sections, use ## for headings instead.\n- Output ONLY the release note content, with no preamble, explanation, or commentary.\n`\n}\n\nexport function buildUserPrompt(commits: GitCommitInfo[]) {\n const commitsList = commits.map((c) =>\n [\n `- Commithash: ${c.hash}`,\n ` - Timestamp: ${c.date}`,\n ` - Author: ${c.author_name} <${c.author_email}>`,\n ` > ${c.message}`,\n ].join('\\n')\n )\n\n return `Here are the commits related to the release:\n${commitsList.join('\\n')}\n`\n}\n","import { tool, ToolSet } from 'ai'\nimport chalk from 'chalk'\nimport { SimpleGit } from 'simple-git'\nimport z from 'zod'\n\nfunction parseLsTree(output: string): string[] {\n return output\n .split('\\n')\n .filter((line) => line.length > 0)\n .map((line) => {\n const tabIdx = line.indexOf('\\t')\n return tabIdx >= 0 ? line.slice(tabIdx + 1) : ''\n })\n}\n\nexport function generateTools(\n git: SimpleGit,\n logger?: (...args: unknown[]) => void\n): ToolSet {\n return {\n check_diff: tool({\n description:\n 'Get the full diff of a specific commit. Returns the patch showing all changes (additions, deletions, modifications) introduced by the commit.',\n inputSchema: z.object({\n commithash: z\n .string()\n .describe(\n 'The commit hash, tag, branch, or any other git ref resolvable by git rev-parse.'\n ),\n }),\n execute: async ({ commithash }) => {\n logger?.(chalk.cyan(`[check_diff] fetching diff for ${commithash}`))\n const diff = await git.raw([\n 'show',\n '--no-color',\n '--pretty=format:',\n commithash,\n ])\n logger?.(\n chalk.green(\n `[check_diff] ${commithash} -> ${diff.length} chars of diff`\n )\n )\n return diff\n },\n }),\n browse_code: tool({\n description:\n 'Browse the code at a specific commit. If the path points to a file, returns its content. If the path points to a folder, returns the list of files and sub-folders it contains. Pass an empty string for the path to browse the repository root.',\n inputSchema: z.object({\n commithash: z\n .string()\n .describe(\n 'The commit hash, tag, branch, or any other git ref resolvable by git rev-parse.'\n ),\n path: z\n .string()\n .describe(\n 'Path to a file or folder within the repository, relative to the repo root. Use forward slashes. Pass an empty string for the root.'\n ),\n }),\n execute: async ({ commithash, path }) => {\n const normalized = path.replace(/^\\/+|\\/+$/g, '')\n logger?.(\n chalk.cyan(\n `[browse_code] ${commithash} @ ${normalized === '' ? '/' : normalized}`\n )\n )\n\n if (normalized === '') {\n const output = await git.raw(['ls-tree', commithash])\n const items = parseLsTree(output)\n logger?.(\n chalk.green(\n `[browse_code] root -> folder with ${items.length} item(s)`\n )\n )\n return { type: 'folder', items }\n }\n\n const ref = `${commithash}:${normalized}`\n let objectType: string\n try {\n objectType = (await git.raw(['cat-file', '-t', ref])).trim()\n } catch {\n logger?.(chalk.yellow(`[browse_code] ${ref} does not exist`))\n return { error: \"doesn't exists\" }\n }\n\n if (objectType === 'tree') {\n const output = await git.raw(['ls-tree', ref])\n const items = parseLsTree(output)\n logger?.(\n chalk.green(\n `[browse_code] ${normalized} -> folder with ${items.length} item(s)`\n )\n )\n return { type: 'folder', items }\n }\n\n if (objectType === 'blob') {\n const content = await git.show(ref)\n logger?.(\n chalk.green(\n `[browse_code] ${normalized} -> file with ${content.length} chars`\n )\n )\n return { type: 'file', content }\n }\n\n logger?.(\n chalk.yellow(\n `[browse_code] ${ref} has unsupported object type \"${objectType}\"`\n )\n )\n return { error: \"doesn't exists\" }\n },\n }),\n }\n}\n","import { generateConfigSchema } from '@/config/config-schema.js'\nimport { resolveProvider } from '@/config/resolve-config.js'\nimport { getGitCommitsInfo } from '@/lib/git.js'\nimport { generateText, stepCountIs } from 'ai'\nimport { simpleGit } from 'simple-git'\nimport z from 'zod'\nimport { buildSystemPrompt, buildUserPrompt } from './prompt.js'\nimport { generateTools } from './tools.js'\n\ntype GenerateOptions = z.infer<typeof generateConfigSchema> & {\n logger?: (...args: unknown[]) => void\n}\n\nexport async function generateReleaseNote(\n cwd: string,\n options: GenerateOptions\n) {\n const git = simpleGit(cwd)\n const commits = await getGitCommitsInfo(git, options.match)\n\n const provider = await resolveProvider(options.provider, options)\n if (!provider) {\n throw new Error(`Unsupported provider: ${options.provider}`)\n }\n\n const maxSteps = options.steps ?? (commits.length + 1) * 2\n const result = await generateText({\n model: provider(options.model),\n\n prompt: buildUserPrompt(commits).trim(),\n system: buildSystemPrompt(maxSteps).trim(),\n\n tools: generateTools(git, options.logger),\n stopWhen: stepCountIs(maxSteps),\n })\n\n return {\n commits,\n note: result.text,\n\n provider: {\n usage: result.totalUsage,\n response: result.response,\n },\n }\n}\n"],"mappings":";;;;;;;;;AAEA,MAAa,sBAAsB;CACjC,kBAAkB,EAAE,QAAQ,eAAe;CAC3C,6BAA6B,EAAE,QAAQ,yBAAyB;CAChE,qBAAqB,EAAE,QAAQ,kBAAkB;CACjD,kBAAkB,EAAE,QAAQ,2BAA2B;CACvD,eAAe,EAAE,QAAQ,YAAY;CACrC,iBAAiB,EAAE,QAAQ,cAAc;CACzC,0BAA0B,EAAE,QAAQ,sBAAsB;CAC1D,gBAAgB,EAAE,QAAQ,aAAa;CACvC,eAAe,EAAE,QAAQ,YAAY;CACrC,qBAAqB,EAAE,QAAQ,kBAAkB;CACjD,yBAAyB,EAAE,QAAQ,eAAe;CAClD,mBAAmB,EAAE,QAAQ,gBAAgB;CAC7C,sBAAsB,EAAE,QAAQ,mBAAmB;CACnD,kBAAkB,EAAE,QAAQ,eAAe;CAC3C,qBAAqB,EAAE,QAAQ,kBAAkB;CACjD,oBAAoB,EAAE,QAAQ,iBAAiB;CAC/C,oBAAoB,EAAE,QAAQ,iBAAiB;CAC/C,sBAAsB,EAAE,QAAQ,mBAAmB;CACnD,gBAAgB,EAAE,QAAQ,aAAa;CACvC,mBAAmB,EAAE,QAAQ,gBAAgB;CAC7C,+BAA+B,EAAE,QAAQ,mBAAmB;AAC9D;;;ACrBA,MAAa,wBAAwB,EAAE,MAAM,CAC3C,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC,GACtD,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC,CAC7D,CAAC;AAED,MAAa,wBAAwB,EAAE,OAAO;CAC5C,QAAQ,EAAE,OAAO,EAAE,SAAS;CAC5B,WAAW,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS;CAE/D,UAAU,EACP,KACC,OAAO,KAAK,mBAAmB,CACjC,EACC,QAAQ,2BAA2B;CAEtC,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,EAAE,SAAS;CACnD,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AACtD,CAAC;AAED,MAAa,uBAAuB,EACjC,OAAO;CACN,OAAO,sBAAsB,QAAQ,EAAE,KAAK,KAAK,CAAC;CAClD,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;CACvB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAC9C,CAAC,EACA,OAAO,sBAAsB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpBrC,MAAM,eAAe;CACnB;CACA;CACA;CACA;AACF;AAEA,SAAsB,cACpB,IAAA;;;;oDACA,cAAwB,cACxB;EACA,KAAK,MAAM,cAAc,aAAa;GACpC,MAAM,WAAW,KAAK,KAAK,KAAK,UAAU;GAE1C,IAAI,GAAG,WAAW,QAAQ,GAAG;IAC3B,QAAQ,IAAI,MAAM,MAAM,sBAAsB,UAAU,CAAC;IAEzD,IAAI;KACF,MAAM,gBAAgB,MAAM,GAAG,SAAS,SAAS,UAAU,MAAM;KACjE,OAAO,qBAAqB,MAAM,MAAM,aAAa,CAAC;IACxD,SAAA,SAAQ;KACN,QAAQ,MAAM,MAAM,IAAI,8BAA8B,UAAU,CAAC;KACjE,MAAM,IAAI,MAAM,wBAAwB,UAAU;IACpD;GACF;EACF;EAEA,OAAO,qBAAqB,MAAM,CAAC,CAAC;CACtC,CAAA;;;AAEA,MAAM,oBAAwD;CAC5D,kBAAkB,EAAE,QAAQ,eAAe;CAC3C,qBAAqB,EAAE,QAAQ,kBAAkB;CACjD,+BAA+B,EAAE,QAAQ,mBAAmB;AAC9D;AAEA,SAAS,cACP,MACoB;CACpB,IAAI;CAEJ,MAAM,gBAAgB,OAAO,SAAS,WAAW,CAAC,IAAI,IAAK,SAAA,QAAA,SAAA,KAAA,IAAA,OAAQ,CAAC;CAEpE,KAAK,MAAM,UAAU,eAAe;EAClC,iBAAiB,QAAQ,IAAI;EAC7B;CACF;CAEA,OAAO;AACT;AAEA,SAAsB,gBACpB,KACA,KAAA;;;;iDADA,MACA,SAC2C;EAC3C,MAAM,iBAAiB,cAAc,QAAQ,SAAS;EAEtD,IAAI,SAAS,6BAA6B;GACxC,IAAI,CAAC,QAAQ,QACX,MAAM,IAAI,MAAM,2DAAuD;GAGzE,IAAI,CAAC,gBACH,MAAM,IAAI,MAAM,yDAAyD;GAG3E,MAAM,EAAE,2BAA2B,MAAM,OAAO;GAChD,OAAO,uBAAA,eAAA;IACL;IACA,QAAQ;IACR,SAAA,YAAA,QAAA,YAAA,KAAA,IAAA,KAAA,IAAS,QAAS;IAClB,SAAA,YAAA,QAAA,YAAA,KAAA,IAAA,KAAA,IAAS,QAAS;wDACf,QAAS,OACd,CAAC;EACH;EAEA,MAAM,WAAW,kBAAkB;EACnC,IAAI,UAEF,QAAO,MADW,OAAO,OACd,SAAS,QAAA,eAAA;GAClB,QAAQ;GACR,SAAA,YAAA,QAAA,YAAA,KAAA,IAAA,KAAA,IAAS,QAAS;GAClB,SAAA,YAAA,QAAA,YAAA,KAAA,IAAA,KAAA,IAAS,QAAS;uDACf,QAAS,OACd,CAAC;EAGH,OAAO;CACT,CAAA;;;;;ACpFA,SAAe,iBACb,IACA,KAAA;;;;kDADA,KACA,QACA,SAAS,GACQ;EACjB,IAAI,SAAS,QAAQ;GACnB,MAAM,QAAQ,IAAI,OAAO,OAAO,GAAG;GACnC,MAAM,EAAE,KAAK,SAAS,MAAM,IAAI,KAAK,EAAE,UAAU,aAAa,CAAC;GAC/D,MAAM,UAAU,KAAK,QAAQ,QAAQ,MAAM,KAAK,GAAG,CAAC;GACpD,IAAI,QAAQ,WAAW,GACrB,MAAM,IAAI,MAAM,4BAA4B,OAAO,KAAK;GAG1D,IAAI,SAAS,KAAK,UAAU,QAAQ,QAClC,MAAM,IAAI,MACR,UAAU,OAAO,sBAAsB,QAAQ,OAAO,0BAA0B,OAAO,KACzF;GAGF,MAAM,MAAM,QAAQ;GAEpB,QAAO,MADY,IAAI,SAAS,CAAC,GAAG,CAAC,GACzB,KAAK;EACnB;EAEA,IAAI,YAAY,QAEd,QAAO,MADY,IAAI,SAAS,CAAC,OAAO,MAAM,CAAC,GACnC,KAAK;EAGnB,MAAM,IAAI,MAAM,2DAAuD;CACzE,CAAA;;;AAEA,SAAsB,kBACpB,KACA,KAAA;;;;mDADA,KACA,OAC0B;EAC1B,MAAM,SAAS,MAAM,iBAAiB,KAAK,OAAO,CAAC;EACnD,MAAM,UAAU,MAAM,iBAAiB,KAAK,OAAO,CAAC;EAEpD,OAAO,CAAC,IAAG,MADO,IAAI,IAAI;GAAE,MAAM;GAAQ,IAAI;EAAQ,CAAC,GACxC,GAAG,EAAE,KAAK,MACvB,WAAW,GAAG;GAAC;GAAQ;GAAQ;GAAW;GAAe;EAAc,CAAC,CAC1E;CACF,CAAA;;;;;ACpDA,SAAgB,kBAAkB,UAAkB;CAClD,OAAO;mQAC0P,SAAS;;;;;;;;;;;;;;;;;;;;;AAqB5Q;AAEA,SAAgB,gBAAgB,SAA0B;CAUxD,OAAO;EATa,QAAQ,KAAK,MAC/B;EACE,iBAAiB,EAAE;EACnB,kBAAkB,EAAE;EACpB,eAAe,EAAE,YAAY,IAAI,EAAE,aAAa;EAChD,OAAO,EAAE;CACX,EAAE,KAAK,IAAI,CAIH,EAAE,KAAK,IAAI,EAAE;;AAEzB;;;ACnCA,SAAS,YAAY,QAA0B;CAC7C,OAAO,OACJ,MAAM,IAAI,EACV,QAAQ,SAAS,KAAK,SAAS,CAAC,EAChC,KAAK,SAAS;EACb,MAAM,SAAS,KAAK,QAAQ,GAAI;EAChC,OAAO,UAAU,IAAI,KAAK,MAAM,SAAS,CAAC,IAAI;CAChD,CAAC;AACL;AAEA,SAAgB,cACd,KACA,QACS;CACT,OAAO;EACL,YAAY,KAAK;GACf,aACE;GACF,aAAaA,IAAE,OAAO,EACpB,YAAYA,IACT,OAAO,EACP,SACC,iFACF,EACJ,CAAC;GACD,SAAA,WAAA;4CAAgB,EAAE,cAAiB;KACjC,WAAA,QAAA,WAAA,KAAA,KAAA,OAAS,MAAM,KAAK,kCAAkC,YAAY,CAAC;KACnE,MAAM,OAAO,MAAM,IAAI,IAAI;MACzB;MACA;MACA;MACA;KACF,CAAC;KACD,WAAA,QAAA,WAAA,KAAA,KAAA,OACE,MAAM,MACJ,gBAAgB,WAAW,MAAM,KAAK,OAAO,eAC/C,CACF;KACA,OAAO;IACT,CAAA;4BAdgB,IAAA;;;KAchB;EACF,CAAC;EACD,aAAa,KAAK;GAChB,aACE;GACF,aAAaA,IAAE,OAAO;IACpB,YAAYA,IACT,OAAO,EACP,SACC,iFACF;IACF,MAAMA,IACH,OAAO,EACP,SACC,oIACF;GACJ,CAAC;GACD,SAAA,WAAA;6CAAgB,EAAE,YAAY,QAAW;KACvC,MAAM,aAAa,KAAK,QAAQ,cAAc,EAAE;KAChD,WAAA,QAAA,WAAA,KAAA,KAAA,OACE,MAAM,KACJ,iBAAiB,WAAW,KAAK,eAAe,KAAK,MAAM,YAC7D,CACF;KAEA,IAAI,eAAe,IAAI;MAErB,MAAM,QAAQ,YAAY,MADL,IAAI,IAAI,CAAC,WAAW,UAAU,CAAC,CACpB;MAChC,WAAA,QAAA,WAAA,KAAA,KAAA,OACE,MAAM,MACJ,qCAAqC,MAAM,OAAO,SACpD,CACF;MACA,OAAO;OAAE,MAAM;OAAU;MAAM;KACjC;KAEA,MAAM,MAAM,GAAG,WAAW,GAAG;KAC7B,IAAI;KACJ,IAAI;MACF,cAAc,MAAM,IAAI,IAAI;OAAC;OAAY;OAAM;MAAG,CAAC,GAAG,KAAK;KAC7D,SAAA,SAAQ;MACN,WAAA,QAAA,WAAA,KAAA,KAAA,OAAS,MAAM,OAAO,iBAAiB,IAAI,gBAAgB,CAAC;MAC5D,OAAO,EAAE,OAAO,iBAAiB;KACnC;KAEA,IAAI,eAAe,QAAQ;MAEzB,MAAM,QAAQ,YAAY,MADL,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CACb;MAChC,WAAA,QAAA,WAAA,KAAA,KAAA,OACE,MAAM,MACJ,iBAAiB,WAAW,kBAAkB,MAAM,OAAO,SAC7D,CACF;MACA,OAAO;OAAE,MAAM;OAAU;MAAM;KACjC;KAEA,IAAI,eAAe,QAAQ;MACzB,MAAM,UAAU,MAAM,IAAI,KAAK,GAAG;MAClC,WAAA,QAAA,WAAA,KAAA,KAAA,OACE,MAAM,MACJ,iBAAiB,WAAW,gBAAgB,QAAQ,OAAO,OAC7D,CACF;MACA,OAAO;OAAE,MAAM;OAAQ;MAAQ;KACjC;KAEA,WAAA,QAAA,WAAA,KAAA,KAAA,OACE,MAAM,OACJ,iBAAiB,IAAI,gCAAgC,WAAW,EAClE,CACF;KACA,OAAO,EAAE,OAAO,iBAAiB;IACnC,CAAA;4BAvDgB,KAAA;;;KAuDhB;EACF,CAAC;CACH;AACF;;;AC1GA,SAAsB,oBACpB,IACA,KAAA;;;;qDADA,KACA,SACA;;EACA,MAAM,MAAM,UAAU,GAAG;EACzB,MAAM,UAAU,MAAM,kBAAkB,KAAK,QAAQ,KAAK;EAE1D,MAAM,WAAW,MAAM,gBAAgB,QAAQ,UAAU,OAAO;EAChE,IAAI,CAAC,UACH,MAAM,IAAI,MAAM,yBAAyB,QAAQ,UAAU;EAG7D,MAAM,YAAA,iBAAW,QAAQ,WAAA,QAAA,mBAAA,KAAA,IAAA,kBAAU,QAAQ,SAAS,KAAK;EACzD,MAAM,SAAS,MAAM,aAAa;GAChC,OAAO,SAAS,QAAQ,KAAK;GAE7B,QAAQ,gBAAgB,OAAO,EAAE,KAAK;GACtC,QAAQ,kBAAkB,QAAQ,EAAE,KAAK;GAEzC,OAAO,cAAc,KAAK,QAAQ,MAAM;GACxC,UAAU,YAAY,QAAQ;EAChC,CAAC;EAED,OAAO;GACL;GACA,MAAM,OAAO;GAEb,UAAU;IACR,OAAO,OAAO;IACd,UAAU,OAAO;GACnB;EACF;CACF,CAAA"}
|
package/dist/index.d.mts
CHANGED
|
@@ -12,7 +12,27 @@ declare const generateConfigSchema: z.ZodObject<{
|
|
|
12
12
|
apiUrl: z.ZodOptional<z.ZodString>;
|
|
13
13
|
apiKeyEnv: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
14
14
|
provider: z.ZodDefault<z.ZodEnum<{
|
|
15
|
-
|
|
15
|
+
"@ai-sdk/openai": "@ai-sdk/openai";
|
|
16
|
+
"@ai-sdk/openai-compatible": "@ai-sdk/openai-compatible";
|
|
17
|
+
"@ai-sdk/anthropic": "@ai-sdk/anthropic";
|
|
18
|
+
"@ai-sdk/google": "@ai-sdk/google";
|
|
19
|
+
"@ai-sdk/xai": "@ai-sdk/xai";
|
|
20
|
+
"@ai-sdk/azure": "@ai-sdk/azure";
|
|
21
|
+
"@ai-sdk/amazon-bedrock": "@ai-sdk/amazon-bedrock";
|
|
22
|
+
"@ai-sdk/groq": "@ai-sdk/groq";
|
|
23
|
+
"@ai-sdk/fal": "@ai-sdk/fal";
|
|
24
|
+
"@ai-sdk/deepinfra": "@ai-sdk/deepinfra";
|
|
25
|
+
"@ai-sdk/google-vertex": "@ai-sdk/google-vertex";
|
|
26
|
+
"@ai-sdk/mistral": "@ai-sdk/mistral";
|
|
27
|
+
"@ai-sdk/togetherai": "@ai-sdk/togetherai";
|
|
28
|
+
"@ai-sdk/cohere": "@ai-sdk/cohere";
|
|
29
|
+
"@ai-sdk/fireworks": "@ai-sdk/fireworks";
|
|
30
|
+
"@ai-sdk/deepseek": "@ai-sdk/deepseek";
|
|
31
|
+
"@ai-sdk/cerebras": "@ai-sdk/cerebras";
|
|
32
|
+
"@ai-sdk/perplexity": "@ai-sdk/perplexity";
|
|
33
|
+
"@ai-sdk/luma": "@ai-sdk/luma";
|
|
34
|
+
"@ai-sdk/baseten": "@ai-sdk/baseten";
|
|
35
|
+
"@openrouter/ai-sdk-provider": "@openrouter/ai-sdk-provider";
|
|
16
36
|
}>>;
|
|
17
37
|
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
18
38
|
options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|