@proletariat/cli 0.3.57 → 0.3.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/media/add.d.ts +19 -0
- package/dist/commands/media/add.js +94 -0
- package/dist/commands/media/add.js.map +1 -0
- package/dist/commands/media/index.d.ts +14 -0
- package/dist/commands/media/index.js +85 -0
- package/dist/commands/media/index.js.map +1 -0
- package/dist/commands/media/list.d.ts +15 -0
- package/dist/commands/media/list.js +89 -0
- package/dist/commands/media/list.js.map +1 -0
- package/dist/commands/media/preprocess.d.ts +19 -0
- package/dist/commands/media/preprocess.js +91 -0
- package/dist/commands/media/preprocess.js.map +1 -0
- package/dist/commands/media/remove.d.ts +18 -0
- package/dist/commands/media/remove.js +101 -0
- package/dist/commands/media/remove.js.map +1 -0
- package/dist/commands/media/show.d.ts +17 -0
- package/dist/commands/media/show.js +122 -0
- package/dist/commands/media/show.js.map +1 -0
- package/dist/commands/orchestrator/start.js +5 -0
- package/dist/commands/orchestrator/start.js.map +1 -1
- package/dist/commands/work/start.d.ts +1 -0
- package/dist/commands/work/start.js +10 -2
- package/dist/commands/work/start.js.map +1 -1
- package/dist/lib/database/index.d.ts +49 -1
- package/dist/lib/database/index.js +127 -0
- package/dist/lib/database/index.js.map +1 -1
- package/dist/lib/execution/runners.d.ts +24 -1
- package/dist/lib/execution/runners.js +184 -46
- package/dist/lib/execution/runners.js.map +1 -1
- package/dist/lib/execution/spawner.d.ts +2 -2
- package/dist/lib/execution/spawner.js +39 -23
- package/dist/lib/execution/spawner.js.map +1 -1
- package/dist/lib/execution/types.d.ts +1 -0
- package/dist/lib/execution/types.js.map +1 -1
- package/dist/lib/external-issues/shortcut.js +2 -1
- package/dist/lib/external-issues/shortcut.js.map +1 -1
- package/dist/lib/media/index.d.ts +91 -0
- package/dist/lib/media/index.js +475 -0
- package/dist/lib/media/index.js.map +1 -0
- package/dist/lib/work-source/config.d.ts +5 -0
- package/dist/lib/work-source/config.js +19 -0
- package/dist/lib/work-source/config.js.map +1 -1
- package/dist/lib/work-source/index.d.ts +1 -1
- package/dist/lib/work-source/index.js +1 -1
- package/dist/lib/work-source/index.js.map +1 -1
- package/oclif.manifest.json +6032 -5663
- package/package.json +1 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
2
|
+
export default class Add extends PMOCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
path: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
interval: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
transcribe: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
};
|
|
15
|
+
protected getPMOOptions(): {
|
|
16
|
+
promptIfMultiple: boolean;
|
|
17
|
+
};
|
|
18
|
+
execute(): Promise<void>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
3
|
+
import { colors, format } from '../../lib/colors.js';
|
|
4
|
+
import { findHQRoot } from '../../lib/repos/index.js';
|
|
5
|
+
import { addMedia, isFfmpegInstalled } from '../../lib/media/index.js';
|
|
6
|
+
import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
|
|
7
|
+
export default class Add extends PMOCommand {
|
|
8
|
+
static description = 'Add a video or audio file to the HQ for preprocessing';
|
|
9
|
+
static examples = [
|
|
10
|
+
'<%= config.bin %> <%= command.id %> /path/to/video.mp4',
|
|
11
|
+
'<%= config.bin %> <%= command.id %> /path/to/video.mp4 --interval 60',
|
|
12
|
+
'<%= config.bin %> <%= command.id %> /path/to/audio.mp3 --no-transcribe',
|
|
13
|
+
];
|
|
14
|
+
static args = {
|
|
15
|
+
path: Args.string({
|
|
16
|
+
description: 'Path to the media file (video or audio)',
|
|
17
|
+
required: false,
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
static flags = {
|
|
21
|
+
...pmoBaseFlags,
|
|
22
|
+
interval: Flags.integer({
|
|
23
|
+
char: 'i',
|
|
24
|
+
description: 'Frame extraction interval in seconds',
|
|
25
|
+
default: 30,
|
|
26
|
+
}),
|
|
27
|
+
transcribe: Flags.boolean({
|
|
28
|
+
description: 'Generate transcript using whisper',
|
|
29
|
+
default: true,
|
|
30
|
+
allowNo: true,
|
|
31
|
+
}),
|
|
32
|
+
};
|
|
33
|
+
getPMOOptions() {
|
|
34
|
+
return { promptIfMultiple: false };
|
|
35
|
+
}
|
|
36
|
+
async execute() {
|
|
37
|
+
const { args, flags } = await this.parse(Add);
|
|
38
|
+
const jsonMode = shouldOutputJson(flags);
|
|
39
|
+
const handleError = (code, message) => {
|
|
40
|
+
if (jsonMode) {
|
|
41
|
+
outputErrorAsJson(code, message, createMetadata('media add', flags));
|
|
42
|
+
this.exit(1);
|
|
43
|
+
}
|
|
44
|
+
this.error(message);
|
|
45
|
+
};
|
|
46
|
+
const hqPath = findHQRoot();
|
|
47
|
+
if (!hqPath) {
|
|
48
|
+
return handleError('NOT_IN_HQ', 'Not in an HQ directory. Run "prlt new" first.');
|
|
49
|
+
}
|
|
50
|
+
if (!isFfmpegInstalled()) {
|
|
51
|
+
return handleError('FFMPEG_NOT_INSTALLED', 'ffmpeg is not installed. Install it with: brew install ffmpeg');
|
|
52
|
+
}
|
|
53
|
+
let filePath;
|
|
54
|
+
if (args.path) {
|
|
55
|
+
filePath = args.path;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
if (jsonMode) {
|
|
59
|
+
const agentConfig = { flags, commandName: 'media add' };
|
|
60
|
+
await this.prompt([{
|
|
61
|
+
type: 'input',
|
|
62
|
+
name: 'path',
|
|
63
|
+
message: 'Enter path to media file:',
|
|
64
|
+
}], agentConfig);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const { path: inputPath } = await this.prompt([{
|
|
68
|
+
type: 'input',
|
|
69
|
+
name: 'path',
|
|
70
|
+
message: 'Enter path to media file (video or audio):',
|
|
71
|
+
}]);
|
|
72
|
+
if (!inputPath || !inputPath.trim()) {
|
|
73
|
+
this.log(colors.textMuted('Operation cancelled.'));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
filePath = inputPath.trim();
|
|
77
|
+
}
|
|
78
|
+
this.log(colors.primary(`\n🎬 Adding media: ${filePath}\n`));
|
|
79
|
+
const result = await addMedia(hqPath, filePath, {
|
|
80
|
+
interval: flags.interval,
|
|
81
|
+
transcribe: flags.transcribe,
|
|
82
|
+
});
|
|
83
|
+
if (result.success) {
|
|
84
|
+
this.log('');
|
|
85
|
+
this.log(format.success(`Media "${result.name}" added and preprocessed`));
|
|
86
|
+
this.log(colors.textMuted(` Location: media/${result.name}/`));
|
|
87
|
+
this.log(colors.textMuted(` View details: prlt media show ${result.name}`));
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
this.error(`Failed to add media: ${result.error}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/commands/media/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
2
|
+
export default class Media extends PMOCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
};
|
|
10
|
+
protected getPMOOptions(): {
|
|
11
|
+
promptIfMultiple: boolean;
|
|
12
|
+
};
|
|
13
|
+
execute(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
2
|
+
import { colors } from '../../lib/colors.js';
|
|
3
|
+
import { shouldOutputJson } from '../../lib/prompt-json.js';
|
|
4
|
+
export default class Media extends PMOCommand {
|
|
5
|
+
static description = 'Media management operations (videos, audio files)';
|
|
6
|
+
static examples = [
|
|
7
|
+
'<%= config.bin %> <%= command.id %> add /path/to/video.mp4',
|
|
8
|
+
'<%= config.bin %> <%= command.id %> list',
|
|
9
|
+
'<%= config.bin %> <%= command.id %> show my-video',
|
|
10
|
+
'<%= config.bin %> <%= command.id %> remove my-video',
|
|
11
|
+
];
|
|
12
|
+
static flags = {
|
|
13
|
+
...pmoBaseFlags,
|
|
14
|
+
};
|
|
15
|
+
getPMOOptions() {
|
|
16
|
+
return { promptIfMultiple: false };
|
|
17
|
+
}
|
|
18
|
+
async execute() {
|
|
19
|
+
const { flags } = await this.parse(Media);
|
|
20
|
+
const jsonMode = shouldOutputJson(flags);
|
|
21
|
+
const menuChoices = [
|
|
22
|
+
{ name: 'List all media', value: 'list', command: 'prlt media list --json' },
|
|
23
|
+
{ name: 'Add media file', value: 'add', command: 'prlt media add --json' },
|
|
24
|
+
{ name: 'Show media details', value: 'show', command: 'prlt media show --json' },
|
|
25
|
+
{ name: 'Remove media', value: 'remove', command: 'prlt media remove --json' },
|
|
26
|
+
{ name: 'Reprocess media', value: 'preprocess', command: 'prlt media preprocess --json' },
|
|
27
|
+
];
|
|
28
|
+
if (!jsonMode) {
|
|
29
|
+
this.log(colors.primary('🎬 Media Operations'));
|
|
30
|
+
this.log('');
|
|
31
|
+
}
|
|
32
|
+
const agentConfig = jsonMode ? { flags, commandName: 'media' } : null;
|
|
33
|
+
const { action } = await this.prompt([{
|
|
34
|
+
type: 'list',
|
|
35
|
+
name: 'action',
|
|
36
|
+
message: 'What would you like to do?',
|
|
37
|
+
choices: menuChoices,
|
|
38
|
+
}], agentConfig);
|
|
39
|
+
if (!action || action === 'cancel') {
|
|
40
|
+
this.log(colors.textMuted('Operation cancelled.'));
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
this.log(colors.primary(`\nExecuting: media ${action}`));
|
|
45
|
+
switch (action) {
|
|
46
|
+
case 'list': {
|
|
47
|
+
const { default: ListCommand } = await import('./list.js');
|
|
48
|
+
const cmd = new ListCommand([], this.config);
|
|
49
|
+
await cmd.run();
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case 'add': {
|
|
53
|
+
const { default: AddCommand } = await import('./add.js');
|
|
54
|
+
const cmd = new AddCommand([], this.config);
|
|
55
|
+
await cmd.run();
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
case 'show': {
|
|
59
|
+
const { default: ShowCommand } = await import('./show.js');
|
|
60
|
+
const cmd = new ShowCommand([], this.config);
|
|
61
|
+
await cmd.run();
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
case 'remove': {
|
|
65
|
+
const { default: RemoveCommand } = await import('./remove.js');
|
|
66
|
+
const cmd = new RemoveCommand([], this.config);
|
|
67
|
+
await cmd.run();
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
case 'preprocess': {
|
|
71
|
+
const { default: PreprocessCommand } = await import('./preprocess.js');
|
|
72
|
+
const cmd = new PreprocessCommand([], this.config);
|
|
73
|
+
await cmd.run();
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
default:
|
|
77
|
+
this.error(`Unknown action: ${action}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
this.error(`Failed to execute media ${action}: ${error instanceof Error ? error.message : String(error)}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/media/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
2
|
+
export default class List extends PMOCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
};
|
|
11
|
+
protected getPMOOptions(): {
|
|
12
|
+
promptIfMultiple: boolean;
|
|
13
|
+
};
|
|
14
|
+
execute(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
3
|
+
import { colors, format } from '../../lib/colors.js';
|
|
4
|
+
import { findHQRoot } from '../../lib/repos/index.js';
|
|
5
|
+
import { getWorkspaceMediaInfo, formatDuration } from '../../lib/media/index.js';
|
|
6
|
+
import { isNonTTY } from '../../lib/prompt-json.js';
|
|
7
|
+
import { visualPadEnd } from '../../lib/string-utils.js';
|
|
8
|
+
export default class List extends PMOCommand {
|
|
9
|
+
static description = 'List all media files in the HQ';
|
|
10
|
+
static examples = [
|
|
11
|
+
'<%= config.bin %> <%= command.id %>',
|
|
12
|
+
'<%= config.bin %> <%= command.id %> --format json',
|
|
13
|
+
];
|
|
14
|
+
static flags = {
|
|
15
|
+
...pmoBaseFlags,
|
|
16
|
+
format: Flags.string({
|
|
17
|
+
char: 'f',
|
|
18
|
+
description: 'Output format',
|
|
19
|
+
options: ['table', 'compact', 'json'],
|
|
20
|
+
default: 'table',
|
|
21
|
+
}),
|
|
22
|
+
};
|
|
23
|
+
getPMOOptions() {
|
|
24
|
+
return { promptIfMultiple: false };
|
|
25
|
+
}
|
|
26
|
+
async execute() {
|
|
27
|
+
const { flags } = await this.parse(List);
|
|
28
|
+
if (flags.format === 'table' && isNonTTY()) {
|
|
29
|
+
flags.format = 'json';
|
|
30
|
+
}
|
|
31
|
+
const hqPath = findHQRoot();
|
|
32
|
+
if (!hqPath) {
|
|
33
|
+
this.error('Not in an HQ directory. Run "prlt new" first.');
|
|
34
|
+
}
|
|
35
|
+
const { media } = getWorkspaceMediaInfo();
|
|
36
|
+
if (media.length === 0) {
|
|
37
|
+
this.log(colors.warning('No media found. Add some with "prlt media add <path>"'));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (flags.format === 'json') {
|
|
41
|
+
this.log(JSON.stringify(media, null, 2));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (flags.format === 'compact') {
|
|
45
|
+
for (const item of media) {
|
|
46
|
+
const icon = item.mediaType === 'video' ? '🎬' : '🎵';
|
|
47
|
+
const duration = item.durationSeconds ? formatDuration(item.durationSeconds) : 'unknown';
|
|
48
|
+
this.log(`${icon} ${item.name} (${item.status}, ${duration}, ${item.frameCount} frames)`);
|
|
49
|
+
}
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// Table format
|
|
53
|
+
this.log(format.title(`🎬 Media (${media.length})`));
|
|
54
|
+
this.log('');
|
|
55
|
+
this.log(colors.textMuted(visualPadEnd('Name', 25) +
|
|
56
|
+
visualPadEnd('Type', 8) +
|
|
57
|
+
visualPadEnd('Status', 12) +
|
|
58
|
+
visualPadEnd('Duration', 12) +
|
|
59
|
+
visualPadEnd('Frames', 8) +
|
|
60
|
+
'Transcript'));
|
|
61
|
+
this.log(colors.textMuted('─'.repeat(75)));
|
|
62
|
+
for (const item of media) {
|
|
63
|
+
const statusColor = item.status === 'ready' ? colors.success :
|
|
64
|
+
item.status === 'error' ? colors.error :
|
|
65
|
+
item.status === 'processing' ? colors.warning :
|
|
66
|
+
colors.textMuted;
|
|
67
|
+
const duration = item.durationSeconds ? formatDuration(item.durationSeconds) : '-';
|
|
68
|
+
const transcript = item.hasTranscript ? '✓' : '-';
|
|
69
|
+
this.log(colors.text(visualPadEnd(item.name, 25)) +
|
|
70
|
+
colors.textMuted(visualPadEnd(item.mediaType, 8)) +
|
|
71
|
+
statusColor(visualPadEnd(item.status, 12)) +
|
|
72
|
+
colors.text(visualPadEnd(duration, 12)) +
|
|
73
|
+
colors.text(visualPadEnd(String(item.frameCount), 8)) +
|
|
74
|
+
colors.text(transcript));
|
|
75
|
+
}
|
|
76
|
+
this.log('');
|
|
77
|
+
const readyCount = media.filter(m => m.status === 'ready').length;
|
|
78
|
+
const errorCount = media.filter(m => m.status === 'error').length;
|
|
79
|
+
this.log(format.subtitle('Summary:'));
|
|
80
|
+
this.log(colors.text(` ${media.length} media item(s)`));
|
|
81
|
+
if (readyCount > 0) {
|
|
82
|
+
this.log(colors.success(` ${readyCount} ready`));
|
|
83
|
+
}
|
|
84
|
+
if (errorCount > 0) {
|
|
85
|
+
this.log(colors.error(` ${errorCount} with errors`));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/media/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
2
|
+
export default class Preprocess extends PMOCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
name: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
interval: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
transcribe: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
};
|
|
15
|
+
protected getPMOOptions(): {
|
|
16
|
+
promptIfMultiple: boolean;
|
|
17
|
+
};
|
|
18
|
+
execute(): Promise<void>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
3
|
+
import { colors, format } from '../../lib/colors.js';
|
|
4
|
+
import { findHQRoot } from '../../lib/repos/index.js';
|
|
5
|
+
import { preprocessMedia, getWorkspaceMediaInfo, isFfmpegInstalled } from '../../lib/media/index.js';
|
|
6
|
+
import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
|
|
7
|
+
export default class Preprocess extends PMOCommand {
|
|
8
|
+
static description = 'Re-run preprocessing on a media item with different settings';
|
|
9
|
+
static examples = [
|
|
10
|
+
'<%= config.bin %> <%= command.id %> my-video',
|
|
11
|
+
'<%= config.bin %> <%= command.id %> my-video --interval 60',
|
|
12
|
+
'<%= config.bin %> <%= command.id %> my-video --no-transcribe',
|
|
13
|
+
];
|
|
14
|
+
static args = {
|
|
15
|
+
name: Args.string({
|
|
16
|
+
description: 'Media item name to preprocess',
|
|
17
|
+
required: false,
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
static flags = {
|
|
21
|
+
...pmoBaseFlags,
|
|
22
|
+
interval: Flags.integer({
|
|
23
|
+
char: 'i',
|
|
24
|
+
description: 'Frame extraction interval in seconds',
|
|
25
|
+
default: 30,
|
|
26
|
+
}),
|
|
27
|
+
transcribe: Flags.boolean({
|
|
28
|
+
description: 'Generate transcript using whisper',
|
|
29
|
+
default: true,
|
|
30
|
+
allowNo: true,
|
|
31
|
+
}),
|
|
32
|
+
};
|
|
33
|
+
getPMOOptions() {
|
|
34
|
+
return { promptIfMultiple: false };
|
|
35
|
+
}
|
|
36
|
+
async execute() {
|
|
37
|
+
const { args, flags } = await this.parse(Preprocess);
|
|
38
|
+
const jsonMode = shouldOutputJson(flags);
|
|
39
|
+
const handleError = (code, message) => {
|
|
40
|
+
if (jsonMode) {
|
|
41
|
+
outputErrorAsJson(code, message, createMetadata('media preprocess', flags));
|
|
42
|
+
this.exit(1);
|
|
43
|
+
}
|
|
44
|
+
this.error(message);
|
|
45
|
+
};
|
|
46
|
+
const hqPath = findHQRoot();
|
|
47
|
+
if (!hqPath) {
|
|
48
|
+
return handleError('NOT_IN_HQ', 'Not in an HQ directory. Run "prlt new" first.');
|
|
49
|
+
}
|
|
50
|
+
if (!isFfmpegInstalled()) {
|
|
51
|
+
return handleError('FFMPEG_NOT_INSTALLED', 'ffmpeg is not installed. Install it with: brew install ffmpeg');
|
|
52
|
+
}
|
|
53
|
+
let mediaName = args.name || null;
|
|
54
|
+
if (!mediaName) {
|
|
55
|
+
const { media } = getWorkspaceMediaInfo();
|
|
56
|
+
if (media.length === 0) {
|
|
57
|
+
return handleError('NO_MEDIA', 'No media found. Add some with "prlt media add <path>"');
|
|
58
|
+
}
|
|
59
|
+
const selected = await this.selectFromList({
|
|
60
|
+
message: 'Select media to preprocess:',
|
|
61
|
+
items: media,
|
|
62
|
+
getName: (m) => `${m.name} (${m.status})`,
|
|
63
|
+
getValue: (m) => m.name,
|
|
64
|
+
getCommand: (m) => `prlt media preprocess ${m.name} --json`,
|
|
65
|
+
jsonMode: jsonMode ? { flags, commandName: 'media preprocess' } : null,
|
|
66
|
+
allowCancel: true,
|
|
67
|
+
});
|
|
68
|
+
if (!selected) {
|
|
69
|
+
this.log(colors.textMuted('Operation cancelled.'));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
mediaName = selected;
|
|
73
|
+
}
|
|
74
|
+
this.log(colors.primary(`\n🔄 Preprocessing "${mediaName}"...`));
|
|
75
|
+
this.log(colors.textMuted(` Interval: ${flags.interval}s, Transcribe: ${flags.transcribe}\n`));
|
|
76
|
+
const result = await preprocessMedia(hqPath, mediaName, {
|
|
77
|
+
interval: flags.interval,
|
|
78
|
+
transcribe: flags.transcribe,
|
|
79
|
+
});
|
|
80
|
+
if (result.success) {
|
|
81
|
+
this.log('');
|
|
82
|
+
this.log(format.success(`Preprocessing complete for "${mediaName}"`));
|
|
83
|
+
this.log(colors.textMuted(` View details: prlt media show ${mediaName}`));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
this.log('');
|
|
87
|
+
this.log(format.error(`Preprocessing had issues: ${result.error}`));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=preprocess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preprocess.js","sourceRoot":"","sources":["../../../src/commands/media/preprocess.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
2
|
+
export default class Remove extends PMOCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
name: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
};
|
|
14
|
+
protected getPMOOptions(): {
|
|
15
|
+
promptIfMultiple: boolean;
|
|
16
|
+
};
|
|
17
|
+
execute(): Promise<void>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
3
|
+
import { colors, format } from '../../lib/colors.js';
|
|
4
|
+
import { findHQRoot } from '../../lib/repos/index.js';
|
|
5
|
+
import { removeMedia, getWorkspaceMediaInfo, showMedia } from '../../lib/media/index.js';
|
|
6
|
+
import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
|
|
7
|
+
export default class Remove extends PMOCommand {
|
|
8
|
+
static description = 'Remove a media item from the HQ';
|
|
9
|
+
static examples = [
|
|
10
|
+
'<%= config.bin %> <%= command.id %> my-video',
|
|
11
|
+
'<%= config.bin %> <%= command.id %> my-video --force',
|
|
12
|
+
'<%= config.bin %> <%= command.id %>',
|
|
13
|
+
];
|
|
14
|
+
static args = {
|
|
15
|
+
name: Args.string({
|
|
16
|
+
description: 'Media item name to remove',
|
|
17
|
+
required: false,
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
static flags = {
|
|
21
|
+
...pmoBaseFlags,
|
|
22
|
+
force: Flags.boolean({
|
|
23
|
+
char: 'f',
|
|
24
|
+
description: 'Skip confirmation prompt',
|
|
25
|
+
default: false,
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
getPMOOptions() {
|
|
29
|
+
return { promptIfMultiple: false };
|
|
30
|
+
}
|
|
31
|
+
async execute() {
|
|
32
|
+
const { args, flags } = await this.parse(Remove);
|
|
33
|
+
const jsonMode = shouldOutputJson(flags);
|
|
34
|
+
const handleError = (code, message) => {
|
|
35
|
+
if (jsonMode) {
|
|
36
|
+
outputErrorAsJson(code, message, createMetadata('media remove', flags));
|
|
37
|
+
this.exit(1);
|
|
38
|
+
}
|
|
39
|
+
this.error(message);
|
|
40
|
+
};
|
|
41
|
+
const hqPath = findHQRoot();
|
|
42
|
+
if (!hqPath) {
|
|
43
|
+
return handleError('NOT_IN_HQ', 'Not in an HQ directory. Run "prlt new" first.');
|
|
44
|
+
}
|
|
45
|
+
let mediaName = args.name || null;
|
|
46
|
+
if (!mediaName) {
|
|
47
|
+
const { media } = getWorkspaceMediaInfo();
|
|
48
|
+
if (media.length === 0) {
|
|
49
|
+
return handleError('NO_MEDIA', 'No media found.');
|
|
50
|
+
}
|
|
51
|
+
const selected = await this.selectFromList({
|
|
52
|
+
message: 'Select media to remove:',
|
|
53
|
+
items: media,
|
|
54
|
+
getName: (m) => m.name,
|
|
55
|
+
getValue: (m) => m.name,
|
|
56
|
+
getCommand: (m) => `prlt media remove ${m.name} --json`,
|
|
57
|
+
jsonMode: jsonMode ? { flags, commandName: 'media remove' } : null,
|
|
58
|
+
allowCancel: true,
|
|
59
|
+
});
|
|
60
|
+
if (!selected) {
|
|
61
|
+
this.log(colors.textMuted('Operation cancelled.'));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
mediaName = selected;
|
|
65
|
+
}
|
|
66
|
+
// Validate media exists
|
|
67
|
+
const item = showMedia(hqPath, mediaName);
|
|
68
|
+
if (!item) {
|
|
69
|
+
return handleError('MEDIA_NOT_FOUND', `Media "${mediaName}" not found.`);
|
|
70
|
+
}
|
|
71
|
+
// Confirmation unless --force
|
|
72
|
+
if (!flags.force) {
|
|
73
|
+
const agentConfig = jsonMode ? { flags, commandName: 'media remove' } : null;
|
|
74
|
+
this.log(colors.warning('\n⚠️ This will:'));
|
|
75
|
+
this.log(colors.text(` • Remove media/${mediaName}/ directory (source + preprocessed assets)`));
|
|
76
|
+
this.log(colors.text(' • Update database\n'));
|
|
77
|
+
const { confirm } = await this.prompt([{
|
|
78
|
+
type: 'list',
|
|
79
|
+
name: 'confirm',
|
|
80
|
+
message: `Are you sure you want to remove "${mediaName}"?`,
|
|
81
|
+
choices: [
|
|
82
|
+
{ name: 'No, cancel', value: 'false', command: '' },
|
|
83
|
+
{ name: 'Yes, remove media', value: 'true', command: `prlt media remove ${mediaName} --force --json` },
|
|
84
|
+
],
|
|
85
|
+
}], agentConfig);
|
|
86
|
+
if (confirm !== 'true') {
|
|
87
|
+
this.log(colors.textMuted('Removal cancelled.'));
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
this.log(colors.primary(`\nRemoving media "${mediaName}"...`));
|
|
92
|
+
const result = removeMedia(hqPath, mediaName);
|
|
93
|
+
if (result.success) {
|
|
94
|
+
this.log(format.success(`Media ${mediaName} removed`));
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.error(`Failed to remove media: ${result.error}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/media/remove.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
2
|
+
export default class Show extends PMOCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
name: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
};
|
|
13
|
+
protected getPMOOptions(): {
|
|
14
|
+
promptIfMultiple: boolean;
|
|
15
|
+
};
|
|
16
|
+
execute(): Promise<void>;
|
|
17
|
+
}
|