@azrico/azcli 1.2.3 → 1.2.5

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 (102) hide show
  1. package/README.md +5 -0
  2. package/dist/cli/create-cli.js +37 -0
  3. package/dist/cli/create-cli.js.map +1 -0
  4. package/dist/cli/index.js +23 -0
  5. package/dist/cli/index.js.map +1 -0
  6. package/dist/cli/options.js +17 -0
  7. package/dist/cli/options.js.map +1 -0
  8. package/dist/core/files.js +82 -0
  9. package/dist/core/files.js.map +1 -0
  10. package/dist/core/json.js +16 -0
  11. package/dist/core/json.js.map +1 -0
  12. package/dist/core/logger.js +26 -0
  13. package/dist/core/logger.js.map +1 -0
  14. package/dist/core/process.js +125 -0
  15. package/dist/core/process.js.map +1 -0
  16. package/dist/core/project-type.js +41 -0
  17. package/dist/core/project-type.js.map +1 -0
  18. package/dist/core/strings.js +20 -0
  19. package/dist/core/strings.js.map +1 -0
  20. package/dist/features/build/build.js +46 -0
  21. package/dist/features/build/build.js.map +1 -0
  22. package/dist/features/build/command.js +17 -0
  23. package/dist/features/build/command.js.map +1 -0
  24. package/dist/features/build/wordpress.js +135 -0
  25. package/dist/features/build/wordpress.js.map +1 -0
  26. package/dist/features/clean/clean.js +27 -0
  27. package/dist/features/clean/clean.js.map +1 -0
  28. package/dist/features/clean/command.js +13 -0
  29. package/dist/features/clean/command.js.map +1 -0
  30. package/dist/features/optimize-transcripts/agent-runner.js +40 -0
  31. package/dist/features/optimize-transcripts/agent-runner.js.map +1 -0
  32. package/dist/features/optimize-transcripts/command.js +24 -0
  33. package/dist/features/optimize-transcripts/command.js.map +1 -0
  34. package/dist/features/optimize-transcripts/optimize.js +72 -0
  35. package/dist/features/optimize-transcripts/optimize.js.map +1 -0
  36. package/dist/features/optimize-transcripts/prompts.js +39 -0
  37. package/dist/features/optimize-transcripts/prompts.js.map +1 -0
  38. package/dist/features/optimize-transcripts/redact.js +57 -0
  39. package/dist/features/optimize-transcripts/redact.js.map +1 -0
  40. package/dist/features/optimize-transcripts/secret-remover.js +85 -0
  41. package/dist/features/optimize-transcripts/secret-remover.js.map +1 -0
  42. package/dist/features/package/command.js +13 -0
  43. package/dist/features/package/command.js.map +1 -0
  44. package/dist/features/package/packager.js +132 -0
  45. package/dist/features/package/packager.js.map +1 -0
  46. package/dist/features/publish/command.js +13 -0
  47. package/dist/features/publish/command.js.map +1 -0
  48. package/dist/features/publish/publish.js +29 -0
  49. package/dist/features/publish/publish.js.map +1 -0
  50. package/dist/features/transcripts/command.js +27 -0
  51. package/dist/features/transcripts/command.js.map +1 -0
  52. package/dist/features/transcripts/extract.js +148 -0
  53. package/dist/features/transcripts/extract.js.map +1 -0
  54. package/dist/features/transcripts/jsonl.js +100 -0
  55. package/dist/features/transcripts/jsonl.js.map +1 -0
  56. package/dist/features/transcripts/options.js +53 -0
  57. package/dist/features/transcripts/options.js.map +1 -0
  58. package/dist/features/transcripts/render-markdown.js +105 -0
  59. package/dist/features/transcripts/render-markdown.js.map +1 -0
  60. package/dist/features/transcripts/sources/claude.js +150 -0
  61. package/dist/features/transcripts/sources/claude.js.map +1 -0
  62. package/dist/features/transcripts/sources/codex.js +171 -0
  63. package/dist/features/transcripts/sources/codex.js.map +1 -0
  64. package/dist/features/transcripts/types.js +5 -0
  65. package/dist/features/transcripts/types.js.map +1 -0
  66. package/dist/features/update/command.js +16 -0
  67. package/dist/features/update/command.js.map +1 -0
  68. package/dist/features/update/composer.js +35 -0
  69. package/dist/features/update/composer.js.map +1 -0
  70. package/dist/features/update/filter-options.js +23 -0
  71. package/dist/features/update/filter-options.js.map +1 -0
  72. package/dist/features/update/update.js +28 -0
  73. package/dist/features/update/update.js.map +1 -0
  74. package/dist/features/update/yarn.js +30 -0
  75. package/dist/features/update/yarn.js.map +1 -0
  76. package/dist/features/verify-changes/changed-files.js +36 -0
  77. package/dist/features/verify-changes/changed-files.js.map +1 -0
  78. package/dist/features/verify-changes/command.js +27 -0
  79. package/dist/features/verify-changes/command.js.map +1 -0
  80. package/dist/features/verify-changes/config.js +91 -0
  81. package/dist/features/verify-changes/config.js.map +1 -0
  82. package/dist/features/verify-changes/report.js +30 -0
  83. package/dist/features/verify-changes/report.js.map +1 -0
  84. package/dist/features/verify-changes/select.js +39 -0
  85. package/dist/features/verify-changes/select.js.map +1 -0
  86. package/dist/features/verify-changes/verify.js +54 -0
  87. package/dist/features/verify-changes/verify.js.map +1 -0
  88. package/dist/features/worktree/command.js +55 -0
  89. package/dist/features/worktree/command.js.map +1 -0
  90. package/dist/features/worktree/config.js +115 -0
  91. package/dist/features/worktree/config.js.map +1 -0
  92. package/dist/features/worktree/git.js +62 -0
  93. package/dist/features/worktree/git.js.map +1 -0
  94. package/dist/features/worktree/start.js +156 -0
  95. package/dist/features/worktree/start.js.map +1 -0
  96. package/dist/features/worktree/status.js +50 -0
  97. package/dist/features/worktree/status.js.map +1 -0
  98. package/dist/features/worktree/sync.js +107 -0
  99. package/dist/features/worktree/sync.js.map +1 -0
  100. package/dist/features/yarn/commands.js +18 -0
  101. package/dist/features/yarn/commands.js.map +1 -0
  102. package/package.json +3 -2
@@ -0,0 +1,132 @@
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.packageProject = exports.publish = exports.finalize = exports.prepare = exports.getDistPath = void 0;
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const files_1 = require("../../core/files");
10
+ const logger_1 = require("../../core/logger");
11
+ const process_1 = require("../../core/process");
12
+ const strings_1 = require("../../core/strings");
13
+ const json_1 = require("../../core/json");
14
+ const dependencyKeys = ['dependencies', 'peerDependencies'];
15
+ function readManifest(file, defaults = {}) {
16
+ const value = JSON.parse(node_fs_1.default.readFileSync(file, 'utf8'));
17
+ if (!(0, json_1.isRecord)(value))
18
+ throw new Error(`Expected a package object in ${file}`);
19
+ const manifest = { ...defaults, ...value };
20
+ if (typeof manifest.name !== 'string' || typeof manifest.version !== 'string')
21
+ throw new Error(`Expected a package name and version in ${file}`);
22
+ return { ...manifest, name: manifest.name, version: manifest.version };
23
+ }
24
+ function dependencies(value) {
25
+ if (value === undefined)
26
+ return {};
27
+ if (!(0, json_1.isRecord)(value) || Object.values(value).some((version) => typeof version !== 'string'))
28
+ throw new Error('Package dependencies must map names to version strings.');
29
+ return value;
30
+ }
31
+ function baseName(manifest) {
32
+ return (0, strings_1.customTrim)(manifest.name.replaceAll('workspace', ''), '.', ' ', '/');
33
+ }
34
+ function packageDirectories(cwd, includeCore = false) {
35
+ return node_fs_1.default.readdirSync(node_path_1.default.join(cwd, 'packages'), { withFileTypes: true })
36
+ .filter((entry) => entry.isDirectory() && (includeCore || entry.name !== 'core') && !/^[_.]/.test(entry.name))
37
+ .map((entry) => ({ folder: entry.name, directory: node_path_1.default.join(cwd, 'packages', entry.name) }));
38
+ }
39
+ function packageData(cwd, base) {
40
+ return packageDirectories(cwd).map((entry) => {
41
+ const manifest = readManifest(node_path_1.default.join(entry.directory, 'package.json'), { name: entry.folder, version: base.version });
42
+ const name = manifest.name.split('/').pop()?.split('.').pop() || entry.folder;
43
+ return { ...entry, manifest, name: baseName(base) + '.' + name };
44
+ });
45
+ }
46
+ function writeManifest(file, manifest) {
47
+ node_fs_1.default.mkdirSync(node_path_1.default.dirname(file), { recursive: true });
48
+ node_fs_1.default.writeFileSync(file, JSON.stringify(manifest, null, 2) + '\n');
49
+ }
50
+ function getDistPath(cwd) {
51
+ for (const folder of ['dist', 'build', 'temp']) {
52
+ const directory = node_path_1.default.join(cwd, folder);
53
+ if (node_fs_1.default.existsSync(directory) && node_fs_1.default.statSync(directory).isDirectory())
54
+ return directory;
55
+ }
56
+ throw new Error('No dist/build found. Build your files first.');
57
+ }
58
+ exports.getDistPath = getDistPath;
59
+ function prepare(cwd) {
60
+ const base = readManifest(node_path_1.default.join(cwd, 'package.json'));
61
+ const packages = packageData(cwd, base);
62
+ const directory = node_path_1.default.join(cwd, 'packages', 'core');
63
+ const manifest = { ...base, name: baseName(base), private: false, main: './index', homepage: '.' };
64
+ for (const key of ['scripts', 'source', 'workspaces', 'files', 'devDependencies'])
65
+ delete manifest[key];
66
+ for (const key of dependencyKeys)
67
+ manifest[key] = Object.fromEntries(packages.map((pkg) => [pkg.name, 'workspace:^']));
68
+ (0, files_1.removeIfExists)(directory);
69
+ writeManifest(node_path_1.default.join(directory, 'package.json'), manifest);
70
+ node_fs_1.default.writeFileSync(node_path_1.default.join(directory, 'index.ts'), packages.map((pkg) => `export * from ${JSON.stringify(pkg.name)};`).join('\n'));
71
+ }
72
+ exports.prepare = prepare;
73
+ async function finalize(cwd, run = process_1.runCommand, quiet = false) {
74
+ const base = readManifest(node_path_1.default.join(cwd, 'package.json'));
75
+ const dist = getDistPath(cwd);
76
+ const packages = packageData(cwd, base);
77
+ const core = readManifest(node_path_1.default.join(cwd, 'packages', 'core', 'package.json'));
78
+ node_fs_1.default.cpSync(node_path_1.default.join(cwd, 'packages'), node_path_1.default.join(dist, 'packages'), {
79
+ recursive: true,
80
+ filter: (entry) => !node_path_1.default.basename(entry).startsWith('.') &&
81
+ (node_fs_1.default.lstatSync(entry).isDirectory() || node_path_1.default.basename(entry) === 'package.json'),
82
+ });
83
+ core.version = base.version;
84
+ for (const key of dependencyKeys)
85
+ core[key] = Object.fromEntries(packages.map((pkg) => [pkg.name, base.version]));
86
+ writeManifest(node_path_1.default.join(dist, 'packages', 'core', 'package.json'), core);
87
+ for (const pkg of packages) {
88
+ const manifest = { ...pkg.manifest, name: pkg.name, version: base.version, description: 'module of ' + pkg.name, private: false };
89
+ delete manifest.scripts;
90
+ for (const key of dependencyKeys) {
91
+ const deps = { ...dependencies(manifest[key]), ...dependencies(base[key]) };
92
+ manifest[key] = Object.fromEntries(Object.entries(deps).map(([name, version]) => [name, version.startsWith('workspace') ? base.version : version]));
93
+ }
94
+ const directory = node_path_1.default.join(dist, 'packages', pkg.folder);
95
+ writeManifest(node_path_1.default.join(directory, 'package.json'), manifest);
96
+ await run('npm', ['pkg', 'fix'], { cwd: directory, quiet });
97
+ }
98
+ }
99
+ exports.finalize = finalize;
100
+ async function publish(cwd, run = process_1.runCommand, quiet = false) {
101
+ const dist = getDistPath(cwd);
102
+ for (const pkg of packageDirectories(cwd, true)) {
103
+ const directory = node_path_1.default.join(dist, 'packages', pkg.folder);
104
+ readManifest(node_path_1.default.join(directory, 'package.json'));
105
+ await run('npm', ['publish', '--access', 'public', '--tag', 'latest'], { cwd: directory, quiet });
106
+ }
107
+ }
108
+ exports.publish = publish;
109
+ async function packageProject(options, run = process_1.runCommand) {
110
+ const cwd = node_path_1.default.resolve(options.path ?? process.cwd());
111
+ switch (options.mode) {
112
+ case 'prepare':
113
+ prepare(cwd);
114
+ break;
115
+ case 'finalize':
116
+ await finalize(cwd, run, options.quiet);
117
+ break;
118
+ case 'publish':
119
+ await publish(cwd, run, options.quiet);
120
+ break;
121
+ case 'go':
122
+ prepare(cwd);
123
+ await run('yarn', ['run', 'build'], { cwd, quiet: options.quiet });
124
+ await finalize(cwd, run, options.quiet);
125
+ await publish(cwd, run, options.quiet);
126
+ break;
127
+ }
128
+ if (!options.quiet)
129
+ (0, logger_1.showMessage)(`Package ${options.mode} done`, 'text');
130
+ }
131
+ exports.packageProject = packageProject;
132
+ //# sourceMappingURL=packager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packager.js","sourceRoot":"","sources":["../../../src/features/package/packager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const options_1 = require("../../cli/options");
4
+ const project_type_1 = require("../../core/project-type");
5
+ const publish_1 = require("./publish");
6
+ const command = {
7
+ command: 'publish',
8
+ describe: 'Publish the current package',
9
+ builder: (cli) => cli.options(options_1.projectOptions),
10
+ handler: async (args) => { await (0, publish_1.publishProject)((0, project_type_1.loadProjectType)(args), args); },
11
+ };
12
+ exports.default = command;
13
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/features/publish/command.ts"],"names":[],"mappings":";;AACA,+CAAmD;AACnD,0DAA0E;AAC1E,uCAA2C;AAE3C,MAAM,OAAO,GAAsC;IAClD,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,6BAA6B;IACvC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,wBAAc,CAAC;IAC7C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,IAAA,wBAAc,EAAC,IAAA,8BAAe,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CAC/E,CAAC;AACF,kBAAe,OAAO,CAAC"}
@@ -0,0 +1,29 @@
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.publishProject = void 0;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const process_1 = require("../../core/process");
9
+ const logger_1 = require("../../core/logger");
10
+ const build_1 = require("../build/build");
11
+ async function publishProject(type, options = {}, run = process_1.runCommand) {
12
+ const cwd = node_path_1.default.resolve(options.path ?? process.cwd());
13
+ const execution = { cwd, quiet: options.quiet };
14
+ if (type === 'yarn') {
15
+ await run('yarn', ['run', 'build'], execution);
16
+ await run('npm', ['publish', '--access', 'public', '--tag', 'latest'], execution);
17
+ }
18
+ else if (type === 'python') {
19
+ const files = (0, build_1.distributionFiles)(cwd);
20
+ await run('python', ['-m', 'pip', 'install', '--upgrade', 'twine'], execution);
21
+ await run('python', ['-m', 'twine', 'upload', ...files], execution);
22
+ }
23
+ else
24
+ throw new Error(`Publishing is not supported for ${type} projects.`);
25
+ if (!options.quiet)
26
+ (0, logger_1.showMessage)('Publish done', 'text');
27
+ }
28
+ exports.publishProject = publishProject;
29
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/features/publish/publish.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAC7B,gDAA+D;AAE/D,8CAAgD;AAChD,0CAAmD;AAE5C,KAAK,UAAU,cAAc,CAAC,IAAiB,EAAE,UAA0B,EAAE,EAAE,MAAqB,oBAAU;IACpH,MAAM,GAAG,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IAChD,IAAI,IAAI,KAAK,MAAM,EAAE;QACpB,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;QAC/C,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;KAClF;SAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;QAC7B,MAAM,KAAK,GAAG,IAAA,yBAAiB,EAAC,GAAG,CAAC,CAAC;QACrC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;QAC/E,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;KACpE;;QAAM,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,YAAY,CAAC,CAAC;IAC5E,IAAI,CAAC,OAAO,CAAC,KAAK;QAAE,IAAA,oBAAW,EAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAZD,wCAYC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateFilters = void 0;
4
+ const extract_1 = require("./extract");
5
+ const options_1 = require("./options");
6
+ const types_1 = require("./types");
7
+ function validateFilters(options) {
8
+ for (const [name, value] of [['since-days', options.sinceDays], ['last', options.last]]) {
9
+ if (value !== undefined && (!Number.isFinite(value) || value < 0 || (name === 'last' && !Number.isInteger(value))))
10
+ throw new Error(`--${name} must be a nonnegative ${name === 'last' ? 'integer' : 'number'}.`);
11
+ }
12
+ return true;
13
+ }
14
+ exports.validateFilters = validateFilters;
15
+ const command = {
16
+ command: 'transcripts <source>',
17
+ describe: 'Extract AI session transcripts as Markdown',
18
+ builder: (cli) => cli
19
+ .positional('source', { type: 'string', choices: types_1.sourceNames, demandOption: true })
20
+ .options(options_1.transcript_filter_options)
21
+ .option('list', { type: 'boolean', describe: 'List projects without writing files' })
22
+ .option('out', { type: 'string', describe: 'Output directory' })
23
+ .check((args) => validateFilters({ sinceDays: args['since-days'], last: args.last })),
24
+ handler: async (args) => { await (0, extract_1.extractTranscripts)(extract_1.transcript_sources[args.source], args); },
25
+ };
26
+ exports.default = command;
27
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/features/transcripts/command.ts"],"names":[],"mappings":";;;AACA,uCAAmE;AACnE,uCAAsD;AACtD,mCAAkE;AAGlE,SAAgB,eAAe,CAAC,OAAuB;IACtD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAU,EAAE;QACjG,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACjH,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,0BAA0B,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;KAC/F;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAND,0CAMC;AAED,MAAM,OAAO,GAAyC;IACrD,OAAO,EAAE,sBAAsB;IAC/B,QAAQ,EAAE,4CAA4C;IACtD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;SACnB,UAAU,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAW,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SAClF,OAAO,CAAC,mCAAyB,CAAC;SAClC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,qCAAqC,EAAE,CAAC;SACpF,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;SAC/D,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACtF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,IAAA,4BAAkB,EAAC,4BAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CAC7F,CAAC;AACF,kBAAe,OAAO,CAAC"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ /* Collects session stats and writes session transcripts (Claude Code, Codex) as Markdown files */
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
+ exports.extractTranscripts = exports.collectSession = exports.sessionFiles = exports.transcript_sources = void 0;
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const node_fs_1 = __importDefault(require("node:fs"));
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ const logger_1 = require("../../core/logger");
12
+ const files_1 = require("../../core/files");
13
+ const claude_1 = require("./sources/claude");
14
+ const codex_1 = require("./sources/codex");
15
+ const options_1 = require("./options");
16
+ const render_markdown_1 = require("./render-markdown");
17
+ const jsonl_1 = require("./jsonl");
18
+ exports.transcript_sources = {
19
+ claude: claude_1.claude_source,
20
+ codex: codex_1.codex_source,
21
+ };
22
+ /* -------------------------------------------------------------------------- */
23
+ /* Sessions */
24
+ /* -------------------------------------------------------------------------- */
25
+ function sessionFiles(session, opts) {
26
+ return opts.includeSubagents ? [session.file, ...session.subFiles] : [session.file];
27
+ }
28
+ exports.sessionFiles = sessionFiles;
29
+ async function collectSession(source, session, files) {
30
+ const info = {
31
+ sessionId: session.sessionId,
32
+ file: '',
33
+ cwd: '',
34
+ gitBranch: '',
35
+ summary: '',
36
+ started: '',
37
+ ended: '',
38
+ records: 0,
39
+ userMessages: 0,
40
+ toolUsage: {},
41
+ };
42
+ let titleRank = -1;
43
+ let first = Infinity;
44
+ let last = -Infinity;
45
+ for (const entries of (0, jsonl_1.sessionEntries)(source, files)) {
46
+ for await (const e of entries) {
47
+ info.records++;
48
+ if (!info.cwd && e.cwd)
49
+ info.cwd = e.cwd;
50
+ if (!info.gitBranch && e.gitBranch)
51
+ info.gitBranch = e.gitBranch;
52
+ if (e.title && e.title.rank >= titleRank)
53
+ [titleRank, info.summary] = [e.title.rank, e.title.text];
54
+ const t = Date.parse(e.timestamp ?? '');
55
+ if (!isNaN(t)) {
56
+ if (t < first)
57
+ [first, info.started] = [t, e.timestamp];
58
+ if (t > last)
59
+ [last, info.ended] = [t, e.timestamp];
60
+ }
61
+ for (const p of e.parts) {
62
+ if (p.kind === 'user' && !e.sidechain)
63
+ info.userMessages++;
64
+ if (p.kind === 'tool_call' && p.toolName)
65
+ info.toolUsage[p.toolName] = (info.toolUsage[p.toolName] ?? 0) + 1;
66
+ }
67
+ }
68
+ }
69
+ if (session.title)
70
+ info.summary = session.title;
71
+ info.toolUsage = Object.fromEntries(Object.entries(info.toolUsage).sort((a, b) => b[1] - a[1]));
72
+ return info;
73
+ }
74
+ exports.collectSession = collectSession;
75
+ /* -------------------------------------------------------------------------- */
76
+ /* Extract */
77
+ /* -------------------------------------------------------------------------- */
78
+ /**
79
+ * List the projects of a source and write one Markdown file per session plus index.json.
80
+ * args: out, project, sinceDays, last, list, userOnly, includeTools, includeThinking, includeSubagents
81
+ */
82
+ async function extractTranscripts(source, args) {
83
+ if (!node_fs_1.default.existsSync(source.root))
84
+ throw new Error(`${source.name} data folder not found: ${source.root}`);
85
+ const initialBadLines = jsonl_1.read_stats.badLines;
86
+ const outDir = node_path_1.default.resolve(args.out || node_path_1.default.join(options_1.default_out_root, source.name));
87
+ const needles = (args.project ?? []).map((p) => p.toLowerCase());
88
+ const sinceMs = Number(args.sinceDays) > 0 ? Date.now() - Number(args.sinceDays) * 86400000 : 0;
89
+ const opts = {
90
+ userOnly: !!args.userOnly,
91
+ includeTools: args.includeTools ?? true,
92
+ includeThinking: args.includeThinking ?? true,
93
+ includeSubagents: !!args.includeSubagents,
94
+ };
95
+ const projects = (await source.listProjects())
96
+ .filter(({ folder, cwd }) => {
97
+ const haystack = [folder.toLowerCase(), cwd.toLowerCase()];
98
+ return needles.length === 0 || needles.some((n) => haystack.some((h) => h.includes(n)));
99
+ })
100
+ .map((p) => ({ ...p, sessions: p.sessions.filter((s) => s.mtime >= sinceMs) }))
101
+ .sort((a, b) => a.folder.localeCompare(b.folder));
102
+ /* --last n: the n most recently modified sessions across all matched projects */
103
+ if (Number(args.last) > 0) {
104
+ const keep = new Set(projects
105
+ .flatMap((p) => p.sessions)
106
+ .sort((a, b) => b.mtime - a.mtime)
107
+ .slice(0, Number(args.last)));
108
+ for (const p of projects)
109
+ p.sessions = p.sessions.filter((s) => keep.has(s));
110
+ }
111
+ const index = [];
112
+ let totalProjects = 0;
113
+ let totalSessions = 0;
114
+ for (const { folder, cwd, sessions } of projects) {
115
+ if (sessions.length === 0)
116
+ continue;
117
+ totalProjects++;
118
+ totalSessions += sessions.length;
119
+ if (!args.quiet)
120
+ (0, logger_1.showMessage)([chalk_1.default.cyan(folder), chalk_1.default.yellow(`${sessions.length} sessions`), chalk_1.default.gray(cwd || '-')]);
121
+ if (args.list)
122
+ continue;
123
+ const project = { folder, cwd, sessions: [] };
124
+ node_fs_1.default.mkdirSync((0, files_1.resolveInside)(outDir, folder), { recursive: true });
125
+ for (const s of sessions) {
126
+ const files = sessionFiles(s, opts);
127
+ const info = await collectSession(source, s, files);
128
+ info.file = `${folder}/${s.sessionId}.md`;
129
+ await (0, render_markdown_1.writeSession)((0, files_1.resolveInside)(outDir, info.file), source, files, info, opts);
130
+ project.sessions.push(info);
131
+ }
132
+ project.sessions.sort((a, b) => a.started.localeCompare(b.started));
133
+ index.push(project);
134
+ }
135
+ const badLines = jsonl_1.read_stats.badLines - initialBadLines;
136
+ const skipped = badLines > 0 ? `, ${badLines} malformed lines skipped` : '';
137
+ if (!args.list) {
138
+ node_fs_1.default.mkdirSync(outDir, { recursive: true });
139
+ node_fs_1.default.writeFileSync(node_path_1.default.join(outDir, 'index.json'), JSON.stringify(index, null, 2));
140
+ }
141
+ if (!args.quiet)
142
+ (0, logger_1.showMessage)(chalk_1.default.green(`total: ${totalProjects} projects, ${totalSessions} sessions${skipped}`));
143
+ if (!args.quiet && !args.list)
144
+ (0, logger_1.showMessage)(chalk_1.default.gray('output: ' + outDir));
145
+ return { outDir, index };
146
+ }
147
+ exports.extractTranscripts = extractTranscripts;
148
+ //# sourceMappingURL=extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/features/transcripts/extract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ /* Shared types and readers for AI tool session transcripts (Claude Code, Codex) */
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
+ exports.sessionEntries = exports.blocksText = exports.folderFromCwd = exports.mergeByTime = exports.readJsonl = exports.read_stats = void 0;
8
+ const node_fs_1 = __importDefault(require("node:fs"));
9
+ const node_readline_1 = __importDefault(require("node:readline"));
10
+ const json_1 = require("../../core/json");
11
+ /** Counts lines that could not be parsed, across all reads */
12
+ exports.read_stats = { badLines: 0 };
13
+ /**
14
+ * Stream records of a JSONL file one line at a time, skipping malformed lines
15
+ */
16
+ async function* readJsonl(file) {
17
+ const input = node_fs_1.default.createReadStream(file, { encoding: 'utf8' });
18
+ const rl = node_readline_1.default.createInterface({ input, crlfDelay: Infinity });
19
+ try {
20
+ for await (const line of rl) {
21
+ if (!line.trim())
22
+ continue;
23
+ let rec;
24
+ try {
25
+ rec = JSON.parse(line);
26
+ }
27
+ catch {
28
+ exports.read_stats.badLines++;
29
+ continue;
30
+ }
31
+ if ((0, json_1.isRecord)(rec))
32
+ yield rec;
33
+ else
34
+ exports.read_stats.badLines++;
35
+ }
36
+ }
37
+ finally {
38
+ rl.close();
39
+ input.destroy();
40
+ }
41
+ }
42
+ exports.readJsonl = readJsonl;
43
+ function entryTime(e) {
44
+ const t = Date.parse(e.timestamp ?? '');
45
+ return isNaN(t) ? -Infinity : t;
46
+ }
47
+ /**
48
+ * Merge several entry streams into one, ordered by timestamp.
49
+ * Entries without a timestamp are passed through as soon as they are read.
50
+ */
51
+ async function* mergeByTime(sources) {
52
+ try {
53
+ const heads = await Promise.all(sources.map((s) => s.next()));
54
+ while (true) {
55
+ let best = -1;
56
+ for (let i = 0; i < heads.length; i++) {
57
+ const h = heads[i];
58
+ if (h.done)
59
+ continue;
60
+ if (best < 0 || entryTime(h.value) < entryTime(heads[best].value))
61
+ best = i;
62
+ }
63
+ if (best < 0)
64
+ return;
65
+ yield heads[best].value;
66
+ heads[best] = await sources[best].next();
67
+ }
68
+ }
69
+ finally {
70
+ await Promise.all(sources.map((source) => source.return(undefined)));
71
+ }
72
+ }
73
+ exports.mergeByTime = mergeByTime;
74
+ /**
75
+ * Same folder naming Claude Code uses for ~/.claude/projects.
76
+ * The Windows drive letter is lowercased so c:\x and C:\x end up in one folder.
77
+ */
78
+ function folderFromCwd(cwd) {
79
+ return cwd.replace(/^[A-Z]:/, (d) => d.toLowerCase()).replace(/[^a-zA-Z0-9]/g, '-');
80
+ }
81
+ exports.folderFromCwd = folderFromCwd;
82
+ /** Tool output that is a string or an array of content blocks */
83
+ function blocksText(content) {
84
+ if (typeof content === 'string')
85
+ return content;
86
+ if (!Array.isArray(content))
87
+ return content == null ? '' : JSON.stringify(content, null, 2);
88
+ return content
89
+ .map((value) => {
90
+ const b = (0, json_1.asRecord)(value);
91
+ return typeof b.text === 'string' ? b.text : `[${b.type ?? 'unknown'}]`;
92
+ })
93
+ .join('\n');
94
+ }
95
+ exports.blocksText = blocksText;
96
+ function sessionEntries(source, files) {
97
+ return files.map((file, i) => source.readEntries(file, i > 0));
98
+ }
99
+ exports.sessionEntries = sessionEntries;
100
+ //# sourceMappingURL=jsonl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl.js","sourceRoot":"","sources":["../../../src/features/transcripts/jsonl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /* Constants of the transcripts and optimize-transcripts commands */
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
+ exports.transcript_filter_options = exports.max_tool_chars = exports.default_out_root = void 0;
8
+ const node_os_1 = __importDefault(require("node:os"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ /** Outside any repo, so extracted transcripts are never committed by accident */
11
+ exports.default_out_root = node_path_1.default.join(node_os_1.default.homedir(), 'ai-transcripts');
12
+ /** Tool calls and results longer than this are cut in transcripts */
13
+ exports.max_tool_chars = 2000;
14
+ /* -------------------------------------------------------------------------- */
15
+ /* Options */
16
+ /* -------------------------------------------------------------------------- */
17
+ /** Options shared by the transcripts and optimize-transcripts commands */
18
+ exports.transcript_filter_options = {
19
+ project: {
20
+ describe: 'only projects whose folder or cwd contains this text (repeatable)',
21
+ type: 'string',
22
+ array: true,
23
+ },
24
+ 'since-days': {
25
+ describe: 'only session files modified in the last n days, 0 for all',
26
+ type: 'number',
27
+ default: 7,
28
+ },
29
+ last: {
30
+ describe: 'only the n most recently modified sessions across the matched projects',
31
+ type: 'number',
32
+ },
33
+ 'user-only': {
34
+ describe: "only the human's text messages",
35
+ type: 'boolean',
36
+ },
37
+ 'include-tools': {
38
+ describe: 'include tool calls and results (cut to 2000 chars), --no-include-tools to leave out',
39
+ type: 'boolean',
40
+ default: true,
41
+ },
42
+ 'include-thinking': {
43
+ describe: 'include thinking blocks as quotes, --no-include-thinking to leave out',
44
+ type: 'boolean',
45
+ default: true,
46
+ },
47
+ 'include-subagents': {
48
+ describe: 'include subagent (sidechain) messages',
49
+ type: 'boolean',
50
+ default: false,
51
+ },
52
+ };
53
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/features/transcripts/options.ts"],"names":[],"mappings":";AAAA,oEAAoE;;;;;;AAEpE,sDAAyB;AACzB,0DAA6B;AAG7B,iFAAiF;AACpE,QAAA,gBAAgB,GAAG,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC1E,qEAAqE;AACxD,QAAA,cAAc,GAAG,IAAI,CAAC;AAEnC,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,0EAA0E;AAC7D,QAAA,yBAAyB,GAAG;IACxC,OAAO,EAAE;QACR,QAAQ,EAAE,mEAAmE;QAC7E,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;KACX;IACD,YAAY,EAAE;QACb,QAAQ,EAAE,2DAA2D;QACrE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC;KACV;IACD,IAAI,EAAE;QACL,QAAQ,EAAE,wEAAwE;QAClF,IAAI,EAAE,QAAQ;KACd;IACD,WAAW,EAAE;QACZ,QAAQ,EAAE,gCAAgC;QAC1C,IAAI,EAAE,SAAS;KACf;IACD,eAAe,EAAE;QAChB,QAAQ,EAAE,qFAAqF;QAC/F,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI;KACb;IACD,kBAAkB,EAAE;QACnB,QAAQ,EAAE,uEAAuE;QACjF,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI;KACb;IACD,mBAAmB,EAAE;QACpB,QAAQ,EAAE,uCAAuC;QACjD,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;KACd;CACiC,CAAC"}