promptvc 0.1.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/README.md ADDED
@@ -0,0 +1,78 @@
1
+ # promptvc
2
+
3
+ Local-first, prompt-by-prompt diff tracking for AI coding sessions.
4
+
5
+ ## Requirements
6
+
7
+ - Node.js 18+
8
+ - Git
9
+ - Codex CLI
10
+ - jq (required for per-prompt capture)
11
+ - macOS/Linux (Windows: use WSL or Git Bash)
12
+
13
+ ## Install
14
+
15
+ ```bash
16
+ npm install -g promptvc
17
+ ```
18
+
19
+ ## Setup (recommended)
20
+
21
+ ```bash
22
+ promptvc config
23
+ ```
24
+
25
+ This command finds the installed notify hook and updates `~/.codex/config.toml`. If it cannot edit the file, it prints a ready-to-paste snippet.
26
+
27
+ ### Manual setup
28
+
29
+ Add to `~/.codex/config.toml`:
30
+
31
+ ```toml
32
+ [hooks]
33
+ notify = "/absolute/path/to/promptvc/hooks/codex-notify.sh"
34
+ ```
35
+
36
+ If installed globally via npm, the hook is typically at:
37
+
38
+ ```bash
39
+ $(npm root -g)/promptvc/hooks/codex-notify.sh
40
+ ```
41
+
42
+ ## Usage
43
+
44
+ Initialize a repo:
45
+
46
+ ```bash
47
+ cd /path/to/your/repo
48
+ promptvc init
49
+ ```
50
+
51
+ Run Codex:
52
+
53
+ ```bash
54
+ codex
55
+ ```
56
+
57
+ List sessions:
58
+
59
+ ```bash
60
+ promptvc list
61
+ ```
62
+
63
+ Show a session:
64
+
65
+ ```bash
66
+ promptvc show <session-id>
67
+ ```
68
+
69
+ Optional Codex wrapper:
70
+
71
+ ```bash
72
+ promptvc-codex
73
+ ```
74
+
75
+ ## Troubleshooting
76
+
77
+ - If `promptvc` resolves to a Python shim, run `which promptvc` and ensure your npm global bin is ahead of pyenv on PATH.
78
+ - Ensure `jq` is installed and available on PATH.
Binary file
package/bin/promptvc ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ require('../dist/index.js');
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { main } = require('../dist/proxyCodex.js');
4
+
5
+ main().catch(error => {
6
+ console.error('Fatal error:', error);
7
+ process.exit(1);
8
+ });
@@ -0,0 +1,2 @@
1
+ export declare const renderLogo: () => string;
2
+ //# sourceMappingURL=branding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branding.d.ts","sourceRoot":"","sources":["../src/branding.ts"],"names":[],"mappings":"AAuCA,eAAO,MAAM,UAAU,QAAO,MAAqD,CAAC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.renderLogo = void 0;
7
+ const kleur_1 = __importDefault(require("kleur"));
8
+ const LOGO_LINES = [
9
+ ' .:.. ..',
10
+ ' .:;+;;:....... ..;+;;;:',
11
+ ' .:;:. .;:...;;.....:;..::...;...::',
12
+ ' ...+;...;;;:..;;..:;;;;;..:.:;;:.:;..:..',
13
+ ' .;+++x+;:++;;;:;;:..:......... . .x++;;;:.',
14
+ ' ;+;;+;;x;;;+++;;;;;;;++xXXxxxx;;;;;+Xxx++;.',
15
+ ' :+xxxxXx+XXXXXx+;;:::;..+XXXXx++;;::;:... ..',
16
+ ' ;;;;xXx;.xXXXXxx+++;+;. :xXXxXxxx++x; .. .:;;.',
17
+ ' :;;;;.:xXxxxx+;;+:. .;;++++;;:;. ..:;;;.:;;;.',
18
+ ' ...;x:....... . . ;:.;;:.:..;;;;.',
19
+ ' .....:...... :. . ;;.:;.:;;;..:....',
20
+ ' XX;..... . ;+:.;;;;;;;:..;',
21
+ ' :xxX:.... ........ . ;+x;::::;:;x;...',
22
+ ' :xx: .:... .. .:...::;;;;;:.:;.',
23
+ ' :X+ .;;;::.......:;;. .:.........:;;.',
24
+ ' .++; ;xx+;:.: .....;',
25
+ ' ;x. ;;:... . .. ..',
26
+ ' ;X. ;+;:.. .;;... .. .',
27
+ ' ;XXX; :xx++x+::.. .:...:.....;;;:. :. .',
28
+ ' .xxxX; .;;;;;;;::.::;:.........;;.. .;... .',
29
+ ' :;; ..::::;;+;;:;;:.::::;;+;:..;... .',
30
+ ' . ....:;:.:...;;;;;;.:....'
31
+ ];
32
+ const bandSize = Math.ceil(LOGO_LINES.length / 3);
33
+ const colorizeLogoLine = (line, index) => {
34
+ if (index < bandSize) {
35
+ return kleur_1.default.green(line);
36
+ }
37
+ if (index < bandSize * 2) {
38
+ return kleur_1.default.yellow(line);
39
+ }
40
+ return kleur_1.default.cyan(line);
41
+ };
42
+ const renderLogo = () => LOGO_LINES.map(colorizeLogoLine).join('\n');
43
+ exports.renderLogo = renderLogo;
44
+ //# sourceMappingURL=branding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branding.js","sourceRoot":"","sources":["../src/branding.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAM,UAAU,GAAG;IACjB,8CAA8C;IAC9C,sDAAsD;IACtD,6DAA6D;IAC7D,+DAA+D;IAC/D,gEAAgE;IAChE,gEAAgE;IAChE,2EAA2E;IAC3E,6EAA6E;IAC7E,8EAA8E;IAC9E,iFAAiF;IACjF,mFAAmF;IACnF,kFAAkF;IAClF,oFAAoF;IACpF,kFAAkF;IAClF,+EAA+E;IAC/E,qEAAqE;IACrE,oEAAoE;IACpE,kEAAkE;IAClE,iEAAiE;IACjE,gEAAgE;IAChE,+DAA+D;IAC/D,0DAA0D;CAC3D,CAAC;AAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAElD,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,KAAa,EAAU,EAAE;IAC/D,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;QACrB,OAAO,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,KAAK,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEK,MAAM,UAAU,GAAG,GAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAAvE,QAAA,UAAU,cAA6D"}
@@ -0,0 +1,2 @@
1
+ export declare const runConfigCommand: () => void;
2
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AA0CA,eAAO,MAAM,gBAAgB,QAAO,IA+BnC,CAAC"}
package/dist/config.js ADDED
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runConfigCommand = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const os_1 = __importDefault(require("os"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const kleur_1 = __importDefault(require("kleur"));
11
+ const branding_1 = require("./branding");
12
+ const getCodexConfigPath = () => path_1.default.join(os_1.default.homedir(), '.codex', 'config.toml');
13
+ const getNotifyHookPath = () => path_1.default.resolve(__dirname, '..', 'hooks', 'codex-notify.sh');
14
+ const upsertNotifyHook = (content, hookPath) => {
15
+ const usesCrlf = content.includes('\r\n');
16
+ const normalized = content.replace(/\r\n/g, '\n');
17
+ const notifyLine = `notify = "${hookPath}"`;
18
+ if (!normalized.trim()) {
19
+ const fresh = `[hooks]\n${notifyLine}\n`;
20
+ return usesCrlf ? fresh.replace(/\n/g, '\r\n') : fresh;
21
+ }
22
+ const hooksHeader = /^\s*\[hooks\]\s*$/m;
23
+ const sectionRegex = /^\s*\[hooks\][\s\S]*?(?=^\s*\[|\Z)/m;
24
+ let updated = normalized;
25
+ if (hooksHeader.test(normalized)) {
26
+ const sectionMatch = normalized.match(sectionRegex);
27
+ if (sectionMatch) {
28
+ const section = sectionMatch[0];
29
+ let nextSection = section;
30
+ if (/^\s*notify\s*=.*$/m.test(section)) {
31
+ nextSection = section.replace(/^\s*notify\s*=.*$/m, notifyLine);
32
+ }
33
+ else {
34
+ nextSection = `${section.replace(/\s*$/, '')}\n${notifyLine}\n`;
35
+ }
36
+ updated = normalized.replace(sectionRegex, nextSection);
37
+ }
38
+ }
39
+ else {
40
+ updated = `${normalized.trimEnd()}\n\n[hooks]\n${notifyLine}\n`;
41
+ }
42
+ return usesCrlf ? updated.replace(/\n/g, '\r\n') : updated;
43
+ };
44
+ const runConfigCommand = () => {
45
+ const hookPath = getNotifyHookPath();
46
+ const configPath = getCodexConfigPath();
47
+ const snippet = `[hooks]\nnotify = "${hookPath}"\n`;
48
+ console.log(kleur_1.default.bold().cyan('PromptVC Config'));
49
+ console.log((0, branding_1.renderLogo)());
50
+ console.log('');
51
+ console.log(`${kleur_1.default.bold('Hook path:')} ${hookPath}`);
52
+ console.log(`${kleur_1.default.bold('Codex config:')} ${configPath}`);
53
+ if (!fs_1.default.existsSync(hookPath)) {
54
+ console.log(kleur_1.default.yellow('Warning: notify hook not found at this path.'));
55
+ }
56
+ try {
57
+ fs_1.default.mkdirSync(path_1.default.dirname(configPath), { recursive: true });
58
+ const existing = fs_1.default.existsSync(configPath) ? fs_1.default.readFileSync(configPath, 'utf-8') : '';
59
+ const updated = upsertNotifyHook(existing, hookPath);
60
+ fs_1.default.writeFileSync(configPath, updated, 'utf-8');
61
+ console.log('');
62
+ console.log(kleur_1.default.green('OK: updated Codex config.'));
63
+ console.log('');
64
+ console.log(kleur_1.default.bgBlue('Run "promptvc init" to initialize Prompt Version Controle in your repository.'));
65
+ }
66
+ catch (error) {
67
+ console.log('');
68
+ console.log(kleur_1.default.yellow('Manual setup required.'));
69
+ console.log(`Add this to ${configPath}:`);
70
+ console.log(snippet);
71
+ }
72
+ };
73
+ exports.runConfigCommand = runConfigCommand;
74
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/git.d.ts ADDED
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Get the root directory of the git repository
3
+ */
4
+ export declare function getRepoRoot(cwd?: string): Promise<string>;
5
+ /**
6
+ * Get the current branch name
7
+ */
8
+ export declare function getBranch(cwd?: string): Promise<string>;
9
+ /**
10
+ * Get the current HEAD commit hash
11
+ */
12
+ export declare function getHeadHash(cwd?: string): Promise<string>;
13
+ /**
14
+ * Get the diff between two commits (or from a commit to working tree)
15
+ * @param from - Starting commit hash (default: HEAD)
16
+ * @param to - Ending commit hash (default: working tree)
17
+ * @param cwd - Working directory
18
+ */
19
+ export declare function getDiff(from?: string, to?: string, cwd?: string): Promise<string>;
20
+ /**
21
+ * Get list of files that changed between two commits
22
+ * @param from - Starting commit hash (default: HEAD)
23
+ * @param to - Ending commit hash (default: working tree)
24
+ * @param cwd - Working directory
25
+ */
26
+ export declare function getChangedFiles(from?: string, to?: string, cwd?: string): Promise<string[]>;
27
+ /**
28
+ * Check if the working directory is clean (no uncommitted changes)
29
+ */
30
+ export declare function isWorkingDirClean(cwd?: string): Promise<boolean>;
31
+ /**
32
+ * Get list of files with uncommitted changes (modified, added, deleted)
33
+ */
34
+ export declare function getUncommittedFiles(cwd?: string): Promise<string[]>;
35
+ /**
36
+ * Get diff of uncommitted changes
37
+ */
38
+ export declare function getUncommittedDiff(cwd?: string): Promise<string>;
39
+ /**
40
+ * Get short commit hash (7 characters)
41
+ */
42
+ export declare function getShortHash(hash: string, cwd?: string): Promise<string>;
43
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ9E;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ5E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ9E;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,IAAI,GAAE,MAAe,EACrB,EAAE,CAAC,EAAE,MAAM,EACX,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,IAAI,GAAE,MAAe,EACrB,EAAE,CAAC,EAAE,MAAM,EACX,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBnB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAQrF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAcxF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQrF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ7F"}
package/dist/git.js ADDED
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getRepoRoot = getRepoRoot;
7
+ exports.getBranch = getBranch;
8
+ exports.getHeadHash = getHeadHash;
9
+ exports.getDiff = getDiff;
10
+ exports.getChangedFiles = getChangedFiles;
11
+ exports.isWorkingDirClean = isWorkingDirClean;
12
+ exports.getUncommittedFiles = getUncommittedFiles;
13
+ exports.getUncommittedDiff = getUncommittedDiff;
14
+ exports.getShortHash = getShortHash;
15
+ const simple_git_1 = __importDefault(require("simple-git"));
16
+ /**
17
+ * Get the root directory of the git repository
18
+ */
19
+ async function getRepoRoot(cwd = process.cwd()) {
20
+ const git = (0, simple_git_1.default)(cwd);
21
+ try {
22
+ const root = await git.revparse(['--show-toplevel']);
23
+ return root.trim();
24
+ }
25
+ catch (error) {
26
+ throw new Error(`Not a git repository (or any parent): ${cwd}`);
27
+ }
28
+ }
29
+ /**
30
+ * Get the current branch name
31
+ */
32
+ async function getBranch(cwd = process.cwd()) {
33
+ const git = (0, simple_git_1.default)(cwd);
34
+ try {
35
+ const branch = await git.revparse(['--abbrev-ref', 'HEAD']);
36
+ return branch.trim();
37
+ }
38
+ catch (error) {
39
+ throw new Error('Failed to get current branch');
40
+ }
41
+ }
42
+ /**
43
+ * Get the current HEAD commit hash
44
+ */
45
+ async function getHeadHash(cwd = process.cwd()) {
46
+ const git = (0, simple_git_1.default)(cwd);
47
+ try {
48
+ const hash = await git.revparse(['HEAD']);
49
+ return hash.trim();
50
+ }
51
+ catch (error) {
52
+ throw new Error('Failed to get HEAD hash');
53
+ }
54
+ }
55
+ /**
56
+ * Get the diff between two commits (or from a commit to working tree)
57
+ * @param from - Starting commit hash (default: HEAD)
58
+ * @param to - Ending commit hash (default: working tree)
59
+ * @param cwd - Working directory
60
+ */
61
+ async function getDiff(from = 'HEAD', to, cwd = process.cwd()) {
62
+ const git = (0, simple_git_1.default)(cwd);
63
+ try {
64
+ const args = [from];
65
+ if (to) {
66
+ args.push(to);
67
+ }
68
+ const diff = await git.diff(args);
69
+ return diff;
70
+ }
71
+ catch (error) {
72
+ throw new Error(`Failed to get diff: ${error}`);
73
+ }
74
+ }
75
+ /**
76
+ * Get list of files that changed between two commits
77
+ * @param from - Starting commit hash (default: HEAD)
78
+ * @param to - Ending commit hash (default: working tree)
79
+ * @param cwd - Working directory
80
+ */
81
+ async function getChangedFiles(from = 'HEAD', to, cwd = process.cwd()) {
82
+ const git = (0, simple_git_1.default)(cwd);
83
+ try {
84
+ const args = ['--name-only', from];
85
+ if (to) {
86
+ args.push(to);
87
+ }
88
+ const diff = await git.diff(args);
89
+ const files = diff
90
+ .split('\n')
91
+ .map(f => f.trim())
92
+ .filter(f => f.length > 0);
93
+ return files;
94
+ }
95
+ catch (error) {
96
+ throw new Error(`Failed to get changed files: ${error}`);
97
+ }
98
+ }
99
+ /**
100
+ * Check if the working directory is clean (no uncommitted changes)
101
+ */
102
+ async function isWorkingDirClean(cwd = process.cwd()) {
103
+ const git = (0, simple_git_1.default)(cwd);
104
+ try {
105
+ const status = await git.status();
106
+ return status.isClean();
107
+ }
108
+ catch (error) {
109
+ throw new Error(`Failed to check working directory status: ${error}`);
110
+ }
111
+ }
112
+ /**
113
+ * Get list of files with uncommitted changes (modified, added, deleted)
114
+ */
115
+ async function getUncommittedFiles(cwd = process.cwd()) {
116
+ const git = (0, simple_git_1.default)(cwd);
117
+ try {
118
+ const status = await git.status();
119
+ const files = [
120
+ ...status.modified,
121
+ ...status.created,
122
+ ...status.deleted,
123
+ ...status.renamed.map(r => r.to),
124
+ ];
125
+ return files;
126
+ }
127
+ catch (error) {
128
+ throw new Error(`Failed to get uncommitted files: ${error}`);
129
+ }
130
+ }
131
+ /**
132
+ * Get diff of uncommitted changes
133
+ */
134
+ async function getUncommittedDiff(cwd = process.cwd()) {
135
+ const git = (0, simple_git_1.default)(cwd);
136
+ try {
137
+ const diff = await git.diff();
138
+ return diff;
139
+ }
140
+ catch (error) {
141
+ throw new Error(`Failed to get uncommitted diff: ${error}`);
142
+ }
143
+ }
144
+ /**
145
+ * Get short commit hash (7 characters)
146
+ */
147
+ async function getShortHash(hash, cwd = process.cwd()) {
148
+ const git = (0, simple_git_1.default)(cwd);
149
+ try {
150
+ const shortHash = await git.revparse(['--short', hash]);
151
+ return shortHash.trim();
152
+ }
153
+ catch (error) {
154
+ return hash.substring(0, 7);
155
+ }
156
+ }
157
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,109 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const commander_1 = require("commander");
8
+ const store_1 = require("./store");
9
+ const git_1 = require("./git");
10
+ const config_1 = require("./config");
11
+ const kleur_1 = __importDefault(require("kleur"));
12
+ const program = new commander_1.Command();
13
+ program
14
+ .name('promptvc')
15
+ .description('Version control for AI prompts - track, version, and visualize your AI-assisted coding sessions')
16
+ .version('0.1.0');
17
+ program
18
+ .command('init')
19
+ .description('Initialize PromptVC storage in the current git repository')
20
+ .action(async () => {
21
+ try {
22
+ const repoRoot = await (0, git_1.getRepoRoot)();
23
+ const result = (0, store_1.initRepoStorage)(repoRoot);
24
+ console.log(`Initialized PromptVC in ${result.promptvcDir}`);
25
+ console.log(`Sessions: ${result.sessionsFilePath}`);
26
+ console.log(`Settings: ${result.settingsFilePath}`);
27
+ console.log('');
28
+ console.log(kleur_1.default.blue('Run your coding ai. (codex, claude, gemini)'));
29
+ console.log('');
30
+ console.log(kleur_1.default.green('Get the Prompt Version Control VSCode extension to enhance your experience!'));
31
+ console.log(kleur_1.default.blue('https://marketplace.visualstudio.com/items?itemName=your-extension-id'));
32
+ console.log('');
33
+ console.log(kleur_1.default.green('Findout more at https://promptvc.dev'));
34
+ }
35
+ catch (error) {
36
+ console.error('Error:', error);
37
+ process.exit(1);
38
+ }
39
+ });
40
+ program
41
+ .command('list')
42
+ .description('List recent prompt sessions')
43
+ .option('-n, --limit <number>', 'Number of sessions to show', '10')
44
+ .action(async (options) => {
45
+ try {
46
+ const repoRoot = await (0, git_1.getRepoRoot)();
47
+ (0, store_1.initDb)(repoRoot);
48
+ const limit = parseInt(options.limit, 10);
49
+ const sessions = (0, store_1.getSessions)(limit);
50
+ if (sessions.length === 0) {
51
+ console.log('No sessions found.');
52
+ return;
53
+ }
54
+ console.log(`\nShowing ${sessions.length} most recent session(s):\n`);
55
+ sessions.forEach((session, index) => {
56
+ const date = new Date(session.createdAt).toLocaleString();
57
+ const promptPreview = session.prompt.substring(0, 50);
58
+ const filesCount = session.files.length;
59
+ console.log(`${index + 1}. [${session.provider}] ${promptPreview}${session.prompt.length > 50 ? '...' : ''}`);
60
+ console.log(` ID: ${session.id}`);
61
+ console.log(` Date: ${date}`);
62
+ console.log(` Branch: ${session.branch}`);
63
+ console.log(` Files: ${filesCount}`);
64
+ console.log(` Mode: ${session.mode}`);
65
+ console.log('');
66
+ });
67
+ }
68
+ catch (error) {
69
+ console.error('Error:', error);
70
+ process.exit(1);
71
+ }
72
+ });
73
+ program
74
+ .command('show <session-id>')
75
+ .description('Show details of a specific session')
76
+ .action(async (sessionId) => {
77
+ try {
78
+ const repoRoot = await (0, git_1.getRepoRoot)();
79
+ (0, store_1.initDb)(repoRoot);
80
+ const session = (0, store_1.getSessionById)(sessionId);
81
+ if (!session) {
82
+ console.error(`Session not found: ${sessionId}`);
83
+ process.exit(1);
84
+ }
85
+ console.log('\n=== Prompt Session ===\n');
86
+ console.log(`ID: ${session.id}`);
87
+ console.log(`Provider: ${session.provider}`);
88
+ console.log(`Date: ${new Date(session.createdAt).toLocaleString()}`);
89
+ console.log(`Branch: ${session.branch}`);
90
+ console.log(`Mode: ${session.mode}`);
91
+ console.log(`\nPrompt:\n${session.prompt}`);
92
+ console.log(`\nResponse:\n${session.responseSnippet}`);
93
+ console.log(`\nFiles (${session.files.length}):`);
94
+ session.files.forEach((file) => console.log(` - ${file}`));
95
+ console.log(`\nDiff:\n${session.diff}`);
96
+ }
97
+ catch (error) {
98
+ console.error('Error:', error);
99
+ process.exit(1);
100
+ }
101
+ });
102
+ program
103
+ .command('config')
104
+ .description('Configure the Codex notify hook for PromptVC')
105
+ .action(() => {
106
+ (0, config_1.runConfigCommand)();
107
+ });
108
+ program.parse();
109
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Main function to proxy the Codex CLI
3
+ */
4
+ export declare function main(): Promise<void>;
5
+ //# sourceMappingURL=proxyCodex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxyCodex.d.ts","sourceRoot":"","sources":["../src/proxyCodex.ts"],"names":[],"mappings":"AAmIA;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAyJ1C"}