@remnic/core 9.3.624 → 9.3.625
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/access-cli.js +18 -16
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +12 -5
- package/dist/access-http.js +10 -9
- package/dist/access-mcp.d.ts +5 -5
- package/dist/access-mcp.js +8 -8
- package/dist/access-schema.d.ts +5 -5
- package/dist/{access-service-CBNEKjzN.d.ts → access-service-C_sfOHsX.d.ts} +26 -3
- package/dist/access-service.d.ts +5 -5
- package/dist/access-service.js +7 -7
- package/dist/action-confidence.d.ts +1 -1
- package/dist/active-memory-bridge.d.ts +1 -1
- package/dist/active-recall.d.ts +1 -1
- package/dist/active-recall.js +2 -1
- package/dist/active-recall.js.map +1 -1
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +4 -4
- package/dist/briefing.d.ts +1 -1
- package/dist/briefing.js +3 -3
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer.d.ts +1 -1
- package/dist/calibration.d.ts +1 -1
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +4 -4
- package/dist/{chunk-7TPH6UZL.js → chunk-2RHI3FGV.js} +540 -17
- package/dist/chunk-2RHI3FGV.js.map +1 -0
- package/dist/{chunk-GYTVOLNX.js → chunk-3MNBW7R7.js} +2 -2
- package/dist/{chunk-QFQQFX2H.js → chunk-3R2UZV3U.js} +2 -2
- package/dist/{chunk-O4UNM6OR.js → chunk-532VCWYW.js} +2 -2
- package/dist/{chunk-2UFQYU5F.js → chunk-57QXN2CS.js} +2 -2
- package/dist/chunk-7WV3F5DQ.js +22 -0
- package/dist/chunk-7WV3F5DQ.js.map +1 -0
- package/dist/{chunk-RKW6QR7W.js → chunk-AZ4RI3QD.js} +1461 -78
- package/dist/chunk-AZ4RI3QD.js.map +1 -0
- package/dist/{chunk-KQFQ3IS5.js → chunk-F3FY3D3S.js} +43 -7
- package/dist/chunk-F3FY3D3S.js.map +1 -0
- package/dist/{chunk-4R4KTDIE.js → chunk-FPNQF475.js} +1 -1
- package/dist/chunk-FPNQF475.js.map +1 -0
- package/dist/{chunk-UGEBPVNI.js → chunk-GE7Q7KXP.js} +2 -2
- package/dist/{chunk-GLWW3EJQ.js → chunk-KB4MFBF5.js} +3 -3
- package/dist/{chunk-5GOMXHLC.js → chunk-KKTXCFD7.js} +255 -1
- package/dist/chunk-KKTXCFD7.js.map +1 -0
- package/dist/{chunk-FH3PPO42.js → chunk-KVFYTRMV.js} +2 -2
- package/dist/{chunk-BNW5NJJH.js → chunk-LQYTQCXM.js} +2 -2
- package/dist/{chunk-AYHXQR53.js → chunk-MVQN73GT.js} +2 -2
- package/dist/{chunk-ZZPIJPPD.js → chunk-N5RGXWLQ.js} +2 -2
- package/dist/chunk-NDAH7BJ5.js +213 -0
- package/dist/chunk-NDAH7BJ5.js.map +1 -0
- package/dist/{chunk-R3OQGYOU.js → chunk-P2D2MM47.js} +2 -2
- package/dist/{chunk-PSUB67YB.js → chunk-PW6GURU3.js} +2 -2
- package/dist/{chunk-W3BKVM64.js → chunk-QDV6VAD4.js} +2 -2
- package/dist/{chunk-3QSU4NFF.js → chunk-QHXW3LZV.js} +3 -3
- package/dist/{chunk-I6UCUHLK.js → chunk-SHV5Y2WU.js} +182 -3
- package/dist/chunk-SHV5Y2WU.js.map +1 -0
- package/dist/{chunk-OZXVGYGZ.js → chunk-STDAAGH7.js} +2 -2
- package/dist/{chunk-FMGWXIES.js → chunk-TZDSNIRO.js} +5 -5
- package/dist/{chunk-2L54V4ZO.js → chunk-UELS6WWF.js} +2 -2
- package/dist/{chunk-PJGB7XRR.js → chunk-UGHUNQ74.js} +502 -134
- package/dist/chunk-UGHUNQ74.js.map +1 -0
- package/dist/{chunk-FG76RDVI.js → chunk-Y3TMFC6I.js} +136 -4
- package/dist/chunk-Y3TMFC6I.js.map +1 -0
- package/dist/{chunk-BPSGLMQ4.js → chunk-YQNADJCT.js} +2 -2
- package/dist/{cli-Cw729yLf.d.ts → cli-EZv6YE6_.d.ts} +3 -3
- package/dist/cli.d.ts +6 -6
- package/dist/cli.js +23 -21
- package/dist/compounding/engine.d.ts +1 -1
- package/dist/compounding/engine.js +3 -3
- package/dist/compounding/preference-consolidator.d.ts +1 -1
- package/dist/compression-optimizer.d.ts +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +2 -1
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +3 -3
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +3 -3
- package/dist/consolidation-provenance-check.d.ts +1 -1
- package/dist/consolidation-undo.d.ts +1 -1
- package/dist/contradiction/index.d.ts +2 -2
- package/dist/conversation-index/backend.d.ts +1 -1
- package/dist/conversation-index/chunker.d.ts +1 -1
- package/dist/conversation-index/faiss-adapter.d.ts +1 -1
- package/dist/conversation-index/indexer.d.ts +1 -1
- package/dist/conversation-index/search.d.ts +1 -1
- package/dist/day-summary.d.ts +1 -1
- package/dist/delinearize.d.ts +1 -1
- package/dist/direct-answer-wiring.d.ts +1 -1
- package/dist/direct-answer.d.ts +1 -1
- package/dist/embedding-fallback.d.ts +1 -1
- package/dist/enrichment/index.d.ts +1 -1
- package/dist/entity-retrieval.d.ts +1 -1
- package/dist/entity-retrieval.js +3 -3
- package/dist/entity-schema.d.ts +1 -1
- package/dist/explicit-capture.d.ts +4 -4
- package/dist/extraction-judge-telemetry.d.ts +1 -1
- package/dist/extraction-judge-training.d.ts +1 -1
- package/dist/extraction-judge.d.ts +1 -1
- package/dist/extraction.d.ts +1 -1
- package/dist/fallback-llm.d.ts +1 -1
- package/dist/identity-continuity.d.ts +1 -1
- package/dist/importance.d.ts +1 -1
- package/dist/index.d.ts +307 -9
- package/dist/index.js +155 -29
- package/dist/index.js.map +1 -1
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/engine.d.ts +1 -1
- package/dist/lcm/index.d.ts +1 -1
- package/dist/lcm/tools.d.ts +1 -1
- package/dist/lifecycle.d.ts +1 -1
- package/dist/live-connectors-runner.d.ts +1 -1
- package/dist/local-llm.d.ts +1 -1
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +3 -3
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
- package/dist/maintenance/rebuild-memory-projection.js +4 -4
- package/dist/mcp-memory-inspector-app.d.ts +5 -5
- package/dist/memory-action-policy.d.ts +1 -1
- package/dist/memory-cache.d.ts +1 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
- package/dist/memory-projection-store.d.ts +1 -1
- package/dist/memory-provenance.d.ts +1 -1
- package/dist/memory-worth-outcomes.d.ts +1 -1
- package/dist/models-json.d.ts +1 -1
- package/dist/namespaces/migrate.d.ts +1 -1
- package/dist/namespaces/migrate.js +4 -4
- package/dist/namespaces/principal.d.ts +1 -1
- package/dist/namespaces/search.d.ts +1 -1
- package/dist/namespaces/storage.d.ts +1 -1
- package/dist/namespaces/storage.js +3 -3
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +1 -1
- package/dist/operator-toolkit.js +8 -7
- package/dist/{orchestrator-CqWOjfgl.d.ts → orchestrator-CEycaY3M.d.ts} +361 -4
- package/dist/orchestrator.d.ts +4 -4
- package/dist/orchestrator.js +13 -11
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.d.ts +1 -1
- package/dist/recall-disclosure-escalation.d.ts +1 -1
- package/dist/recall-explain-renderer.d.ts +1 -1
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-planner-llm.d.ts +1 -1
- package/dist/recall-state.d.ts +1 -1
- package/dist/recall-tag-filter.d.ts +1 -1
- package/dist/recall-xray-cli.d.ts +1 -1
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +1 -1
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +1 -1
- package/dist/recall-xray.js +2 -2
- package/dist/resolve-auth-token.d.ts +1 -1
- package/dist/resume-bundles.js +3 -2
- package/dist/retrieval-agents.d.ts +1 -1
- package/dist/retrieval-tiers.d.ts +1 -1
- package/dist/routing/engine.d.ts +1 -1
- package/dist/routing/store.d.ts +1 -1
- package/dist/schemas.d.ts +10 -10
- package/dist/search/embed-helper.d.ts +1 -1
- package/dist/search/factory.d.ts +1 -1
- package/dist/search/index.d.ts +1 -1
- package/dist/search/lancedb-backend.d.ts +1 -1
- package/dist/search/meilisearch-backend.d.ts +1 -1
- package/dist/search/noop-backend.d.ts +1 -1
- package/dist/search/orama-backend.d.ts +1 -1
- package/dist/search/port.d.ts +1 -1
- package/dist/search/remote-backend.d.ts +1 -1
- package/dist/{semantic-SLAa_prH.d.ts → semantic-DJR8_DMQ.d.ts} +1 -1
- package/dist/{semantic-consolidation-4HkHWgeI.d.ts → semantic-consolidation-FbhPeJjB.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +4 -4
- package/dist/semantic-rule-promotion.js +3 -3
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +3 -3
- package/dist/session-observer-bands.d.ts +1 -1
- package/dist/session-observer-state.d.ts +1 -1
- package/dist/shared-context/manager.d.ts +5 -5
- package/dist/signal.d.ts +1 -1
- package/dist/storage.d.ts +19 -1
- package/dist/storage.js +2 -2
- package/dist/summarizer.d.ts +1 -1
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/temporal-supersession.d.ts +1 -1
- package/dist/temporal-validity.d.ts +1 -1
- package/dist/threading.d.ts +1 -1
- package/dist/tier-migration.d.ts +1 -1
- package/dist/tier-routing.d.ts +1 -1
- package/dist/topics.d.ts +1 -1
- package/dist/transcript.d.ts +1 -1
- package/dist/types-D5VRAI04.d.ts +3134 -0
- package/dist/types.d.ts +3 -2862
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +1 -1
- package/dist/verified-recall.js +3 -3
- package/package.json +1 -1
- package/src/access-http.ts +167 -0
- package/src/access-mcp.ts +198 -0
- package/src/access-service.ts +65 -0
- package/src/cli.ts +187 -0
- package/src/config.ts +7 -0
- package/src/index.ts +7 -0
- package/src/orchestrator.ts +42 -0
- package/src/storage.ts +106 -0
- package/src/types.ts +5 -0
- package/src/wearables/cleanup.test.ts +134 -0
- package/src/wearables/cleanup.ts +188 -0
- package/src/wearables/cli.test.ts +170 -0
- package/src/wearables/cli.ts +441 -0
- package/src/wearables/config.test.ts +143 -0
- package/src/wearables/config.ts +332 -0
- package/src/wearables/corrections.test.ts +118 -0
- package/src/wearables/corrections.ts +211 -0
- package/src/wearables/day-store.test.ts +143 -0
- package/src/wearables/day-store.ts +238 -0
- package/src/wearables/errors.test.ts +32 -0
- package/src/wearables/errors.ts +29 -0
- package/src/wearables/index.ts +114 -0
- package/src/wearables/memory-gen.test.ts +342 -0
- package/src/wearables/memory-gen.ts +413 -0
- package/src/wearables/pipeline.test.ts +608 -0
- package/src/wearables/pipeline.ts +519 -0
- package/src/wearables/redaction.test.ts +94 -0
- package/src/wearables/redaction.ts +156 -0
- package/src/wearables/registry.test.ts +62 -0
- package/src/wearables/registry.ts +133 -0
- package/src/wearables/service.test.ts +425 -0
- package/src/wearables/service.ts +691 -0
- package/src/wearables/speakers.test.ts +110 -0
- package/src/wearables/speakers.ts +174 -0
- package/src/wearables/storage-io.test.ts +105 -0
- package/src/wearables/sync-state.test.ts +134 -0
- package/src/wearables/sync-state.ts +186 -0
- package/src/wearables/types.ts +285 -0
- package/dist/chunk-4R4KTDIE.js.map +0 -1
- package/dist/chunk-5GOMXHLC.js.map +0 -1
- package/dist/chunk-7TPH6UZL.js.map +0 -1
- package/dist/chunk-FG76RDVI.js.map +0 -1
- package/dist/chunk-I6UCUHLK.js.map +0 -1
- package/dist/chunk-KQFQ3IS5.js.map +0 -1
- package/dist/chunk-PJGB7XRR.js.map +0 -1
- package/dist/chunk-RKW6QR7W.js.map +0 -1
- /package/dist/{chunk-GYTVOLNX.js.map → chunk-3MNBW7R7.js.map} +0 -0
- /package/dist/{chunk-QFQQFX2H.js.map → chunk-3R2UZV3U.js.map} +0 -0
- /package/dist/{chunk-O4UNM6OR.js.map → chunk-532VCWYW.js.map} +0 -0
- /package/dist/{chunk-2UFQYU5F.js.map → chunk-57QXN2CS.js.map} +0 -0
- /package/dist/{chunk-UGEBPVNI.js.map → chunk-GE7Q7KXP.js.map} +0 -0
- /package/dist/{chunk-GLWW3EJQ.js.map → chunk-KB4MFBF5.js.map} +0 -0
- /package/dist/{chunk-FH3PPO42.js.map → chunk-KVFYTRMV.js.map} +0 -0
- /package/dist/{chunk-BNW5NJJH.js.map → chunk-LQYTQCXM.js.map} +0 -0
- /package/dist/{chunk-AYHXQR53.js.map → chunk-MVQN73GT.js.map} +0 -0
- /package/dist/{chunk-ZZPIJPPD.js.map → chunk-N5RGXWLQ.js.map} +0 -0
- /package/dist/{chunk-R3OQGYOU.js.map → chunk-P2D2MM47.js.map} +0 -0
- /package/dist/{chunk-PSUB67YB.js.map → chunk-PW6GURU3.js.map} +0 -0
- /package/dist/{chunk-W3BKVM64.js.map → chunk-QDV6VAD4.js.map} +0 -0
- /package/dist/{chunk-3QSU4NFF.js.map → chunk-QHXW3LZV.js.map} +0 -0
- /package/dist/{chunk-OZXVGYGZ.js.map → chunk-STDAAGH7.js.map} +0 -0
- /package/dist/{chunk-FMGWXIES.js.map → chunk-TZDSNIRO.js.map} +0 -0
- /package/dist/{chunk-2L54V4ZO.js.map → chunk-UELS6WWF.js.map} +0 -0
- /package/dist/{chunk-BPSGLMQ4.js.map → chunk-YQNADJCT.js.map} +0 -0
|
@@ -53,12 +53,12 @@ import {
|
|
|
53
53
|
} from "./chunk-D6RIFG4O.js";
|
|
54
54
|
import {
|
|
55
55
|
rebuildMemoryLifecycleLedger
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-532VCWYW.js";
|
|
57
57
|
import {
|
|
58
58
|
rebuildMemoryProjection,
|
|
59
59
|
repairMemoryProjection,
|
|
60
60
|
verifyMemoryProjection
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-KB4MFBF5.js";
|
|
62
62
|
import {
|
|
63
63
|
getBulkImportSource,
|
|
64
64
|
listBulkImportSources,
|
|
@@ -70,15 +70,15 @@ import {
|
|
|
70
70
|
} from "./chunk-YR6GIWWY.js";
|
|
71
71
|
import {
|
|
72
72
|
promoteSemanticRuleFromMemory
|
|
73
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-N5RGXWLQ.js";
|
|
74
74
|
import {
|
|
75
75
|
buildResumeBundleFromState,
|
|
76
76
|
getResumeBundleStatus,
|
|
77
77
|
recordResumeBundle
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-KVFYTRMV.js";
|
|
79
79
|
import {
|
|
80
80
|
parseXrayCliOptions
|
|
81
|
-
} from "./chunk-
|
|
81
|
+
} from "./chunk-QHXW3LZV.js";
|
|
82
82
|
import {
|
|
83
83
|
resolveAgentAccessAuthToken
|
|
84
84
|
} from "./chunk-TGQ2NTWH.js";
|
|
@@ -89,12 +89,12 @@ import {
|
|
|
89
89
|
runOperatorInventory,
|
|
90
90
|
runOperatorRepair,
|
|
91
91
|
runOperatorSetup
|
|
92
|
-
} from "./chunk-
|
|
92
|
+
} from "./chunk-TZDSNIRO.js";
|
|
93
93
|
import {
|
|
94
94
|
listNamespaces,
|
|
95
95
|
runNamespaceMigration,
|
|
96
96
|
verifyNamespaces
|
|
97
|
-
} from "./chunk-
|
|
97
|
+
} from "./chunk-MVQN73GT.js";
|
|
98
98
|
import {
|
|
99
99
|
collectPatternMemories,
|
|
100
100
|
explainPatternMemory,
|
|
@@ -124,13 +124,13 @@ import {
|
|
|
124
124
|
} from "./chunk-TERNBNJB.js";
|
|
125
125
|
import {
|
|
126
126
|
searchVerifiedEpisodes
|
|
127
|
-
} from "./chunk-
|
|
127
|
+
} from "./chunk-P2D2MM47.js";
|
|
128
128
|
import {
|
|
129
129
|
ThreadingManager
|
|
130
130
|
} from "./chunk-W4RVMTHR.js";
|
|
131
131
|
import {
|
|
132
132
|
searchVerifiedSemanticRules
|
|
133
|
-
} from "./chunk-
|
|
133
|
+
} from "./chunk-57QXN2CS.js";
|
|
134
134
|
import {
|
|
135
135
|
getWorkProductLedgerStatus,
|
|
136
136
|
recordWorkProductLedgerEntry,
|
|
@@ -203,19 +203,22 @@ import {
|
|
|
203
203
|
} from "./chunk-UQ7RN5HK.js";
|
|
204
204
|
import {
|
|
205
205
|
parseConfig
|
|
206
|
-
} from "./chunk-
|
|
206
|
+
} from "./chunk-KKTXCFD7.js";
|
|
207
207
|
import {
|
|
208
208
|
getAbstractionNodeStoreStatus
|
|
209
209
|
} from "./chunk-OADWQ5CR.js";
|
|
210
210
|
import {
|
|
211
211
|
EngramAccessHttpServer
|
|
212
|
-
} from "./chunk-
|
|
212
|
+
} from "./chunk-Y3TMFC6I.js";
|
|
213
|
+
import {
|
|
214
|
+
WearablesInputError
|
|
215
|
+
} from "./chunk-7WV3F5DQ.js";
|
|
213
216
|
import {
|
|
214
217
|
EngramMcpServer
|
|
215
|
-
} from "./chunk-
|
|
218
|
+
} from "./chunk-SHV5Y2WU.js";
|
|
216
219
|
import {
|
|
217
220
|
EngramAccessService
|
|
218
|
-
} from "./chunk-
|
|
221
|
+
} from "./chunk-F3FY3D3S.js";
|
|
219
222
|
import {
|
|
220
223
|
WorkStorage
|
|
221
224
|
} from "./chunk-GDB4J2H3.js";
|
|
@@ -223,13 +226,13 @@ import {
|
|
|
223
226
|
parseRecallExplainFormat,
|
|
224
227
|
renderRecallExplain,
|
|
225
228
|
renderXray
|
|
226
|
-
} from "./chunk-
|
|
229
|
+
} from "./chunk-PW6GURU3.js";
|
|
227
230
|
import {
|
|
228
231
|
listMemoryGovernanceRuns,
|
|
229
232
|
readMemoryGovernanceRunArtifact,
|
|
230
233
|
restoreMemoryGovernanceRun,
|
|
231
234
|
runMemoryGovernance
|
|
232
|
-
} from "./chunk-
|
|
235
|
+
} from "./chunk-3MNBW7R7.js";
|
|
233
236
|
import {
|
|
234
237
|
getTrustZoneStoreStatus,
|
|
235
238
|
promoteTrustZoneRecord,
|
|
@@ -244,7 +247,7 @@ import {
|
|
|
244
247
|
import {
|
|
245
248
|
RECALL_DISCLOSURE_LEVELS,
|
|
246
249
|
isRecallDisclosure
|
|
247
|
-
} from "./chunk-
|
|
250
|
+
} from "./chunk-FPNQF475.js";
|
|
248
251
|
import {
|
|
249
252
|
getCausalTrajectoryStoreStatus
|
|
250
253
|
} from "./chunk-TQOU3VAT.js";
|
|
@@ -269,6 +272,421 @@ import path2 from "path";
|
|
|
269
272
|
import { access, readFile, readdir as readdir2, unlink } from "fs/promises";
|
|
270
273
|
import { createHash } from "crypto";
|
|
271
274
|
|
|
275
|
+
// src/wearables/cli.ts
|
|
276
|
+
var USAGE = `Usage: wearables <command> [options]
|
|
277
|
+
|
|
278
|
+
Commands:
|
|
279
|
+
status Show configured sources, connectors, last sync
|
|
280
|
+
check <source> Verify credentials/connectivity for a source
|
|
281
|
+
sync [options] Pull + clean + store transcripts (and memories)
|
|
282
|
+
--source <id> Only this source (default: all enabled)
|
|
283
|
+
--date <YYYY-MM-DD> Exactly this day
|
|
284
|
+
--days <n> Lookback window ending today (default 2)
|
|
285
|
+
--force-memories Re-extract memories for unchanged days
|
|
286
|
+
transcript --date <YYYY-MM-DD> [--source <id>]
|
|
287
|
+
Print the stored day transcript(s)
|
|
288
|
+
search <query> [options] Search stored transcripts
|
|
289
|
+
--source <id> --from <date> --to <date> --limit <n>
|
|
290
|
+
memories [options] List memories created from transcripts
|
|
291
|
+
--source <id> --date <date> --limit <n>
|
|
292
|
+
speakers list Show the speaker registry
|
|
293
|
+
speakers self <name> Set the wearer's display name
|
|
294
|
+
speakers set <source> <key> <name> [--self]
|
|
295
|
+
Map a provider speaker label to a name
|
|
296
|
+
speakers remove <source> <key> Remove a speaker mapping
|
|
297
|
+
corrections list Show correction rules (config + state)
|
|
298
|
+
corrections add <match> <replace> [--regex] [--case-sensitive] [--source <id>]
|
|
299
|
+
Add a transcript correction rule
|
|
300
|
+
corrections remove <index> Remove a state correction rule by index
|
|
301
|
+
|
|
302
|
+
Add --json to status/sync/search/memories for machine-readable output.
|
|
303
|
+
`;
|
|
304
|
+
var VALUE_FLAGS = /* @__PURE__ */ new Set([
|
|
305
|
+
"--source",
|
|
306
|
+
"--date",
|
|
307
|
+
"--days",
|
|
308
|
+
"--from",
|
|
309
|
+
"--to",
|
|
310
|
+
"--limit"
|
|
311
|
+
]);
|
|
312
|
+
var BOOLEAN_FLAGS = /* @__PURE__ */ new Set([
|
|
313
|
+
"--json",
|
|
314
|
+
"--force-memories",
|
|
315
|
+
"--regex",
|
|
316
|
+
"--case-sensitive",
|
|
317
|
+
"--self"
|
|
318
|
+
]);
|
|
319
|
+
function parseFlags(args) {
|
|
320
|
+
const flags = /* @__PURE__ */ new Map();
|
|
321
|
+
const positional = [];
|
|
322
|
+
for (let index = 0; index < args.length; index++) {
|
|
323
|
+
const arg = args[index];
|
|
324
|
+
if (!arg.startsWith("--")) {
|
|
325
|
+
positional.push(arg);
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
if (BOOLEAN_FLAGS.has(arg)) {
|
|
329
|
+
flags.set(arg, true);
|
|
330
|
+
continue;
|
|
331
|
+
}
|
|
332
|
+
if (VALUE_FLAGS.has(arg)) {
|
|
333
|
+
const value = args[index + 1];
|
|
334
|
+
if (value === void 0 || value.startsWith("--")) {
|
|
335
|
+
throw new WearablesInputError(`${arg} requires a value`);
|
|
336
|
+
}
|
|
337
|
+
flags.set(arg, value);
|
|
338
|
+
index++;
|
|
339
|
+
continue;
|
|
340
|
+
}
|
|
341
|
+
throw new WearablesInputError(
|
|
342
|
+
`unknown flag '${arg}' \u2014 valid flags: ${[...VALUE_FLAGS, ...BOOLEAN_FLAGS].join(", ")}`
|
|
343
|
+
);
|
|
344
|
+
}
|
|
345
|
+
return { flags, positional };
|
|
346
|
+
}
|
|
347
|
+
function flagString(parsed, name) {
|
|
348
|
+
const value = parsed.flags.get(name);
|
|
349
|
+
return typeof value === "string" ? value : void 0;
|
|
350
|
+
}
|
|
351
|
+
function flagInt(parsed, name) {
|
|
352
|
+
const value = flagString(parsed, name);
|
|
353
|
+
if (value === void 0) return void 0;
|
|
354
|
+
const parsedValue = Number(value);
|
|
355
|
+
if (!Number.isFinite(parsedValue) || !Number.isInteger(parsedValue) || parsedValue < 1) {
|
|
356
|
+
throw new WearablesInputError(`${name} expects a positive integer (got '${value}')`);
|
|
357
|
+
}
|
|
358
|
+
return parsedValue;
|
|
359
|
+
}
|
|
360
|
+
function renderSyncSummary(summary) {
|
|
361
|
+
const lines = [
|
|
362
|
+
`${summary.source}: ${summary.conversations} conversation${summary.conversations === 1 ? "" : "s"} across ${summary.days.length} day${summary.days.length === 1 ? "" : "s"} (${summary.days.join(", ")})`,
|
|
363
|
+
` segments kept/dropped: ${summary.segmentsKept}/${summary.segmentsDropped}`,
|
|
364
|
+
` redactions applied: ${summary.redactions}`,
|
|
365
|
+
` corrections applied: ${summary.correctionsApplied}`,
|
|
366
|
+
` transcripts written: ${summary.transcriptsWritten.length > 0 ? summary.transcriptsWritten.join(", ") : "(none \u2014 unchanged)"}`,
|
|
367
|
+
` memories created: ${summary.memoriesCreated} (skipped ${summary.memoriesSkipped})`
|
|
368
|
+
];
|
|
369
|
+
if (summary.nativeMemoriesImported > 0) {
|
|
370
|
+
lines.push(` native memories queued: ${summary.nativeMemoriesImported}`);
|
|
371
|
+
}
|
|
372
|
+
for (const warning of summary.warnings) {
|
|
373
|
+
lines.push(` warning: ${warning}`);
|
|
374
|
+
}
|
|
375
|
+
return lines.join("\n");
|
|
376
|
+
}
|
|
377
|
+
async function runWearablesCliCommand(service, args, io) {
|
|
378
|
+
const [command, ...rest] = args;
|
|
379
|
+
try {
|
|
380
|
+
switch (command) {
|
|
381
|
+
case void 0:
|
|
382
|
+
case "help":
|
|
383
|
+
case "--help": {
|
|
384
|
+
io.stdout.write(USAGE);
|
|
385
|
+
return command === void 0 ? 1 : 0;
|
|
386
|
+
}
|
|
387
|
+
case "status": {
|
|
388
|
+
const parsed = parseFlags(rest);
|
|
389
|
+
const status = await service.status();
|
|
390
|
+
if (parsed.flags.has("--json")) {
|
|
391
|
+
io.stdout.write(`${JSON.stringify(status, null, 2)}
|
|
392
|
+
`);
|
|
393
|
+
return 0;
|
|
394
|
+
}
|
|
395
|
+
io.stdout.write(
|
|
396
|
+
`Wearables: ${status.enabled ? "enabled" : "disabled"} (timezone ${status.timezone})
|
|
397
|
+
`
|
|
398
|
+
);
|
|
399
|
+
if (status.sources.length === 0) {
|
|
400
|
+
io.stdout.write(
|
|
401
|
+
"No sources configured. Add wearables.sources.<id> to the plugin config.\n"
|
|
402
|
+
);
|
|
403
|
+
return 0;
|
|
404
|
+
}
|
|
405
|
+
for (const source of status.sources) {
|
|
406
|
+
io.stdout.write(
|
|
407
|
+
` ${source.source} (${source.displayName}): ${source.enabled ? "enabled" : "disabled"}, connector ${source.connectorInstalled ? "installed" : `MISSING \u2014 npm install @remnic/connector-${source.source}`}, memoryMode ${source.memoryMode}, ${source.transcriptDays} transcript day${source.transcriptDays === 1 ? "" : "s"}, last sync ${source.lastSyncAt ?? "never"}
|
|
408
|
+
`
|
|
409
|
+
);
|
|
410
|
+
}
|
|
411
|
+
return 0;
|
|
412
|
+
}
|
|
413
|
+
case "check": {
|
|
414
|
+
const [sourceId] = rest;
|
|
415
|
+
if (!sourceId) {
|
|
416
|
+
throw new WearablesInputError("check requires a source id (e.g. wearables check limitless)");
|
|
417
|
+
}
|
|
418
|
+
const result = await service.checkAuth(sourceId);
|
|
419
|
+
io.stdout.write(
|
|
420
|
+
result.ok ? `${sourceId}: OK${result.detail ? ` \u2014 ${result.detail}` : ""}
|
|
421
|
+
` : `${sourceId}: FAILED${result.detail ? ` \u2014 ${result.detail}` : ""}
|
|
422
|
+
`
|
|
423
|
+
);
|
|
424
|
+
return result.ok ? 0 : 1;
|
|
425
|
+
}
|
|
426
|
+
case "sync": {
|
|
427
|
+
const parsed = parseFlags(rest);
|
|
428
|
+
if (parsed.positional.length > 0) {
|
|
429
|
+
throw new WearablesInputError(
|
|
430
|
+
`unexpected argument '${parsed.positional[0]}' \u2014 sync takes flags only`
|
|
431
|
+
);
|
|
432
|
+
}
|
|
433
|
+
const summaries = await service.sync({
|
|
434
|
+
source: flagString(parsed, "--source"),
|
|
435
|
+
date: flagString(parsed, "--date"),
|
|
436
|
+
days: flagInt(parsed, "--days"),
|
|
437
|
+
forceMemories: parsed.flags.has("--force-memories")
|
|
438
|
+
});
|
|
439
|
+
if (parsed.flags.has("--json")) {
|
|
440
|
+
io.stdout.write(`${JSON.stringify({ summaries }, null, 2)}
|
|
441
|
+
`);
|
|
442
|
+
return 0;
|
|
443
|
+
}
|
|
444
|
+
for (const summary of summaries) {
|
|
445
|
+
io.stdout.write(`${renderSyncSummary(summary)}
|
|
446
|
+
`);
|
|
447
|
+
}
|
|
448
|
+
io.stdout.write("OK\n");
|
|
449
|
+
return 0;
|
|
450
|
+
}
|
|
451
|
+
case "transcript": {
|
|
452
|
+
const parsed = parseFlags(rest);
|
|
453
|
+
const date = flagString(parsed, "--date");
|
|
454
|
+
if (!date) {
|
|
455
|
+
throw new WearablesInputError("transcript requires --date <YYYY-MM-DD>");
|
|
456
|
+
}
|
|
457
|
+
const views = await service.dayTranscript(date, flagString(parsed, "--source"));
|
|
458
|
+
if (views.length === 0) {
|
|
459
|
+
io.stderr.write(`No stored transcripts for ${date}.
|
|
460
|
+
`);
|
|
461
|
+
return 1;
|
|
462
|
+
}
|
|
463
|
+
for (const view of views) {
|
|
464
|
+
if (views.length > 1) {
|
|
465
|
+
io.stdout.write(`
|
|
466
|
+
===== ${view.source} \u2014 ${view.date} =====
|
|
467
|
+
|
|
468
|
+
`);
|
|
469
|
+
}
|
|
470
|
+
if (view.overlapsWith.length > 0) {
|
|
471
|
+
io.stdout.write(
|
|
472
|
+
`(also recorded by: ${view.overlapsWith.join(", ")})
|
|
473
|
+
|
|
474
|
+
`
|
|
475
|
+
);
|
|
476
|
+
}
|
|
477
|
+
io.stdout.write(`${view.body}
|
|
478
|
+
`);
|
|
479
|
+
}
|
|
480
|
+
return 0;
|
|
481
|
+
}
|
|
482
|
+
case "search": {
|
|
483
|
+
const parsed = parseFlags(rest);
|
|
484
|
+
const query = parsed.positional.join(" ").trim();
|
|
485
|
+
if (query.length === 0) {
|
|
486
|
+
throw new WearablesInputError("search requires a query");
|
|
487
|
+
}
|
|
488
|
+
const results = await service.searchTranscripts(query, {
|
|
489
|
+
source: flagString(parsed, "--source"),
|
|
490
|
+
from: flagString(parsed, "--from"),
|
|
491
|
+
to: flagString(parsed, "--to"),
|
|
492
|
+
limit: flagInt(parsed, "--limit")
|
|
493
|
+
});
|
|
494
|
+
if (parsed.flags.has("--json")) {
|
|
495
|
+
io.stdout.write(`${JSON.stringify({ results }, null, 2)}
|
|
496
|
+
`);
|
|
497
|
+
return 0;
|
|
498
|
+
}
|
|
499
|
+
if (results.length === 0) {
|
|
500
|
+
io.stdout.write("No matches.\n");
|
|
501
|
+
return 0;
|
|
502
|
+
}
|
|
503
|
+
for (const result of results) {
|
|
504
|
+
io.stdout.write(
|
|
505
|
+
`${result.source} ${result.date} ${result.snippet}
|
|
506
|
+
`
|
|
507
|
+
);
|
|
508
|
+
}
|
|
509
|
+
if (results.some((result) => result.backend === "scan")) {
|
|
510
|
+
io.stdout.write(
|
|
511
|
+
"(search index unavailable \u2014 results from bounded text scan)\n"
|
|
512
|
+
);
|
|
513
|
+
}
|
|
514
|
+
return 0;
|
|
515
|
+
}
|
|
516
|
+
case "memories": {
|
|
517
|
+
const parsed = parseFlags(rest);
|
|
518
|
+
const memories = await service.transcriptMemories({
|
|
519
|
+
source: flagString(parsed, "--source"),
|
|
520
|
+
date: flagString(parsed, "--date"),
|
|
521
|
+
limit: flagInt(parsed, "--limit")
|
|
522
|
+
});
|
|
523
|
+
if (parsed.flags.has("--json")) {
|
|
524
|
+
io.stdout.write(`${JSON.stringify({ memories }, null, 2)}
|
|
525
|
+
`);
|
|
526
|
+
return 0;
|
|
527
|
+
}
|
|
528
|
+
if (memories.length === 0) {
|
|
529
|
+
io.stdout.write("No wearable-derived memories found.\n");
|
|
530
|
+
return 0;
|
|
531
|
+
}
|
|
532
|
+
for (const memory of memories) {
|
|
533
|
+
const status = memory.status === "pending_review" ? " [pending review]" : "";
|
|
534
|
+
io.stdout.write(
|
|
535
|
+
`${memory.id} (${memory.source}${memory.date ? ` ${memory.date}` : ""})${status}
|
|
536
|
+
${memory.content.split("\n")[0]}
|
|
537
|
+
`
|
|
538
|
+
);
|
|
539
|
+
}
|
|
540
|
+
return 0;
|
|
541
|
+
}
|
|
542
|
+
case "speakers": {
|
|
543
|
+
const [action, ...speakerArgs] = rest;
|
|
544
|
+
if (action === "list" || action === void 0) {
|
|
545
|
+
const registry = await service.listSpeakers();
|
|
546
|
+
io.stdout.write(`Self: ${registry.selfName}
|
|
547
|
+
`);
|
|
548
|
+
const entries = Object.entries(registry.speakers);
|
|
549
|
+
if (entries.length === 0) {
|
|
550
|
+
io.stdout.write("No speaker overrides stored.\n");
|
|
551
|
+
return 0;
|
|
552
|
+
}
|
|
553
|
+
for (const [key, override] of entries) {
|
|
554
|
+
io.stdout.write(
|
|
555
|
+
` ${key} -> ${override.name}${override.isSelf ? " (you)" : ""}
|
|
556
|
+
`
|
|
557
|
+
);
|
|
558
|
+
}
|
|
559
|
+
return 0;
|
|
560
|
+
}
|
|
561
|
+
if (action === "self") {
|
|
562
|
+
const name = speakerArgs.join(" ").trim();
|
|
563
|
+
if (name.length === 0) {
|
|
564
|
+
throw new WearablesInputError("speakers self requires a name");
|
|
565
|
+
}
|
|
566
|
+
await service.setSelfName(name);
|
|
567
|
+
io.stdout.write(`Self name set to '${name}'.
|
|
568
|
+
`);
|
|
569
|
+
return 0;
|
|
570
|
+
}
|
|
571
|
+
if (action === "set") {
|
|
572
|
+
const parsed = parseFlags(speakerArgs);
|
|
573
|
+
const [sourceId, speakerKey, ...nameParts] = parsed.positional;
|
|
574
|
+
const name = nameParts.join(" ").trim();
|
|
575
|
+
if (!sourceId || !speakerKey || name.length === 0) {
|
|
576
|
+
throw new WearablesInputError(
|
|
577
|
+
"speakers set requires: <source> <speakerKey> <name>"
|
|
578
|
+
);
|
|
579
|
+
}
|
|
580
|
+
await service.setSpeaker(sourceId, speakerKey, name, {
|
|
581
|
+
isSelf: parsed.flags.has("--self")
|
|
582
|
+
});
|
|
583
|
+
io.stdout.write(`Mapped ${sourceId}:${speakerKey} -> ${name}.
|
|
584
|
+
`);
|
|
585
|
+
io.stdout.write(
|
|
586
|
+
"(re-run `wearables sync --force-memories` to rebuild stored transcripts with the new label)\n"
|
|
587
|
+
);
|
|
588
|
+
return 0;
|
|
589
|
+
}
|
|
590
|
+
if (action === "remove") {
|
|
591
|
+
const [sourceId, speakerKey] = speakerArgs;
|
|
592
|
+
if (!sourceId || !speakerKey) {
|
|
593
|
+
throw new WearablesInputError("speakers remove requires: <source> <speakerKey>");
|
|
594
|
+
}
|
|
595
|
+
await service.removeSpeaker(sourceId, speakerKey);
|
|
596
|
+
io.stdout.write(`Removed mapping for ${sourceId}:${speakerKey}.
|
|
597
|
+
`);
|
|
598
|
+
return 0;
|
|
599
|
+
}
|
|
600
|
+
throw new WearablesInputError(
|
|
601
|
+
`unknown speakers action '${action}' \u2014 expected list, self, set, or remove`
|
|
602
|
+
);
|
|
603
|
+
}
|
|
604
|
+
case "corrections": {
|
|
605
|
+
const [action, ...correctionArgs] = rest;
|
|
606
|
+
if (action === "list" || action === void 0) {
|
|
607
|
+
const { fromConfig, fromState, stateFilePath } = await service.listCorrections();
|
|
608
|
+
if (fromConfig.length === 0 && fromState.length === 0) {
|
|
609
|
+
io.stdout.write("No correction rules configured.\n");
|
|
610
|
+
return 0;
|
|
611
|
+
}
|
|
612
|
+
if (fromConfig.length > 0) {
|
|
613
|
+
io.stdout.write("From config (wearables.corrections):\n");
|
|
614
|
+
fromConfig.forEach((rule, index) => {
|
|
615
|
+
io.stdout.write(` [config ${index}] ${formatRule(rule)}
|
|
616
|
+
`);
|
|
617
|
+
});
|
|
618
|
+
}
|
|
619
|
+
if (fromState.length > 0) {
|
|
620
|
+
io.stdout.write(`From state (${stateFilePath}):
|
|
621
|
+
`);
|
|
622
|
+
fromState.forEach((rule, index) => {
|
|
623
|
+
io.stdout.write(` [${index}] ${formatRule(rule)}
|
|
624
|
+
`);
|
|
625
|
+
});
|
|
626
|
+
}
|
|
627
|
+
return 0;
|
|
628
|
+
}
|
|
629
|
+
if (action === "add") {
|
|
630
|
+
const parsed = parseFlags(correctionArgs);
|
|
631
|
+
const [match, replace] = parsed.positional;
|
|
632
|
+
if (match === void 0 || replace === void 0) {
|
|
633
|
+
throw new WearablesInputError(
|
|
634
|
+
"corrections add requires: <match> <replace> (quote multi-word values)"
|
|
635
|
+
);
|
|
636
|
+
}
|
|
637
|
+
const sourceFlag = flagString(parsed, "--source");
|
|
638
|
+
await service.addCorrection({
|
|
639
|
+
match,
|
|
640
|
+
replace,
|
|
641
|
+
...parsed.flags.has("--regex") ? { regex: true } : {},
|
|
642
|
+
...parsed.flags.has("--case-sensitive") ? { caseInsensitive: false } : {},
|
|
643
|
+
...sourceFlag !== void 0 ? { sources: [sourceFlag] } : {}
|
|
644
|
+
});
|
|
645
|
+
io.stdout.write(`Added correction: ${JSON.stringify(match)} -> ${JSON.stringify(replace)}.
|
|
646
|
+
`);
|
|
647
|
+
return 0;
|
|
648
|
+
}
|
|
649
|
+
if (action === "remove") {
|
|
650
|
+
const [indexRaw] = correctionArgs;
|
|
651
|
+
const index = Number(indexRaw);
|
|
652
|
+
if (indexRaw === void 0 || !Number.isInteger(index) || index < 0) {
|
|
653
|
+
throw new WearablesInputError("corrections remove requires a non-negative index");
|
|
654
|
+
}
|
|
655
|
+
const removed = await service.removeCorrection(index);
|
|
656
|
+
io.stdout.write(`Removed correction ${formatRule(removed)}.
|
|
657
|
+
`);
|
|
658
|
+
return 0;
|
|
659
|
+
}
|
|
660
|
+
throw new WearablesInputError(
|
|
661
|
+
`unknown corrections action '${action}' \u2014 expected list, add, or remove`
|
|
662
|
+
);
|
|
663
|
+
}
|
|
664
|
+
default:
|
|
665
|
+
throw new WearablesInputError(
|
|
666
|
+
`unknown wearables command '${command}'
|
|
667
|
+
|
|
668
|
+
${USAGE}`
|
|
669
|
+
);
|
|
670
|
+
}
|
|
671
|
+
} catch (err) {
|
|
672
|
+
if (err instanceof WearablesInputError) {
|
|
673
|
+
io.stderr.write(`wearables: ${err.message}
|
|
674
|
+
`);
|
|
675
|
+
return 1;
|
|
676
|
+
}
|
|
677
|
+
throw err;
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
function formatRule(rule) {
|
|
681
|
+
const parts = [`${JSON.stringify(rule.match)} -> ${JSON.stringify(rule.replace)}`];
|
|
682
|
+
if (rule.regex === true) parts.push("(regex)");
|
|
683
|
+
if (rule.caseInsensitive === false) parts.push("(case-sensitive)");
|
|
684
|
+
if (rule.sources && rule.sources.length > 0) {
|
|
685
|
+
parts.push(`(sources: ${rule.sources.join(", ")})`);
|
|
686
|
+
}
|
|
687
|
+
return parts.join(" ");
|
|
688
|
+
}
|
|
689
|
+
|
|
272
690
|
// src/training-export/converter.ts
|
|
273
691
|
import { constants } from "fs";
|
|
274
692
|
import { lstat, open, readdir, realpath } from "fs/promises";
|
|
@@ -3465,6 +3883,110 @@ function registerCli(api, orchestrator, registerOptions = {}) {
|
|
|
3465
3883
|
process.exitCode = 1;
|
|
3466
3884
|
}
|
|
3467
3885
|
});
|
|
3886
|
+
{
|
|
3887
|
+
const wearablesCmd = cmd.command("wearables").description(
|
|
3888
|
+
"Wearable transcript sources (Limitless / Bee / Omi): sync, transcripts, search, speakers, corrections"
|
|
3889
|
+
);
|
|
3890
|
+
const forwardWearables = async (argv) => {
|
|
3891
|
+
const code = await runWearablesCliCommand(
|
|
3892
|
+
orchestrator.getWearablesService(),
|
|
3893
|
+
argv,
|
|
3894
|
+
{ stdout: process.stdout, stderr: process.stderr }
|
|
3895
|
+
);
|
|
3896
|
+
if (code !== 0) process.exitCode = code;
|
|
3897
|
+
};
|
|
3898
|
+
const stringOpt = (options, key, flag) => typeof options[key] === "string" && options[key].length > 0 ? [flag, options[key]] : [];
|
|
3899
|
+
wearablesCmd.command("status").description("Show configured sources, connector availability, and last sync").option("--json", "JSON output").action(async (...args) => {
|
|
3900
|
+
const options = args[0] ?? {};
|
|
3901
|
+
await forwardWearables(["status", ...options.json === true ? ["--json"] : []]);
|
|
3902
|
+
});
|
|
3903
|
+
wearablesCmd.command("check <source>").description("Verify credentials/connectivity for a source").action(async (...args) => {
|
|
3904
|
+
await forwardWearables(["check", String(args[0] ?? "")]);
|
|
3905
|
+
});
|
|
3906
|
+
wearablesCmd.command("sync").description("Pull, clean, and store wearable transcripts (and trust-gated memories)").option("--source <id>", "Only this source (default: all enabled)").option("--date <date>", "Sync exactly this day (YYYY-MM-DD)").option("--days <n>", "Lookback window in days ending today (default 2)").option("--force-memories", "Re-run memory extraction for unchanged days").option("--json", "JSON output").action(async (...args) => {
|
|
3907
|
+
const options = args[0] ?? {};
|
|
3908
|
+
await forwardWearables([
|
|
3909
|
+
"sync",
|
|
3910
|
+
...stringOpt(options, "source", "--source"),
|
|
3911
|
+
...stringOpt(options, "date", "--date"),
|
|
3912
|
+
...stringOpt(options, "days", "--days"),
|
|
3913
|
+
...options.forceMemories === true ? ["--force-memories"] : [],
|
|
3914
|
+
...options.json === true ? ["--json"] : []
|
|
3915
|
+
]);
|
|
3916
|
+
});
|
|
3917
|
+
wearablesCmd.command("transcript").description("Print the stored transcript(s) for a day").requiredOption("--date <date>", "Day to read (YYYY-MM-DD)").option("--source <id>", "Scope to one source").action(async (...args) => {
|
|
3918
|
+
const options = args[0] ?? {};
|
|
3919
|
+
await forwardWearables([
|
|
3920
|
+
"transcript",
|
|
3921
|
+
...stringOpt(options, "date", "--date"),
|
|
3922
|
+
...stringOpt(options, "source", "--source")
|
|
3923
|
+
]);
|
|
3924
|
+
});
|
|
3925
|
+
wearablesCmd.command("search <query>").description("Search stored wearable transcripts").option("--source <id>", "Source id filter").option("--from <date>", "Inclusive start date (YYYY-MM-DD)").option("--to <date>", "Inclusive end date (YYYY-MM-DD)").option("--limit <n>", "Maximum results (default 10)").option("--json", "JSON output").action(async (...args) => {
|
|
3926
|
+
const query = typeof args[0] === "string" ? args[0] : "";
|
|
3927
|
+
const options = args[1] ?? {};
|
|
3928
|
+
await forwardWearables([
|
|
3929
|
+
"search",
|
|
3930
|
+
query,
|
|
3931
|
+
...stringOpt(options, "source", "--source"),
|
|
3932
|
+
...stringOpt(options, "from", "--from"),
|
|
3933
|
+
...stringOpt(options, "to", "--to"),
|
|
3934
|
+
...stringOpt(options, "limit", "--limit"),
|
|
3935
|
+
...options.json === true ? ["--json"] : []
|
|
3936
|
+
]);
|
|
3937
|
+
});
|
|
3938
|
+
wearablesCmd.command("memories").description("List memories created from wearable transcripts").option("--source <id>", "Source id filter").option("--date <date>", "Transcript day filter (YYYY-MM-DD)").option("--limit <n>", "Maximum results (default 50)").option("--json", "JSON output").action(async (...args) => {
|
|
3939
|
+
const options = args[0] ?? {};
|
|
3940
|
+
await forwardWearables([
|
|
3941
|
+
"memories",
|
|
3942
|
+
...stringOpt(options, "source", "--source"),
|
|
3943
|
+
...stringOpt(options, "date", "--date"),
|
|
3944
|
+
...stringOpt(options, "limit", "--limit"),
|
|
3945
|
+
...options.json === true ? ["--json"] : []
|
|
3946
|
+
]);
|
|
3947
|
+
});
|
|
3948
|
+
const speakersCmd = wearablesCmd.command("speakers").description("Manage the speaker registry");
|
|
3949
|
+
speakersCmd.command("list").description("Show stored speaker mappings").action(async () => forwardWearables(["speakers", "list"]));
|
|
3950
|
+
speakersCmd.command("self <name>").description("Set the wearer's display name").action(
|
|
3951
|
+
async (...args) => forwardWearables(["speakers", "self", String(args[0] ?? "")])
|
|
3952
|
+
);
|
|
3953
|
+
speakersCmd.command("set <source> <speakerKey> <name>").description("Map a provider speaker label to a display name").option("--self", "Mark this speaker as the wearer").action(async (...args) => {
|
|
3954
|
+
const options = args[3] ?? {};
|
|
3955
|
+
await forwardWearables([
|
|
3956
|
+
"speakers",
|
|
3957
|
+
"set",
|
|
3958
|
+
String(args[0] ?? ""),
|
|
3959
|
+
String(args[1] ?? ""),
|
|
3960
|
+
String(args[2] ?? ""),
|
|
3961
|
+
...options.self === true ? ["--self"] : []
|
|
3962
|
+
]);
|
|
3963
|
+
});
|
|
3964
|
+
speakersCmd.command("remove <source> <speakerKey>").description("Remove a speaker mapping").action(
|
|
3965
|
+
async (...args) => forwardWearables([
|
|
3966
|
+
"speakers",
|
|
3967
|
+
"remove",
|
|
3968
|
+
String(args[0] ?? ""),
|
|
3969
|
+
String(args[1] ?? "")
|
|
3970
|
+
])
|
|
3971
|
+
);
|
|
3972
|
+
const correctionsCmd = wearablesCmd.command("corrections").description("Manage user-specific transcript correction rules");
|
|
3973
|
+
correctionsCmd.command("list").description("Show correction rules from config and state").action(async () => forwardWearables(["corrections", "list"]));
|
|
3974
|
+
correctionsCmd.command("add <match> <replace>").description("Add a correction rule (quote multi-word values)").option("--regex", "Treat <match> as a regular expression").option("--case-sensitive", "Match case-sensitively").option("--source <id>", "Restrict the rule to one source").action(async (...args) => {
|
|
3975
|
+
const options = args[2] ?? {};
|
|
3976
|
+
await forwardWearables([
|
|
3977
|
+
"corrections",
|
|
3978
|
+
"add",
|
|
3979
|
+
String(args[0] ?? ""),
|
|
3980
|
+
String(args[1] ?? ""),
|
|
3981
|
+
...options.regex === true ? ["--regex"] : [],
|
|
3982
|
+
...options.caseSensitive === true ? ["--case-sensitive"] : [],
|
|
3983
|
+
...stringOpt(options, "source", "--source")
|
|
3984
|
+
]);
|
|
3985
|
+
});
|
|
3986
|
+
correctionsCmd.command("remove <index>").description("Remove a state correction rule by index").action(
|
|
3987
|
+
async (...args) => forwardWearables(["corrections", "remove", String(args[0] ?? "")])
|
|
3988
|
+
);
|
|
3989
|
+
}
|
|
3468
3990
|
cmd.command("benchmark-status").description("Show benchmark/evaluation harness status, benchmark packs, and latest run summary").action(async () => {
|
|
3469
3991
|
const status = await runBenchmarkStatusCliCommand({
|
|
3470
3992
|
memoryDir: orchestrator.config.memoryDir,
|
|
@@ -6527,6 +7049,7 @@ function parseDuration(duration) {
|
|
|
6527
7049
|
}
|
|
6528
7050
|
|
|
6529
7051
|
export {
|
|
7052
|
+
runWearablesCliCommand,
|
|
6530
7053
|
convertMemoriesToRecords,
|
|
6531
7054
|
registerTrainingExportAdapter,
|
|
6532
7055
|
getTrainingExportAdapter,
|
|
@@ -6623,4 +7146,4 @@ export {
|
|
|
6623
7146
|
resolveMemoryDirForNamespace,
|
|
6624
7147
|
registerCli
|
|
6625
7148
|
};
|
|
6626
|
-
//# sourceMappingURL=chunk-
|
|
7149
|
+
//# sourceMappingURL=chunk-2RHI3FGV.js.map
|