@azrico/azcli 1.2.1 → 1.2.3
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/package.json +1 -1
- package/dist/cli/create-cli.js +0 -40
- package/dist/cli/create-cli.js.map +0 -1
- package/dist/cli/index.js +0 -20
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/options.js +0 -17
- package/dist/cli/options.js.map +0 -1
- package/dist/core/files.js +0 -82
- package/dist/core/files.js.map +0 -1
- package/dist/core/json.js +0 -16
- package/dist/core/json.js.map +0 -1
- package/dist/core/logger.js +0 -26
- package/dist/core/logger.js.map +0 -1
- package/dist/core/process.js +0 -120
- package/dist/core/process.js.map +0 -1
- package/dist/core/project-type.js +0 -41
- package/dist/core/project-type.js.map +0 -1
- package/dist/core/strings.js +0 -20
- package/dist/core/strings.js.map +0 -1
- package/dist/features/build/build.js +0 -46
- package/dist/features/build/build.js.map +0 -1
- package/dist/features/build/command.js +0 -17
- package/dist/features/build/command.js.map +0 -1
- package/dist/features/build/wordpress.js +0 -135
- package/dist/features/build/wordpress.js.map +0 -1
- package/dist/features/clean/clean.js +0 -27
- package/dist/features/clean/clean.js.map +0 -1
- package/dist/features/clean/command.js +0 -13
- package/dist/features/clean/command.js.map +0 -1
- package/dist/features/optimize-transcripts/agent-runner.js +0 -40
- package/dist/features/optimize-transcripts/agent-runner.js.map +0 -1
- package/dist/features/optimize-transcripts/command.js +0 -24
- package/dist/features/optimize-transcripts/command.js.map +0 -1
- package/dist/features/optimize-transcripts/optimize.js +0 -72
- package/dist/features/optimize-transcripts/optimize.js.map +0 -1
- package/dist/features/optimize-transcripts/prompts.js +0 -39
- package/dist/features/optimize-transcripts/prompts.js.map +0 -1
- package/dist/features/optimize-transcripts/redact.js +0 -57
- package/dist/features/optimize-transcripts/redact.js.map +0 -1
- package/dist/features/optimize-transcripts/secret-remover.js +0 -85
- package/dist/features/optimize-transcripts/secret-remover.js.map +0 -1
- package/dist/features/package/command.js +0 -13
- package/dist/features/package/command.js.map +0 -1
- package/dist/features/package/packager.js +0 -132
- package/dist/features/package/packager.js.map +0 -1
- package/dist/features/publish/command.js +0 -13
- package/dist/features/publish/command.js.map +0 -1
- package/dist/features/publish/publish.js +0 -29
- package/dist/features/publish/publish.js.map +0 -1
- package/dist/features/transcripts/command.js +0 -27
- package/dist/features/transcripts/command.js.map +0 -1
- package/dist/features/transcripts/extract.js +0 -148
- package/dist/features/transcripts/extract.js.map +0 -1
- package/dist/features/transcripts/jsonl.js +0 -100
- package/dist/features/transcripts/jsonl.js.map +0 -1
- package/dist/features/transcripts/options.js +0 -53
- package/dist/features/transcripts/options.js.map +0 -1
- package/dist/features/transcripts/render-markdown.js +0 -105
- package/dist/features/transcripts/render-markdown.js.map +0 -1
- package/dist/features/transcripts/sources/claude.js +0 -150
- package/dist/features/transcripts/sources/claude.js.map +0 -1
- package/dist/features/transcripts/sources/codex.js +0 -171
- package/dist/features/transcripts/sources/codex.js.map +0 -1
- package/dist/features/transcripts/types.js +0 -5
- package/dist/features/transcripts/types.js.map +0 -1
- package/dist/features/update/command.js +0 -16
- package/dist/features/update/command.js.map +0 -1
- package/dist/features/update/composer.js +0 -35
- package/dist/features/update/composer.js.map +0 -1
- package/dist/features/update/filter-options.js +0 -23
- package/dist/features/update/filter-options.js.map +0 -1
- package/dist/features/update/update.js +0 -28
- package/dist/features/update/update.js.map +0 -1
- package/dist/features/update/yarn.js +0 -30
- package/dist/features/update/yarn.js.map +0 -1
- package/dist/features/verify-changes/changed-files.js +0 -36
- package/dist/features/verify-changes/changed-files.js.map +0 -1
- package/dist/features/verify-changes/command.js +0 -25
- package/dist/features/verify-changes/command.js.map +0 -1
- package/dist/features/verify-changes/config.js +0 -59
- package/dist/features/verify-changes/config.js.map +0 -1
- package/dist/features/verify-changes/report.js +0 -30
- package/dist/features/verify-changes/report.js.map +0 -1
- package/dist/features/verify-changes/select.js +0 -39
- package/dist/features/verify-changes/select.js.map +0 -1
- package/dist/features/verify-changes/verify.js +0 -54
- package/dist/features/verify-changes/verify.js.map +0 -1
- package/dist/features/yarn/commands.js +0 -18
- package/dist/features/yarn/commands.js.map +0 -1
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/* This lib helps you build a wordpress plugin */
|
|
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.buildWordpress = void 0;
|
|
8
|
-
const files_1 = require("../../core/files");
|
|
9
|
-
const logger_1 = require("../../core/logger");
|
|
10
|
-
const process_1 = require("../../core/process");
|
|
11
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
-
const node_fs_1 = __importDefault(require("node:fs"));
|
|
13
|
-
const node_os_1 = __importDefault(require("node:os"));
|
|
14
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
15
|
-
const composer_1 = require("../update/composer");
|
|
16
|
-
const zip_lib_1 = require("zip-lib");
|
|
17
|
-
const ignored_files = [
|
|
18
|
-
'wp-content',
|
|
19
|
-
'node_modules',
|
|
20
|
-
'package.json',
|
|
21
|
-
'.gitignore',
|
|
22
|
-
'.git',
|
|
23
|
-
'tsconfig.json',
|
|
24
|
-
'yarn.lock',
|
|
25
|
-
'yarn-error.log',
|
|
26
|
-
'cache',
|
|
27
|
-
'temp',
|
|
28
|
-
'build',
|
|
29
|
-
'dist',
|
|
30
|
-
'doc',
|
|
31
|
-
'docs',
|
|
32
|
-
'documents',
|
|
33
|
-
'documentation',
|
|
34
|
-
];
|
|
35
|
-
const files_to_delete = [
|
|
36
|
-
'vendor/**/.git',
|
|
37
|
-
'vendor/**/doxygen.config',
|
|
38
|
-
'vendor/**/doxygen',
|
|
39
|
-
];
|
|
40
|
-
async function buildWordpress(args, run = process_1.runCommand) {
|
|
41
|
-
if (!args.quiet)
|
|
42
|
-
(0, logger_1.showMessage)('Building WP Plugin', 'text');
|
|
43
|
-
const windows_tmpdir = node_os_1.default.tmpdir(); // /tmp
|
|
44
|
-
const homeDir = node_os_1.default.homedir(); // See: https://www.npmjs.com/package/os
|
|
45
|
-
const currentDir = node_path_1.default.resolve(args.path ?? process.cwd());
|
|
46
|
-
const currentFolderName = node_path_1.default.basename(currentDir);
|
|
47
|
-
/* -------------------------------------------------------------------------- */
|
|
48
|
-
const localBuildDir = node_path_1.default.resolve(currentDir, `build`);
|
|
49
|
-
const tempDir = node_fs_1.default.mkdtempSync(node_path_1.default.join(windows_tmpdir, currentFolderName + '-'));
|
|
50
|
-
const desktopDir = node_path_1.default.resolve(homeDir, 'Desktop');
|
|
51
|
-
const destinationPath = node_path_1.default.resolve(desktopDir, 'Build');
|
|
52
|
-
const resultFile = node_path_1.default.resolve(destinationPath, currentFolderName + '.zip');
|
|
53
|
-
if (!args.quiet)
|
|
54
|
-
(0, logger_1.showDivider)();
|
|
55
|
-
if (!args.quiet)
|
|
56
|
-
(0, logger_1.showMessage)(chalk_1.default.gray('Plugin Name :') + ' ' + chalk_1.default.blue(currentFolderName));
|
|
57
|
-
if (!args.quiet)
|
|
58
|
-
(0, logger_1.showMessage)(chalk_1.default.gray('Temp Dir :') + ' ' + chalk_1.default.gray(tempDir));
|
|
59
|
-
if (!args.quiet)
|
|
60
|
-
(0, logger_1.showMessage)(chalk_1.default.gray('Local Build :') + ' ' + chalk_1.default.gray(localBuildDir));
|
|
61
|
-
if (!args.quiet)
|
|
62
|
-
(0, logger_1.showDivider)();
|
|
63
|
-
try {
|
|
64
|
-
if (!args.quiet)
|
|
65
|
-
(0, logger_1.showMessage)(chalk_1.default.gray('Removing old build files...'));
|
|
66
|
-
(0, files_1.removeIfExists)(localBuildDir);
|
|
67
|
-
if (!args.quiet)
|
|
68
|
-
(0, logger_1.showMessage)(chalk_1.default.gray('Creating folders...'));
|
|
69
|
-
(0, files_1.ensureDirectory)(destinationPath);
|
|
70
|
-
(0, files_1.ensureDirectory)(tempDir);
|
|
71
|
-
(0, files_1.ensureDirectory)(localBuildDir);
|
|
72
|
-
const currentFiles = node_fs_1.default.readdirSync(currentDir);
|
|
73
|
-
if (!args.quiet)
|
|
74
|
-
(0, logger_1.showMessage)(chalk_1.default.white('Copy all local files to temp path') +
|
|
75
|
-
' ' +
|
|
76
|
-
chalk_1.default.gray('[') +
|
|
77
|
-
chalk_1.default.blue(currentFiles.length) +
|
|
78
|
-
chalk_1.default.gray(']'));
|
|
79
|
-
const ignored_files_list = ignored_files.map((r) => node_path_1.default.resolve(currentDir, r));
|
|
80
|
-
const currentFilesList = currentFiles.map((r) => node_path_1.default.resolve(currentDir, r));
|
|
81
|
-
for (let index = 0; index < currentFilesList.length; index++) {
|
|
82
|
-
const cf = currentFilesList[index];
|
|
83
|
-
const file_name = node_path_1.default.basename(cf).trim();
|
|
84
|
-
if (file_name.startsWith('.') || ignored_files_list.includes(cf) || ignored_files.includes(file_name)) {
|
|
85
|
-
if (!args.quiet)
|
|
86
|
-
(0, logger_1.showMessage)(chalk_1.default.red('ignore: ' + cf), 'text', false);
|
|
87
|
-
}
|
|
88
|
-
else if ((0, files_1.copyFile)(cf, tempDir)) {
|
|
89
|
-
if (!args.quiet)
|
|
90
|
-
(0, logger_1.showMessage)(chalk_1.default.gray('copy: ' + cf), 'text', false);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
throw new Error(`Could not copy ${cf}`);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/* -------------------------- delete all git files -------------------------- */
|
|
97
|
-
if (!args.quiet)
|
|
98
|
-
(0, logger_1.showMessage)(chalk_1.default.white('delete git files:'));
|
|
99
|
-
for (let index = 0; index < files_to_delete.length; index++) {
|
|
100
|
-
const fdel = files_to_delete[index];
|
|
101
|
-
const res = await (0, files_1.removeMatching)(fdel, tempDir);
|
|
102
|
-
if (!args.quiet)
|
|
103
|
-
(0, logger_1.showMessage)(chalk_1.default.gray(`del: ${fdel} -> ${res}`), 'text', false);
|
|
104
|
-
}
|
|
105
|
-
/* ----------------------------- Update Packages ---------------------------- */
|
|
106
|
-
if (!args.noupdate) {
|
|
107
|
-
await (0, composer_1.updateComposer)({ ...args, path: tempDir, prod: true }, run);
|
|
108
|
-
if (!args.quiet)
|
|
109
|
-
(0, logger_1.showMessage)(chalk_1.default.white('Update Composer packages...'));
|
|
110
|
-
}
|
|
111
|
-
/* ------------------------------ Create Zip ------------------------------- */
|
|
112
|
-
if (!args.quiet)
|
|
113
|
-
(0, logger_1.showMessage)(chalk_1.default.white('Zip files and copy to destination'));
|
|
114
|
-
if (!args.quiet)
|
|
115
|
-
(0, logger_1.showMessage)(chalk_1.default.white(`copy:`), 'none', false);
|
|
116
|
-
if (!args.quiet)
|
|
117
|
-
(0, logger_1.showMessage)(chalk_1.default.gray(tempDir), 'none', false);
|
|
118
|
-
if (!args.quiet)
|
|
119
|
-
(0, logger_1.showMessage)(chalk_1.default.white(' -> '), 'none', false);
|
|
120
|
-
if (!args.quiet)
|
|
121
|
-
(0, logger_1.showMessage)(chalk_1.default.gray(resultFile), 'none', false);
|
|
122
|
-
await (0, zip_lib_1.archiveFolder)(tempDir, resultFile);
|
|
123
|
-
if (!args.quiet)
|
|
124
|
-
(0, logger_1.showMessage)(chalk_1.default.white('Zip done'));
|
|
125
|
-
if (!(0, files_1.copyFile)(resultFile, localBuildDir))
|
|
126
|
-
throw new Error(`Could not copy ${resultFile}`);
|
|
127
|
-
}
|
|
128
|
-
finally {
|
|
129
|
-
if (args.cleanup !== false)
|
|
130
|
-
(0, files_1.removeIfExists)(tempDir);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
exports.buildWordpress = buildWordpress;
|
|
134
|
-
exports.default = buildWordpress;
|
|
135
|
-
//# sourceMappingURL=wordpress.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wordpress.js","sourceRoot":"","sources":["../../../src/features/build/wordpress.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
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.cleanProject = void 0;
|
|
7
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
-
const files_1 = require("../../core/files");
|
|
9
|
-
const project_type_1 = require("../../core/project-type");
|
|
10
|
-
const logger_1 = require("../../core/logger");
|
|
11
|
-
async function cleanProject(options) {
|
|
12
|
-
const cwd = node_path_1.default.resolve(options.path ?? process.cwd());
|
|
13
|
-
const targets = ['build', 'dist'];
|
|
14
|
-
if (options.mode === 'all') {
|
|
15
|
-
const { mode, ...project } = options;
|
|
16
|
-
if ((0, project_type_1.getProjectType)(project, cwd) === 'php')
|
|
17
|
-
targets.push('vendor', 'composer.lock');
|
|
18
|
-
else
|
|
19
|
-
targets.push('**/node_modules', '**/.yarn/cache', '**/.jest/cache', '**/yarn.lock', '**/package-lock.json', '.next');
|
|
20
|
-
}
|
|
21
|
-
for (const target of targets)
|
|
22
|
-
await (0, files_1.removeMatching)(target, cwd);
|
|
23
|
-
if (!options.quiet)
|
|
24
|
-
(0, logger_1.showMessage)('Cleanup done', 'text');
|
|
25
|
-
}
|
|
26
|
-
exports.cleanProject = cleanProject;
|
|
27
|
-
//# sourceMappingURL=clean.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clean.js","sourceRoot":"","sources":["../../../src/features/clean/clean.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAC7B,4CAAkD;AAClD,0DAAyD;AACzD,8CAAgD;AAGzC,KAAK,UAAU,YAAY,CAAC,OAAqB;IACvD,MAAM,GAAG,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE;QAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;QACrC,IAAI,IAAA,6BAAc,EAAC,OAAO,EAAE,GAAG,CAAC,KAAK,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;;YAC/E,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;KAC1H;IACD,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,MAAM,IAAA,sBAAc,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChE,IAAI,CAAC,OAAO,CAAC,KAAK;QAAE,IAAA,oBAAW,EAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAVD,oCAUC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const options_1 = require("../../cli/options");
|
|
4
|
-
const clean_1 = require("./clean");
|
|
5
|
-
const command = {
|
|
6
|
-
command: 'clean <mode>',
|
|
7
|
-
describe: 'Clean build files or all generated project files',
|
|
8
|
-
builder: (cli) => cli.options(options_1.projectOptions)
|
|
9
|
-
.positional('mode', { choices: ['build', 'all'], type: 'string', demandOption: true }),
|
|
10
|
-
handler: async (args) => { await (0, clean_1.cleanProject)(args); },
|
|
11
|
-
};
|
|
12
|
-
exports.default = command;
|
|
13
|
-
//# sourceMappingURL=command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/features/clean/command.ts"],"names":[],"mappings":";;AACA,+CAAmD;AAEnD,mCAAuC;AAGvC,MAAM,OAAO,GAAoC;IAChD,OAAO,EAAE,cAAc;IACvB,QAAQ,EAAE,kDAAkD;IAC5D,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,wBAAc,CAAC;SAC3C,UAAU,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,CAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAChG,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,IAAA,oBAAY,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACtD,CAAC;AACF,kBAAe,OAAO,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
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.runAgent = exports.describeRun = exports.agentRun = void 0;
|
|
7
|
-
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
const process_1 = require("../../core/process");
|
|
10
|
-
const prompts_1 = require("./prompts");
|
|
11
|
-
function agentRun(agent, systemPrompt, model) {
|
|
12
|
-
if (agent === 'claude')
|
|
13
|
-
return {
|
|
14
|
-
cmd: 'claude',
|
|
15
|
-
args: ['-p', '--append-system-prompt', systemPrompt, '--tools', 'Read', 'Glob', 'Grep', '--permission-mode', 'dontAsk', '--no-session-persistence', '--output-format', 'text', ...(model ? ['--model', model] : [])],
|
|
16
|
-
stdin: prompts_1.task_prompt,
|
|
17
|
-
reportFromStdout: true,
|
|
18
|
-
};
|
|
19
|
-
return {
|
|
20
|
-
cmd: 'codex',
|
|
21
|
-
args: ['exec', '--sandbox', 'read-only', '--skip-git-repo-check', '--ephemeral', '--output-last-message', prompts_1.report_file, ...(model ? ['--model', model] : []), '-'],
|
|
22
|
-
stdin: `${systemPrompt}\n\n---\n\n${prompts_1.task_prompt}`,
|
|
23
|
-
reportFromStdout: false,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
exports.agentRun = agentRun;
|
|
27
|
-
function describeRun(run) {
|
|
28
|
-
return [run.cmd, ...run.args.map((arg) => arg.length > 60 ? '<system prompt>' : JSON.stringify(arg))].join(' ') + ' < prompt';
|
|
29
|
-
}
|
|
30
|
-
exports.describeRun = describeRun;
|
|
31
|
-
async function runAgent(run, cwd, execute = process_1.runCommand, quiet = false) {
|
|
32
|
-
const result = await execute(run.cmd, run.args, { cwd, input: run.stdin, quiet });
|
|
33
|
-
const report = node_path_1.default.join(cwd, prompts_1.report_file);
|
|
34
|
-
if (run.reportFromStdout)
|
|
35
|
-
node_fs_1.default.writeFileSync(report, result.stdout);
|
|
36
|
-
if (!node_fs_1.default.existsSync(report))
|
|
37
|
-
throw new Error(`Agent did not create ${prompts_1.report_file}.`);
|
|
38
|
-
}
|
|
39
|
-
exports.runAgent = runAgent;
|
|
40
|
-
//# sourceMappingURL=agent-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../../src/features/optimize-transcripts/agent-runner.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AACzB,0DAA6B;AAC7B,gDAA+D;AAE/D,uCAAqD;AAIrD,SAAgB,QAAQ,CAAC,KAAiB,EAAE,YAAoB,EAAE,KAAc;IAC/E,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO;YAC9B,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,CAAC,IAAI,EAAE,wBAAwB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpN,KAAK,EAAE,qBAAW;YAClB,gBAAgB,EAAE,IAAI;SACtB,CAAC;IACF,OAAO;QACN,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,uBAAuB,EAAE,aAAa,EAAE,uBAAuB,EAAE,qBAAW,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;QACjK,KAAK,EAAE,GAAG,YAAY,cAAc,qBAAW,EAAE;QACjD,gBAAgB,EAAE,KAAK;KACvB,CAAC;AACH,CAAC;AAbD,4BAaC;AAED,SAAgB,WAAW,CAAC,GAAa;IACxC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;AAC/H,CAAC;AAFD,kCAEC;AAEM,KAAK,UAAU,QAAQ,CAAC,GAAa,EAAE,GAAW,EAAE,UAAyB,oBAAU,EAAE,KAAK,GAAG,KAAK;IAC5G,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAW,CAAC,CAAC;IAC3C,IAAI,GAAG,CAAC,gBAAgB;QAAE,iBAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,qBAAW,GAAG,CAAC,CAAC;AACrF,CAAC;AALD,4BAKC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const options_1 = require("../transcripts/options");
|
|
4
|
-
const types_1 = require("../transcripts/types");
|
|
5
|
-
const command_1 = require("../transcripts/command");
|
|
6
|
-
const optimize_1 = require("./optimize");
|
|
7
|
-
const command = {
|
|
8
|
-
command: 'optimize-transcripts <agent>',
|
|
9
|
-
describe: 'Analyse session transcripts and suggest workflow improvements',
|
|
10
|
-
builder: (cli) => cli
|
|
11
|
-
.positional('agent', { type: 'string', choices: types_1.sourceNames, demandOption: true })
|
|
12
|
-
.options(options_1.transcript_filter_options)
|
|
13
|
-
.option('source', { type: 'string', choices: types_1.sourceNames })
|
|
14
|
-
.option('in', { type: 'string', describe: 'Copy previously extracted transcripts into a fresh analysis directory' })
|
|
15
|
-
.option('out', { type: 'string', describe: 'Empty output directory for transcripts and report' })
|
|
16
|
-
.option('system-prompt', { type: 'string', describe: 'Override the analysis prompt' })
|
|
17
|
-
.option('system-prompt-file', { type: 'string', describe: 'Read the analysis prompt from a file' })
|
|
18
|
-
.option('model', { type: 'string' })
|
|
19
|
-
.option('dry-run', { type: 'boolean', describe: 'Prepare transcripts without starting an agent' })
|
|
20
|
-
.check((args) => (0, command_1.validateFilters)({ sinceDays: args['since-days'], last: args.last })),
|
|
21
|
-
handler: async (args) => { await (0, optimize_1.optimizeTranscripts)(args); },
|
|
22
|
-
};
|
|
23
|
-
exports.default = command;
|
|
24
|
-
//# sourceMappingURL=command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/features/optimize-transcripts/command.ts"],"names":[],"mappings":";;AACA,oDAAmE;AACnE,gDAAmD;AACnD,oDAAyD;AACzD,yCAAkE;AAElE,MAAM,OAAO,GAAuC;IACnD,OAAO,EAAE,8BAA8B;IACvC,QAAQ,EAAE,+DAA+D;IACzE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;SACnB,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAW,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SACjF,OAAO,CAAC,mCAAyB,CAAC;SAClC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAW,EAAE,CAAC;SAC1D,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,uEAAuE,EAAE,CAAC;SACnH,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,mDAAmD,EAAE,CAAC;SAChG,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,8BAA8B,EAAE,CAAC;SACrF,MAAM,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,sCAAsC,EAAE,CAAC;SAClG,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SACnC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,+CAA+C,EAAE,CAAC;SACjG,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,yBAAe,EAAC,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,8BAAmB,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC7D,CAAC;AACF,kBAAe,OAAO,CAAC"}
|
|
@@ -1,72 +0,0 @@
|
|
|
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.optimizeTranscripts = exports.prepareTranscripts = 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 extract_1 = require("../transcripts/extract");
|
|
12
|
-
const options_1 = require("../transcripts/options");
|
|
13
|
-
const agent_runner_1 = require("./agent-runner");
|
|
14
|
-
const redact_1 = require("./redact");
|
|
15
|
-
const prompts_1 = require("./prompts");
|
|
16
|
-
function createRunDirectory(options) {
|
|
17
|
-
if (options.out) {
|
|
18
|
-
const directory = node_path_1.default.resolve(options.out);
|
|
19
|
-
if (node_fs_1.default.existsSync(directory) && node_fs_1.default.readdirSync(directory).length > 0)
|
|
20
|
-
throw new Error('Optimization output directory must be empty. Choose a new --out directory.');
|
|
21
|
-
node_fs_1.default.mkdirSync(directory, { recursive: true });
|
|
22
|
-
return directory;
|
|
23
|
-
}
|
|
24
|
-
node_fs_1.default.mkdirSync(options_1.default_out_root, { recursive: true });
|
|
25
|
-
return node_fs_1.default.mkdtempSync(node_path_1.default.join(options_1.default_out_root, `optimize-${options.source ?? options.agent}-${new Date().toISOString().slice(0, 10)}-`));
|
|
26
|
-
}
|
|
27
|
-
async function prepareTranscripts(options) {
|
|
28
|
-
if (options.in) {
|
|
29
|
-
const input = node_path_1.default.resolve(options.in);
|
|
30
|
-
const index = (0, redact_1.readTranscriptIndex)(input);
|
|
31
|
-
const outDir = createRunDirectory(options);
|
|
32
|
-
for (const project of index)
|
|
33
|
-
for (const session of project.sessions) {
|
|
34
|
-
const target = (0, files_1.resolveInside)(outDir, session.file);
|
|
35
|
-
node_fs_1.default.mkdirSync(node_path_1.default.dirname(target), { recursive: true });
|
|
36
|
-
node_fs_1.default.copyFileSync((0, files_1.resolveInside)(input, session.file), target);
|
|
37
|
-
}
|
|
38
|
-
node_fs_1.default.writeFileSync(node_path_1.default.join(outDir, 'index.json'), JSON.stringify(index, null, 2));
|
|
39
|
-
return { outDir, index };
|
|
40
|
-
}
|
|
41
|
-
const source = extract_1.transcript_sources[options.source ?? options.agent];
|
|
42
|
-
return (0, extract_1.extractTranscripts)(source, { ...options, out: createRunDirectory(options), list: false });
|
|
43
|
-
}
|
|
44
|
-
exports.prepareTranscripts = prepareTranscripts;
|
|
45
|
-
async function optimizeTranscripts(options) {
|
|
46
|
-
const systemPrompt = options.systemPromptFile
|
|
47
|
-
? node_fs_1.default.readFileSync(node_path_1.default.resolve(options.systemPromptFile), 'utf8')
|
|
48
|
-
: options.systemPrompt ?? prompts_1.default_system_prompt;
|
|
49
|
-
const { outDir, index } = await prepareTranscripts(options);
|
|
50
|
-
const sessions = index.reduce((count, project) => count + project.sessions.length, 0);
|
|
51
|
-
if (!sessions) {
|
|
52
|
-
if (!options.quiet)
|
|
53
|
-
(0, logger_1.showMessage)('No sessions to analyse', 'text');
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
const redacted = (0, redact_1.redactTranscripts)(outDir, index);
|
|
57
|
-
const run = (0, agent_runner_1.agentRun)(options.agent, systemPrompt, options.model);
|
|
58
|
-
if (!options.quiet) {
|
|
59
|
-
(0, logger_1.showMessage)(`Secrets removed from ${redacted} of ${sessions} transcripts`);
|
|
60
|
-
(0, logger_1.showMessage)((0, agent_runner_1.describeRun)(run));
|
|
61
|
-
}
|
|
62
|
-
if (options.dryRun) {
|
|
63
|
-
if (!options.quiet)
|
|
64
|
-
(0, logger_1.showMessage)('Dry run: agent not started', 'text');
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
await (0, agent_runner_1.runAgent)(run, outDir, undefined, options.quiet);
|
|
68
|
-
if (!options.quiet)
|
|
69
|
-
(0, logger_1.showMessage)('Report: ' + node_path_1.default.join(outDir, prompts_1.report_file));
|
|
70
|
-
}
|
|
71
|
-
exports.optimizeTranscripts = optimizeTranscripts;
|
|
72
|
-
//# sourceMappingURL=optimize.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"optimize.js","sourceRoot":"","sources":["../../../src/features/optimize-transcripts/optimize.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AACzB,0DAA6B;AAC7B,4CAAiD;AACjD,8CAAgD;AAChD,oDAAgF;AAChF,oDAA0D;AAE1D,iDAAiE;AACjE,qCAAkE;AAClE,uCAA+D;AAY/D,SAAS,kBAAkB,CAAC,OAAwB;IACnD,IAAI,OAAO,CAAC,GAAG,EAAE;QAChB,MAAM,SAAS,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,iBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,iBAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAC/F,iBAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,OAAO,SAAS,CAAC;KACjB;IACD,iBAAE,CAAC,SAAS,CAAC,0BAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,OAAO,iBAAE,CAAC,WAAW,CAAC,mBAAI,CAAC,IAAI,CAAC,0BAAgB,EAAE,YAAY,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7I,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,OAAwB;IAChE,IAAI,OAAO,CAAC,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAA,4BAAmB,EAAC,KAAK,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,MAAM,OAAO,IAAI,KAAK;YAAE,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACpE,MAAM,MAAM,GAAG,IAAA,qBAAa,EAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnD,iBAAE,CAAC,SAAS,CAAC,mBAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxD,iBAAE,CAAC,YAAY,CAAC,IAAA,qBAAa,EAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;aAC5D;QACD,iBAAE,CAAC,aAAa,CAAC,mBAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;KACzB;IACD,MAAM,MAAM,GAAG,4BAAkB,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IACnE,OAAO,IAAA,4BAAkB,EAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAClG,CAAC;AAfD,gDAeC;AAEM,KAAK,UAAU,mBAAmB,CAAC,OAAwB;IACjE,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB;QAC5C,CAAC,CAAC,iBAAE,CAAC,YAAY,CAAC,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QACjE,CAAC,CAAC,OAAO,CAAC,YAAY,IAAI,+BAAqB,CAAC;IACjD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtF,IAAI,CAAC,QAAQ,EAAE;QAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,IAAA,oBAAW,EAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;QAAC,OAAO;KAAE;IAC7F,MAAM,QAAQ,GAAG,IAAA,0BAAiB,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,IAAA,uBAAQ,EAAC,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACjE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QACnB,IAAA,oBAAW,EAAC,wBAAwB,QAAQ,OAAO,QAAQ,cAAc,CAAC,CAAC;QAC3E,IAAA,oBAAW,EAAC,IAAA,0BAAW,EAAC,GAAG,CAAC,CAAC,CAAC;KAC9B;IACD,IAAI,OAAO,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,IAAA,oBAAW,EAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;QAAC,OAAO;KAAE;IACtG,MAAM,IAAA,uBAAQ,EAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO,CAAC,KAAK;QAAE,IAAA,oBAAW,EAAC,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,MAAM,EAAE,qBAAW,CAAC,CAAC,CAAC;AAC9E,CAAC;AAhBD,kDAgBC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.task_prompt = exports.default_system_prompt = exports.report_file = void 0;
|
|
4
|
-
exports.report_file = 'optimization-report.md';
|
|
5
|
-
exports.default_system_prompt = `You are reviewing transcripts of AI coding-agent sessions to improve the developer's workflow.
|
|
6
|
-
|
|
7
|
-
Find where skills, tools or instructions would have saved time or prevented mistakes:
|
|
8
|
-
- Skills: reusable instruction packs for a recurring kind of task (e.g. "release a package", "add a CLI command").
|
|
9
|
-
- Tools: scripts, CLI commands, MCP servers or project scripts that would replace repeated manual multi-step work.
|
|
10
|
-
- Hooks and slash commands: checks or actions that should always run at a certain point (after edits, before commits).
|
|
11
|
-
- Project instructions (CLAUDE.md / AGENTS.md): facts or rules the user had to repeat or correct across sessions.
|
|
12
|
-
|
|
13
|
-
Look for:
|
|
14
|
-
- instructions the user typed more than once, in one session or across sessions
|
|
15
|
-
- corrections and pushback: where the agent went wrong and what the user had to explain
|
|
16
|
-
- the same sequence of tool calls repeated across sessions
|
|
17
|
-
- failures, retries and dead ends, and the knowledge that would have avoided them
|
|
18
|
-
- time spent rediscovering project structure, commands or conventions
|
|
19
|
-
- manual verification steps that could be automated
|
|
20
|
-
|
|
21
|
-
How to work:
|
|
22
|
-
- Start with index.json: it lists every session with its summary, timestamps, user message count and tool usage counts.
|
|
23
|
-
- Read the sessions that look most relevant; you don't need to read every file in full.
|
|
24
|
-
- Base every finding on evidence from the transcripts. Skip one-off issues.
|
|
25
|
-
- Transcripts may contain secrets, credentials or personal data. Never repeat them; describe them instead.
|
|
26
|
-
- Do not modify, create or delete any files.
|
|
27
|
-
|
|
28
|
-
Write the report in Markdown:
|
|
29
|
-
1. Summary: the 3-5 changes with the highest payoff, one line each.
|
|
30
|
-
2. Recommendations, ordered by impact. For each one:
|
|
31
|
-
- Type (skill / tool / hook / slash command / project instruction) and a short name
|
|
32
|
-
- Problem: what keeps happening, with evidence (session file and a short paraphrase)
|
|
33
|
-
- Proposal: what it does, when it triggers, its inputs; include a draft (skill outline, script sketch or instruction text)
|
|
34
|
-
- Impact: how often it would apply and what it saves
|
|
35
|
-
3. Patterns that did not make the list, in one line each.
|
|
36
|
-
|
|
37
|
-
Your final answer must be the report only.`;
|
|
38
|
-
exports.task_prompt = `The current folder contains coding-agent session transcripts exported as Markdown, one file per session at <project-folder>/<session-id>.md, and index.json with metadata for every session. Analyse them as described in your instructions and write the report.`;
|
|
39
|
-
//# sourceMappingURL=prompts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/features/optimize-transcripts/prompts.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,wBAAwB,CAAC;AAEvC,QAAA,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAgCM,CAAC;AAE/B,QAAA,WAAW,GAAG,mQAAmQ,CAAC"}
|
|
@@ -1,57 +0,0 @@
|
|
|
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.redactTranscripts = exports.readTranscriptIndex = void 0;
|
|
7
|
-
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
const json_1 = require("../../core/json");
|
|
10
|
-
const files_1 = require("../../core/files");
|
|
11
|
-
const secret_remover_1 = require("./secret-remover");
|
|
12
|
-
function readTranscriptIndex(dir) {
|
|
13
|
-
const value = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(dir, 'index.json'), 'utf8'));
|
|
14
|
-
if (!Array.isArray(value))
|
|
15
|
-
throw new Error('Transcript index must be an array.');
|
|
16
|
-
for (const project of value) {
|
|
17
|
-
if (!(0, json_1.isRecord)(project) || typeof project.folder !== 'string' || typeof project.cwd !== 'string' || !Array.isArray(project.sessions))
|
|
18
|
-
throw new Error('Invalid project in transcript index.');
|
|
19
|
-
for (const session of project.sessions) {
|
|
20
|
-
if (!(0, json_1.isRecord)(session) || !['sessionId', 'file', 'cwd', 'gitBranch', 'summary', 'started', 'ended'].every((key) => typeof session[key] === 'string') ||
|
|
21
|
-
typeof session.records !== 'number' || typeof session.userMessages !== 'number' || !(0, json_1.isRecord)(session.toolUsage) ||
|
|
22
|
-
Object.values(session.toolUsage).some((count) => typeof count !== 'number'))
|
|
23
|
-
throw new Error('Invalid session in transcript index.');
|
|
24
|
-
const file = (0, files_1.resolveInside)(dir, String(session.file));
|
|
25
|
-
if (!node_fs_1.default.statSync(file).isFile())
|
|
26
|
-
throw new Error(`Not a transcript file: ${file}`);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return value;
|
|
30
|
-
}
|
|
31
|
-
exports.readTranscriptIndex = readTranscriptIndex;
|
|
32
|
-
function redactTranscripts(dir, index) {
|
|
33
|
-
// Validate every destination before the first write.
|
|
34
|
-
for (const project of index)
|
|
35
|
-
for (const session of project.sessions)
|
|
36
|
-
(0, files_1.resolveInside)(dir, session.file);
|
|
37
|
-
let changed = 0;
|
|
38
|
-
const sanitized = index.map((project) => {
|
|
39
|
-
const secrets = project.cwd ? (0, secret_remover_1.loadEnvSecrets)(project.cwd) : [];
|
|
40
|
-
const redact = (text) => (0, secret_remover_1.removeSecrets)(text, secrets);
|
|
41
|
-
const sessions = project.sessions.map((session) => {
|
|
42
|
-
const file = (0, files_1.resolveInside)(dir, session.file);
|
|
43
|
-
const text = node_fs_1.default.readFileSync(file, 'utf8');
|
|
44
|
-
const redacted = redact(text);
|
|
45
|
-
if (redacted !== text) {
|
|
46
|
-
node_fs_1.default.writeFileSync(file, redacted);
|
|
47
|
-
changed++;
|
|
48
|
-
}
|
|
49
|
-
return { ...session, summary: redact(session.summary), cwd: redact(session.cwd), gitBranch: redact(session.gitBranch) };
|
|
50
|
-
});
|
|
51
|
-
return { ...project, cwd: redact(project.cwd), sessions };
|
|
52
|
-
});
|
|
53
|
-
node_fs_1.default.writeFileSync(node_path_1.default.join(dir, 'index.json'), JSON.stringify(sanitized, null, 2));
|
|
54
|
-
return changed;
|
|
55
|
-
}
|
|
56
|
-
exports.redactTranscripts = redactTranscripts;
|
|
57
|
-
//# sourceMappingURL=redact.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../../../src/features/optimize-transcripts/redact.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/* Removes secrets found in .env files from text, such as extracted session transcripts */
|
|
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.removeSecrets = exports.loadEnvSecrets = exports.parseEnv = exports.isSecretValue = exports.isSecretKey = void 0;
|
|
8
|
-
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
-
const secret_key_pattern = /(SECRET|TOKEN|PASSW(OR)?D|PWD|API_?KEY|ACCESS_?KEY|PRIVATE|CREDENTIAL|AUTH|SALT|DSN|DATABASE_URL|CONNECTION_STRING|_KEY$)/i;
|
|
11
|
-
/** .env files that hold placeholders, not real values */
|
|
12
|
-
const example_env_pattern = /\.(example|sample|template|dist)$/i;
|
|
13
|
-
const min_secret_length = 6;
|
|
14
|
-
function isSecretKey(key) {
|
|
15
|
-
return secret_key_pattern.test(key);
|
|
16
|
-
}
|
|
17
|
-
exports.isSecretKey = isSecretKey;
|
|
18
|
-
/** Long values mixing letters and digits, like generated keys, are treated as secrets whatever their key */
|
|
19
|
-
function looksRandom(value) {
|
|
20
|
-
return value.length >= 16 && /[a-z]/i.test(value) && /\d/.test(value) && !/\s/.test(value);
|
|
21
|
-
}
|
|
22
|
-
function isSecretValue(key, value) {
|
|
23
|
-
if (value.length < min_secret_length)
|
|
24
|
-
return false;
|
|
25
|
-
return isSecretKey(key) || looksRandom(value);
|
|
26
|
-
}
|
|
27
|
-
exports.isSecretValue = isSecretValue;
|
|
28
|
-
/**
|
|
29
|
-
* Parse KEY=value lines of a .env file.
|
|
30
|
-
* Handles `export`, comments, single/double quotes and inline comments after unquoted values.
|
|
31
|
-
*/
|
|
32
|
-
function parseEnv(content) {
|
|
33
|
-
const result = [];
|
|
34
|
-
for (const line of content.split(/\r?\n/)) {
|
|
35
|
-
const m = line.match(/^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_.-]*)\s*=\s*(.*)$/);
|
|
36
|
-
if (!m)
|
|
37
|
-
continue;
|
|
38
|
-
let value = m[2].trim();
|
|
39
|
-
const quote = value[0];
|
|
40
|
-
if ((quote === '"' || quote === "'") && value.indexOf(quote, 1) > 0) {
|
|
41
|
-
value = value.slice(1, value.indexOf(quote, 1));
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
value = value.replace(/\s+#.*$/, '');
|
|
45
|
-
}
|
|
46
|
-
result.push({ key: m[1], value });
|
|
47
|
-
}
|
|
48
|
-
return result;
|
|
49
|
-
}
|
|
50
|
-
exports.parseEnv = parseEnv;
|
|
51
|
-
/**
|
|
52
|
-
* Secret values of the .env files in a folder (.env, .env.local, .env.production, ...).
|
|
53
|
-
* Example files and values that don't look secret (NODE_ENV=production, PORT=3000) are left out.
|
|
54
|
-
*/
|
|
55
|
-
function loadEnvSecrets(dir) {
|
|
56
|
-
if (!node_fs_1.default.existsSync(dir))
|
|
57
|
-
return [];
|
|
58
|
-
return node_fs_1.default
|
|
59
|
-
.readdirSync(dir, { withFileTypes: true })
|
|
60
|
-
.filter((e) => e.isFile() && /^\.env(\..+)?$/.test(e.name) && !example_env_pattern.test(e.name))
|
|
61
|
-
.flatMap((e) => parseEnv(node_fs_1.default.readFileSync(node_path_1.default.join(dir, e.name), 'utf8')))
|
|
62
|
-
.filter((s) => isSecretValue(s.key, s.value));
|
|
63
|
-
}
|
|
64
|
-
exports.loadEnvSecrets = loadEnvSecrets;
|
|
65
|
-
/**
|
|
66
|
-
* Replace secrets in text with [REDACTED:KEY]:
|
|
67
|
-
* - every occurrence of a known secret value
|
|
68
|
-
* - the value of KEY=value lines whose key looks secret, even if the value is not known
|
|
69
|
-
*/
|
|
70
|
-
function removeSecrets(text, secrets = []) {
|
|
71
|
-
/* longest first, so a secret that contains another one is replaced whole */
|
|
72
|
-
const sorted = secrets
|
|
73
|
-
.filter((s) => s.value.length >= min_secret_length)
|
|
74
|
-
.sort((a, b) => b.value.length - a.value.length);
|
|
75
|
-
for (const s of sorted) {
|
|
76
|
-
text = text.split(s.value).join(`[REDACTED:${s.key}]`);
|
|
77
|
-
}
|
|
78
|
-
return text.replace(/^(\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=\s*)(.+)$/gm, (line, prefix, key, value) => {
|
|
79
|
-
if (!isSecretKey(key) || value.includes('[REDACTED:'))
|
|
80
|
-
return line;
|
|
81
|
-
return value.trim().length > 0 ? `${prefix}[REDACTED:${key}]` : line;
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
exports.removeSecrets = removeSecrets;
|
|
85
|
-
//# sourceMappingURL=secret-remover.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"secret-remover.js","sourceRoot":"","sources":["../../../src/features/optimize-transcripts/secret-remover.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const packager_1 = require("./packager");
|
|
4
|
-
const command = {
|
|
5
|
-
command: 'package <mode>',
|
|
6
|
-
describe: 'Convert folders in packages into publishable packages',
|
|
7
|
-
builder: (cli) => cli
|
|
8
|
-
.positional('mode', { choices: ['prepare', 'finalize', 'publish', 'go'], type: 'string', demandOption: true })
|
|
9
|
-
.option('path', { type: 'string', describe: 'Project directory' }),
|
|
10
|
-
handler: async (args) => { await (0, packager_1.packageProject)(args); },
|
|
11
|
-
};
|
|
12
|
-
exports.default = command;
|
|
13
|
-
//# sourceMappingURL=command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/features/package/command.ts"],"names":[],"mappings":";;AACA,yCAA4C;AAG5C,MAAM,OAAO,GAAsC;IAClD,OAAO,EAAE,gBAAgB;IACzB,QAAQ,EAAE,uDAAuD;IACjE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;SACnB,UAAU,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SACtH,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IACnE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACxD,CAAC;AACF,kBAAe,OAAO,CAAC"}
|