@they-juanreina/compost-cli 0.1.2 → 0.1.4
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/agreement.d.ts +3 -0
- package/dist/commands/agreement.d.ts.map +1 -0
- package/dist/commands/agreement.js +35 -0
- package/dist/commands/agreement.js.map +1 -0
- package/dist/commands/backup.d.ts +3 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +31 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +3 -2
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/create.d.ts +1 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +39 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +47 -4
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/import.d.ts +3 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +64 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/ingest.d.ts.map +1 -1
- package/dist/commands/ingest.js +1 -0
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/jobs.d.ts +3 -0
- package/dist/commands/jobs.d.ts.map +1 -0
- package/dist/commands/jobs.js +105 -0
- package/dist/commands/jobs.js.map +1 -0
- package/dist/commands/label.d.ts +3 -0
- package/dist/commands/label.d.ts.map +1 -0
- package/dist/commands/label.js +67 -0
- package/dist/commands/label.js.map +1 -0
- package/dist/commands/models.d.ts.map +1 -1
- package/dist/commands/models.js +2 -1
- package/dist/commands/models.js.map +1 -1
- package/dist/commands/recode.d.ts +3 -0
- package/dist/commands/recode.d.ts.map +1 -0
- package/dist/commands/recode.js +60 -0
- package/dist/commands/recode.js.map +1 -0
- package/dist/commands/reindex.d.ts.map +1 -1
- package/dist/commands/reindex.js +19 -7
- package/dist/commands/reindex.js.map +1 -1
- package/dist/commands/rerun.d.ts +3 -0
- package/dist/commands/rerun.d.ts.map +1 -0
- package/dist/commands/rerun.js +91 -0
- package/dist/commands/rerun.js.map +1 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +12 -1
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/secrets.d.ts +3 -0
- package/dist/commands/secrets.d.ts.map +1 -0
- package/dist/commands/secrets.js +145 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +95 -2
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/setupItem.d.ts +26 -0
- package/dist/commands/setupItem.d.ts.map +1 -0
- package/dist/commands/setupItem.js +145 -0
- package/dist/commands/setupItem.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +2 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/transcribe.d.ts.map +1 -1
- package/dist/commands/transcribe.js +32 -4
- package/dist/commands/transcribe.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +29 -1
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +53 -6
- package/dist/commands/watch.js.map +1 -1
- package/dist/engine.d.ts +23 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +32 -0
- package/dist/engine.js.map +1 -0
- package/dist/errors.d.ts +5 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +6 -0
- package/dist/errors.js.map +1 -1
- package/dist/exporters/pdf.d.ts.map +1 -1
- package/dist/exporters/pdf.js +2 -1
- package/dist/exporters/pdf.js.map +1 -1
- package/dist/exporters/prov.d.ts +11 -0
- package/dist/exporters/prov.d.ts.map +1 -0
- package/dist/exporters/prov.js +151 -0
- package/dist/exporters/prov.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/legacy_client.d.ts.map +1 -1
- package/dist/legacy_client.js +2 -1
- package/dist/legacy_client.js.map +1 -1
- package/dist/lib/agreement.d.ts +77 -0
- package/dist/lib/agreement.d.ts.map +1 -0
- package/dist/lib/agreement.js +261 -0
- package/dist/lib/agreement.js.map +1 -0
- package/dist/lib/artifacts.d.ts +35 -2
- package/dist/lib/artifacts.d.ts.map +1 -1
- package/dist/lib/artifacts.js +158 -29
- package/dist/lib/artifacts.js.map +1 -1
- package/dist/lib/backup.d.ts +37 -0
- package/dist/lib/backup.d.ts.map +1 -0
- package/dist/lib/backup.js +57 -0
- package/dist/lib/backup.js.map +1 -0
- package/dist/lib/childEnv.d.ts +13 -0
- package/dist/lib/childEnv.d.ts.map +1 -0
- package/dist/lib/childEnv.js +45 -0
- package/dist/lib/childEnv.js.map +1 -0
- package/dist/lib/config.d.ts +3 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/doctor.d.ts +3 -0
- package/dist/lib/doctor.d.ts.map +1 -1
- package/dist/lib/doctor.js +24 -1
- package/dist/lib/doctor.js.map +1 -1
- package/dist/lib/events.d.ts +44 -1
- package/dist/lib/events.d.ts.map +1 -1
- package/dist/lib/events.js +55 -2
- package/dist/lib/events.js.map +1 -1
- package/dist/lib/importTranscript.d.ts +16 -0
- package/dist/lib/importTranscript.d.ts.map +1 -0
- package/dist/lib/importTranscript.js +94 -0
- package/dist/lib/importTranscript.js.map +1 -0
- package/dist/lib/ingest.d.ts.map +1 -1
- package/dist/lib/ingest.js +12 -6
- package/dist/lib/ingest.js.map +1 -1
- package/dist/lib/journal.d.ts +13 -4
- package/dist/lib/journal.d.ts.map +1 -1
- package/dist/lib/journal.js +53 -16
- package/dist/lib/journal.js.map +1 -1
- package/dist/lib/legacyNative.d.ts +17 -0
- package/dist/lib/legacyNative.d.ts.map +1 -0
- package/dist/lib/legacyNative.js +38 -0
- package/dist/lib/legacyNative.js.map +1 -0
- package/dist/lib/migrate.d.ts.map +1 -1
- package/dist/lib/migrate.js +9 -2
- package/dist/lib/migrate.js.map +1 -1
- package/dist/lib/nativeRuntime.d.ts +31 -0
- package/dist/lib/nativeRuntime.d.ts.map +1 -1
- package/dist/lib/nativeRuntime.js +38 -0
- package/dist/lib/nativeRuntime.js.map +1 -1
- package/dist/lib/pathSafe.d.ts +8 -0
- package/dist/lib/pathSafe.d.ts.map +1 -0
- package/dist/lib/pathSafe.js +12 -0
- package/dist/lib/pathSafe.js.map +1 -0
- package/dist/lib/provisionNative.d.ts.map +1 -1
- package/dist/lib/provisionNative.js +7 -3
- package/dist/lib/provisionNative.js.map +1 -1
- package/dist/lib/queue.d.ts +25 -0
- package/dist/lib/queue.d.ts.map +1 -1
- package/dist/lib/queue.js +70 -3
- package/dist/lib/queue.js.map +1 -1
- package/dist/lib/reads.d.ts +24 -0
- package/dist/lib/reads.d.ts.map +1 -0
- package/dist/lib/reads.js +115 -0
- package/dist/lib/reads.js.map +1 -0
- package/dist/lib/recode.d.ts +19 -0
- package/dist/lib/recode.d.ts.map +1 -0
- package/dist/lib/recode.js +43 -0
- package/dist/lib/recode.js.map +1 -0
- package/dist/lib/redact.d.ts +7 -0
- package/dist/lib/redact.d.ts.map +1 -0
- package/dist/lib/redact.js +45 -0
- package/dist/lib/redact.js.map +1 -0
- package/dist/lib/rerun.d.ts +51 -0
- package/dist/lib/rerun.d.ts.map +1 -0
- package/dist/lib/rerun.js +160 -0
- package/dist/lib/rerun.js.map +1 -0
- package/dist/lib/retrieve.d.ts +8 -4
- package/dist/lib/retrieve.d.ts.map +1 -1
- package/dist/lib/retrieve.js +14 -3
- package/dist/lib/retrieve.js.map +1 -1
- package/dist/lib/saturate.js +3 -3
- package/dist/lib/saturate.js.map +1 -1
- package/dist/lib/schemas.generated.d.ts.map +1 -1
- package/dist/lib/schemas.generated.js +28 -0
- package/dist/lib/schemas.generated.js.map +1 -1
- package/dist/lib/secrets.d.ts +158 -0
- package/dist/lib/secrets.d.ts.map +1 -0
- package/dist/lib/secrets.js +514 -0
- package/dist/lib/secrets.js.map +1 -0
- package/dist/lib/seed.d.ts +5 -0
- package/dist/lib/seed.d.ts.map +1 -1
- package/dist/lib/seed.js +15 -2
- package/dist/lib/seed.js.map +1 -1
- package/dist/lib/seedResolve.d.ts +5 -0
- package/dist/lib/seedResolve.d.ts.map +1 -1
- package/dist/lib/seedResolve.js +12 -3
- package/dist/lib/seedResolve.js.map +1 -1
- package/dist/lib/session.d.ts +14 -0
- package/dist/lib/session.d.ts.map +1 -1
- package/dist/lib/session.js +53 -4
- package/dist/lib/session.js.map +1 -1
- package/dist/lib/sessionId.d.ts +9 -0
- package/dist/lib/sessionId.d.ts.map +1 -0
- package/dist/lib/sessionId.js +37 -0
- package/dist/lib/sessionId.js.map +1 -0
- package/dist/lib/setup.d.ts +9 -0
- package/dist/lib/setup.d.ts.map +1 -1
- package/dist/lib/setup.js +97 -29
- package/dist/lib/setup.js.map +1 -1
- package/dist/lib/setupItem.d.ts +99 -0
- package/dist/lib/setupItem.d.ts.map +1 -0
- package/dist/lib/setupItem.js +262 -0
- package/dist/lib/setupItem.js.map +1 -0
- package/dist/lib/setupWizard.d.ts +53 -0
- package/dist/lib/setupWizard.d.ts.map +1 -0
- package/dist/lib/setupWizard.js +347 -0
- package/dist/lib/setupWizard.js.map +1 -0
- package/dist/lib/snap.d.ts.map +1 -1
- package/dist/lib/snap.js +5 -0
- package/dist/lib/snap.js.map +1 -1
- package/dist/lib/speakers.d.ts +41 -0
- package/dist/lib/speakers.d.ts.map +1 -0
- package/dist/lib/speakers.js +78 -0
- package/dist/lib/speakers.js.map +1 -0
- package/dist/lib/status.d.ts.map +1 -1
- package/dist/lib/status.js +21 -0
- package/dist/lib/status.js.map +1 -1
- package/dist/lib/stdin.d.ts +5 -0
- package/dist/lib/stdin.d.ts.map +1 -0
- package/dist/lib/stdin.js +12 -0
- package/dist/lib/stdin.js.map +1 -0
- package/dist/lib/transcribeNative.d.ts +4 -9
- package/dist/lib/transcribeNative.d.ts.map +1 -1
- package/dist/lib/transcribeNative.js +11 -26
- package/dist/lib/transcribeNative.js.map +1 -1
- package/dist/lib/userConfig.d.ts +22 -0
- package/dist/lib/userConfig.d.ts.map +1 -0
- package/dist/lib/userConfig.js +67 -0
- package/dist/lib/userConfig.js.map +1 -0
- package/dist/lib/validate.d.ts +18 -0
- package/dist/lib/validate.d.ts.map +1 -1
- package/dist/lib/validate.js +71 -1
- package/dist/lib/validate.js.map +1 -1
- package/dist/lib/version.d.ts +30 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +65 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/llm/adapter.d.ts +5 -0
- package/dist/llm/adapter.d.ts.map +1 -1
- package/dist/llm/adapter.js +27 -8
- package/dist/llm/adapter.js.map +1 -1
- package/dist/llm/http.d.ts +22 -1
- package/dist/llm/http.d.ts.map +1 -1
- package/dist/llm/http.js +52 -30
- package/dist/llm/http.js.map +1 -1
- package/dist/llm/providers/anthropic.d.ts.map +1 -1
- package/dist/llm/providers/anthropic.js +6 -9
- package/dist/llm/providers/anthropic.js.map +1 -1
- package/dist/llm/providers/ollama.d.ts.map +1 -1
- package/dist/llm/providers/ollama.js +8 -7
- package/dist/llm/providers/ollama.js.map +1 -1
- package/dist/llm/providers/openai_compatible.d.ts.map +1 -1
- package/dist/llm/providers/openai_compatible.js +2 -7
- package/dist/llm/providers/openai_compatible.js.map +1 -1
- package/dist/logging.d.ts.map +1 -1
- package/dist/logging.js +3 -1
- package/dist/logging.js.map +1 -1
- package/dist/loops/embed_worker.d.ts +3 -0
- package/dist/loops/embed_worker.d.ts.map +1 -1
- package/dist/loops/embed_worker.js +11 -4
- package/dist/loops/embed_worker.js.map +1 -1
- package/dist/loops/ingest_watcher.d.ts.map +1 -1
- package/dist/loops/ingest_watcher.js +6 -3
- package/dist/loops/ingest_watcher.js.map +1 -1
- package/dist/loops/legacy_worker.d.ts +28 -1
- package/dist/loops/legacy_worker.d.ts.map +1 -1
- package/dist/loops/legacy_worker.js +91 -10
- package/dist/loops/legacy_worker.js.map +1 -1
- package/dist/loops/supervisor.d.ts +7 -0
- package/dist/loops/supervisor.d.ts.map +1 -1
- package/dist/loops/supervisor.js +17 -2
- package/dist/loops/supervisor.js.map +1 -1
- package/dist/loops/synthesis.d.ts.map +1 -1
- package/dist/loops/synthesis.js +15 -0
- package/dist/loops/synthesis.js.map +1 -1
- package/dist/loops/transcribe_worker.d.ts +3 -0
- package/dist/loops/transcribe_worker.d.ts.map +1 -1
- package/dist/loops/transcribe_worker.js +15 -7
- package/dist/loops/transcribe_worker.js.map +1 -1
- package/dist/output.d.ts +13 -1
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +27 -6
- package/dist/output.js.map +1 -1
- package/dist/render/glyphs.d.ts +30 -0
- package/dist/render/glyphs.d.ts.map +1 -0
- package/dist/render/glyphs.js +38 -0
- package/dist/render/glyphs.js.map +1 -0
- package/dist/render/human.d.ts +22 -0
- package/dist/render/human.d.ts.map +1 -0
- package/dist/render/human.js +62 -0
- package/dist/render/human.js.map +1 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +32 -4
- package/dist/router.js.map +1 -1
- package/dist/transcriber_client.d.ts.map +1 -1
- package/dist/transcriber_client.js +2 -1
- package/dist/transcriber_client.js.map +1 -1
- package/package.json +12 -5
- package/templates/AGENTS.md +1 -1
- package/templates/config.toml +6 -1
- package/transcriber/app/diarization.py +36 -6
- package/transcriber/app/legacy_cli.py +90 -0
- package/transcriber/app/pipeline.py +13 -7
- package/transcriber/app/prosody.py +5 -0
- package/transcriber/app/transcribe_cli.py +15 -1
- package/transcriber/app/vad.py +82 -11
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { CompostError, isCompostError } from '../errors.js';
|
|
2
|
+
import { HF_ALIASES, listSecrets, resolveSecret, rmSecret, setSecret, } from '../lib/secrets.js';
|
|
3
|
+
import { readStdin } from '../lib/stdin.js';
|
|
4
|
+
import { emit, emitError, getOutputOpts } from '../output.js';
|
|
5
|
+
import { glyphs } from '../render/glyphs.js';
|
|
6
|
+
/** Aliases to also check when resolving a given primary name. */
|
|
7
|
+
function aliasesFor(name) {
|
|
8
|
+
return name === 'HUGGINGFACE_TOKEN' ? HF_ALIASES : [];
|
|
9
|
+
}
|
|
10
|
+
/** True when the user explicitly forced JSON with the root `--json` flag. */
|
|
11
|
+
function jsonExplicit(cmd) {
|
|
12
|
+
let root = cmd;
|
|
13
|
+
while (root.parent)
|
|
14
|
+
root = root.parent;
|
|
15
|
+
return root.opts().json === true;
|
|
16
|
+
}
|
|
17
|
+
export function registerSecrets(program) {
|
|
18
|
+
const secrets = program
|
|
19
|
+
.command('secrets')
|
|
20
|
+
.description('Store and resolve user secrets (HuggingFace token, LLM API keys). Precedence: env var > OS keychain > ~/.compost/secrets.env (0600).');
|
|
21
|
+
secrets
|
|
22
|
+
.command('set')
|
|
23
|
+
.description('Store a secret in the OS keychain (or a 0600 ~/.compost/secrets.env fallback). Pipe the value via stdin to keep it out of shell history.')
|
|
24
|
+
.argument('<name>', 'Env-var-shaped name, e.g. HUGGINGFACE_TOKEN')
|
|
25
|
+
.argument('[value]', 'Secret value; omit to read from stdin')
|
|
26
|
+
.addHelpText('after', '\nExamples (pipe via stdin to keep the value out of shell history):\n $ printf %s "$HF_TOKEN" | compost secrets set HUGGINGFACE_TOKEN\n $ compost secrets list # shows names + where each is stored, never values')
|
|
27
|
+
.action(async (name, value, _flags, cmd) => {
|
|
28
|
+
const out = getOutputOpts(cmd);
|
|
29
|
+
try {
|
|
30
|
+
// An inline value lands in shell history — nudge toward the stdin pipe.
|
|
31
|
+
if (value !== undefined && process.stdin.isTTY === true) {
|
|
32
|
+
process.stderr.write('warning: passing the value inline puts it in your shell history. Prefer: printf %s "$TOKEN" | compost secrets set NAME\n');
|
|
33
|
+
}
|
|
34
|
+
const raw = value ?? (await readStdin());
|
|
35
|
+
const secret = raw.trim();
|
|
36
|
+
if (secret === '') {
|
|
37
|
+
if (out.human)
|
|
38
|
+
process.stderr.write('No value provided. Pass it as an argument or pipe it: `printf %s "$TOKEN" | compost secrets set NAME`\n');
|
|
39
|
+
throw new CompostError('INVALID_INPUT', `No value provided for ${name}.`);
|
|
40
|
+
}
|
|
41
|
+
const result = setSecret(name, secret);
|
|
42
|
+
emit({ status: 'ok', command: 'secrets set', ...result }, out, (d) => `Stored ${d.name} in ${d.stored_in === 'keychain' ? d.location : `${d.location} (0600)`}.${d.fallback_reason ? `\n (keychain unavailable: ${d.fallback_reason} — used the file fallback)` : ''}`);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
if (isCompostError(err))
|
|
46
|
+
emitError(err, out);
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
secrets
|
|
51
|
+
.command('get')
|
|
52
|
+
.description('Resolve a secret (env > keychain > secrets.env) and print its value to stdout. Exits non-zero if unset.')
|
|
53
|
+
.argument('<name>')
|
|
54
|
+
.action((name, _flags, cmd) => {
|
|
55
|
+
const out = getOutputOpts(cmd);
|
|
56
|
+
try {
|
|
57
|
+
const resolved = resolveSecret(name, { aliases: aliasesFor(name) });
|
|
58
|
+
if (!resolved) {
|
|
59
|
+
if (jsonExplicit(cmd)) {
|
|
60
|
+
process.stdout.write(`${JSON.stringify({ status: 'not_found', command: 'secrets get', name, value: null, source: null })}\n`);
|
|
61
|
+
}
|
|
62
|
+
else if (out.human) {
|
|
63
|
+
process.stderr.write(`${name} is not set (checked env, keychain, secrets.env)\n`);
|
|
64
|
+
}
|
|
65
|
+
process.exitCode = 1;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (jsonExplicit(cmd)) {
|
|
69
|
+
emit({
|
|
70
|
+
status: 'ok',
|
|
71
|
+
command: 'secrets get',
|
|
72
|
+
name,
|
|
73
|
+
source: resolved.source,
|
|
74
|
+
value: resolved.value,
|
|
75
|
+
}, out);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
// Default: raw value on stdout so `$(compost secrets get NAME)` works in
|
|
79
|
+
// any context; the source goes to stderr (human mode only).
|
|
80
|
+
process.stdout.write(`${resolved.value}\n`);
|
|
81
|
+
if (out.human)
|
|
82
|
+
process.stderr.write(`source: ${resolved.source}\n`);
|
|
83
|
+
// Footgun guard: at an interactive terminal the value is now in
|
|
84
|
+
// scrollback. Warn on stderr (never affects the stdout value capture).
|
|
85
|
+
if (process.stdout.isTTY === true) {
|
|
86
|
+
process.stderr.write('warning: the secret value was printed to your terminal (now in scrollback). Pipe/capture it instead of reading it on a shared screen.\n');
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
if (isCompostError(err))
|
|
91
|
+
emitError(err, out);
|
|
92
|
+
throw err;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
secrets
|
|
96
|
+
.command('rm')
|
|
97
|
+
.alias('remove')
|
|
98
|
+
.description('Remove a secret from the keychain and secrets.env (env vars are your shell — unset those yourself).')
|
|
99
|
+
.argument('<name>')
|
|
100
|
+
.action((name, _flags, cmd) => {
|
|
101
|
+
const out = getOutputOpts(cmd);
|
|
102
|
+
try {
|
|
103
|
+
const result = rmSecret(name);
|
|
104
|
+
emit({ status: 'ok', command: 'secrets rm', ...result }, out, (d) => d.removed_from.length === 0
|
|
105
|
+
? `${d.name}: nothing stored in keychain or secrets.env.`
|
|
106
|
+
: `Removed ${d.name} from ${d.removed_from.join(' and ')}.`);
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
if (isCompostError(err))
|
|
110
|
+
emitError(err, out);
|
|
111
|
+
throw err;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
secrets
|
|
115
|
+
.command('list')
|
|
116
|
+
.alias('ls')
|
|
117
|
+
.description('List which secrets are set and where (never prints values).')
|
|
118
|
+
.action((_flags, cmd) => {
|
|
119
|
+
const out = getOutputOpts(cmd);
|
|
120
|
+
try {
|
|
121
|
+
const { items, file } = listSecrets();
|
|
122
|
+
emit({
|
|
123
|
+
status: 'ok',
|
|
124
|
+
command: 'secrets list',
|
|
125
|
+
items,
|
|
126
|
+
secrets_env: file.path,
|
|
127
|
+
secrets_env_secure: file.secure,
|
|
128
|
+
}, out, (d) => {
|
|
129
|
+
if (d.secrets_env_secure && d.items.length === 0)
|
|
130
|
+
return 'No secrets set (checked env, keychain, secrets.env).';
|
|
131
|
+
const lines = d.items.map((it) => ` ${it.name.padEnd(20)} ${it.sources.join(', ')}`);
|
|
132
|
+
const warn = d.secrets_env_secure
|
|
133
|
+
? ''
|
|
134
|
+
: `\n${glyphs().warn} ${d.secrets_env} is group/world-readable and is being ignored — fix: chmod 600 ${d.secrets_env}`;
|
|
135
|
+
return `Secrets (name → source; values never shown):\n${lines.join('\n')}${warn}`;
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
if (isCompostError(err))
|
|
140
|
+
emitError(err, out);
|
|
141
|
+
throw err;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/commands/secrets.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EACL,UAAU,EACV,WAAW,EAEX,aAAa,EACb,QAAQ,EAGR,SAAS,GACV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,iEAAiE;AACjE,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;AACvD,CAAC;AAED,6EAA6E;AAC7E,SAAS,YAAY,CAAC,GAAY;IAChC,IAAI,IAAI,GAAY,GAAG,CAAA;IACvB,OAAO,IAAI,CAAC,MAAM;QAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAA;IACtC,OAAQ,IAAI,CAAC,IAAI,EAAyB,CAAC,IAAI,KAAK,IAAI,CAAA;AAC1D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CACV,sIAAsI,CACvI,CAAA;IAEH,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CACV,0IAA0I,CAC3I;SACA,QAAQ,CAAC,QAAQ,EAAE,6CAA6C,CAAC;SACjE,QAAQ,CAAC,SAAS,EAAE,uCAAuC,CAAC;SAC5D,WAAW,CACV,OAAO,EACP,4NAA4N,CAC7N;SACA,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,KAAyB,EAAE,MAAe,EAAE,GAAY,EAAE,EAAE;QACvF,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,wEAAwE;YACxE,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0HAA0H,CAC3H,CAAA;YACH,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,IAAI,CAAC,MAAM,SAAS,EAAE,CAAC,CAAA;YACxC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;YACzB,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;gBAClB,IAAI,GAAG,CAAC,KAAK;oBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yGAAyG,CAC1G,CAAA;gBACH,MAAM,IAAI,YAAY,CAAC,eAAe,EAAE,yBAAyB,IAAI,GAAG,CAAC,CAAA;YAC3E,CAAC;YACD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YACtC,IAAI,CACF,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,EACnD,GAAG,EACH,CAAC,CAAY,EAAE,EAAE,CACf,UAAU,CAAC,CAAC,IAAI,OACd,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,SACzD,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,eAAe,4BAA4B,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7G,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YAC5C,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CACV,yGAAyG,CAC1G;SACA,QAAQ,CAAC,QAAQ,CAAC;SAClB,MAAM,CAAC,CAAC,IAAY,EAAE,MAAe,EAAE,GAAY,EAAE,EAAE;QACtD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACnE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,CACxG,CAAA;gBACH,CAAC;qBAAM,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,oDAAoD,CAAC,CAAA;gBACnF,CAAC;gBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;gBACpB,OAAM;YACR,CAAC;YACD,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,IAAI,CACF;oBACE,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,aAAa;oBACtB,IAAI;oBACJ,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;iBACtB,EACD,GAAG,CACJ,CAAA;gBACD,OAAM;YACR,CAAC;YACD,yEAAyE;YACzE,4DAA4D;YAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAA;YAC3C,IAAI,GAAG,CAAC,KAAK;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAA;YACnE,gEAAgE;YAChE,uEAAuE;YACvE,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yIAAyI,CAC1I,CAAA;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YAC5C,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO;SACJ,OAAO,CAAC,IAAI,CAAC;SACb,KAAK,CAAC,QAAQ,CAAC;SACf,WAAW,CACV,qGAAqG,CACtG;SACA,QAAQ,CAAC,QAAQ,CAAC;SAClB,MAAM,CAAC,CAAC,IAAY,EAAE,MAAe,EAAE,GAAY,EAAE,EAAE;QACtD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC7B,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAW,EAAE,EAAE,CAC5E,CAAC,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBACzB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,8CAA8C;gBACzD,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAC9D,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YAC5C,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,6DAA6D,CAAC;SAC1E,MAAM,CAAC,CAAC,MAAe,EAAE,GAAY,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,WAAW,EAAE,CAAA;YACrC,IAAI,CACF;gBACE,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,cAAc;gBACvB,KAAK;gBACL,WAAW,EAAE,IAAI,CAAC,IAAI;gBACtB,kBAAkB,EAAE,IAAI,CAAC,MAAM;aAChC,EACD,GAAG,EACH,CAAC,CAA+E,EAAE,EAAE;gBAClF,IAAI,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;oBAC9C,OAAO,sDAAsD,CAAA;gBAC/D,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CACvB,CAAC,EAAiB,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1E,CAAA;gBACD,MAAM,IAAI,GAAG,CAAC,CAAC,kBAAkB;oBAC/B,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,kEAAkE,CAAC,CAAC,WAAW,EAAE,CAAA;gBACxH,OAAO,iDAAiD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAA;YACnF,CAAC,CACF,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YAC5C,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoExC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0EpD"}
|
package/dist/commands/setup.js
CHANGED
|
@@ -1,17 +1,107 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
2
|
+
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
3
|
+
import { join, resolve } from 'node:path';
|
|
4
|
+
import { createInterface } from 'node:readline/promises';
|
|
5
|
+
import { Writable } from 'node:stream';
|
|
1
6
|
import { isCompostError } from '../errors.js';
|
|
2
7
|
import { provisionNativeVenv } from '../lib/provisionNative.js';
|
|
3
8
|
import { runSetup } from '../lib/setup.js';
|
|
9
|
+
import { runSetupWizard } from '../lib/setupWizard.js';
|
|
4
10
|
import { emit, emitError, getOutputOpts } from '../output.js';
|
|
11
|
+
import { registerSetupItem } from './setupItem.js';
|
|
12
|
+
/** Terminal IO for the wizard: readline prompts, with echo muted for secrets. */
|
|
13
|
+
function terminalIO() {
|
|
14
|
+
let muted = false;
|
|
15
|
+
const mutable = new Writable({
|
|
16
|
+
write(chunk, _enc, cb) {
|
|
17
|
+
if (!muted)
|
|
18
|
+
process.stdout.write(chunk);
|
|
19
|
+
cb();
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
const rl = createInterface({ input: process.stdin, output: mutable, terminal: true });
|
|
23
|
+
const io = {
|
|
24
|
+
say: (text) => process.stdout.write(`${text}\n`),
|
|
25
|
+
ask: async (question, def) => {
|
|
26
|
+
const suffix = def !== undefined ? ` [${def}]` : '';
|
|
27
|
+
const answer = (await rl.question(`${question}${suffix}: `)).trim();
|
|
28
|
+
return answer === '' && def !== undefined ? def : answer;
|
|
29
|
+
},
|
|
30
|
+
confirm: async (question, def) => {
|
|
31
|
+
const hint = def ? 'Y/n' : 'y/N';
|
|
32
|
+
const answer = (await rl.question(`${question} [${hint}] `)).trim().toLowerCase();
|
|
33
|
+
if (answer === '')
|
|
34
|
+
return def;
|
|
35
|
+
return answer === 'y' || answer === 'yes';
|
|
36
|
+
},
|
|
37
|
+
askHidden: async (question) => {
|
|
38
|
+
process.stdout.write(question);
|
|
39
|
+
muted = true;
|
|
40
|
+
try {
|
|
41
|
+
const answer = await rl.question('');
|
|
42
|
+
process.stdout.write('\n');
|
|
43
|
+
return answer;
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
muted = false;
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
return { io, close: () => rl.close() };
|
|
51
|
+
}
|
|
52
|
+
/** Seed dirs under <cwd>/Seeds that already have a config.toml. */
|
|
53
|
+
function existingSeeds(cwd) {
|
|
54
|
+
const root = resolve(cwd, 'Seeds');
|
|
55
|
+
if (!existsSync(root))
|
|
56
|
+
return [];
|
|
57
|
+
try {
|
|
58
|
+
return readdirSync(root)
|
|
59
|
+
.filter((e) => !e.startsWith('.'))
|
|
60
|
+
.map((e) => join(root, e))
|
|
61
|
+
.filter((p) => statSync(p).isDirectory() && existsSync(join(p, '.compost', 'config.toml')));
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
5
67
|
export function registerSetup(program) {
|
|
6
|
-
program
|
|
68
|
+
const setup = program
|
|
7
69
|
.command('setup')
|
|
8
|
-
.description('
|
|
70
|
+
.description('Guided setup at a terminal (checks + confirmed fixes + tokens + chat model); a read-only JSON health report when piped, with --json, or with --check')
|
|
71
|
+
.option('--check', 'Read-only diagnostic report (skip the guided wizard at a TTY)')
|
|
9
72
|
.option('--provision-native', 'Provision the native transcription venv (parakeet-mlx + pyannote + silero) on Apple Silicon, then re-check')
|
|
10
73
|
.option('--python-bin <path>', 'Interpreter to build the native venv from (with --provision-native)')
|
|
11
74
|
.option('--transcriber-dir <path>', 'transcriber/ package dir (with --provision-native; else COMPOST_TRANSCRIBER_DIR or auto-discovered)')
|
|
12
75
|
.action(async (flags, cmd) => {
|
|
13
76
|
const out = getOutputOpts(cmd);
|
|
14
77
|
try {
|
|
78
|
+
// Guided wizard: only at an interactive terminal, only when the human
|
|
79
|
+
// asked for nothing more specific. Agents/CI (no TTY or --json) and
|
|
80
|
+
// explicit --check / --provision-native keep the deterministic paths.
|
|
81
|
+
const interactive = out.human &&
|
|
82
|
+
process.stdin.isTTY === true &&
|
|
83
|
+
process.stdout.isTTY === true &&
|
|
84
|
+
flags.check !== true &&
|
|
85
|
+
flags.provisionNative !== true;
|
|
86
|
+
if (interactive) {
|
|
87
|
+
const { io, close } = terminalIO();
|
|
88
|
+
try {
|
|
89
|
+
const result = await runSetupWizard({
|
|
90
|
+
io,
|
|
91
|
+
cwd: process.cwd(),
|
|
92
|
+
run: (c, args) => ({
|
|
93
|
+
ok: spawnSync(c, args, { stdio: 'inherit' }).status === 0,
|
|
94
|
+
}),
|
|
95
|
+
listSeeds: () => existingSeeds(process.cwd()),
|
|
96
|
+
});
|
|
97
|
+
if (!result.report.ready)
|
|
98
|
+
process.exitCode = 1;
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
close();
|
|
102
|
+
}
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
15
105
|
let provision;
|
|
16
106
|
if (flags.provisionNative) {
|
|
17
107
|
if (out.human)
|
|
@@ -34,5 +124,8 @@ export function registerSetup(program) {
|
|
|
34
124
|
throw err;
|
|
35
125
|
}
|
|
36
126
|
});
|
|
127
|
+
// Per-item maintenance lives on its own `setup item …` JSON envelope, so the
|
|
128
|
+
// read-only `compost setup` report above stays byte-for-byte unchanged.
|
|
129
|
+
registerSetupItem(setup);
|
|
37
130
|
}
|
|
38
131
|
//# sourceMappingURL=setup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Gate a `setup item run` invocation before it mutates anything. Extracted so
|
|
4
|
+
* the (security-relevant) refusal logic is unit-testable without driving
|
|
5
|
+
* commander: renew/set need a value (piped, so it stays out of shell history),
|
|
6
|
+
* and any mutating action run non-interactively requires an explicit --yes.
|
|
7
|
+
* `interactive` is the REAL terminal signal (`process.stdout.isTTY`), not the
|
|
8
|
+
* `--human` output flag: `--human` is user/agent-forceable even when piped, so
|
|
9
|
+
* gating on it would let an automated caller add `--human` to skip the --yes
|
|
10
|
+
* confirmation. Throws INVALID_INPUT otherwise; returns void when the call may
|
|
11
|
+
* proceed.
|
|
12
|
+
*/
|
|
13
|
+
export declare function assertRunAllowed(id: string, action: string, ctx: {
|
|
14
|
+
interactive: boolean;
|
|
15
|
+
yes: boolean;
|
|
16
|
+
value: string;
|
|
17
|
+
}): void;
|
|
18
|
+
/**
|
|
19
|
+
* Register the `compost setup item …` group on the existing `setup` command.
|
|
20
|
+
* This is the per-item maintenance surface: it has its OWN `command:'setup
|
|
21
|
+
* item …'` JSON envelope, so the read-only `compost setup` report is untouched
|
|
22
|
+
* byte-for-byte. The TTY wizard and the plugin skill are meant to wrap these
|
|
23
|
+
* verbs rather than reimplement the behavior.
|
|
24
|
+
*/
|
|
25
|
+
export declare function registerSetupItem(setup: Command): void;
|
|
26
|
+
//# sourceMappingURL=setupItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupItem.d.ts","sourceRoot":"","sources":["../../src/commands/setupItem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAqBxC;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,GAAG,EAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACzD,IAAI,CAaN;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CA8HtD"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { CompostError, isCompostError } from '../errors.js';
|
|
2
|
+
import { HF_ALIASES, resolveSecret } from '../lib/secrets.js';
|
|
3
|
+
import { runSetup } from '../lib/setup.js';
|
|
4
|
+
import { actionsFor, runItem, validateHfToken, } from '../lib/setupItem.js';
|
|
5
|
+
import { readStdin } from '../lib/stdin.js';
|
|
6
|
+
import { emit, emitError, getOutputOpts } from '../output.js';
|
|
7
|
+
import { statusGlyph } from '../render/glyphs.js';
|
|
8
|
+
/** Everything except `validate` changes state; only renew needs a value. */
|
|
9
|
+
const READONLY = new Set(['validate']);
|
|
10
|
+
const NEEDS_VALUE = new Set(['renew']);
|
|
11
|
+
/**
|
|
12
|
+
* Gate a `setup item run` invocation before it mutates anything. Extracted so
|
|
13
|
+
* the (security-relevant) refusal logic is unit-testable without driving
|
|
14
|
+
* commander: renew/set need a value (piped, so it stays out of shell history),
|
|
15
|
+
* and any mutating action run non-interactively requires an explicit --yes.
|
|
16
|
+
* `interactive` is the REAL terminal signal (`process.stdout.isTTY`), not the
|
|
17
|
+
* `--human` output flag: `--human` is user/agent-forceable even when piped, so
|
|
18
|
+
* gating on it would let an automated caller add `--human` to skip the --yes
|
|
19
|
+
* confirmation. Throws INVALID_INPUT otherwise; returns void when the call may
|
|
20
|
+
* proceed.
|
|
21
|
+
*/
|
|
22
|
+
export function assertRunAllowed(id, action, ctx) {
|
|
23
|
+
if (NEEDS_VALUE.has(action) && ctx.value === '') {
|
|
24
|
+
throw new CompostError('INVALID_INPUT', `Pipe the new value: \`printf %s "$TOKEN" | compost setup item run ${id} ${action}\` (keeps it out of shell history).`);
|
|
25
|
+
}
|
|
26
|
+
if (!READONLY.has(action) && !ctx.interactive && ctx.yes !== true) {
|
|
27
|
+
throw new CompostError('INVALID_INPUT', `Refusing a mutating action non-interactively without --yes.`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Register the `compost setup item …` group on the existing `setup` command.
|
|
32
|
+
* This is the per-item maintenance surface: it has its OWN `command:'setup
|
|
33
|
+
* item …'` JSON envelope, so the read-only `compost setup` report is untouched
|
|
34
|
+
* byte-for-byte. The TTY wizard and the plugin skill are meant to wrap these
|
|
35
|
+
* verbs rather than reimplement the behavior.
|
|
36
|
+
*/
|
|
37
|
+
export function registerSetupItem(setup) {
|
|
38
|
+
const item = setup
|
|
39
|
+
.command('item')
|
|
40
|
+
.description('Inspect and fix ONE setup prerequisite at a time — change/renew/revoke a token, re-validate a live credential, repair a single check.');
|
|
41
|
+
// setup item list — the directory of what's addressable + its actions.
|
|
42
|
+
item
|
|
43
|
+
.command('list')
|
|
44
|
+
.description('List every setup item with its status and the lifecycle actions available on it.')
|
|
45
|
+
.action(async (_flags, cmd) => {
|
|
46
|
+
const out = getOutputOpts(cmd);
|
|
47
|
+
try {
|
|
48
|
+
// Reuse the canonical runSetup probes (single source of truth) and
|
|
49
|
+
// filter, rather than maintaining a separate per-id probe. It runs the
|
|
50
|
+
// full check set — acceptable for an on-demand command; a dedicated
|
|
51
|
+
// single-check probe is a future optimization, not a correctness need.
|
|
52
|
+
const report = await runSetup({ cwd: process.cwd() });
|
|
53
|
+
const items = report.checks.map((c) => ({
|
|
54
|
+
id: c.id,
|
|
55
|
+
label: c.label,
|
|
56
|
+
status: c.status,
|
|
57
|
+
actions: actionsFor(c.id),
|
|
58
|
+
}));
|
|
59
|
+
emit({ command: 'setup item list', schema_version: '1.0', items }, out, (d) => d.items
|
|
60
|
+
.map((it) => {
|
|
61
|
+
const acts = it.actions.length
|
|
62
|
+
? ` actions: ${it.actions.map((a) => a.id).join(', ')}`
|
|
63
|
+
: '';
|
|
64
|
+
return ` ${statusGlyph(it.status)} ${it.id.padEnd(28)} ${it.label}${acts}`;
|
|
65
|
+
})
|
|
66
|
+
.join('\n'));
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
if (isCompostError(err))
|
|
70
|
+
emitError(err, out);
|
|
71
|
+
throw err;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
// setup item show <id> [--validate] — re-probe ONE item; --validate adds the
|
|
75
|
+
// live credential signal as a SEPARATE field (presence vs validity).
|
|
76
|
+
item
|
|
77
|
+
.command('show')
|
|
78
|
+
.description('Show one setup item: its presence status, fix, and actions. --validate adds a live credential probe.')
|
|
79
|
+
.argument('<id>', 'Stable check id, e.g. hf-token (see `setup item list`)')
|
|
80
|
+
.option('--validate', 'Also probe whether a stored credential is LIVE (network; credential items only)')
|
|
81
|
+
.action(async (id, flags, cmd) => {
|
|
82
|
+
const out = getOutputOpts(cmd);
|
|
83
|
+
try {
|
|
84
|
+
const report = await runSetup({ cwd: process.cwd() });
|
|
85
|
+
const check = report.checks.find((c) => c.id === id);
|
|
86
|
+
if (!check) {
|
|
87
|
+
throw new CompostError('INVALID_INPUT', `Unknown item "${id}". Run \`compost setup item list\` for valid ids.`);
|
|
88
|
+
}
|
|
89
|
+
const actions = actionsFor(id);
|
|
90
|
+
let live;
|
|
91
|
+
if (flags.validate === true && id === 'hf-token') {
|
|
92
|
+
const found = resolveSecret('HUGGINGFACE_TOKEN', { aliases: HF_ALIASES });
|
|
93
|
+
live = found
|
|
94
|
+
? await validateHfToken(found.value)
|
|
95
|
+
: { status: 'fail', detail: 'no token set to validate' };
|
|
96
|
+
}
|
|
97
|
+
emit({ command: 'setup item show', id, check, actions, ...(live ? { live } : {}) }, out, (d) => {
|
|
98
|
+
const lines = [`${d.check.label} [${d.check.status}] — ${d.check.detail}`];
|
|
99
|
+
if (d.check.fix)
|
|
100
|
+
lines.push(` fix: ${d.check.fix}`);
|
|
101
|
+
if (d.live)
|
|
102
|
+
lines.push(` live: ${d.live.status} — ${d.live.detail}`);
|
|
103
|
+
if (d.actions.length)
|
|
104
|
+
lines.push(` actions: ${d.actions.map((a) => `${a.id} (${a.side})`).join(', ')}`);
|
|
105
|
+
return lines.join('\n');
|
|
106
|
+
});
|
|
107
|
+
if (check.status === 'fail' || live?.status === 'fail')
|
|
108
|
+
process.exitCode = 1;
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
if (isCompostError(err))
|
|
112
|
+
emitError(err, out);
|
|
113
|
+
throw err;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
// setup item run <id> <action> [--yes] — the generic mutation primitive.
|
|
117
|
+
item
|
|
118
|
+
.command('run')
|
|
119
|
+
.description('Run one lifecycle action on one item, e.g. `setup item run hf-token renew`.')
|
|
120
|
+
.argument('<id>', 'Stable check id, e.g. hf-token, model:bge-m3, secret-perms:<path>')
|
|
121
|
+
.argument('<action>', 'validate | renew | forget | pull | fix')
|
|
122
|
+
.option('-y, --yes', 'Confirm a mutating action when not at a TTY (required for --json / piped use)')
|
|
123
|
+
.action(async (id, action, flags, cmd) => {
|
|
124
|
+
const out = getOutputOpts(cmd);
|
|
125
|
+
try {
|
|
126
|
+
const value = NEEDS_VALUE.has(action) ? (await readStdin()).trim() : '';
|
|
127
|
+
assertRunAllowed(id, action, {
|
|
128
|
+
// Real terminal, not the forceable --human flag (see assertRunAllowed).
|
|
129
|
+
interactive: process.stdout.isTTY === true,
|
|
130
|
+
yes: flags.yes === true,
|
|
131
|
+
value,
|
|
132
|
+
});
|
|
133
|
+
const result = await runItem(id, action, value ? { value } : {});
|
|
134
|
+
emit({ command: 'setup item run', ...result }, out, (d) => `${d.id} ${d.action}: ${d.recheck.status} — ${d.recheck.detail}`);
|
|
135
|
+
if (result.recheck.status === 'fail')
|
|
136
|
+
process.exitCode = 1;
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
if (isCompostError(err))
|
|
140
|
+
emitError(err, out);
|
|
141
|
+
throw err;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=setupItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupItem.js","sourceRoot":"","sources":["../../src/commands/setupItem.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAmB,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EACL,UAAU,EAGV,OAAO,EAEP,eAAe,GAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,4EAA4E;AAC5E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;AACtC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AAEtC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAC9B,EAAU,EACV,MAAc,EACd,GAA0D;IAE1D,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,YAAY,CACpB,eAAe,EACf,qEAAqE,EAAE,IAAI,MAAM,qCAAqC,CACvH,CAAA;IACH,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QAClE,MAAM,IAAI,YAAY,CACpB,eAAe,EACf,6DAA6D,CAC9D,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,MAAM,IAAI,GAAG,KAAK;SACf,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,uIAAuI,CACxI,CAAA;IAEH,uEAAuE;IACvE,IAAI;SACD,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,kFAAkF,CAAC;SAC/F,MAAM,CAAC,KAAK,EAAE,MAAe,EAAE,GAAY,EAAE,EAAE;QAC9C,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,mEAAmE;YACnE,uEAAuE;YACvE,oEAAoE;YACpE,uEAAuE;YACvE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;YACrD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1B,CAAC,CAAC,CAAA;YACH,IAAI,CACF,EAAE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,EAC5D,GAAG,EACH,CAAC,CAA0B,EAAE,EAAE,CAC7B,CAAC,CAAC,KAAK;iBACJ,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBACV,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM;oBAC5B,CAAC,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACxD,CAAC,CAAC,EAAE,CAAA;gBACN,OAAO,KAAK,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,CAAA;YAC7E,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAChB,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YAC5C,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,6EAA6E;IAC7E,qEAAqE;IACrE,IAAI;SACD,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,sGAAsG,CACvG;SACA,QAAQ,CAAC,MAAM,EAAE,wDAAwD,CAAC;SAC1E,MAAM,CACL,YAAY,EACZ,iFAAiF,CAClF;SACA,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,KAA6B,EAAE,GAAY,EAAE,EAAE;QACxE,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;YACrD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YACpD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,YAAY,CACpB,eAAe,EACf,iBAAiB,EAAE,mDAAmD,CACvE,CAAA;YACH,CAAC;YACD,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;YAC9B,IAAI,IAA4B,CAAA;YAChC,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAG,aAAa,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAA;gBACzE,IAAI,GAAG,KAAK;oBACV,CAAC,CAAC,MAAM,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC;oBACpC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAA;YAC5D,CAAC;YACD,IAAI,CACF,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAC7E,GAAG,EACH,CAAC,CAAuE,EAAE,EAAE;gBAC1E,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;gBAC1E,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG;oBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;gBACpD,IAAI,CAAC,CAAC,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;gBACrE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM;oBAClB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACpF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACzB,CAAC,CACF,CAAA;YACD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,MAAM,KAAK,MAAM;gBAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YAC5C,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,yEAAyE;IACzE,IAAI;SACD,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,6EAA6E,CAAC;SAC1F,QAAQ,CAAC,MAAM,EAAE,mEAAmE,CAAC;SACrF,QAAQ,CAAC,UAAU,EAAE,wCAAwC,CAAC;SAC9D,MAAM,CACL,WAAW,EACX,+EAA+E,CAChF;SACA,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,MAAc,EAAE,KAAwB,EAAE,GAAY,EAAE,EAAE;QACnF,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YACvE,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE;gBAC3B,wEAAwE;gBACxE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI;gBAC1C,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,IAAI;gBACvB,KAAK;aACN,CAAC,CAAA;YACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAChE,IAAI,CACF,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,EAAE,EACxC,GAAG,EACH,CAAC,CAAgB,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CACvF,CAAA;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM;gBAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QAC5D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YAC5C,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAWxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwBrD"}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { isCompostError } from '../errors.js';
|
|
2
2
|
import { gatherStatus } from '../lib/status.js';
|
|
3
3
|
import { emit, emitError, getOutputOpts } from '../output.js';
|
|
4
|
+
import { renderStatus } from '../render/human.js';
|
|
4
5
|
export function registerStatus(program) {
|
|
5
6
|
program
|
|
6
7
|
.command('status')
|
|
@@ -13,7 +14,7 @@ export function registerStatus(program) {
|
|
|
13
14
|
if (flags.seed !== undefined)
|
|
14
15
|
opts.seed = flags.seed;
|
|
15
16
|
const snapshot = gatherStatus(opts);
|
|
16
|
-
emit(snapshot, out);
|
|
17
|
+
emit(snapshot, out, renderStatus);
|
|
17
18
|
}
|
|
18
19
|
catch (err) {
|
|
19
20
|
if (isCompostError(err)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAMjD,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CACV,2GAA2G,CAC5G;SACA,MAAM,CACL,eAAe,EACf,wEAAwE,CACzE;SACA,MAAM,CAAC,CAAC,KAAkB,EAAE,GAAY,EAAE,EAAE;QAC3C,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,GAAsB,EAAE,CAAA;YAClC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;gBAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;YACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;YACnC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YACrB,CAAC;YACD,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcribe.d.ts","sourceRoot":"","sources":["../../src/commands/transcribe.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"transcribe.d.ts","sourceRoot":"","sources":["../../src/commands/transcribe.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAwCxC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4IzD"}
|
|
@@ -2,7 +2,10 @@ import { existsSync, readdirSync } from 'node:fs';
|
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { CompostError, isCompostError } from '../errors.js';
|
|
4
4
|
import { isAppleSilicon, pickRuntime, resolveNativeRuntime } from '../lib/nativeRuntime.js';
|
|
5
|
+
import { HF_ALIASES, resolveSecret } from '../lib/secrets.js';
|
|
5
6
|
import { resolveSeedPath } from '../lib/seedResolve.js';
|
|
7
|
+
import { assertSessionContained } from '../lib/sessionId.js';
|
|
8
|
+
import { applySidecar } from '../lib/speakers.js';
|
|
6
9
|
import { transcribeNative } from '../lib/transcribeNative.js';
|
|
7
10
|
import { emit, emitError, getOutputOpts } from '../output.js';
|
|
8
11
|
import { writeTranscriptMd } from '../render/transcript_md.js';
|
|
@@ -16,6 +19,14 @@ function resolveSource(seedPath, sessionId) {
|
|
|
16
19
|
throw new CompostError('FILE_NOT_FOUND', `No source media in ${dir}`);
|
|
17
20
|
return join(dir, src);
|
|
18
21
|
}
|
|
22
|
+
/** After a transcript lands, re-apply persisted speaker names (#177) and render
|
|
23
|
+
* the human-readable transcript.md. No-op if the file isn't there. */
|
|
24
|
+
function finalizeTranscript(path) {
|
|
25
|
+
if (!existsSync(path))
|
|
26
|
+
return;
|
|
27
|
+
applySidecar(path);
|
|
28
|
+
writeTranscriptMd(path);
|
|
29
|
+
}
|
|
19
30
|
export function registerTranscribe(program) {
|
|
20
31
|
program
|
|
21
32
|
.command('transcribe')
|
|
@@ -29,10 +40,16 @@ export function registerTranscribe(program) {
|
|
|
29
40
|
.option('--model <id>', 'ASR model id (engine default when omitted)')
|
|
30
41
|
.option('--python <path>', 'Native-runtime venv python (or env COMPOST_TRANSCRIBER_PYTHON)')
|
|
31
42
|
.option('--transcriber-dir <path>', 'transcriber/ package dir for the native runtime (or env COMPOST_TRANSCRIBER_DIR)')
|
|
43
|
+
.addHelpText('after', '\nExamples:\n $ compost transcribe S001\n $ compost transcribe S001 --language es-CO --runtime native')
|
|
32
44
|
.action(async (sessionId, flags, cmd) => {
|
|
33
45
|
const out = getOutputOpts(cmd);
|
|
34
46
|
try {
|
|
35
47
|
const seedPath = resolveSeedPath(process.cwd(), flags.seed);
|
|
48
|
+
// Guard both branches: sessionId is passed verbatim to the native Python
|
|
49
|
+
// entrypoint (--session-id, no regex there) and the Docker route. Validate
|
|
50
|
+
// it (regex + containment under <seed>/sessions/) before any path join or
|
|
51
|
+
// subprocess (#211 followup).
|
|
52
|
+
assertSessionContained(seedPath, sessionId);
|
|
36
53
|
const source = resolveSource(seedPath, sessionId);
|
|
37
54
|
if (flags.runtime !== undefined &&
|
|
38
55
|
flags.runtime !== 'native' &&
|
|
@@ -56,15 +73,24 @@ export function registerTranscribe(program) {
|
|
|
56
73
|
'--python and --transcriber-dir (or set COMPOST_TRANSCRIBER_PYTHON / COMPOST_TRANSCRIBER_DIR), ' +
|
|
57
74
|
'or run `compost setup` to provision the native venv.');
|
|
58
75
|
}
|
|
76
|
+
// Resolve the HF token by the documented precedence (env > keychain >
|
|
77
|
+
// secrets.env) and pass it explicitly to the python subprocess, so a
|
|
78
|
+
// keychain-stored token works even though it isn't in process.env.
|
|
79
|
+
const hf = resolveSecret('HUGGINGFACE_TOKEN', { aliases: HF_ALIASES });
|
|
80
|
+
// Native ASR captures the subprocess's stdio, so the terminal is blank
|
|
81
|
+
// for minutes otherwise. Heartbeat to stderr in human mode at a TTY.
|
|
82
|
+
if (out.human && process.stderr.isTTY === true) {
|
|
83
|
+
process.stderr.write(`transcribing ${sessionId} (native; this can take minutes)…\n`);
|
|
84
|
+
}
|
|
59
85
|
const resp = transcribeNative(seedPath, sessionId, source, {
|
|
60
86
|
python: native.python,
|
|
61
87
|
transcriberDir: native.transcriberDir,
|
|
62
88
|
engine: flags.engine ?? 'parakeet',
|
|
63
89
|
...(flags.model !== undefined ? { model: flags.model } : {}),
|
|
64
90
|
...(flags.language !== undefined ? { language: flags.language } : {}),
|
|
91
|
+
...(hf ? { env: { HUGGINGFACE_TOKEN: hf.value } } : {}),
|
|
65
92
|
});
|
|
66
|
-
|
|
67
|
-
writeTranscriptMd(resp.transcript_path);
|
|
93
|
+
finalizeTranscript(resp.transcript_path);
|
|
68
94
|
emit({
|
|
69
95
|
status: resp.status,
|
|
70
96
|
command: 'transcribe',
|
|
@@ -82,9 +108,11 @@ export function registerTranscribe(program) {
|
|
|
82
108
|
'`compost setup` to enable native Apple-Silicon transcription (~20× faster).\n');
|
|
83
109
|
}
|
|
84
110
|
const client = new TranscriberClient(flags.baseUrl !== undefined ? { baseUrl: flags.baseUrl } : {});
|
|
111
|
+
if (out.human && process.stderr.isTTY === true) {
|
|
112
|
+
process.stderr.write(`transcribing ${sessionId} (docker; this can take minutes)…\n`);
|
|
113
|
+
}
|
|
85
114
|
const resp = await client.transcribe(source, sessionId, seedPath, flags.language);
|
|
86
|
-
|
|
87
|
-
writeTranscriptMd(resp.transcript_path);
|
|
115
|
+
finalizeTranscript(resp.transcript_path);
|
|
88
116
|
emit({
|
|
89
117
|
status: resp.status,
|
|
90
118
|
command: 'transcribe',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcribe.js","sourceRoot":"","sources":["../../src/commands/transcribe.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"transcribe.js","sourceRoot":"","sources":["../../src/commands/transcribe.ts"],"names":[],"mappings":"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"}
|