autogit-tool 1.0.19 → 1.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +61 -7
  2. package/dist/ai/prompts.d.ts +6 -0
  3. package/dist/ai/prompts.d.ts.map +1 -1
  4. package/dist/ai/prompts.js +111 -19
  5. package/dist/ai/prompts.js.map +1 -1
  6. package/dist/ai/provider.d.ts.map +1 -1
  7. package/dist/ai/provider.js +27 -0
  8. package/dist/ai/provider.js.map +1 -1
  9. package/dist/ai/readme-agent.d.ts +5 -0
  10. package/dist/ai/readme-agent.d.ts.map +1 -0
  11. package/dist/ai/readme-agent.js +126 -0
  12. package/dist/ai/readme-agent.js.map +1 -0
  13. package/dist/cli.js +62 -1
  14. package/dist/cli.js.map +1 -1
  15. package/dist/commands/brag.d.ts +2 -0
  16. package/dist/commands/brag.d.ts.map +1 -0
  17. package/dist/commands/brag.js +10 -0
  18. package/dist/commands/brag.js.map +1 -0
  19. package/dist/commands/config.d.ts +2 -0
  20. package/dist/commands/config.d.ts.map +1 -1
  21. package/dist/commands/config.js +18 -2
  22. package/dist/commands/config.js.map +1 -1
  23. package/dist/commands/github.d.ts +1 -0
  24. package/dist/commands/github.d.ts.map +1 -1
  25. package/dist/commands/github.js +11 -2
  26. package/dist/commands/github.js.map +1 -1
  27. package/dist/commands/linkedin.d.ts +3 -0
  28. package/dist/commands/linkedin.d.ts.map +1 -1
  29. package/dist/commands/linkedin.js +124 -12
  30. package/dist/commands/linkedin.js.map +1 -1
  31. package/dist/commands/publish.d.ts.map +1 -1
  32. package/dist/commands/publish.js +15 -46
  33. package/dist/commands/publish.js.map +1 -1
  34. package/dist/commands/readme.d.ts.map +1 -1
  35. package/dist/commands/readme.js +14 -0
  36. package/dist/commands/readme.js.map +1 -1
  37. package/dist/commands/resume.d.ts +2 -0
  38. package/dist/commands/resume.d.ts.map +1 -1
  39. package/dist/commands/resume.js +311 -81
  40. package/dist/commands/resume.js.map +1 -1
  41. package/dist/commands/setup.d.ts +3 -0
  42. package/dist/commands/setup.d.ts.map +1 -0
  43. package/dist/commands/setup.js +58 -0
  44. package/dist/commands/setup.js.map +1 -0
  45. package/dist/commands/showcase.d.ts +4 -0
  46. package/dist/commands/showcase.d.ts.map +1 -0
  47. package/dist/commands/showcase.js +35 -0
  48. package/dist/commands/showcase.js.map +1 -0
  49. package/dist/config/manager.d.ts +16 -1
  50. package/dist/config/manager.d.ts.map +1 -1
  51. package/dist/config/manager.js +9 -0
  52. package/dist/config/manager.js.map +1 -1
  53. package/dist/pipeline/main-pipeline.d.ts +2 -0
  54. package/dist/pipeline/main-pipeline.d.ts.map +1 -1
  55. package/dist/pipeline/main-pipeline.js +135 -119
  56. package/dist/pipeline/main-pipeline.js.map +1 -1
  57. package/dist/services/brag-agent.d.ts +19 -0
  58. package/dist/services/brag-agent.d.ts.map +1 -0
  59. package/dist/services/brag-agent.js +177 -0
  60. package/dist/services/brag-agent.js.map +1 -0
  61. package/dist/services/brag-runtime.d.ts +7 -0
  62. package/dist/services/brag-runtime.d.ts.map +1 -0
  63. package/dist/services/brag-runtime.js +68 -0
  64. package/dist/services/brag-runtime.js.map +1 -0
  65. package/dist/services/commit-workflow.d.ts +2 -0
  66. package/dist/services/commit-workflow.d.ts.map +1 -0
  67. package/dist/services/commit-workflow.js +60 -0
  68. package/dist/services/commit-workflow.js.map +1 -0
  69. package/dist/services/git-service.d.ts +12 -1
  70. package/dist/services/git-service.d.ts.map +1 -1
  71. package/dist/services/git-service.js +42 -3
  72. package/dist/services/git-service.js.map +1 -1
  73. package/dist/services/pdf-to-latex.d.ts +17 -0
  74. package/dist/services/pdf-to-latex.d.ts.map +1 -0
  75. package/dist/services/pdf-to-latex.js +108 -0
  76. package/dist/services/pdf-to-latex.js.map +1 -0
  77. package/dist/services/publish-workflow.d.ts +14 -0
  78. package/dist/services/publish-workflow.d.ts.map +1 -0
  79. package/dist/services/publish-workflow.js +96 -0
  80. package/dist/services/publish-workflow.js.map +1 -0
  81. package/dist/services/readme-manager.d.ts +2 -1
  82. package/dist/services/readme-manager.d.ts.map +1 -1
  83. package/dist/services/readme-manager.js +35 -24
  84. package/dist/services/readme-manager.js.map +1 -1
  85. package/dist/services/share-package.d.ts +10 -0
  86. package/dist/services/share-package.d.ts.map +1 -0
  87. package/dist/services/share-package.js +21 -0
  88. package/dist/services/share-package.js.map +1 -0
  89. package/dist/services/showcase-cards.d.ts +7 -0
  90. package/dist/services/showcase-cards.d.ts.map +1 -0
  91. package/dist/services/showcase-cards.js +47 -0
  92. package/dist/services/showcase-cards.js.map +1 -0
  93. package/dist/services/showcase.d.ts +16 -0
  94. package/dist/services/showcase.d.ts.map +1 -0
  95. package/dist/services/showcase.js +79 -0
  96. package/dist/services/showcase.js.map +1 -0
  97. package/dist/services/social-generator.d.ts +5 -0
  98. package/dist/services/social-generator.d.ts.map +1 -1
  99. package/dist/services/social-generator.js +34 -0
  100. package/dist/services/social-generator.js.map +1 -1
  101. package/dist/services/social-images.d.ts +5 -0
  102. package/dist/services/social-images.d.ts.map +1 -0
  103. package/dist/services/social-images.js +79 -0
  104. package/dist/services/social-images.js.map +1 -0
  105. package/package.json +5 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brag-runtime.d.ts","sourceRoot":"","sources":["../../src/services/brag-runtime.ts"],"names":[],"mappings":"AAiCA,MAAM,WAAW,WAAW;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAEzF,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CA+B9D"}
@@ -0,0 +1,68 @@
1
+ import { existsSync, mkdirSync } from 'fs';
2
+ import { createRequire } from 'module';
3
+ import { delimiter, dirname, join } from 'path';
4
+ import { execFile } from 'child_process';
5
+ import { promisify } from 'util';
6
+ import { getConfigDir } from '../utils/platform.js';
7
+ const run = promisify(execFile);
8
+ function runtimeDirectory() {
9
+ return join(getConfigDir(), 'brag-runtime');
10
+ }
11
+ function managedNodePath(directory) {
12
+ return join(directory, 'node_modules', 'node', 'bin', process.platform === 'win32' ? 'node.exe' : 'node');
13
+ }
14
+ function managedFfmpegPath(directory) {
15
+ try {
16
+ const requireFromRuntime = createRequire(join(directory, 'package.json'));
17
+ const path = requireFromRuntime('ffmpeg-static');
18
+ return path && existsSync(path) ? path : null;
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ }
24
+ async function installedPath(command) {
25
+ try {
26
+ const finder = process.platform === 'win32' ? 'where.exe' : 'which';
27
+ const { stdout } = await run(finder, [command], { timeout: 10_000, windowsHide: true });
28
+ return stdout.split(/\r?\n/).map(line => line.trim()).find(Boolean) || null;
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ }
34
+ export async function ensureBragRuntime() {
35
+ const directory = runtimeDirectory();
36
+ const hasSystemNode = Number(process.versions.node.split('.')[0]) >= 22;
37
+ let nodePath = hasSystemNode ? process.execPath : managedNodePath(directory);
38
+ let ffmpegPath = await installedPath('ffmpeg') || managedFfmpegPath(directory);
39
+ if (!existsSync(nodePath) || !ffmpegPath) {
40
+ mkdirSync(directory, { recursive: true });
41
+ // npm --no-save can prune an earlier package, so always request the full managed set.
42
+ const packages = [
43
+ ...(!hasSystemNode ? ['node@22'] : []),
44
+ ...(!(await installedPath('ffmpeg')) ? ['ffmpeg-static'] : []),
45
+ ];
46
+ const env = {};
47
+ for (const name of ['PATH', 'Path', 'PATHEXT', 'ComSpec', 'SystemRoot', 'WINDIR', 'USERPROFILE', 'HOME', 'APPDATA', 'LOCALAPPDATA', 'TEMP', 'TMP', 'TMPDIR', 'HTTP_PROXY', 'HTTPS_PROXY', 'NO_PROXY', 'NODE_EXTRA_CA_CERTS', 'npm_config_registry']) {
48
+ if (process.env[name] !== undefined)
49
+ env[name] = process.env[name];
50
+ }
51
+ const executable = process.platform === 'win32' ? (process.env.ComSpec || 'cmd.exe') : 'npm';
52
+ const args = process.platform === 'win32'
53
+ ? ['/d', '/s', '/c', 'npm.cmd', 'install', '--prefix', directory, '--no-save', '--no-audit', '--no-fund', ...packages]
54
+ : ['install', '--prefix', directory, '--no-save', '--no-audit', '--no-fund', ...packages];
55
+ await run(executable, args, { env, timeout: 300_000, windowsHide: true, maxBuffer: 2 * 1024 * 1024 });
56
+ nodePath = hasSystemNode ? process.execPath : managedNodePath(directory);
57
+ ffmpegPath = await installedPath('ffmpeg') || managedFfmpegPath(directory);
58
+ }
59
+ if (!existsSync(nodePath))
60
+ throw new Error('AutoGit could not install the Node 22 runtime for Brag.');
61
+ if (!ffmpegPath)
62
+ throw new Error('AutoGit could not install FFmpeg for Brag.');
63
+ const { stdout } = await run(nodePath, ['--version'], { timeout: 10_000, windowsHide: true });
64
+ if (Number(stdout.trim().replace(/^v/, '').split('.')[0]) < 22)
65
+ throw new Error('Brag needs Node 22 or newer.');
66
+ return { nodePath, ffmpegPath, pathPrefix: [dirname(nodePath), dirname(ffmpegPath)].join(delimiter) };
67
+ }
68
+ //# sourceMappingURL=brag-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brag-runtime.js","sourceRoot":"","sources":["../../src/services/brag-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runCommitWorkflow(rootDir: string, yes: boolean, useAI: boolean): Promise<boolean>;
2
+ //# sourceMappingURL=commit-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit-workflow.d.ts","sourceRoot":"","sources":["../../src/services/commit-workflow.ts"],"names":[],"mappings":"AAOA,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAoDvG"}
@@ -0,0 +1,60 @@
1
+ import chalk from 'chalk';
2
+ import inquirer from 'inquirer';
3
+ import { commit, generateCommitMessage, getCommitPlan, getStagedSummary, stageCommitPlan, } from './git-service.js';
4
+ import { logger } from '../utils/logger.js';
5
+ export async function runCommitWorkflow(rootDir, yes, useAI) {
6
+ const plan = await getCommitPlan(rootDir);
7
+ logger.info(`Branch: ${plan.branch || '(not yet named)'}`);
8
+ logger.info(`Remote: ${plan.remoteUrl || '(none)'}`);
9
+ logger.info(`Already staged: ${plan.staged.length} file(s)`);
10
+ for (const file of plan.staged)
11
+ logger.dimmed(` staged ${file}`);
12
+ logger.info(`To stage: ${plan.toStage.length} file(s)`);
13
+ for (const file of plan.toStage)
14
+ logger.dimmed(` add ${file}`);
15
+ for (const file of plan.preservedUnstaged) {
16
+ logger.dimmed(` left unstaged (partial staging preserved) ${file}`);
17
+ }
18
+ if (plan.sensitive.length > 0) {
19
+ throw new Error(`Likely sensitive file(s) would be committed: ${plan.sensitive.join(', ')}. Remove them from the commit first.`);
20
+ }
21
+ if (plan.staged.length === 0 && plan.toStage.length === 0) {
22
+ logger.dimmed('Nothing to commit');
23
+ return true;
24
+ }
25
+ if (!yes) {
26
+ const { confirm } = await inquirer.prompt([{
27
+ type: 'confirm', name: 'confirm', message: 'Stage the listed files for this commit?', default: true,
28
+ }]);
29
+ if (!confirm)
30
+ return false;
31
+ }
32
+ await stageCommitPlan(rootDir, plan);
33
+ const summary = await getStagedSummary(rootDir);
34
+ if (summary)
35
+ logger.info(`Commit contents:\n${summary}`);
36
+ let message = await generateCommitMessage(rootDir, useAI);
37
+ if (!yes) {
38
+ const { confirm } = await inquirer.prompt([{
39
+ type: 'confirm', name: 'confirm', message: `Commit with message "${message}"?`, default: true,
40
+ }]);
41
+ if (!confirm) {
42
+ logger.dimmed('Commit cancelled. Newly staged files remain staged for your review.');
43
+ return false;
44
+ }
45
+ const { edit } = await inquirer.prompt([{
46
+ type: 'confirm', name: 'edit', message: 'Edit commit message?', default: false,
47
+ }]);
48
+ if (edit) {
49
+ const answer = await inquirer.prompt([{
50
+ type: 'input', name: 'message', message: 'Commit message:', default: message,
51
+ }]);
52
+ message = answer.message;
53
+ }
54
+ }
55
+ const committed = await commit(rootDir, message);
56
+ if (committed)
57
+ logger.success(`Committed: ${chalk.cyan(message)}`);
58
+ return committed;
59
+ }
60
+ //# sourceMappingURL=commit-workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit-workflow.js","sourceRoot":"","sources":["../../src/services/commit-workflow.ts"],"names":[],"mappings":"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"}
@@ -9,13 +9,24 @@ export interface GitStatus {
9
9
  unstaged: string[];
10
10
  untracked: string[];
11
11
  }
12
+ export interface CommitPlan {
13
+ branch: string | null;
14
+ remoteUrl: string | null;
15
+ staged: string[];
16
+ toStage: string[];
17
+ preservedUnstaged: string[];
18
+ sensitive: string[];
19
+ }
20
+ export declare function getCommitPlan(rootDir: string): Promise<CommitPlan>;
21
+ export declare function stageCommitPlan(rootDir: string, plan: CommitPlan): Promise<void>;
22
+ export declare function getStagedSummary(rootDir: string): Promise<string>;
12
23
  export declare function getGitStatus(rootDir: string): Promise<GitStatus>;
13
24
  export declare function initGit(rootDir: string): Promise<void>;
14
25
  export declare function generateGitignore(rootDir: string, analysis: ProjectAnalysis): Promise<void>;
15
26
  export declare function stageAll(rootDir: string): Promise<void>;
16
27
  export declare function stageFiles(rootDir: string, files: string[]): Promise<void>;
17
28
  export declare function generateCommitMessage(rootDir: string, useAI: boolean): Promise<string>;
18
- export declare function commit(rootDir: string, message: string): Promise<void>;
29
+ export declare function commit(rootDir: string, message: string): Promise<boolean>;
19
30
  export declare function push(rootDir: string, branch?: string): Promise<void>;
20
31
  export declare function addRemote(rootDir: string, url: string): Promise<void>;
21
32
  export declare function getCurrentBranch(rootDir: string): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"git-service.d.ts","sourceRoot":"","sources":["../../src/services/git-service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAKtE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA4CtE;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5D;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDjG;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7D;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhF;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAsC5F;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW5E;AAED,wBAAsB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe1E;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3E;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIvE"}
1
+ {"version":3,"file":"git-service.d.ts","sourceRoot":"","sources":["../../src/services/git-service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAKtE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAUD,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAqBxE;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtF;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEvE;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA4CtE;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5D;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDjG;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7D;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhF;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAsC5F;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAY/E;AAED,wBAAsB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB1E;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3E;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIvE"}
@@ -4,6 +4,42 @@ import { join } from 'path';
4
4
  import { getProvider } from '../ai/provider.js';
5
5
  import { commitMessagePrompt } from '../ai/prompts.js';
6
6
  import { logger } from '../utils/logger.js';
7
+ function looksSensitive(path) {
8
+ const normalized = path.replace(/\\/g, '/').toLowerCase();
9
+ const name = normalized.split('/').pop() || '';
10
+ if (/^\.env(?:\.|$)/.test(name) && !/\.(example|sample|template)$/.test(name))
11
+ return true;
12
+ return /(^|\/)(\.npmrc|\.pypirc|credentials(?:\.json)?|secrets?(?:\.json)?|id_rsa|id_ed25519)$/.test(normalized) ||
13
+ /\.(pem|p12|pfx|key)$/.test(name);
14
+ }
15
+ export async function getCommitPlan(rootDir) {
16
+ const git = simpleGit(rootDir);
17
+ const status = await git.status();
18
+ const remotes = await git.getRemotes(true);
19
+ const origin = remotes.find(remote => remote.name === 'origin');
20
+ const staged = status.files.filter(file => file.index !== ' ' && file.index !== '?')
21
+ .map(file => file.path);
22
+ const toStage = status.files.filter(file => file.index === '?' ||
23
+ (file.index === ' ' && file.working_dir !== ' '))
24
+ .map(file => file.path);
25
+ const preservedUnstaged = status.files.filter(file => file.index !== ' ' && file.index !== '?' && file.working_dir !== ' ').map(file => file.path);
26
+ return {
27
+ branch: status.current,
28
+ remoteUrl: origin?.refs.push || null,
29
+ staged,
30
+ toStage,
31
+ preservedUnstaged,
32
+ sensitive: [...new Set([...staged, ...toStage].filter(looksSensitive))],
33
+ };
34
+ }
35
+ export async function stageCommitPlan(rootDir, plan) {
36
+ if (plan.toStage.length === 0)
37
+ return;
38
+ await simpleGit(rootDir).raw(['add', '-A', '--', ...plan.toStage]);
39
+ }
40
+ export async function getStagedSummary(rootDir) {
41
+ return simpleGit(rootDir).diff(['--cached', '--stat']);
42
+ }
7
43
  export async function getGitStatus(rootDir) {
8
44
  const git = simpleGit(rootDir);
9
45
  try {
@@ -129,14 +165,17 @@ export async function commit(rootDir, message) {
129
165
  // Nothing staged — skip commit silently instead of throwing
130
166
  if (status.staged.length === 0) {
131
167
  logger.dimmed('Nothing to commit — working tree clean');
132
- return;
168
+ return false;
133
169
  }
134
170
  await git.commit(message);
171
+ return true;
135
172
  }
136
173
  export async function push(rootDir, branch) {
137
174
  const git = simpleGit(rootDir);
138
175
  const status = await git.status();
139
- const currentBranch = branch || status.current || 'main';
176
+ const currentBranch = branch || status.current;
177
+ if (!currentBranch)
178
+ throw new Error('Cannot push from a detached HEAD or unnamed branch');
140
179
  try {
141
180
  await git.push('origin', currentBranch, ['--set-upstream']);
142
181
  }
@@ -154,7 +193,7 @@ export async function addRemote(rootDir, url) {
154
193
  const git = simpleGit(rootDir);
155
194
  const remotes = await git.getRemotes();
156
195
  if (remotes.some(r => r.name === 'origin')) {
157
- await git.remote(['set-url', 'origin', url]);
196
+ throw new Error('Origin remote already exists; refusing to replace it');
158
197
  }
159
198
  else {
160
199
  await git.addRemote('origin', url);
@@ -1 +1 @@
1
- {"version":3,"file":"git-service.js","sourceRoot":"","sources":["../../src/services/git-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-service.js","sourceRoot":"","sources":["../../src/services/git-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface ConversionResult {
2
+ latex: string;
3
+ outputPath: string;
4
+ }
5
+ /**
6
+ * Extract text from a PDF file using pdf-parse
7
+ */
8
+ export declare function extractPDFText(pdfPath: string): Promise<string>;
9
+ /**
10
+ * Convert extracted PDF text into a LaTeX resume using AI
11
+ */
12
+ export declare function convertPDFToLatex(pdfPath: string, ownerInfo: {
13
+ name?: string;
14
+ email?: string;
15
+ website?: string;
16
+ }): Promise<ConversionResult>;
17
+ //# sourceMappingURL=pdf-to-latex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf-to-latex.d.ts","sourceRoot":"","sources":["../../src/services/pdf-to-latex.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BrE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D,OAAO,CAAC,gBAAgB,CAAC,CA4D3B"}
@@ -0,0 +1,108 @@
1
+ import { existsSync, writeFileSync } from 'fs';
2
+ import { join } from 'path';
3
+ import { homedir } from 'os';
4
+ import { createRequire } from 'module';
5
+ import { getProvider } from '../ai/provider.js';
6
+ import { pdfToLatexPrompt } from '../ai/prompts.js';
7
+ import { logger, spinner } from '../utils/logger.js';
8
+ const _require = createRequire(import.meta.url);
9
+ /**
10
+ * Extract text from a PDF file using pdf-parse
11
+ */
12
+ export async function extractPDFText(pdfPath) {
13
+ if (!existsSync(pdfPath)) {
14
+ throw new Error(`PDF not found: ${pdfPath}`);
15
+ }
16
+ const { readFileSync } = await import('fs');
17
+ try {
18
+ const { PDFParse } = await import('pdf-parse');
19
+ const buffer = readFileSync(pdfPath);
20
+ const parser = new PDFParse({ data: buffer });
21
+ let text;
22
+ try {
23
+ const data = await parser.getText();
24
+ text = data.text.trim();
25
+ }
26
+ finally {
27
+ await parser.destroy();
28
+ }
29
+ if (!text || text.length < 50) {
30
+ throw new Error('PDF appears to be empty or image-only (scanned PDF). Text extraction requires a text-based PDF.');
31
+ }
32
+ return text;
33
+ }
34
+ catch (e) {
35
+ if (e.message.includes('empty') || e.message.includes('image-only'))
36
+ throw e;
37
+ throw new Error(`Failed to read PDF: ${e.message}`);
38
+ }
39
+ }
40
+ /**
41
+ * Convert extracted PDF text into a LaTeX resume using AI
42
+ */
43
+ export async function convertPDFToLatex(pdfPath, ownerInfo) {
44
+ // Step 1: Extract text
45
+ const extractSpin = spinner('Extracting text from PDF...').start();
46
+ let resumeText;
47
+ try {
48
+ resumeText = await extractPDFText(pdfPath);
49
+ extractSpin.succeed(`Extracted ${resumeText.length.toLocaleString()} characters from PDF`);
50
+ }
51
+ catch (e) {
52
+ extractSpin.fail(`PDF extraction failed: ${e.message}`);
53
+ throw e;
54
+ }
55
+ logger.verbose('--- Extracted text preview ---');
56
+ logger.verbose(resumeText.slice(0, 500));
57
+ logger.verbose('---');
58
+ // Step 2: Send to AI
59
+ const aiSpin = spinner('Converting to LaTeX with AI...').start();
60
+ try {
61
+ const provider = getProvider();
62
+ const prompt = pdfToLatexPrompt(resumeText, ownerInfo);
63
+ const messages = [
64
+ {
65
+ role: 'system',
66
+ content: 'You are a LaTeX expert. You convert resume content into clean, compilable LaTeX using the exact template structure provided. You never add markdown fences or explanations — only LaTeX source code.',
67
+ },
68
+ { role: 'user', content: prompt },
69
+ ];
70
+ const response = await provider.generate(messages, {
71
+ temperature: 0.2, // Low temperature for accurate conversion
72
+ maxTokens: 8192,
73
+ });
74
+ let latex = response.content.trim();
75
+ // Strip any accidental markdown fences
76
+ latex = latex
77
+ .replace(/^```(?:latex|tex)?\n?/i, '')
78
+ .replace(/\n?```$/i, '')
79
+ .trim();
80
+ // Validate it looks like LaTeX
81
+ if (!latex.includes('\\documentclass') || !latex.includes('\\end{document}')) {
82
+ throw new Error('AI returned invalid LaTeX — missing \\documentclass or \\end{document}');
83
+ }
84
+ aiSpin.succeed('LaTeX conversion complete');
85
+ // Step 3: Save output
86
+ const outputPath = determineOutputPath(pdfPath);
87
+ writeFileSync(outputPath, latex, 'utf-8');
88
+ return { latex, outputPath };
89
+ }
90
+ catch (e) {
91
+ aiSpin.fail(`AI conversion failed: ${e.message}`);
92
+ throw e;
93
+ }
94
+ }
95
+ function determineOutputPath(pdfPath) {
96
+ const dir = pdfPath.replace(/[/\\][^/\\]+$/, '');
97
+ const baseName = pdfPath.split(/[/\\]/).pop().replace(/\.pdf$/i, '');
98
+ const candidate = join(dir, `${baseName}.tex`);
99
+ try {
100
+ const { accessSync, constants } = _require('fs');
101
+ accessSync(dir, constants.W_OK);
102
+ return candidate;
103
+ }
104
+ catch {
105
+ return join(homedir(), '.autogit', `${baseName}.tex`);
106
+ }
107
+ }
108
+ //# sourceMappingURL=pdf-to-latex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf-to-latex.js","sourceRoot":"","sources":["../../src/services/pdf-to-latex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ProjectAnalysis } from '../scanner/project-analyzer.js';
2
+ export interface PublishOptions {
3
+ yes?: boolean;
4
+ dryRun?: boolean;
5
+ private?: boolean;
6
+ public?: boolean;
7
+ }
8
+ export interface PublishResult {
9
+ published: boolean;
10
+ url?: string;
11
+ }
12
+ export declare function remoteWebUrl(remoteUrl: string): string | undefined;
13
+ export declare function runPublishWorkflow(rootDir: string, analysis: ProjectAnalysis, options: PublishOptions): Promise<PublishResult>;
14
+ //# sourceMappingURL=publish-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-workflow.d.ts","sourceRoot":"","sources":["../../src/services/publish-workflow.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAMtE,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAalE;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC,CAsExB"}
@@ -0,0 +1,96 @@
1
+ import chalk from 'chalk';
2
+ import inquirer from 'inquirer';
3
+ import { addRemote, getGitStatus, push } from './git-service.js';
4
+ import { createRepo, getAuthenticatedUser, repoExists, generateTopics, isGitHubConfigured } from './github-service.js';
5
+ import { logger, spinner } from '../utils/logger.js';
6
+ import { loadConfig } from '../config/manager.js';
7
+ export function remoteWebUrl(remoteUrl) {
8
+ const ssh = remoteUrl.match(/^git@([^:]+):(.+?)(?:\.git)?$/i);
9
+ if (ssh)
10
+ return `https://${ssh[1]}/${ssh[2].replace(/\.git$/, '')}`;
11
+ try {
12
+ const url = new URL(remoteUrl);
13
+ if (!['http:', 'https:'].includes(url.protocol))
14
+ return undefined;
15
+ url.username = '';
16
+ url.password = '';
17
+ url.pathname = url.pathname.replace(/\.git$/, '');
18
+ return url.toString().replace(/\/$/, '');
19
+ }
20
+ catch {
21
+ return undefined;
22
+ }
23
+ }
24
+ export async function runPublishWorkflow(rootDir, analysis, options) {
25
+ const status = await getGitStatus(rootDir);
26
+ if (!status.isRepo && options.dryRun) {
27
+ logger.dimmed('[dry-run] Would initialize Git, then create or use origin and push the new commit');
28
+ return { published: false };
29
+ }
30
+ if (!status.isRepo)
31
+ throw new Error('Not a Git repository');
32
+ let url = status.remoteUrl ? remoteWebUrl(status.remoteUrl) : undefined;
33
+ if (options.dryRun) {
34
+ logger.dimmed(status.hasRemote
35
+ ? `[dry-run] Would push ${status.branch} to existing origin: ${status.remoteUrl}`
36
+ : '[dry-run] No origin remote; repository creation would require confirmation');
37
+ return { published: false, url };
38
+ }
39
+ if (status.hasRemote) {
40
+ logger.info(`Using existing origin: ${status.remoteUrl}`);
41
+ }
42
+ else {
43
+ if (!isGitHubConfigured()) {
44
+ logger.warn('No origin remote or GitHub token. Commit saved locally; run "autogit login" to publish.');
45
+ return { published: false };
46
+ }
47
+ const user = await getAuthenticatedUser();
48
+ const repoName = analysis.name;
49
+ if (await repoExists(user.login, repoName)) {
50
+ logger.warn(`Repository ${user.login}/${repoName} already exists. Set origin yourself to choose the correct destination; no remote was changed.`);
51
+ return { published: false };
52
+ }
53
+ const configuredVisibility = loadConfig().defaults?.visibility;
54
+ let isPrivate = options.private === true || (options.public !== true && configuredVisibility !== 'public');
55
+ if (!options.yes && options.private === undefined && options.public === undefined) {
56
+ const answer = await inquirer.prompt([{
57
+ type: 'list', name: 'visibility', message: `Visibility for ${user.login}/${repoName}:`,
58
+ choices: [
59
+ { name: 'Private', value: 'private' },
60
+ { name: 'Public', value: 'public' },
61
+ ],
62
+ default: isPrivate ? 'private' : 'public',
63
+ }]);
64
+ isPrivate = answer.visibility === 'private';
65
+ }
66
+ if (!options.yes) {
67
+ const answer = await inquirer.prompt([{
68
+ type: 'confirm', name: 'confirm',
69
+ message: `Create ${isPrivate ? 'private' : 'public'} repository ${user.login}/${repoName}?`,
70
+ default: false,
71
+ }]);
72
+ if (!answer.confirm)
73
+ return { published: false };
74
+ }
75
+ const repo = await createRepo({
76
+ name: repoName,
77
+ description: analysis.description || '',
78
+ isPrivate,
79
+ topics: generateTopics(analysis),
80
+ });
81
+ await addRemote(rootDir, repo.cloneUrl);
82
+ url = repo.htmlUrl;
83
+ logger.success(`Created repository: ${chalk.underline(url)}`);
84
+ }
85
+ const pushSpin = spinner('Pushing to origin...').start();
86
+ try {
87
+ await push(rootDir);
88
+ pushSpin.succeed('Pushed to origin');
89
+ return { published: true, url };
90
+ }
91
+ catch (error) {
92
+ pushSpin.fail(`Push failed: ${error.message}`);
93
+ throw error;
94
+ }
95
+ }
96
+ //# sourceMappingURL=publish-workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-workflow.js","sourceRoot":"","sources":["../../src/services/publish-workflow.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { ProjectAnalysis } from '../scanner/project-analyzer.js';
2
+ import { type AIProvider } from '../ai/provider.js';
2
3
  import type { ScanResult } from '../scanner/file-scanner.js';
3
4
  export interface ReadmeResult {
4
5
  content: string;
@@ -6,7 +7,7 @@ export interface ReadmeResult {
6
7
  diff: string | null;
7
8
  path: string;
8
9
  }
9
- export declare function generateReadme(rootDir: string, analysis: ProjectAnalysis, useAI: boolean, scan?: ScanResult): Promise<ReadmeResult>;
10
+ export declare function generateReadme(rootDir: string, analysis: ProjectAnalysis, useAI: boolean, scan?: ScanResult, providerOverride?: AIProvider): Promise<ReadmeResult>;
10
11
  export declare function writeReadme(result: ReadmeResult): Promise<void>;
11
12
  export declare function displayDiff(diff: string): void;
12
13
  //# sourceMappingURL=readme-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"readme-manager.d.ts","sourceRoot":"","sources":["../../src/services/readme-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAKtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,YAAY,CAAC,CAqDvB;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAa9C"}
1
+ {"version":3,"file":"readme-manager.d.ts","sourceRoot":"","sources":["../../src/services/readme-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAA+B,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,UAAU,EACjB,gBAAgB,CAAC,EAAE,UAAU,GAC5B,OAAO,CAAC,YAAY,CAAC,CA4DvB;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAa9C"}