@they-juanreina/compost-cli 0.1.1 → 0.1.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/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/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 +59 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -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 +6 -4
- 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 +2 -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 +143 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +90 -1
- package/dist/commands/setup.js.map +1 -1
- 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 +13 -2
- 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/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/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/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 +32 -1
- package/dist/lib/artifacts.d.ts.map +1 -1
- package/dist/lib/artifacts.js +156 -22
- package/dist/lib/artifacts.js.map +1 -1
- package/dist/lib/blame.d.ts.map +1 -1
- package/dist/lib/blame.js +3 -2
- package/dist/lib/blame.js.map +1 -1
- 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 +34 -1
- package/dist/lib/events.d.ts.map +1 -1
- package/dist/lib/events.js +35 -1
- 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 -0
- package/dist/lib/journal.d.ts.map +1 -1
- package/dist/lib/journal.js +58 -2
- package/dist/lib/journal.js.map +1 -1
- package/dist/lib/legacyNative.d.ts +24 -0
- package/dist/lib/legacyNative.d.ts.map +1 -0
- package/dist/lib/legacyNative.js +51 -0
- package/dist/lib/legacyNative.js.map +1 -0
- package/dist/lib/migrate.d.ts.map +1 -1
- package/dist/lib/migrate.js +1 -0
- package/dist/lib/migrate.js.map +1 -1
- package/dist/lib/nativeRuntime.d.ts +6 -3
- package/dist/lib/nativeRuntime.d.ts.map +1 -1
- package/dist/lib/nativeRuntime.js +6 -3
- package/dist/lib/nativeRuntime.js.map +1 -1
- package/dist/lib/provisionNative.js +1 -1
- 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/rerun.d.ts +51 -0
- package/dist/lib/rerun.d.ts.map +1 -0
- package/dist/lib/rerun.js +166 -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 +12 -10
- package/dist/lib/retrieve.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 +507 -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.map +1 -1
- package/dist/lib/seedResolve.js +1 -0
- 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 +47 -0
- package/dist/lib/session.js.map +1 -1
- package/dist/lib/setup.d.ts +5 -0
- package/dist/lib/setup.d.ts.map +1 -1
- package/dist/lib/setup.js +78 -14
- package/dist/lib/setup.js.map +1 -1
- package/dist/lib/setupWizard.d.ts +51 -0
- package/dist/lib/setupWizard.d.ts.map +1 -0
- package/dist/lib/setupWizard.js +223 -0
- package/dist/lib/setupWizard.js.map +1 -0
- package/dist/lib/snap.d.ts.map +1 -1
- package/dist/lib/snap.js +2 -5
- 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/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 +70 -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 +73 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/llm/adapter.d.ts.map +1 -1
- package/dist/llm/adapter.js +2 -0
- package/dist/llm/adapter.js.map +1 -1
- package/dist/llm/providers/ollama.d.ts.map +1 -1
- package/dist/llm/providers/ollama.js +6 -0
- package/dist/llm/providers/ollama.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 +81 -9
- package/dist/loops/legacy_worker.js.map +1 -1
- package/dist/loops/supervisor.d.ts +3 -0
- package/dist/loops/supervisor.d.ts.map +1 -1
- package/dist/loops/supervisor.js +12 -0
- 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.map +1 -1
- package/dist/loops/transcribe_worker.js +2 -4
- 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 +22 -2
- package/dist/output.js.map +1 -1
- package/dist/render/human.d.ts +20 -0
- package/dist/render/human.d.ts.map +1 -0
- package/dist/render/human.js +54 -0
- package/dist/render/human.js.map +1 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +17 -2
- package/dist/router.js.map +1 -1
- package/package.json +18 -5
- package/templates/config.toml +6 -1
- package/transcriber/app/__init__.py +3 -0
- package/transcriber/app/asr.py +198 -0
- package/transcriber/app/asr_parakeet.py +174 -0
- package/transcriber/app/cue_parser.py +110 -0
- package/transcriber/app/diarization.py +330 -0
- package/transcriber/app/frame_annotation.py +77 -0
- package/transcriber/app/frames.py +130 -0
- package/transcriber/app/health.py +70 -0
- package/transcriber/app/legacy.py +355 -0
- package/transcriber/app/legacy_cli.py +90 -0
- package/transcriber/app/main.py +30 -0
- package/transcriber/app/pipeline.py +210 -0
- package/transcriber/app/pptx_export.py +42 -0
- package/transcriber/app/prosody.py +128 -0
- package/transcriber/app/routes/__init__.py +1 -0
- package/transcriber/app/routes/legacy.py +117 -0
- package/transcriber/app/routes/transcribe.py +133 -0
- package/transcriber/app/shot_change.py +74 -0
- package/transcriber/app/silence_typer.py +144 -0
- package/transcriber/app/transcribe_cli.py +82 -0
- package/transcriber/app/vad.py +216 -0
- package/transcriber/pyproject.toml +56 -0
package/dist/lib/session.d.ts
CHANGED
|
@@ -10,6 +10,20 @@ export interface SessionView {
|
|
|
10
10
|
path: string;
|
|
11
11
|
}>;
|
|
12
12
|
}
|
|
13
|
+
export interface SessionSummary {
|
|
14
|
+
session_id: string;
|
|
15
|
+
has_transcript: boolean;
|
|
16
|
+
utterance_count: number;
|
|
17
|
+
frame_count: number;
|
|
18
|
+
duration_ms: number | null;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* List a seed's sessions with lightweight counts for the seed home page and the
|
|
22
|
+
* sessions API. Cheap: parses each transcript.json only for top-level counts,
|
|
23
|
+
* tolerates sessions still queued/transcribing (has_transcript=false). Sorted
|
|
24
|
+
* by session id so the listing is stable.
|
|
25
|
+
*/
|
|
26
|
+
export declare function listSessions(seedPath: string): SessionSummary[];
|
|
13
27
|
/**
|
|
14
28
|
* Read a session's transcript.json plus a derived frame index. Used by the
|
|
15
29
|
* `compost session` command and the `compost_get_session` MCP tool so the host
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC5E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CA8B3E"}
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC5E;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,OAAO,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CA2C/D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CA8B3E"}
|
package/dist/lib/session.js
CHANGED
|
@@ -1,6 +1,53 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { CompostError } from '../errors.js';
|
|
4
|
+
/**
|
|
5
|
+
* List a seed's sessions with lightweight counts for the seed home page and the
|
|
6
|
+
* sessions API. Cheap: parses each transcript.json only for top-level counts,
|
|
7
|
+
* tolerates sessions still queued/transcribing (has_transcript=false). Sorted
|
|
8
|
+
* by session id so the listing is stable.
|
|
9
|
+
*/
|
|
10
|
+
export function listSessions(seedPath) {
|
|
11
|
+
const dir = join(seedPath, 'sessions');
|
|
12
|
+
if (!existsSync(dir))
|
|
13
|
+
return [];
|
|
14
|
+
const ids = readdirSync(dir, { withFileTypes: true })
|
|
15
|
+
.filter((e) => e.isDirectory() && !e.name.startsWith('_') && !e.name.startsWith('.'))
|
|
16
|
+
.map((e) => e.name)
|
|
17
|
+
.sort();
|
|
18
|
+
return ids.map((session_id) => {
|
|
19
|
+
const transcriptPath = join(dir, session_id, 'transcript.json');
|
|
20
|
+
if (!existsSync(transcriptPath)) {
|
|
21
|
+
return {
|
|
22
|
+
session_id,
|
|
23
|
+
has_transcript: false,
|
|
24
|
+
utterance_count: 0,
|
|
25
|
+
frame_count: 0,
|
|
26
|
+
duration_ms: null,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const t = JSON.parse(readFileSync(transcriptPath, 'utf8'));
|
|
31
|
+
return {
|
|
32
|
+
session_id,
|
|
33
|
+
has_transcript: true,
|
|
34
|
+
utterance_count: Array.isArray(t.utterances) ? t.utterances.length : 0,
|
|
35
|
+
frame_count: Array.isArray(t.frames) ? t.frames.length : 0,
|
|
36
|
+
duration_ms: typeof t.duration_ms === 'number' ? t.duration_ms : null,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Malformed transcript: list the session but mark it as not-yet-readable.
|
|
41
|
+
return {
|
|
42
|
+
session_id,
|
|
43
|
+
has_transcript: false,
|
|
44
|
+
utterance_count: 0,
|
|
45
|
+
frame_count: 0,
|
|
46
|
+
duration_ms: null,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
4
51
|
/**
|
|
5
52
|
* Read a session's transcript.json plus a derived frame index. Used by the
|
|
6
53
|
* `compost session` command and the `compost_get_session` MCP tool so the host
|
package/dist/lib/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/setup.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { FetchLike } from '../llm/types.js';
|
|
2
|
+
import { type KeychainBackend } from './secrets.js';
|
|
2
3
|
export type CheckStatus = 'ok' | 'warn' | 'fail';
|
|
3
4
|
export interface SetupCheck {
|
|
4
5
|
/** Stable id, e.g. "ollama", "pyannote-license". */
|
|
@@ -33,6 +34,10 @@ export interface SetupDeps {
|
|
|
33
34
|
requiredOllamaModels?: string[];
|
|
34
35
|
/** Override Apple-Silicon detection (tests). Defaults to the host arch. */
|
|
35
36
|
appleSilicon?: boolean;
|
|
37
|
+
/** `~/.compost` root override for the secrets perms audit (tests). */
|
|
38
|
+
home?: string;
|
|
39
|
+
/** Keychain backend for HF-token resolution; `null` forces file-only (tests). */
|
|
40
|
+
keychain?: KeychainBackend | null;
|
|
36
41
|
}
|
|
37
42
|
/**
|
|
38
43
|
* Run every prerequisite probe and return a checklist. Read-only: probes,
|
package/dist/lib/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EAAiC,KAAK,eAAe,EAAiB,MAAM,cAAc,CAAA;AAKjG,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;AAEhD,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAA;IACV,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,WAAW,CAAA;IACnB,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,KAAK,CAAA;IACrB,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,UAAU,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,wEAAwE;IACxE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iEAAiE;IACjE,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC/B,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iFAAiF;IACjF,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;CAClC;AAgBD;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,GAAE,SAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAyTzE"}
|
package/dist/lib/setup.js
CHANGED
|
@@ -4,6 +4,8 @@ import { join, resolve } from 'node:path';
|
|
|
4
4
|
import { promisify } from 'node:util';
|
|
5
5
|
import { resolveFetch } from '../llm/http.js';
|
|
6
6
|
import { diagnoseNativeRuntime, isAppleSilicon, resolveNativeRuntime } from './nativeRuntime.js';
|
|
7
|
+
import { auditSecretsPerms, HF_ALIASES, resolveSecret } from './secrets.js';
|
|
8
|
+
import { checkVersionStatus, UPGRADE_COMMAND } from './version.js';
|
|
7
9
|
const execFileAsync = promisify(execFile);
|
|
8
10
|
const PYANNOTE_GATED_REPOS = ['pyannote/speaker-diarization-3.1', 'pyannote/segmentation-3.0'];
|
|
9
11
|
const DEFAULT_REQUIRED_MODELS = ['bge-m3'];
|
|
@@ -32,6 +34,28 @@ export async function runSetup(deps = {}) {
|
|
|
32
34
|
const transcriberUrl = (deps.transcriberUrl ?? 'http://localhost:7862').replace(/\/$/, '');
|
|
33
35
|
const requiredModels = deps.requiredOllamaModels ?? DEFAULT_REQUIRED_MODELS;
|
|
34
36
|
const checks = [];
|
|
37
|
+
// 0. Is this install current? An outdated CLI misses bundled components and
|
|
38
|
+
// produces failures that look like machine problems (#245 — a field user on
|
|
39
|
+
// an old rc spent a session debugging exactly that). Best-effort: the check
|
|
40
|
+
// is silently skipped offline or when the registry doesn't answer fast.
|
|
41
|
+
const version = await checkVersionStatus(deps.fetchImpl !== undefined ? { fetchImpl: deps.fetchImpl } : {});
|
|
42
|
+
if (version !== null) {
|
|
43
|
+
checks.push(version.behind
|
|
44
|
+
? {
|
|
45
|
+
id: 'version',
|
|
46
|
+
label: 'CLI version',
|
|
47
|
+
status: 'warn',
|
|
48
|
+
detail: `${version.current} installed, ${version.latest} available — old versions miss bundled components`,
|
|
49
|
+
fix: UPGRADE_COMMAND,
|
|
50
|
+
}
|
|
51
|
+
: {
|
|
52
|
+
id: 'version',
|
|
53
|
+
label: 'CLI version',
|
|
54
|
+
status: 'ok',
|
|
55
|
+
detail: `${version.current} (latest)`,
|
|
56
|
+
fix: null,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
35
59
|
// 1. Ollama reachable + 2. required models present (one probe, two checks).
|
|
36
60
|
let ollamaTags = null;
|
|
37
61
|
try {
|
|
@@ -123,8 +147,9 @@ export async function runSetup(deps = {}) {
|
|
|
123
147
|
});
|
|
124
148
|
// 4b. Native transcription (Apple Silicon, #176) — the default fast path.
|
|
125
149
|
// (#207) Pre-fix this reported "no native venv" when the actual gap was the
|
|
126
|
-
// transcriber Python source dir (the venv DID exist
|
|
127
|
-
//
|
|
150
|
+
// transcriber Python source dir (the venv DID exist). We report each missing
|
|
151
|
+
// piece separately. The source ships bundled in the cli tarball (#206), so a
|
|
152
|
+
// healthy global install resolves it without any env var.
|
|
128
153
|
if (deps.appleSilicon ?? isAppleSilicon()) {
|
|
129
154
|
const diag = diagnoseNativeRuntime({ env });
|
|
130
155
|
if (diag.python === undefined) {
|
|
@@ -137,16 +162,16 @@ export async function runSetup(deps = {}) {
|
|
|
137
162
|
});
|
|
138
163
|
}
|
|
139
164
|
else if (diag.transcriberDir === undefined) {
|
|
140
|
-
// The venv resolved
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
//
|
|
165
|
+
// The venv resolved but no transcriber source did. A healthy global
|
|
166
|
+
// install bundles the source (#206), so reaching here means the bundle is
|
|
167
|
+
// missing (a broken/partial install) or a checkout without it — a
|
|
168
|
+
// reinstall or an explicit override resolves it.
|
|
144
169
|
checks.push({
|
|
145
170
|
id: 'native-transcribe',
|
|
146
171
|
label: 'Native transcription',
|
|
147
172
|
status: 'warn',
|
|
148
|
-
detail: `venv ready (${diag.python}) but transcriber source
|
|
149
|
-
fix: 'set COMPOST_TRANSCRIBER_DIR
|
|
173
|
+
detail: `venv ready (${diag.python}) but no transcriber source resolved`,
|
|
174
|
+
fix: 'reinstall @they-juanreina/compost-cli, or set COMPOST_TRANSCRIBER_DIR to a transcriber/ dir (the Docker fallback also works)',
|
|
150
175
|
});
|
|
151
176
|
}
|
|
152
177
|
else {
|
|
@@ -172,15 +197,39 @@ export async function runSetup(deps = {}) {
|
|
|
172
197
|
});
|
|
173
198
|
}
|
|
174
199
|
}
|
|
175
|
-
//
|
|
176
|
-
|
|
177
|
-
|
|
200
|
+
// 4c. Derived: is ANY ingest engine available? Document ingest (PDF/DOCX/…)
|
|
201
|
+
// rides the same engine as transcription, so a machine with neither the
|
|
202
|
+
// native runtime nor the Docker service cannot process a single inbox file —
|
|
203
|
+
// that is a FAIL, not an accumulation of warns (#242). The individual checks
|
|
204
|
+
// above stay warn-level because either one alone is sufficient.
|
|
205
|
+
const nativeOk = checks.some((c) => c.id === 'native-transcribe' && c.status === 'ok');
|
|
206
|
+
if (!transcriberOk && !nativeOk) {
|
|
207
|
+
checks.push({
|
|
208
|
+
id: 'ingest-engine',
|
|
209
|
+
label: 'Ingest engine',
|
|
210
|
+
status: 'fail',
|
|
211
|
+
detail: 'no transcription engine available — audio AND document (PDF/DOCX/…) ingest will fail',
|
|
212
|
+
fix: (deps.appleSilicon ?? isAppleSilicon())
|
|
213
|
+
? 'compost setup (guided; or compost setup --provision-native)'
|
|
214
|
+
: 'compost setup (guided; or start the Docker transcriber)',
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
// 5. HuggingFace token present. Resolved by the documented precedence:
|
|
218
|
+
// env > OS keychain > ~/.compost/secrets.env (0600). A keychain- or
|
|
219
|
+
// file-stored token counts as "set" here just like an exported env var.
|
|
220
|
+
const secretsDeps = {
|
|
221
|
+
env,
|
|
222
|
+
...(deps.home !== undefined ? { home: deps.home } : {}),
|
|
223
|
+
...(deps.keychain !== undefined ? { keychain: deps.keychain } : {}),
|
|
224
|
+
};
|
|
225
|
+
const hf = resolveSecret('HUGGINGFACE_TOKEN', { ...secretsDeps, aliases: HF_ALIASES });
|
|
226
|
+
if (!hf) {
|
|
178
227
|
checks.push({
|
|
179
228
|
id: 'hf-token',
|
|
180
229
|
label: 'HuggingFace token',
|
|
181
230
|
status: 'warn',
|
|
182
|
-
detail: '
|
|
183
|
-
fix: '
|
|
231
|
+
detail: 'not set in env, keychain, or ~/.compost/secrets.env (needed for pyannote diarization)',
|
|
232
|
+
fix: 'compost secrets set HUGGINGFACE_TOKEN (or export HUGGINGFACE_TOKEN=hf_…)',
|
|
184
233
|
});
|
|
185
234
|
}
|
|
186
235
|
else {
|
|
@@ -188,9 +237,10 @@ export async function runSetup(deps = {}) {
|
|
|
188
237
|
id: 'hf-token',
|
|
189
238
|
label: 'HuggingFace token',
|
|
190
239
|
status: 'ok',
|
|
191
|
-
detail:
|
|
240
|
+
detail: `set (source: ${hf.source})`,
|
|
192
241
|
fix: null,
|
|
193
242
|
});
|
|
243
|
+
const hfToken = hf.value;
|
|
194
244
|
// 6. pyannote license — must be a FILE fetch, not a metadata ping (the
|
|
195
245
|
// /api/models endpoint returns 200 even when the license isn't accepted).
|
|
196
246
|
for (const repo of PYANNOTE_GATED_REPOS) {
|
|
@@ -246,6 +296,20 @@ export async function runSetup(deps = {}) {
|
|
|
246
296
|
fix: 'compost init <name> (scaffolds .compost/config.toml)',
|
|
247
297
|
});
|
|
248
298
|
}
|
|
299
|
+
// 9. Secret-file permissions. A group/world-readable token file is a real
|
|
300
|
+
// leak, but with a one-line fix — surface it as a warn (the startup
|
|
301
|
+
// autoloader independently *refuses* to read an insecure secrets.env). Only
|
|
302
|
+
// emitted when there's something to flag; POSIX-only (Windows uses ACLs).
|
|
303
|
+
const permIssues = auditSecretsPerms(secretsDeps);
|
|
304
|
+
for (const issue of permIssues) {
|
|
305
|
+
checks.push({
|
|
306
|
+
id: `secret-perms:${issue.path}`,
|
|
307
|
+
label: 'Secret file permissions',
|
|
308
|
+
status: 'warn',
|
|
309
|
+
detail: `${issue.path} is ${issue.mode} — ${issue.detail}`,
|
|
310
|
+
fix: issue.fix,
|
|
311
|
+
});
|
|
312
|
+
}
|
|
249
313
|
const ready = checks.every((c) => c.status !== 'fail');
|
|
250
314
|
return { schema_version: '1.0', ready, checks };
|
|
251
315
|
}
|
package/dist/lib/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAChG,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAwB,aAAa,EAAE,MAAM,cAAc,CAAA;AACjG,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAElE,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AA0CzC,MAAM,oBAAoB,GAAG,CAAC,kCAAkC,EAAE,2BAA2B,CAAC,CAAA;AAE9F,MAAM,uBAAuB,GAAG,CAAC,QAAQ,CAAC,CAAA;AAE1C,MAAM,WAAW,GAAG,KAAK,EAAE,GAAW,EAAE,IAAc,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QACpE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAA0B,CAAA;QACpC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;IAC9C,CAAC;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAkB,EAAE;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACnC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAA;IACrC,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,wBAAwB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACjF,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC1F,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,IAAI,uBAAuB,CAAA;IAE3E,MAAM,MAAM,GAAiB,EAAE,CAAA;IAE/B,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAC5E,wEAAwE;IACxE,MAAM,OAAO,GAAG,MAAM,kBAAkB,CACtC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAClE,CAAA;IACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CACT,OAAO,CAAC,MAAM;YACZ,CAAC,CAAC;gBACE,EAAE,EAAE,SAAS;gBACb,KAAK,EAAE,aAAa;gBACpB,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,eAAe,OAAO,CAAC,MAAM,mDAAmD;gBAC1G,GAAG,EAAE,eAAe;aACrB;YACH,CAAC,CAAC;gBACE,EAAE,EAAE,SAAS;gBACb,KAAK,EAAE,aAAa;gBACpB,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,WAAW;gBACrC,GAAG,EAAE,IAAI;aACV,CACN,CAAA;IACH,CAAC;IAED,4EAA4E;IAC5E,IAAI,UAAU,GAAoB,IAAI,CAAA;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,SAAS,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QACvE,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0C,CAAA;YACxE,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,GAAG,IAAI,CAAA;IACnB,CAAC;IACD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,gBAAgB;YACvB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,kBAAkB,SAAS,WAAW;YAC9C,GAAG,EAAE,qEAAqE;SAC3E,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,gBAAgB;YACvB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,mBAAmB;YAC/C,GAAG,EAAE,IAAI;SACV,CAAC,CAAA;QACF,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAA;YAChF,MAAM,CAAC,IAAI,CACT,OAAO;gBACL,CAAC,CAAC;oBACE,EAAE,EAAE,SAAS,KAAK,EAAE;oBACpB,KAAK,EAAE,SAAS,KAAK,EAAE;oBACvB,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,WAAW;oBACnB,GAAG,EAAE,IAAI;iBACV;gBACH,CAAC,CAAC;oBACE,EAAE,EAAE,SAAS,KAAK,EAAE;oBACpB,KAAK,EAAE,SAAS,KAAK,EAAE;oBACvB,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,sCAAsC;oBAC9C,GAAG,EAAE,eAAe,KAAK,EAAE;iBAC5B,CACN,CAAA;QACH,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAA;IAC/E,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,EAAE;QACP,CAAC,CAAC;YACE,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,iBAAiB;YACxB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,UAAU,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;YACxC,GAAG,EAAE,IAAI;SACV;QACH,CAAC,CAAC;YACE,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,iBAAiB;YACxB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,8EAA8E;YACtF,GAAG,EAAE,mEAAmE;SACzE,CACN,CAAA;IAED,4BAA4B;IAC5B,IAAI,aAAa,GAAG,KAAK,CAAA;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,cAAc,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAC1E,aAAa,GAAG,GAAG,CAAC,EAAE,CAAA;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,aAAa,GAAG,KAAK,CAAA;IACvB,CAAC;IACD,MAAM,CAAC,IAAI,CACT,aAAa;QACX,CAAC,CAAC;YACE,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,cAAc,cAAc,EAAE;YACtC,GAAG,EAAE,IAAI;SACV;QACH,CAAC,CAAC;YACE,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,iFAAiF;YACzF,GAAG,EAAE,0DAA0D;SAChE,CACN,CAAA;IAED,0EAA0E;IAC1E,4EAA4E;IAC5E,6EAA6E;IAC7E,6EAA6E;IAC7E,0DAA0D;IAC1D,IAAI,IAAI,CAAC,YAAY,IAAI,cAAc,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,qBAAqB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,mBAAmB;gBACvB,KAAK,EAAE,sBAAsB;gBAC7B,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,gFAAgF;gBACxF,GAAG,EAAE,uEAAuE;aAC7E,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC7C,oEAAoE;YACpE,0EAA0E;YAC1E,kEAAkE;YAClE,iDAAiD;YACjD,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,mBAAmB;gBACvB,KAAK,EAAE,sBAAsB;gBAC7B,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,eAAe,IAAI,CAAC,MAAM,sCAAsC;gBACxE,GAAG,EAAE,8HAA8H;aACpI,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI;gBAC9C,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAA;YACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,qCAAqC,CAAC,CAAC,CAAA;YACtF,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,EAAE;gBACN,CAAC,CAAC;oBACE,EAAE,EAAE,mBAAmB;oBACvB,KAAK,EAAE,sBAAsB;oBAC7B,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,yCAAyC,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,cAAc,EAAE;oBAClG,GAAG,EAAE,IAAI;iBACV;gBACH,CAAC,CAAC;oBACE,EAAE,EAAE,mBAAmB;oBACvB,KAAK,EAAE,sBAAsB;oBAC7B,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,WAAW,MAAM,CAAC,MAAM,4CAA4C;oBAC5E,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,wDAAwD;iBAC9E,CACN,CAAA;QACH,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,wEAAwE;IACxE,6EAA6E;IAC7E,6EAA6E;IAC7E,gEAAgE;IAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,mBAAmB,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAA;IACtF,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,MAAM;YACd,MAAM,EACJ,sFAAsF;YACxF,GAAG,EACD,CAAC,IAAI,CAAC,YAAY,IAAI,cAAc,EAAE,CAAC;gBACrC,CAAC,CAAC,8DAA8D;gBAChE,CAAC,CAAC,0DAA0D;SACjE,CAAC,CAAA;IACJ,CAAC;IAED,uEAAuE;IACvE,oEAAoE;IACpE,wEAAwE;IACxE,MAAM,WAAW,GAAG;QAClB,GAAG;QACH,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAA;IACD,MAAM,EAAE,GAAG,aAAa,CAAC,mBAAmB,EAAE,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAA;IACtF,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,mBAAmB;YAC1B,MAAM,EAAE,MAAM;YACd,MAAM,EACJ,uFAAuF;YACzF,GAAG,EAAE,4EAA4E;SAClF,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,mBAAmB;YAC1B,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,gBAAgB,EAAE,CAAC,MAAM,GAAG;YACpC,GAAG,EAAE,IAAI;SACV,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAA;QACxB,uEAAuE;QACvE,0EAA0E;QAC1E,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;YACxC,IAAI,QAAQ,GAAG,KAAK,CAAA;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,0BAA0B,IAAI,2BAA2B,EAAE;oBACrF,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,EAAE,EAAE;iBAChD,CAAC,CAAA;gBACF,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAA;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,GAAG,KAAK,CAAA;YAClB,CAAC;YACD,MAAM,CAAC,IAAI,CACT,QAAQ;gBACN,CAAC,CAAC;oBACE,EAAE,EAAE,YAAY,IAAI,EAAE;oBACtB,KAAK,EAAE,qBAAqB,IAAI,EAAE;oBAClC,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,UAAU;oBAClB,GAAG,EAAE,IAAI;iBACV;gBACH,CAAC,CAAC;oBACE,EAAE,EAAE,YAAY,IAAI,EAAE;oBACtB,KAAK,EAAE,qBAAqB,IAAI,EAAE;oBAClC,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,oDAAoD;oBAC5D,GAAG,EAAE,oCAAoC,IAAI,qCAAqC;iBACnF,CACN,CAAA;QACH,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACtC,MAAM,CAAC,IAAI,CACT,UAAU,CAAC,QAAQ,CAAC;QAClB,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE;QACvF,CAAC,CAAC;YACE,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,kBAAkB;YACzB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,mBAAmB,GAAG,EAAE;YAChC,GAAG,EAAE,uEAAuE;SAC7E,CACN,CAAA;IAED,kFAAkF;IAClF,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;QAC3C,MAAM,CAAC,IAAI,CACT,SAAS;YACP,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE;YACpF,CAAC,CAAC;gBACE,EAAE,EAAE,QAAQ;gBACZ,KAAK,EAAE,aAAa;gBACpB,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,wCAAwC;gBAChD,GAAG,EAAE,uDAAuD;aAC7D,CACN,CAAA;IACH,CAAC;IAED,0EAA0E;IAC1E,oEAAoE;IACpE,4EAA4E;IAC5E,0EAA0E;IAC1E,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAA;IACjD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,gBAAgB,KAAK,CAAC,IAAI,EAAE;YAChC,KAAK,EAAE,yBAAyB;YAChC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,MAAM,EAAE;YAC1D,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;IACtD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AACjD,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,6EAA6E;IAC7E,uCAAuC;IACvC,IAAI,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAQ;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;YAC5D,IAAI,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,GAAG,CAAA;QACjC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { FetchLike } from '../llm/types.js';
|
|
2
|
+
import { provisionNativeVenv } from './provisionNative.js';
|
|
3
|
+
import { setSecret } from './secrets.js';
|
|
4
|
+
import { runSetup, type SetupReport } from './setup.js';
|
|
5
|
+
import { saveUserConfig } from './userConfig.js';
|
|
6
|
+
/** Per-task routes the wizard writes for each chat-model choice. The local
|
|
7
|
+
* default matches the seed template's quick_chat model; the cloud routes keep
|
|
8
|
+
* the template's synthesis model and add a fast model for the local tasks. */
|
|
9
|
+
export declare const LOCAL_CHAT_MODEL = "llama3.1:8b";
|
|
10
|
+
export declare const CLOUD_FAST_MODEL = "anthropic:claude-haiku-4-5";
|
|
11
|
+
export declare const CLOUD_SYNTHESIS_MODEL = "anthropic:claude-opus-4-7";
|
|
12
|
+
export interface WizardIO {
|
|
13
|
+
say(text: string): void;
|
|
14
|
+
/** Yes/no with a default. */
|
|
15
|
+
confirm(question: string, def: boolean): Promise<boolean>;
|
|
16
|
+
/** Free-text with a default shown in brackets. */
|
|
17
|
+
ask(question: string, def?: string): Promise<string>;
|
|
18
|
+
/** Input that must not echo (tokens, API keys). Empty string = skipped. */
|
|
19
|
+
askHidden(question: string): Promise<string>;
|
|
20
|
+
}
|
|
21
|
+
export interface WizardDeps {
|
|
22
|
+
io: WizardIO;
|
|
23
|
+
cwd?: string;
|
|
24
|
+
env?: NodeJS.ProcessEnv;
|
|
25
|
+
appleSilicon?: boolean;
|
|
26
|
+
fetchImpl?: FetchLike;
|
|
27
|
+
/** Diagnostic pass (injectable for tests). */
|
|
28
|
+
check?: typeof runSetup;
|
|
29
|
+
/** Run a streaming shell command the user just confirmed (install, pull). */
|
|
30
|
+
run?: (cmd: string, args: string[]) => {
|
|
31
|
+
ok: boolean;
|
|
32
|
+
};
|
|
33
|
+
provision?: typeof provisionNativeVenv;
|
|
34
|
+
storeSecret?: typeof setSecret;
|
|
35
|
+
saveDefaults?: typeof saveUserConfig;
|
|
36
|
+
/** Existing seed dirs whose config.toml the wizard offers to update. */
|
|
37
|
+
listSeeds?: () => string[];
|
|
38
|
+
}
|
|
39
|
+
export interface WizardResult {
|
|
40
|
+
report: SetupReport;
|
|
41
|
+
actions: string[];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Guided setup: walk every fixable gap with a per-step confirmed fix, collect
|
|
45
|
+
* the secrets the pipeline needs (HF token, optional LLM key), and let the
|
|
46
|
+
* user pick how `compost chat` should run on this machine. Every mutation is
|
|
47
|
+
* proposed before it runs; declining any step just moves on. The non-TTY
|
|
48
|
+
* `compost setup` diagnostic is unchanged — this runs only at a terminal.
|
|
49
|
+
*/
|
|
50
|
+
export declare function runSetupWizard(deps: WizardDeps): Promise<WizardResult>;
|
|
51
|
+
//# sourceMappingURL=setupWizard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupWizard.d.ts","sourceRoot":"","sources":["../../src/lib/setupWizard.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAmB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD;;8EAE8E;AAC9E,eAAO,MAAM,gBAAgB,gBAAgB,CAAA;AAC7C,eAAO,MAAM,gBAAgB,+BAA+B,CAAA;AAC5D,eAAO,MAAM,qBAAqB,8BAA8B,CAAA;AAIhE,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACzD,kDAAkD;IAClD,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD,2EAA2E;IAC3E,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CAC7C;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,QAAQ,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,QAAQ,CAAA;IACvB,6EAA6E;IAC7E,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAA;IACtD,SAAS,CAAC,EAAE,OAAO,mBAAmB,CAAA;IACtC,WAAW,CAAC,EAAE,OAAO,SAAS,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,cAAc,CAAA;IACpC,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,CAAA;IACnB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAqBD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CA4N5E"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { resolveFetch } from '../llm/http.js';
|
|
4
|
+
import { loadConfig, saveConfig, setConfigValue } from './config.js';
|
|
5
|
+
import { diagnoseNativeRuntime, isAppleSilicon } from './nativeRuntime.js';
|
|
6
|
+
import { provisionNativeVenv } from './provisionNative.js';
|
|
7
|
+
import { setSecret } from './secrets.js';
|
|
8
|
+
import { runSetup } from './setup.js';
|
|
9
|
+
import { saveUserConfig } from './userConfig.js';
|
|
10
|
+
/** Per-task routes the wizard writes for each chat-model choice. The local
|
|
11
|
+
* default matches the seed template's quick_chat model; the cloud routes keep
|
|
12
|
+
* the template's synthesis model and add a fast model for the local tasks. */
|
|
13
|
+
export const LOCAL_CHAT_MODEL = 'llama3.1:8b';
|
|
14
|
+
export const CLOUD_FAST_MODEL = 'anthropic:claude-haiku-4-5';
|
|
15
|
+
export const CLOUD_SYNTHESIS_MODEL = 'anthropic:claude-opus-4-7';
|
|
16
|
+
const PYANNOTE_GATED_REPOS = ['pyannote/speaker-diarization-3.1', 'pyannote/segmentation-3.0'];
|
|
17
|
+
function checkById(report, id) {
|
|
18
|
+
return report.checks.find((c) => c.id === id);
|
|
19
|
+
}
|
|
20
|
+
function notOk(report, id) {
|
|
21
|
+
const c = checkById(report, id);
|
|
22
|
+
return c !== undefined && c.status !== 'ok';
|
|
23
|
+
}
|
|
24
|
+
function statusGlyph(c) {
|
|
25
|
+
return c.status === 'ok' ? '✓' : c.status === 'warn' ? '!' : '✗';
|
|
26
|
+
}
|
|
27
|
+
function printReport(io, report) {
|
|
28
|
+
for (const c of report.checks) {
|
|
29
|
+
io.say(` ${statusGlyph(c)} ${c.label} — ${c.detail}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Guided setup: walk every fixable gap with a per-step confirmed fix, collect
|
|
34
|
+
* the secrets the pipeline needs (HF token, optional LLM key), and let the
|
|
35
|
+
* user pick how `compost chat` should run on this machine. Every mutation is
|
|
36
|
+
* proposed before it runs; declining any step just moves on. The non-TTY
|
|
37
|
+
* `compost setup` diagnostic is unchanged — this runs only at a terminal.
|
|
38
|
+
*/
|
|
39
|
+
export async function runSetupWizard(deps) {
|
|
40
|
+
const io = deps.io;
|
|
41
|
+
const cwd = deps.cwd ?? process.cwd();
|
|
42
|
+
const env = deps.env ?? process.env;
|
|
43
|
+
const apple = deps.appleSilicon ?? isAppleSilicon();
|
|
44
|
+
const check = deps.check ?? runSetup;
|
|
45
|
+
const run = deps.run ?? (() => ({ ok: false }));
|
|
46
|
+
const provision = deps.provision ?? provisionNativeVenv;
|
|
47
|
+
const storeSecret = deps.storeSecret ?? setSecret;
|
|
48
|
+
const saveDefaults = deps.saveDefaults ?? saveUserConfig;
|
|
49
|
+
const fetchImpl = resolveFetch(deps.fetchImpl);
|
|
50
|
+
const actions = [];
|
|
51
|
+
io.say('compost setup — guided');
|
|
52
|
+
io.say(`platform: ${process.platform}/${process.arch}${apple ? ' (native transcription)' : ' (Docker transcription fallback)'}`);
|
|
53
|
+
io.say('');
|
|
54
|
+
let report = await check({ cwd, env });
|
|
55
|
+
printReport(io, report);
|
|
56
|
+
io.say('');
|
|
57
|
+
// ── Outdated install: fix this first — everything else may be its symptom ─
|
|
58
|
+
if (notOk(report, 'version')) {
|
|
59
|
+
const detail = checkById(report, 'version')?.detail ?? '';
|
|
60
|
+
io.say(`This install is outdated (${detail}).`);
|
|
61
|
+
if (await io.confirm('Upgrade now (npm install -g @they-juanreina/compost-cli@latest)?', true)) {
|
|
62
|
+
const ok = run('npm', ['install', '-g', '@they-juanreina/compost-cli@latest']).ok;
|
|
63
|
+
actions.push(ok ? 'upgraded CLI — rerun `compost setup` on the new version' : 'upgrade failed');
|
|
64
|
+
if (ok) {
|
|
65
|
+
io.say('Upgraded. Rerun `compost setup` so the new version takes it from here.');
|
|
66
|
+
return { report, actions };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// ── Ollama: the embeddings (and optionally chat) engine ──────────────────
|
|
71
|
+
if (notOk(report, 'ollama')) {
|
|
72
|
+
io.say('Ollama powers search embeddings and local chat. It is not running.');
|
|
73
|
+
const brewAvailable = process.platform === 'darwin' && run('which', ['brew']).ok;
|
|
74
|
+
if (brewAvailable) {
|
|
75
|
+
if (await io.confirm('Install and start Ollama via Homebrew (brew install ollama)?', true)) {
|
|
76
|
+
const installed = run('brew', ['install', 'ollama']).ok;
|
|
77
|
+
const started = installed && run('brew', ['services', 'start', 'ollama']).ok;
|
|
78
|
+
actions.push(started ? 'installed + started Ollama' : 'Ollama install attempted — check output above');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
io.say('Install it from https://ollama.com/download, then open the app (or run `ollama serve`).');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// ── Embedding model ───────────────────────────────────────────────────────
|
|
86
|
+
if (notOk(report, 'model:bge-m3')) {
|
|
87
|
+
if (await io.confirm('Pull the embedding model bge-m3 (~1.2 GB)?', true)) {
|
|
88
|
+
const ok = run('ollama', ['pull', 'bge-m3']).ok;
|
|
89
|
+
actions.push(ok ? 'pulled bge-m3' : 'bge-m3 pull failed — is Ollama running?');
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// ── Transcription engine (also required for PDF/document ingest) ─────────
|
|
93
|
+
if (apple && notOk(report, 'native-transcribe')) {
|
|
94
|
+
io.say('');
|
|
95
|
+
io.say('Transcription runs natively on Apple Silicon (the same engine also ingests PDFs and documents).');
|
|
96
|
+
if (await io.confirm('Provision the native engine now (downloads ~1 GB of Python wheels, a few minutes)?', true)) {
|
|
97
|
+
try {
|
|
98
|
+
const result = provision({});
|
|
99
|
+
actions.push(`native engine: ${result.status}`);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
io.say(` provisioning failed: ${err instanceof Error ? err.message : err}`);
|
|
103
|
+
actions.push('native provisioning failed');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else if (!apple && notOk(report, 'transcriber')) {
|
|
108
|
+
const transcriberDir = diagnoseNativeRuntime({ env }).transcriberDir;
|
|
109
|
+
if (transcriberDir !== undefined && existsSync(join(transcriberDir, 'compose.yaml'))) {
|
|
110
|
+
io.say('');
|
|
111
|
+
io.say('Transcription (and PDF/document ingest) runs in Docker on this platform.');
|
|
112
|
+
if (await io.confirm('Build and start the transcriber container (first build downloads several GB)?', true)) {
|
|
113
|
+
const ok = run('docker', [
|
|
114
|
+
'compose',
|
|
115
|
+
'-f',
|
|
116
|
+
join(transcriberDir, 'compose.yaml'),
|
|
117
|
+
'up',
|
|
118
|
+
'--build',
|
|
119
|
+
'-d',
|
|
120
|
+
]).ok;
|
|
121
|
+
actions.push(ok ? 'transcriber container started' : 'docker compose failed — is Docker running?');
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
io.say('Could not locate the bundled transcriber sources — reinstall @they-juanreina/compost-cli.');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// ── HuggingFace token (audio diarization only) ────────────────────────────
|
|
129
|
+
if (notOk(report, 'hf-token')) {
|
|
130
|
+
io.say('');
|
|
131
|
+
io.say('Audio transcription labels who is speaking (diarization), which needs a free HuggingFace account:');
|
|
132
|
+
io.say(' 1. Token: https://hf.co/settings/tokens (a "read" token is enough)');
|
|
133
|
+
io.say(' 2. Licenses: accept on BOTH model pages, logged in as the same account —');
|
|
134
|
+
for (const repo of PYANNOTE_GATED_REPOS)
|
|
135
|
+
io.say(` https://huggingface.co/${repo}`);
|
|
136
|
+
io.say('PDF and document ingest do not need this — Enter skips, and `compost setup` can add it later.');
|
|
137
|
+
const token = (await io.askHidden('HuggingFace token (hidden, Enter to skip): ')).trim();
|
|
138
|
+
if (token !== '') {
|
|
139
|
+
const stored = storeSecret('HUGGINGFACE_TOKEN', token);
|
|
140
|
+
actions.push(`HF token stored in ${stored.stored_in}`);
|
|
141
|
+
for (const repo of PYANNOTE_GATED_REPOS) {
|
|
142
|
+
let accepted = false;
|
|
143
|
+
try {
|
|
144
|
+
const res = await fetchImpl(`https://huggingface.co/${repo}/resolve/main/config.yaml`, {
|
|
145
|
+
method: 'GET',
|
|
146
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
147
|
+
});
|
|
148
|
+
accepted = res.ok;
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
accepted = false;
|
|
152
|
+
}
|
|
153
|
+
io.say(accepted
|
|
154
|
+
? ` ✓ license accepted: ${repo}`
|
|
155
|
+
: ` ! license NOT accepted yet: https://huggingface.co/${repo}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// ── Chat model: how should `compost chat` answer on this machine? ────────
|
|
160
|
+
io.say('');
|
|
161
|
+
io.say('`compost chat` answers questions from your transcripts. Pick how it should run:');
|
|
162
|
+
io.say(` [1] local — pull ${LOCAL_CHAT_MODEL} (~5 GB) and run offline via Ollama`);
|
|
163
|
+
io.say(' [2] cloud — use an Anthropic API key (best quality; sends excerpts to the API)');
|
|
164
|
+
io.say(' [3] skip for now');
|
|
165
|
+
const choice = (await io.ask('Choice', '1')).trim();
|
|
166
|
+
let routes = null;
|
|
167
|
+
if (choice === '1') {
|
|
168
|
+
const model = (await io.ask('Local model to pull', LOCAL_CHAT_MODEL)).trim() || LOCAL_CHAT_MODEL;
|
|
169
|
+
const ok = run('ollama', ['pull', model]).ok;
|
|
170
|
+
if (ok) {
|
|
171
|
+
routes = {
|
|
172
|
+
quick_chat: `ollama:${model}`,
|
|
173
|
+
verification: `ollama:${model}`,
|
|
174
|
+
synthesis: `ollama:${model}`,
|
|
175
|
+
};
|
|
176
|
+
actions.push(`chat: local via ollama:${model}`);
|
|
177
|
+
io.say(' (cloud-quality synthesis can be added any time: rerun `compost setup` and pick cloud.)');
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
io.say(` pull failed — is Ollama running? Rerun \`compost setup\` to retry.`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else if (choice === '2') {
|
|
184
|
+
const key = (await io.askHidden('Anthropic API key (hidden): ')).trim();
|
|
185
|
+
if (key !== '') {
|
|
186
|
+
const stored = storeSecret('ANTHROPIC_API_KEY', key);
|
|
187
|
+
routes = {
|
|
188
|
+
quick_chat: CLOUD_FAST_MODEL,
|
|
189
|
+
verification: CLOUD_FAST_MODEL,
|
|
190
|
+
synthesis: CLOUD_SYNTHESIS_MODEL,
|
|
191
|
+
};
|
|
192
|
+
actions.push(`chat: cloud (key in ${stored.stored_in})`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (routes !== null) {
|
|
196
|
+
const path = saveDefaults({ defaults: routes }, env);
|
|
197
|
+
io.say(` routing saved to ${path} — new seeds inherit it automatically.`);
|
|
198
|
+
const seeds = (deps.listSeeds ?? (() => []))();
|
|
199
|
+
for (const seedPath of seeds) {
|
|
200
|
+
if (await io.confirm(`Update model routing in the existing seed ${seedPath}?`, true)) {
|
|
201
|
+
const raw = loadConfig(seedPath).raw;
|
|
202
|
+
for (const [task, route] of Object.entries(routes)) {
|
|
203
|
+
setConfigValue(raw, `defaults.${task}`, route);
|
|
204
|
+
}
|
|
205
|
+
saveConfig(seedPath, raw);
|
|
206
|
+
actions.push(`updated routing: ${seedPath}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// ── Re-check and summarize ────────────────────────────────────────────────
|
|
211
|
+
io.say('');
|
|
212
|
+
report = await check({ cwd, env });
|
|
213
|
+
printReport(io, report);
|
|
214
|
+
io.say('');
|
|
215
|
+
io.say(report.ready
|
|
216
|
+
? 'Ready. Next steps:'
|
|
217
|
+
: 'Some checks still need attention (see above). Next steps:');
|
|
218
|
+
io.say(' compost init <study-name> # create a study');
|
|
219
|
+
io.say(' open Seeds/<study-name>/sessions/_inbox # drop a recording or PDF in');
|
|
220
|
+
io.say(' compost watch --once # process it');
|
|
221
|
+
return { report, actions };
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=setupWizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupWizard.js","sourceRoot":"","sources":["../../src/lib/setupWizard.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/snap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snap.d.ts","sourceRoot":"","sources":["../../src/lib/snap.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;CACjB;AAKD,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"snap.d.ts","sourceRoot":"","sources":["../../src/lib/snap.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;CACjB;AAKD,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBpD;AA+BD,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAA;AAI5D,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,IAAI,CAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,WAAgB,GACrB,UAAU,CAyCZ"}
|