@they-juanreina/compost-cli 0.1.0-rc.1
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/LICENSE +21 -0
- package/README.md +5 -0
- package/bin/compost.js +7 -0
- package/dist/commands/_stub.d.ts +9 -0
- package/dist/commands/_stub.d.ts.map +1 -0
- package/dist/commands/_stub.js +27 -0
- package/dist/commands/_stub.js.map +1 -0
- package/dist/commands/blame.d.ts +3 -0
- package/dist/commands/blame.d.ts.map +1 -0
- package/dist/commands/blame.js +31 -0
- package/dist/commands/blame.js.map +1 -0
- package/dist/commands/chat.d.ts +8 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +99 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/code.d.ts +3 -0
- package/dist/commands/code.d.ts.map +1 -0
- package/dist/commands/code.js +70 -0
- package/dist/commands/code.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +76 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/create.d.ts +20 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +148 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/endorse.d.ts +3 -0
- package/dist/commands/endorse.d.ts.map +1 -0
- package/dist/commands/endorse.js +31 -0
- package/dist/commands/endorse.js.map +1 -0
- package/dist/commands/evals.d.ts +3 -0
- package/dist/commands/evals.d.ts.map +1 -0
- package/dist/commands/evals.js +54 -0
- package/dist/commands/evals.js.map +1 -0
- package/dist/commands/export.d.ts +3 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +54 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/ingest.d.ts +3 -0
- package/dist/commands/ingest.d.ts.map +1 -0
- package/dist/commands/ingest.js +26 -0
- package/dist/commands/ingest.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +51 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/migrate.d.ts +3 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +28 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/models.d.ts +3 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +32 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/query.d.ts +3 -0
- package/dist/commands/query.d.ts.map +1 -0
- package/dist/commands/query.js +13 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/reindex.d.ts +3 -0
- package/dist/commands/reindex.d.ts.map +1 -0
- package/dist/commands/reindex.js +53 -0
- package/dist/commands/reindex.js.map +1 -0
- package/dist/commands/rescan.d.ts +3 -0
- package/dist/commands/rescan.d.ts.map +1 -0
- package/dist/commands/rescan.js +60 -0
- package/dist/commands/rescan.js.map +1 -0
- package/dist/commands/saturate.d.ts +3 -0
- package/dist/commands/saturate.d.ts.map +1 -0
- package/dist/commands/saturate.js +35 -0
- package/dist/commands/saturate.js.map +1 -0
- package/dist/commands/search.d.ts +3 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +52 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/serve.d.ts +3 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +9 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/session.d.ts +3 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +25 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.d.ts +3 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +38 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/snap.d.ts +3 -0
- package/dist/commands/snap.d.ts.map +1 -0
- package/dist/commands/snap.js +27 -0
- package/dist/commands/snap.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +26 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/synthesize.d.ts +3 -0
- package/dist/commands/synthesize.d.ts.map +1 -0
- package/dist/commands/synthesize.js +13 -0
- package/dist/commands/synthesize.js.map +1 -0
- package/dist/commands/tag.d.ts +3 -0
- package/dist/commands/tag.d.ts.map +1 -0
- package/dist/commands/tag.js +46 -0
- package/dist/commands/tag.js.map +1 -0
- package/dist/commands/transcribe.d.ts +3 -0
- package/dist/commands/transcribe.d.ts.map +1 -0
- package/dist/commands/transcribe.js +110 -0
- package/dist/commands/transcribe.js.map +1 -0
- package/dist/commands/validate.d.ts +3 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +81 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/commands/watch.d.ts +3 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +50 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +12 -0
- package/dist/errors.js.map +1 -0
- package/dist/exporters/csv.d.ts +8 -0
- package/dist/exporters/csv.d.ts.map +1 -0
- package/dist/exporters/csv.js +44 -0
- package/dist/exporters/csv.js.map +1 -0
- package/dist/exporters/eaf.d.ts +3 -0
- package/dist/exporters/eaf.d.ts.map +1 -0
- package/dist/exporters/eaf.js +91 -0
- package/dist/exporters/eaf.js.map +1 -0
- package/dist/exporters/html.d.ts +8 -0
- package/dist/exporters/html.d.ts.map +1 -0
- package/dist/exporters/html.js +47 -0
- package/dist/exporters/html.js.map +1 -0
- package/dist/exporters/md.d.ts +3 -0
- package/dist/exporters/md.d.ts.map +1 -0
- package/dist/exporters/md.js +43 -0
- package/dist/exporters/md.js.map +1 -0
- package/dist/exporters/pdf.d.ts +9 -0
- package/dist/exporters/pdf.d.ts.map +1 -0
- package/dist/exporters/pdf.js +40 -0
- package/dist/exporters/pdf.js.map +1 -0
- package/dist/exporters/report.d.ts +43 -0
- package/dist/exporters/report.d.ts.map +1 -0
- package/dist/exporters/report.js +49 -0
- package/dist/exporters/report.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/legacy_client.d.ts +38 -0
- package/dist/legacy_client.d.ts.map +1 -0
- package/dist/legacy_client.js +44 -0
- package/dist/legacy_client.js.map +1 -0
- package/dist/lib/answerSchema.d.ts +2 -0
- package/dist/lib/answerSchema.d.ts.map +1 -0
- package/dist/lib/answerSchema.js +27 -0
- package/dist/lib/answerSchema.js.map +1 -0
- package/dist/lib/artifacts.d.ts +64 -0
- package/dist/lib/artifacts.d.ts.map +1 -0
- package/dist/lib/artifacts.js +254 -0
- package/dist/lib/artifacts.js.map +1 -0
- package/dist/lib/blame.d.ts +30 -0
- package/dist/lib/blame.d.ts.map +1 -0
- package/dist/lib/blame.js +164 -0
- package/dist/lib/blame.js.map +1 -0
- package/dist/lib/canonicalSessions.d.ts +24 -0
- package/dist/lib/canonicalSessions.d.ts.map +1 -0
- package/dist/lib/canonicalSessions.js +48 -0
- package/dist/lib/canonicalSessions.js.map +1 -0
- package/dist/lib/chat.d.ts +24 -0
- package/dist/lib/chat.d.ts.map +1 -0
- package/dist/lib/chat.js +50 -0
- package/dist/lib/chat.js.map +1 -0
- package/dist/lib/config.d.ts +45 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +143 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/dispatch.d.ts +10 -0
- package/dist/lib/dispatch.d.ts.map +1 -0
- package/dist/lib/dispatch.js +31 -0
- package/dist/lib/dispatch.js.map +1 -0
- package/dist/lib/doctor.d.ts +19 -0
- package/dist/lib/doctor.d.ts.map +1 -0
- package/dist/lib/doctor.js +43 -0
- package/dist/lib/doctor.js.map +1 -0
- package/dist/lib/events.d.ts +42 -0
- package/dist/lib/events.d.ts.map +1 -0
- package/dist/lib/events.js +57 -0
- package/dist/lib/events.js.map +1 -0
- package/dist/lib/export.d.ts +14 -0
- package/dist/lib/export.d.ts.map +1 -0
- package/dist/lib/export.js +36 -0
- package/dist/lib/export.js.map +1 -0
- package/dist/lib/ingest.d.ts +21 -0
- package/dist/lib/ingest.d.ts.map +1 -0
- package/dist/lib/ingest.js +68 -0
- package/dist/lib/ingest.js.map +1 -0
- package/dist/lib/journal.d.ts +23 -0
- package/dist/lib/journal.d.ts.map +1 -0
- package/dist/lib/journal.js +95 -0
- package/dist/lib/journal.js.map +1 -0
- package/dist/lib/migrate.d.ts +29 -0
- package/dist/lib/migrate.d.ts.map +1 -0
- package/dist/lib/migrate.js +117 -0
- package/dist/lib/migrate.js.map +1 -0
- package/dist/lib/nativeRuntime.d.ts +46 -0
- package/dist/lib/nativeRuntime.d.ts.map +1 -0
- package/dist/lib/nativeRuntime.js +61 -0
- package/dist/lib/nativeRuntime.js.map +1 -0
- package/dist/lib/provisionNative.d.ts +46 -0
- package/dist/lib/provisionNative.d.ts.map +1 -0
- package/dist/lib/provisionNative.js +105 -0
- package/dist/lib/provisionNative.js.map +1 -0
- package/dist/lib/queue.d.ts +36 -0
- package/dist/lib/queue.d.ts.map +1 -0
- package/dist/lib/queue.js +102 -0
- package/dist/lib/queue.js.map +1 -0
- package/dist/lib/retrieve.d.ts +51 -0
- package/dist/lib/retrieve.d.ts.map +1 -0
- package/dist/lib/retrieve.js +92 -0
- package/dist/lib/retrieve.js.map +1 -0
- package/dist/lib/saturate.d.ts +21 -0
- package/dist/lib/saturate.d.ts.map +1 -0
- package/dist/lib/saturate.js +132 -0
- package/dist/lib/saturate.js.map +1 -0
- package/dist/lib/schemas.generated.d.ts +15 -0
- package/dist/lib/schemas.generated.d.ts.map +1 -0
- package/dist/lib/schemas.generated.js +975 -0
- package/dist/lib/schemas.generated.js.map +1 -0
- package/dist/lib/seed.d.ts +16 -0
- package/dist/lib/seed.d.ts.map +1 -0
- package/dist/lib/seed.js +64 -0
- package/dist/lib/seed.js.map +1 -0
- package/dist/lib/seedResolve.d.ts +6 -0
- package/dist/lib/seedResolve.d.ts.map +1 -0
- package/dist/lib/seedResolve.js +27 -0
- package/dist/lib/seedResolve.js.map +1 -0
- package/dist/lib/session.d.ts +19 -0
- package/dist/lib/session.d.ts.map +1 -0
- package/dist/lib/session.js +61 -0
- package/dist/lib/session.js.map +1 -0
- package/dist/lib/setup.d.ts +44 -0
- package/dist/lib/setup.d.ts.map +1 -0
- package/dist/lib/setup.js +249 -0
- package/dist/lib/setup.js.map +1 -0
- package/dist/lib/snap.d.ts +15 -0
- package/dist/lib/snap.d.ts.map +1 -0
- package/dist/lib/snap.js +115 -0
- package/dist/lib/snap.js.map +1 -0
- package/dist/lib/status.d.ts +39 -0
- package/dist/lib/status.d.ts.map +1 -0
- package/dist/lib/status.js +174 -0
- package/dist/lib/status.js.map +1 -0
- package/dist/lib/tagcode.d.ts +26 -0
- package/dist/lib/tagcode.d.ts.map +1 -0
- package/dist/lib/tagcode.js +231 -0
- package/dist/lib/tagcode.js.map +1 -0
- package/dist/lib/templates.d.ts +3 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +21 -0
- package/dist/lib/templates.js.map +1 -0
- package/dist/lib/transcribeNative.d.ts +44 -0
- package/dist/lib/transcribeNative.d.ts.map +1 -0
- package/dist/lib/transcribeNative.js +53 -0
- package/dist/lib/transcribeNative.js.map +1 -0
- package/dist/lib/transcript.d.ts +68 -0
- package/dist/lib/transcript.d.ts.map +1 -0
- package/dist/lib/transcript.js +10 -0
- package/dist/lib/transcript.js.map +1 -0
- package/dist/lib/validate.d.ts +16 -0
- package/dist/lib/validate.d.ts.map +1 -0
- package/dist/lib/validate.js +155 -0
- package/dist/lib/validate.js.map +1 -0
- package/dist/llm/adapter.d.ts +33 -0
- package/dist/llm/adapter.d.ts.map +1 -0
- package/dist/llm/adapter.js +106 -0
- package/dist/llm/adapter.js.map +1 -0
- package/dist/llm/http.d.ts +9 -0
- package/dist/llm/http.d.ts.map +1 -0
- package/dist/llm/http.js +56 -0
- package/dist/llm/http.js.map +1 -0
- package/dist/llm/providers/anthropic.d.ts +14 -0
- package/dist/llm/providers/anthropic.d.ts.map +1 -0
- package/dist/llm/providers/anthropic.js +66 -0
- package/dist/llm/providers/anthropic.js.map +1 -0
- package/dist/llm/providers/lmstudio.d.ts +7 -0
- package/dist/llm/providers/lmstudio.d.ts.map +1 -0
- package/dist/llm/providers/lmstudio.js +8 -0
- package/dist/llm/providers/lmstudio.js.map +1 -0
- package/dist/llm/providers/ollama.d.ts +12 -0
- package/dist/llm/providers/ollama.d.ts.map +1 -0
- package/dist/llm/providers/ollama.js +87 -0
- package/dist/llm/providers/ollama.js.map +1 -0
- package/dist/llm/providers/openai.d.ts +7 -0
- package/dist/llm/providers/openai.d.ts.map +1 -0
- package/dist/llm/providers/openai.js +8 -0
- package/dist/llm/providers/openai.js.map +1 -0
- package/dist/llm/providers/openai_compatible.d.ts +18 -0
- package/dist/llm/providers/openai_compatible.d.ts.map +1 -0
- package/dist/llm/providers/openai_compatible.js +70 -0
- package/dist/llm/providers/openai_compatible.js.map +1 -0
- package/dist/llm/types.d.ts +60 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +2 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/logging.d.ts +22 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +58 -0
- package/dist/logging.js.map +1 -0
- package/dist/loops/embed_worker.d.ts +44 -0
- package/dist/loops/embed_worker.d.ts.map +1 -0
- package/dist/loops/embed_worker.js +144 -0
- package/dist/loops/embed_worker.js.map +1 -0
- package/dist/loops/eval_grader.d.ts +19 -0
- package/dist/loops/eval_grader.d.ts.map +1 -0
- package/dist/loops/eval_grader.js +22 -0
- package/dist/loops/eval_grader.js.map +1 -0
- package/dist/loops/ingest_watcher.d.ts +17 -0
- package/dist/loops/ingest_watcher.d.ts.map +1 -0
- package/dist/loops/ingest_watcher.js +66 -0
- package/dist/loops/ingest_watcher.js.map +1 -0
- package/dist/loops/legacy_worker.d.ts +26 -0
- package/dist/loops/legacy_worker.d.ts.map +1 -0
- package/dist/loops/legacy_worker.js +102 -0
- package/dist/loops/legacy_worker.js.map +1 -0
- package/dist/loops/supervisor.d.ts +71 -0
- package/dist/loops/supervisor.d.ts.map +1 -0
- package/dist/loops/supervisor.js +122 -0
- package/dist/loops/supervisor.js.map +1 -0
- package/dist/loops/synthesis.d.ts +31 -0
- package/dist/loops/synthesis.d.ts.map +1 -0
- package/dist/loops/synthesis.js +71 -0
- package/dist/loops/synthesis.js.map +1 -0
- package/dist/loops/transcribe_worker.d.ts +22 -0
- package/dist/loops/transcribe_worker.d.ts.map +1 -0
- package/dist/loops/transcribe_worker.js +77 -0
- package/dist/loops/transcribe_worker.js.map +1 -0
- package/dist/output.d.ts +8 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +26 -0
- package/dist/output.js.map +1 -0
- package/dist/render/transcript_md.d.ts +5 -0
- package/dist/render/transcript_md.d.ts.map +1 -0
- package/dist/render/transcript_md.js +14 -0
- package/dist/render/transcript_md.js.map +1 -0
- package/dist/router.d.ts +3 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +68 -0
- package/dist/router.js.map +1 -0
- package/dist/transcriber_client.d.ts +42 -0
- package/dist/transcriber_client.d.ts.map +1 -0
- package/dist/transcriber_client.js +72 -0
- package/dist/transcriber_client.js.map +1 -0
- package/package.json +45 -0
- package/templates/AGENTS.md +25 -0
- package/templates/config.toml +56 -0
- package/templates/sample-seed/codebook/desire-for-manual-override.md +8 -0
- package/templates/sample-seed/codebook/distrust-of-automation.md +8 -0
- package/templates/sample-seed/highlights/H-001.md +9 -0
- package/templates/sample-seed/highlights/H-002.md +9 -0
- package/templates/sample-seed/seed.md +17 -0
- package/templates/sample-seed/sessions/S001/transcript.json +74 -0
- package/templates/sample-seed/synthesis/themes/control-earns-trust.md +13 -0
- package/templates/seed.md +21 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { isCompostError } from '../errors.js';
|
|
2
|
+
import { buildDenseRetriever, retrieveChunks } from '../lib/retrieve.js';
|
|
3
|
+
import { resolveSeedPath } from '../lib/seedResolve.js';
|
|
4
|
+
import { emit, emitError, getOutputOpts } from '../output.js';
|
|
5
|
+
export function registerSearch(program) {
|
|
6
|
+
program
|
|
7
|
+
.command('search')
|
|
8
|
+
.description('Retrieve ranked passages from the seed corpus (no LLM). The host agent reasons over the results.')
|
|
9
|
+
.argument('<query>', 'Free-text query')
|
|
10
|
+
.option('--seed <name>', 'Seed (default: the only seed under ./Seeds)')
|
|
11
|
+
.option('--top-k <n>', 'Number of passages to return', '8')
|
|
12
|
+
.action(async (query, flags, cmd) => {
|
|
13
|
+
const out = getOutputOpts(cmd);
|
|
14
|
+
try {
|
|
15
|
+
const seedPath = resolveSeedPath(process.cwd(), flags.seed);
|
|
16
|
+
const topK = Number.parseInt(flags.topK ?? '8', 10);
|
|
17
|
+
// Attach the dense (LanceDB) retriever when available; null → BM25-only.
|
|
18
|
+
const dense = await buildDenseRetriever(seedPath);
|
|
19
|
+
const { retrieved, corpus, mode } = await retrieveChunks(seedPath, query, {
|
|
20
|
+
topK: Number.isFinite(topK) && topK > 0 ? topK : 8,
|
|
21
|
+
dense,
|
|
22
|
+
});
|
|
23
|
+
const results = retrieved.map((c) => ({
|
|
24
|
+
chunk_id: c.id,
|
|
25
|
+
session: c.metadata.session,
|
|
26
|
+
speaker_id: c.metadata.speaker_id,
|
|
27
|
+
start_ms: c.metadata.start_ms,
|
|
28
|
+
end_ms: c.metadata.end_ms,
|
|
29
|
+
chunk_type: c.metadata.chunk_type,
|
|
30
|
+
score: Number(c.score.toFixed(4)),
|
|
31
|
+
text: c.text,
|
|
32
|
+
}));
|
|
33
|
+
emit({
|
|
34
|
+
status: 'ok',
|
|
35
|
+
command: 'search',
|
|
36
|
+
query,
|
|
37
|
+
indexed_chunks: corpus.chunks.length,
|
|
38
|
+
returned: results.length,
|
|
39
|
+
// 'hybrid' (BM25 + dense via RRF) when the LanceDB index + an
|
|
40
|
+
// embeddings provider are available; 'bm25' otherwise.
|
|
41
|
+
retrieval: mode,
|
|
42
|
+
results,
|
|
43
|
+
}, out);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
if (isCompostError(err))
|
|
47
|
+
emitError(err, out);
|
|
48
|
+
throw err;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAO7D,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CACV,kGAAkG,CACnG;SACA,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;SACtC,MAAM,CAAC,eAAe,EAAE,6CAA6C,CAAC;SACtE,MAAM,CAAC,aAAa,EAAE,8BAA8B,EAAE,GAAG,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,KAAkB,EAAE,GAAY,EAAE,EAAE;QAChE,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,CAAA;YACnD,yEAAyE;YACzE,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAA;YACjD,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE;gBACxE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClD,KAAK;aACN,CAAC,CAAA;YAEF,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpC,QAAQ,EAAE,CAAC,CAAC,EAAE;gBACd,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO;gBAC3B,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU;gBACjC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ;gBAC7B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;gBACzB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU;gBACjC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC,CAAC,CAAA;YAEH,IAAI,CACF;gBACE,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,QAAQ;gBACjB,KAAK;gBACL,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;gBACpC,QAAQ,EAAE,OAAO,CAAC,MAAM;gBACxB,8DAA8D;gBAC9D,uDAAuD;gBACvD,SAAS,EAAE,IAAI;gBACf,OAAO;aACR,EACD,GAAG,CACJ,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAMpD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { stubAction, stubDescription } from './_stub.js';
|
|
2
|
+
export function registerServe(program) {
|
|
3
|
+
program
|
|
4
|
+
.command('serve')
|
|
5
|
+
.description(stubDescription('Start the local Next.js web UI on http://localhost:7860', 32))
|
|
6
|
+
.option('--port <port>', 'TCP port', '7860')
|
|
7
|
+
.action(stubAction({ command: 'serve', issue: 32 }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=serve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAExD,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,eAAe,CAAC,yDAAyD,EAAE,EAAE,CAAC,CAAC;SAC3F,MAAM,CAAC,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC;SAC3C,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;AACxD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAWxC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiBtD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { isCompostError } from '../errors.js';
|
|
2
|
+
import { resolveSeedPath } from '../lib/seedResolve.js';
|
|
3
|
+
import { getSession } from '../lib/session.js';
|
|
4
|
+
import { emit, emitError, getOutputOpts } from '../output.js';
|
|
5
|
+
export function registerSession(program) {
|
|
6
|
+
program
|
|
7
|
+
.command('session')
|
|
8
|
+
.description('Print a session transcript + frame index as JSON (agent-friendly read)')
|
|
9
|
+
.argument('<session-id>', 'Session id (e.g. S001)')
|
|
10
|
+
.option('--seed <name>', 'Seed (default: the only seed under ./Seeds)')
|
|
11
|
+
.action((sessionId, flags, cmd) => {
|
|
12
|
+
const out = getOutputOpts(cmd);
|
|
13
|
+
try {
|
|
14
|
+
const seedPath = resolveSeedPath(process.cwd(), flags.seed);
|
|
15
|
+
const view = getSession(seedPath, sessionId);
|
|
16
|
+
emit({ status: 'ok', command: 'session', ...view }, out);
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
if (isCompostError(err))
|
|
20
|
+
emitError(err, out);
|
|
21
|
+
throw err;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAM7D,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,wEAAwE,CAAC;SACrF,QAAQ,CAAC,cAAc,EAAE,wBAAwB,CAAC;SAClD,MAAM,CAAC,eAAe,EAAE,6CAA6C,CAAC;SACtE,MAAM,CAAC,CAAC,SAAiB,EAAE,KAAmB,EAAE,GAAY,EAAE,EAAE;QAC/D,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAC3D,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;YAC5C,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;QAC1D,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAaxC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0CpD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { isCompostError } from '../errors.js';
|
|
2
|
+
import { provisionNativeVenv } from '../lib/provisionNative.js';
|
|
3
|
+
import { runSetup } from '../lib/setup.js';
|
|
4
|
+
import { emit, emitError, getOutputOpts } from '../output.js';
|
|
5
|
+
export function registerSetup(program) {
|
|
6
|
+
program
|
|
7
|
+
.command('setup')
|
|
8
|
+
.description('Health-check prerequisites (Ollama, models, Docker, transcriber, HF token + pyannote license, Seeds/) and report fixes')
|
|
9
|
+
.option('--provision-native', 'Provision the native transcription venv (parakeet-mlx + pyannote + silero) on Apple Silicon, then re-check')
|
|
10
|
+
.option('--python-bin <path>', 'Interpreter to build the native venv from (with --provision-native)')
|
|
11
|
+
.option('--transcriber-dir <path>', 'transcriber/ package dir (with --provision-native; else COMPOST_TRANSCRIBER_DIR or auto-discovered)')
|
|
12
|
+
.action(async (flags, cmd) => {
|
|
13
|
+
const out = getOutputOpts(cmd);
|
|
14
|
+
try {
|
|
15
|
+
let provision;
|
|
16
|
+
if (flags.provisionNative) {
|
|
17
|
+
if (out.human)
|
|
18
|
+
process.stderr.write('Provisioning native transcription venv (downloads ~GB of ML wheels — a few minutes)…\n');
|
|
19
|
+
provision = provisionNativeVenv({
|
|
20
|
+
...(flags.pythonBin !== undefined ? { pythonBin: flags.pythonBin } : {}),
|
|
21
|
+
...(flags.transcriberDir !== undefined ? { transcriberDir: flags.transcriberDir } : {}),
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
// The doctor runs after provisioning, so the report reflects the new venv.
|
|
25
|
+
const report = await runSetup({ cwd: process.cwd() });
|
|
26
|
+
emit({ command: 'setup', ...(provision ? { provision } : {}), ...report }, out);
|
|
27
|
+
// Non-zero exit when any check failed, so CI / scripts can gate on it.
|
|
28
|
+
if (!report.ready)
|
|
29
|
+
process.exitCode = 1;
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
if (isCompostError(err))
|
|
33
|
+
emitError(err, out);
|
|
34
|
+
throw err;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAQ7D,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CACV,wHAAwH,CACzH;SACA,MAAM,CACL,oBAAoB,EACpB,4GAA4G,CAC7G;SACA,MAAM,CACL,qBAAqB,EACrB,qEAAqE,CACtE;SACA,MAAM,CACL,0BAA0B,EAC1B,qGAAqG,CACtG;SACA,MAAM,CAAC,KAAK,EAAE,KAAiB,EAAE,GAAY,EAAE,EAAE;QAChD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,IAAI,SAA6D,CAAA;YACjE,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC1B,IAAI,GAAG,CAAC,KAAK;oBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wFAAwF,CACzF,CAAA;gBACH,SAAS,GAAG,mBAAmB,CAAC;oBAC9B,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxE,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxF,CAAC,CAAA;YACJ,CAAC;YACD,2EAA2E;YAC3E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;YACrD,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,CAAC,CAAA;YAC/E,uEAAuE;YACvE,IAAI,CAAC,MAAM,CAAC,KAAK;gBAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACzC,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snap.d.ts","sourceRoot":"","sources":["../../src/commands/snap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAYxC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoBnD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { isCompostError } from '../errors.js';
|
|
2
|
+
import { resolveSeedPath } from '../lib/seedResolve.js';
|
|
3
|
+
import { snap } from '../lib/snap.js';
|
|
4
|
+
import { emit, emitError, getOutputOpts } from '../output.js';
|
|
5
|
+
export function registerSnap(program) {
|
|
6
|
+
program
|
|
7
|
+
.command('snap')
|
|
8
|
+
.description('Capture a frame from a session video at a specific timestamp')
|
|
9
|
+
.argument('<session-id>')
|
|
10
|
+
.requiredOption('--at <timestamp>', 'Timestamp (ms, mm:ss, or hh:mm:ss) to capture')
|
|
11
|
+
.option('--seed <name>', 'Seed (default: the only seed under ./Seeds)')
|
|
12
|
+
.action((sessionId, flags, cmd) => {
|
|
13
|
+
const out = getOutputOpts(cmd);
|
|
14
|
+
try {
|
|
15
|
+
const seedPath = resolveSeedPath(process.cwd(), flags.seed);
|
|
16
|
+
const result = snap(seedPath, sessionId, flags.at);
|
|
17
|
+
emit({ status: 'ok', command: 'snap', ...result }, out);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
if (isCompostError(err)) {
|
|
21
|
+
emitError(err, out);
|
|
22
|
+
}
|
|
23
|
+
throw err;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=snap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snap.js","sourceRoot":"","sources":["../../src/commands/snap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAO7D,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,8DAA8D,CAAC;SAC3E,QAAQ,CAAC,cAAc,CAAC;SACxB,cAAc,CAAC,kBAAkB,EAAE,+CAA+C,CAAC;SACnF,MAAM,CAAC,eAAe,EAAE,6CAA6C,CAAC;SACtE,MAAM,CAAC,CAAC,SAAiB,EAAE,KAAgB,EAAE,GAAY,EAAE,EAAE;QAC5D,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;YAClD,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,CAAC,CAAA;QACzD,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"}
|
|
@@ -0,0 +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;AAUxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwBrD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { isCompostError } from '../errors.js';
|
|
2
|
+
import { gatherStatus } from '../lib/status.js';
|
|
3
|
+
import { emit, emitError, getOutputOpts } from '../output.js';
|
|
4
|
+
export function registerStatus(program) {
|
|
5
|
+
program
|
|
6
|
+
.command('status')
|
|
7
|
+
.description('Print kind-grouped counts (sessions, transcripts, highlights, codes, themes, frames) for the current seed')
|
|
8
|
+
.option('--seed <name>', 'Scope the snapshot to a single seed (default: all seeds under ./Seeds)')
|
|
9
|
+
.action((flags, cmd) => {
|
|
10
|
+
const out = getOutputOpts(cmd);
|
|
11
|
+
try {
|
|
12
|
+
const opts = {};
|
|
13
|
+
if (flags.seed !== undefined)
|
|
14
|
+
opts.seed = flags.seed;
|
|
15
|
+
const snapshot = gatherStatus(opts);
|
|
16
|
+
emit(snapshot, out);
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
if (isCompostError(err)) {
|
|
20
|
+
emitError(err, out);
|
|
21
|
+
}
|
|
22
|
+
throw err;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +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;AAM7D,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,CAAC,CAAA;QACrB,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synthesize.d.ts","sourceRoot":"","sources":["../../src/commands/synthesize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAYzD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { stubAction, stubDescription } from './_stub.js';
|
|
2
|
+
export function registerSynthesize(program) {
|
|
3
|
+
program
|
|
4
|
+
.command('synthesize')
|
|
5
|
+
.description(stubDescription('Draft themes, journey maps, or insights from the coded corpus', 59))
|
|
6
|
+
.option('--kind <kind>', 'themes | journey-map | insights', 'themes')
|
|
7
|
+
// --seed is in the contract today even though the action is still stubbed
|
|
8
|
+
// (#167): every seed-scoped command must accept it so a multi-seed workspace
|
|
9
|
+
// is targetable from the moment `synthesize` ships.
|
|
10
|
+
.option('--seed <name>', 'Seed (default: the only seed under ./Seeds)')
|
|
11
|
+
.action(stubAction({ command: 'synthesize', issue: 59 }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=synthesize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synthesize.js","sourceRoot":"","sources":["../../src/commands/synthesize.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAExD,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CACV,eAAe,CAAC,+DAA+D,EAAE,EAAE,CAAC,CACrF;SACA,MAAM,CAAC,eAAe,EAAE,iCAAiC,EAAE,QAAQ,CAAC;QACrE,0EAA0E;QAC1E,6EAA6E;QAC7E,oDAAoD;SACnD,MAAM,CAAC,eAAe,EAAE,6CAA6C,CAAC;SACtE,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;AAC7D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../src/commands/tag.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA8BxC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiBlD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { isCompostError } from '../errors.js';
|
|
4
|
+
import { listCanonicalSessionIds } from '../lib/canonicalSessions.js';
|
|
5
|
+
import { resolveSeedPath } from '../lib/seedResolve.js';
|
|
6
|
+
import { tagSeed } from '../lib/tagcode.js';
|
|
7
|
+
import { emit, emitError, getOutputOpts } from '../output.js';
|
|
8
|
+
function loadUtterances(seedPath) {
|
|
9
|
+
const sessionsDir = join(seedPath, 'sessions');
|
|
10
|
+
const out = [];
|
|
11
|
+
// Only scan canonical sessions (#171): pre-fix tag walked every subdir of
|
|
12
|
+
// sessions/ that had a transcript.json — incl. legacy folders left behind
|
|
13
|
+
// by partial migrations — which leaked non-canonical content (incl. raw
|
|
14
|
+
// `.srt`-like timestamps) into the noun-phrase frequencies. Sharing the
|
|
15
|
+
// resolver with status/saturate (#166) keeps the session set consistent.
|
|
16
|
+
for (const entry of listCanonicalSessionIds(sessionsDir)) {
|
|
17
|
+
const t = join(sessionsDir, entry, 'transcript.json');
|
|
18
|
+
if (!existsSync(t))
|
|
19
|
+
continue;
|
|
20
|
+
const parsed = JSON.parse(readFileSync(t, 'utf8'));
|
|
21
|
+
for (const u of parsed.utterances ?? [])
|
|
22
|
+
out.push({ text: u.text });
|
|
23
|
+
}
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
export function registerTag(program) {
|
|
27
|
+
program
|
|
28
|
+
.command('tag')
|
|
29
|
+
.description('Suggest (default) or --apply glossary terms from recurring noun phrases')
|
|
30
|
+
.option('--seed <name>', 'Seed (default: the only seed under ./Seeds)')
|
|
31
|
+
.option('--apply', 'Write suggested terms to glossary/glossary.md and emit events')
|
|
32
|
+
.action((flags, cmd) => {
|
|
33
|
+
const out = getOutputOpts(cmd);
|
|
34
|
+
try {
|
|
35
|
+
const seedPath = resolveSeedPath(process.cwd(), flags.seed);
|
|
36
|
+
const result = tagSeed(seedPath, loadUtterances(seedPath), { apply: flags.apply === true });
|
|
37
|
+
emit({ status: 'ok', command: 'tag', ...result }, out);
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
if (isCompostError(err))
|
|
41
|
+
emitError(err, out);
|
|
42
|
+
throw err;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=tag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/commands/tag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIhC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAO7D,SAAS,cAAc,CAAC,QAAgB;IACtC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAC9C,MAAM,GAAG,GAA4B,EAAE,CAAA;IACvC,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,wEAAwE;IACxE,yEAAyE;IACzE,KAAK,MAAM,KAAK,IAAI,uBAAuB,CAAC,WAAW,CAAC,EAAE,CAAC;QACzD,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAA;QACrD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,SAAQ;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAA6C,CAAA;QAC9F,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACrE,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,yEAAyE,CAAC;SACtF,MAAM,CAAC,eAAe,EAAE,6CAA6C,CAAC;SACtE,MAAM,CAAC,SAAS,EAAE,+DAA+D,CAAC;SAClF,MAAM,CAAC,CAAC,KAAe,EAAE,GAAY,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC,CAAA;YAC3F,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,CAAC,CAAA;QACxD,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"}
|
|
@@ -0,0 +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;AA6BxC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsHzD"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { existsSync, readdirSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { CompostError, isCompostError } from '../errors.js';
|
|
4
|
+
import { isAppleSilicon, pickRuntime, resolveNativeRuntime } from '../lib/nativeRuntime.js';
|
|
5
|
+
import { resolveSeedPath } from '../lib/seedResolve.js';
|
|
6
|
+
import { transcribeNative } from '../lib/transcribeNative.js';
|
|
7
|
+
import { emit, emitError, getOutputOpts } from '../output.js';
|
|
8
|
+
import { writeTranscriptMd } from '../render/transcript_md.js';
|
|
9
|
+
import { TranscriberClient, TranscriberServiceError } from '../transcriber_client.js';
|
|
10
|
+
function resolveSource(seedPath, sessionId) {
|
|
11
|
+
const dir = join(seedPath, 'sessions', sessionId);
|
|
12
|
+
if (!existsSync(dir))
|
|
13
|
+
throw new CompostError('FILE_NOT_FOUND', `No session ${sessionId}`);
|
|
14
|
+
const src = readdirSync(dir).find((f) => f.startsWith('source.'));
|
|
15
|
+
if (src === undefined)
|
|
16
|
+
throw new CompostError('FILE_NOT_FOUND', `No source media in ${dir}`);
|
|
17
|
+
return join(dir, src);
|
|
18
|
+
}
|
|
19
|
+
export function registerTranscribe(program) {
|
|
20
|
+
program
|
|
21
|
+
.command('transcribe')
|
|
22
|
+
.description('Invoke the transcriber service directly on a session (agent-friendly)')
|
|
23
|
+
.argument('<session-id>', 'Session id (e.g. S001)')
|
|
24
|
+
.option('--seed <name>', 'Seed (default: the only seed under ./Seeds)')
|
|
25
|
+
.option('--base-url <url>', 'Transcriber base URL', 'http://localhost:7862')
|
|
26
|
+
.option('--language <tag>', 'BCP-47 language hint (e.g. en, es-CO). Whisper auto-detects when omitted.')
|
|
27
|
+
.option('--runtime <mode>', 'native (Apple-Silicon, no Docker) | docker. Default: native when available, else docker.')
|
|
28
|
+
.option('--engine <name>', 'ASR engine for the native runtime: parakeet | whisper', 'parakeet')
|
|
29
|
+
.option('--model <id>', 'ASR model id (engine default when omitted)')
|
|
30
|
+
.option('--python <path>', 'Native-runtime venv python (or env COMPOST_TRANSCRIBER_PYTHON)')
|
|
31
|
+
.option('--transcriber-dir <path>', 'transcriber/ package dir for the native runtime (or env COMPOST_TRANSCRIBER_DIR)')
|
|
32
|
+
.action(async (sessionId, flags, cmd) => {
|
|
33
|
+
const out = getOutputOpts(cmd);
|
|
34
|
+
try {
|
|
35
|
+
const seedPath = resolveSeedPath(process.cwd(), flags.seed);
|
|
36
|
+
const source = resolveSource(seedPath, sessionId);
|
|
37
|
+
if (flags.runtime !== undefined &&
|
|
38
|
+
flags.runtime !== 'native' &&
|
|
39
|
+
flags.runtime !== 'docker') {
|
|
40
|
+
throw new CompostError('INVALID_INPUT', `--runtime must be 'native' or 'docker' (got '${flags.runtime}')`);
|
|
41
|
+
}
|
|
42
|
+
// Runtime selection (#176, native-first): native on Apple Silicon when a
|
|
43
|
+
// venv + transcriber dir resolve; Docker is the cross-platform fallback.
|
|
44
|
+
const native = resolveNativeRuntime({
|
|
45
|
+
...(flags.python !== undefined ? { python: flags.python } : {}),
|
|
46
|
+
...(flags.transcriberDir !== undefined ? { transcriberDir: flags.transcriberDir } : {}),
|
|
47
|
+
});
|
|
48
|
+
// Explicit native intent (--runtime native, or --python/--transcriber-dir)
|
|
49
|
+
// must never silently fall back to Docker — error if it can't be resolved.
|
|
50
|
+
const nativeRequested = flags.runtime === 'native' ||
|
|
51
|
+
flags.python !== undefined ||
|
|
52
|
+
flags.transcriberDir !== undefined;
|
|
53
|
+
if (pickRuntime(flags.runtime, native) === 'native' || nativeRequested) {
|
|
54
|
+
if (native === null) {
|
|
55
|
+
throw new CompostError('INVALID_INPUT', 'native transcription requested but no Python venv / transcriber dir resolved. Pass both ' +
|
|
56
|
+
'--python and --transcriber-dir (or set COMPOST_TRANSCRIBER_PYTHON / COMPOST_TRANSCRIBER_DIR), ' +
|
|
57
|
+
'or run `compost setup` to provision the native venv.');
|
|
58
|
+
}
|
|
59
|
+
const resp = transcribeNative(seedPath, sessionId, source, {
|
|
60
|
+
python: native.python,
|
|
61
|
+
transcriberDir: native.transcriberDir,
|
|
62
|
+
engine: flags.engine ?? 'parakeet',
|
|
63
|
+
...(flags.model !== undefined ? { model: flags.model } : {}),
|
|
64
|
+
...(flags.language !== undefined ? { language: flags.language } : {}),
|
|
65
|
+
});
|
|
66
|
+
if (existsSync(resp.transcript_path))
|
|
67
|
+
writeTranscriptMd(resp.transcript_path);
|
|
68
|
+
emit({
|
|
69
|
+
status: resp.status,
|
|
70
|
+
command: 'transcribe',
|
|
71
|
+
session_id: resp.session_id,
|
|
72
|
+
transcript_path: resp.transcript_path,
|
|
73
|
+
runtime: 'native',
|
|
74
|
+
engine: resp.engine ?? null,
|
|
75
|
+
model: resp.model ?? null,
|
|
76
|
+
}, out);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// Docker fallback. On Apple Silicon, nudge toward the much faster native path.
|
|
80
|
+
if (isAppleSilicon() && flags.runtime === undefined && out.human) {
|
|
81
|
+
process.stderr.write('note: using the Docker fallback — native transcription is not provisioned. Run ' +
|
|
82
|
+
'`compost setup` to enable native Apple-Silicon transcription (~20× faster).\n');
|
|
83
|
+
}
|
|
84
|
+
const client = new TranscriberClient(flags.baseUrl !== undefined ? { baseUrl: flags.baseUrl } : {});
|
|
85
|
+
const resp = await client.transcribe(source, sessionId, seedPath, flags.language);
|
|
86
|
+
if (existsSync(resp.transcript_path))
|
|
87
|
+
writeTranscriptMd(resp.transcript_path);
|
|
88
|
+
emit({
|
|
89
|
+
status: resp.status,
|
|
90
|
+
command: 'transcribe',
|
|
91
|
+
session_id: resp.session_id,
|
|
92
|
+
transcript_path: resp.transcript_path,
|
|
93
|
+
}, out);
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
if (err instanceof TranscriberServiceError) {
|
|
97
|
+
// Exit 2 on service down / model missing (distinct from generic errors).
|
|
98
|
+
if (out.human)
|
|
99
|
+
process.stderr.write(`transcriber ${err.kind}: ${err.message}\n`);
|
|
100
|
+
else
|
|
101
|
+
process.stderr.write(`${JSON.stringify({ error: { code: 'PROVIDER_ERROR', kind: err.kind, message: err.message } })}\n`);
|
|
102
|
+
process.exit(2);
|
|
103
|
+
}
|
|
104
|
+
if (isCompostError(err))
|
|
105
|
+
emitError(err, out);
|
|
106
|
+
throw err;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=transcribe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcribe.js","sourceRoot":"","sources":["../../src/commands/transcribe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAWxC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuEvD"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { isCompostError } from '../errors.js';
|
|
2
|
+
import { validateCues, validateEventsExport, validateFrames, validateTranscript, } from '../lib/validate.js';
|
|
3
|
+
import { emit, emitError, getOutputOpts } from '../output.js';
|
|
4
|
+
export function registerValidate(program) {
|
|
5
|
+
const validate = program
|
|
6
|
+
.command('validate')
|
|
7
|
+
.description('Validate JSON artifacts against compost schemas');
|
|
8
|
+
validate
|
|
9
|
+
.command('transcript')
|
|
10
|
+
.description('Validate a transcript.json against transcript.schema.json (#5)')
|
|
11
|
+
.argument('<path>')
|
|
12
|
+
.action((path, _opts, cmd) => {
|
|
13
|
+
const out = getOutputOpts(cmd);
|
|
14
|
+
try {
|
|
15
|
+
const result = validateTranscript(path);
|
|
16
|
+
emit({ status: result.ok ? 'ok' : 'invalid', command: 'validate transcript', ...result }, out);
|
|
17
|
+
if (!result.ok)
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
if (isCompostError(err))
|
|
22
|
+
emitError(err, out);
|
|
23
|
+
throw err;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
validate
|
|
27
|
+
.command('cues')
|
|
28
|
+
.description("Validate cues.taxonomy.json or a transcript's cue kinds (#6)")
|
|
29
|
+
.argument('<path>')
|
|
30
|
+
.action((path, _opts, cmd) => {
|
|
31
|
+
const out = getOutputOpts(cmd);
|
|
32
|
+
try {
|
|
33
|
+
const result = validateCues(path);
|
|
34
|
+
emit({ status: result.ok ? 'ok' : 'invalid', command: 'validate cues', ...result }, out);
|
|
35
|
+
if (!result.ok)
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
if (isCompostError(err))
|
|
40
|
+
emitError(err, out);
|
|
41
|
+
throw err;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
validate
|
|
45
|
+
.command('frames')
|
|
46
|
+
.description("Validate frames.taxonomy.json or a transcript's frame triggers (#7)")
|
|
47
|
+
.argument('<path>')
|
|
48
|
+
.action((path, _opts, cmd) => {
|
|
49
|
+
const out = getOutputOpts(cmd);
|
|
50
|
+
try {
|
|
51
|
+
const result = validateFrames(path);
|
|
52
|
+
emit({ status: result.ok ? 'ok' : 'invalid', command: 'validate frames', ...result }, out);
|
|
53
|
+
if (!result.ok)
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
if (isCompostError(err))
|
|
58
|
+
emitError(err, out);
|
|
59
|
+
throw err;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
validate
|
|
63
|
+
.command('events')
|
|
64
|
+
.description('Validate provenance events against events.schema.json (#8)')
|
|
65
|
+
.argument('<path>')
|
|
66
|
+
.action((path, _opts, cmd) => {
|
|
67
|
+
const out = getOutputOpts(cmd);
|
|
68
|
+
try {
|
|
69
|
+
const result = validateEventsExport(path);
|
|
70
|
+
emit({ status: result.ok ? 'ok' : 'invalid', command: 'validate events', ...result }, out);
|
|
71
|
+
if (!result.ok)
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
if (isCompostError(err))
|
|
76
|
+
emitError(err, out);
|
|
77
|
+
throw err;
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAaxC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiDpD"}
|