@wirecat/cli-core 0.406.0 → 0.408.0

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.
Files changed (46) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cli/answer-entity.d.ts +4 -1
  3. package/dist/cli/answer-entity.js +8 -2
  4. package/dist/cli/command-availability.d.ts +14 -0
  5. package/dist/cli/command-availability.js +25 -0
  6. package/dist/cli/command-contract.js +4 -2
  7. package/dist/cli/commands-command.d.ts +1 -1
  8. package/dist/cli/commands-command.js +17 -4
  9. package/dist/cli/context.d.ts +1 -0
  10. package/dist/cli/effects.d.ts +1 -1
  11. package/dist/cli/effects.js +1 -1
  12. package/dist/cli/help/command-help.js +18 -1
  13. package/dist/cli/help/commands-text.d.ts +1 -1
  14. package/dist/cli/help/commands-text.js +3 -2
  15. package/dist/cli/index.d.ts +6 -2
  16. package/dist/cli/index.js +5 -2
  17. package/dist/cli/json-fields.js +2 -2
  18. package/dist/cli/meeting-batch.d.ts +1 -1
  19. package/dist/cli/meeting-batch.js +20 -2
  20. package/dist/cli/meeting-results.d.ts +3 -0
  21. package/dist/cli/meeting-results.js +31 -0
  22. package/dist/cli/program.d.ts +2 -1
  23. package/dist/cli/program.js +24 -1
  24. package/dist/cli/result-fields.js +19 -1
  25. package/dist/entities/contact.d.ts +6 -0
  26. package/dist/entities/contact.js +3 -0
  27. package/dist/entities/index.d.ts +139 -0
  28. package/dist/entities/index.js +4 -1
  29. package/dist/entities/store-records.d.ts +11 -0
  30. package/dist/entities/store-records.js +1 -0
  31. package/dist/mcp/agent.d.ts +11 -11
  32. package/dist/mcp/agent.js +13 -27
  33. package/dist/mcp/bot/instructions.js +2 -1
  34. package/dist/mcp/bot/server.d.ts +2 -2
  35. package/dist/mcp/bot/server.js +29 -7
  36. package/dist/mcp/index.d.ts +1 -1
  37. package/dist/mcp/instructions.js +2 -1
  38. package/dist/mcp/server.js +33 -7
  39. package/dist/mcp/surface.d.ts +3 -1
  40. package/dist/mcp/surface.js +8 -2
  41. package/dist/meetings/cli/index.js +10 -3
  42. package/dist/meetings/index.d.ts +1 -0
  43. package/dist/meetings/index.js +1 -0
  44. package/dist/meetings/result-items.d.ts +127 -0
  45. package/dist/meetings/result-items.js +125 -0
  46. package/package.json +1 -1
@@ -57,7 +57,7 @@ const runnableOnly = (result, offered) => {
57
57
  /**
58
58
  * **Three tools in place of one per command** (CLI-74, NEED-766): search the commands, then run one
59
59
  * with `read` or `write`. A command keeps its CLI path and its arguments, and runs as its own tool
60
- * did. The list never changes during a connection; what a profile may not use is not in `commands`.
60
+ * did. The catalogue stays discoverable; current permissions annotate availability and are checked before execution.
61
61
  */
62
62
  export const registerCommands = (server, prefix, commands, errors,
63
63
  /** Throws the refusal of a command left out because the lock or a level stops it, so the agent learns why. */
@@ -79,10 +79,16 @@ withheld) => {
79
79
  title: one.title,
80
80
  description: one.description,
81
81
  writes: one.writes,
82
+ availability: one.availability?.() ?? { available: true },
82
83
  arguments: toJsonSchema(one.input),
83
84
  output: toJsonSchema(one.output ?? ANSWER),
84
85
  }))
85
- : found.map(([command, one]) => ({ command, title: one.title, writes: one.writes }));
86
+ : found.map(([command, one]) => ({
87
+ command,
88
+ title: one.title,
89
+ writes: one.writes,
90
+ availability: one.availability?.() ?? { available: true },
91
+ }));
86
92
  // The tool takes no page: more matches mean narrower words, so the list carries no page.next to rerun.
87
93
  const { next: _paging, ...list } = listOf(`${prefix}_tools_search`, {
88
94
  items,
@@ -73,7 +73,7 @@ export const addMeetingCommands = (program, deps) => {
73
73
  .argument("<meeting>", "stored meeting id", integer)).action(async (id, _opts, command) => {
74
74
  print(await meetingSummaryAnswer(deps.store, id, deps.accountId), command);
75
75
  });
76
- output(annotate(group.command("export"), { effects: LOCAL_WRITE })
76
+ output(annotate(group.command("export"), { effects: LOCAL_WRITE, output: { entity: "meeting_export" } })
77
77
  .description("export a meeting as Markdown or one transcript as WebVTT")
78
78
  .argument("<meeting>", "stored meeting id", integer)
79
79
  .addOption(new Option("--format <format>", "export format").choices(["markdown", "vtt"]).default("markdown"))
@@ -110,7 +110,11 @@ export const addMeetingCommands = (program, deps) => {
110
110
  cursor: opts.cursor,
111
111
  }), command);
112
112
  });
113
- output(annotate(group.command("sync"), { effects: FETCH, offline: false }).description("bring the stored meetings up to date from the connected account"))
113
+ output(annotate(group.command("sync"), {
114
+ effects: FETCH,
115
+ offline: false,
116
+ output: { entity: "meeting_ingestion" },
117
+ }).description("bring the stored meetings up to date from the connected account"))
114
118
  .option("--since-time <time>", "fetch meetings starting at or after this ISO 8601 date or time", date)
115
119
  .option("--lookback-days <days>", "revisit recent occurrences for late transcripts (0–31)", lookbackDays, 0)
116
120
  .action(async (opts, command) => {
@@ -123,7 +127,10 @@ export const addMeetingCommands = (program, deps) => {
123
127
  lookbackMs: opts.lookbackDays * 86400000,
124
128
  }), command);
125
129
  });
126
- const importCommand = annotate(group.command("import"), { effects: LOCAL_WRITE })
130
+ const importCommand = annotate(group.command("import"), {
131
+ effects: LOCAL_WRITE,
132
+ output: { entity: "meeting_ingestion" },
133
+ })
127
134
  .description("import downloaded meeting transcripts")
128
135
  .argument("<folder>", "folder of transcripts downloaded from the provider");
129
136
  if (deps.importHelp)
@@ -34,6 +34,7 @@ export { parseRecordingSyncCheckpoint, type RecordingSyncCheckpoint, type Record
34
34
  export { type RecordingPartial, RecordingTransferError, type RecordingTransferResponse, type RecordingTransferSource, type RecordingTransferStorage, type RecordingTransferWriter, strongRecordingValidator, transferRecording, } from "./recording-transfer.js";
35
35
  export { canonicalMeetingReference, formatMeetingReference, type MeetingReference, parseMeetingReference, } from "./reference.js";
36
36
  export { type MeetingRelatedHistoryEntry, type MeetingRelatedHistoryRequest, type MeetingRelatedHistoryStore, validateMeetingRelatedHistory, } from "./related-history.js";
37
+ export { MEETING_RESULT_ENTITIES } from "./result-items.js";
37
38
  export { type MeetingReview, type MeetingReviewInput, type MeetingReviewItem, type MeetingReviewSpeaker, type MeetingReviewStore, REVIEW_LIMIT, } from "./review.js";
38
39
  export { SAVE_HELP, SAVE_INSTRUCTION } from "./save-hints.js";
39
40
  export type { MeetingHitSearchRequest, MeetingSearchIndexInput, MeetingSearchIndexReceipt, MeetingSearchIndexStore, MeetingSearchOptions, MeetingSearchPage, MeetingSearchStore, } from "./search-store.js";
@@ -25,6 +25,7 @@ export { parseRecordingSyncCheckpoint, RecordingSyncError, recordingAssetFingerp
25
25
  export { RecordingTransferError, strongRecordingValidator, transferRecording, } from "./recording-transfer.js";
26
26
  export { canonicalMeetingReference, formatMeetingReference, parseMeetingReference, } from "./reference.js";
27
27
  export { validateMeetingRelatedHistory, } from "./related-history.js";
28
+ export { MEETING_RESULT_ENTITIES } from "./result-items.js";
28
29
  export { REVIEW_LIMIT, } from "./review.js";
29
30
  export { SAVE_HELP, SAVE_INSTRUCTION } from "./save-hints.js";
30
31
  export { validateMeetingHitSearch } from "./search-validation.js";
@@ -0,0 +1,127 @@
1
+ import * as v from "valibot";
2
+ export declare const MEETING_RESULT_ENTITIES: {
3
+ readonly meeting_ingestion: v.StrictObjectSchema<{
4
+ readonly meetings: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
5
+ readonly participants: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
6
+ readonly transcript_rows: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
7
+ readonly summaries: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
8
+ readonly warnings: v.ArraySchema<v.StrictObjectSchema<{
9
+ readonly external_id: v.StringSchema<undefined>;
10
+ readonly message: v.StringSchema<undefined>;
11
+ }, undefined>, undefined>;
12
+ readonly timezone: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
13
+ }, undefined>;
14
+ readonly meeting_export: v.UnionSchema<[v.StrictObjectSchema<{
15
+ readonly meeting_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
16
+ readonly format: v.PicklistSchema<["markdown", "vtt"], undefined>;
17
+ readonly filename: v.StringSchema<undefined>;
18
+ readonly content: v.StringSchema<undefined>;
19
+ }, undefined>, v.StrictObjectSchema<{
20
+ readonly meeting_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
21
+ readonly format: v.PicklistSchema<["markdown", "vtt"], undefined>;
22
+ readonly output: v.StringSchema<undefined>;
23
+ }, undefined>], undefined>;
24
+ readonly meeting_association: v.StrictObjectSchema<{
25
+ readonly scope: v.StrictObjectSchema<{
26
+ readonly provider: v.StringSchema<undefined>;
27
+ readonly account: v.StringSchema<undefined>;
28
+ }, undefined>;
29
+ readonly account_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
30
+ readonly meeting_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
31
+ readonly change: v.UnionSchema<[v.StrictObjectSchema<{
32
+ readonly action: v.LiteralSchema<"event.link", undefined>;
33
+ readonly event_id: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
34
+ readonly expected_event_id: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, undefined>;
35
+ }, undefined>, v.StrictObjectSchema<{
36
+ readonly action: v.LiteralSchema<"person.link", undefined>;
37
+ readonly participant_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
38
+ readonly person_uid: v.StringSchema<undefined>;
39
+ readonly expected_person_uid: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
40
+ readonly target_account_ids: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, undefined>;
41
+ }, undefined>], undefined>;
42
+ readonly applied: v.BooleanSchema<undefined>;
43
+ readonly result: v.OptionalSchema<v.UnionSchema<[v.StrictObjectSchema<{
44
+ readonly meeting_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
45
+ readonly event_id: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
46
+ readonly previous_event_id: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
47
+ readonly changed: v.BooleanSchema<undefined>;
48
+ }, undefined>, v.StrictObjectSchema<{
49
+ readonly meeting_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
50
+ readonly participant_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
51
+ readonly person_uid: v.StringSchema<undefined>;
52
+ readonly previous_person_uid: v.NullableSchema<v.StringSchema<undefined>, undefined>;
53
+ readonly changed: v.BooleanSchema<undefined>;
54
+ }, undefined>], undefined>, undefined>;
55
+ }, undefined>;
56
+ readonly meeting_transcription: v.UnionSchema<[v.StrictObjectSchema<{
57
+ readonly applied: v.LiteralSchema<false, undefined>;
58
+ readonly account_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
59
+ readonly external_id: v.StringSchema<undefined>;
60
+ readonly segments: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
61
+ readonly media: v.StrictObjectSchema<{
62
+ readonly id: v.StringSchema<undefined>;
63
+ readonly content_hash: v.StringSchema<undefined>;
64
+ readonly size: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
65
+ readonly duration_ms: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
66
+ readonly format: v.StringSchema<undefined>;
67
+ readonly sample_rate: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
68
+ readonly channels: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
69
+ readonly recognition: v.StrictObjectSchema<{
70
+ readonly engine: v.StringSchema<undefined>;
71
+ readonly model: v.StringSchema<undefined>;
72
+ readonly version: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
73
+ readonly timing: v.OptionalSchema<v.PicklistSchema<["fixed-windows", "recognition-segments"], undefined>, undefined>;
74
+ }, undefined>;
75
+ }, undefined>;
76
+ }, undefined>, v.StrictObjectSchema<{
77
+ readonly applied: v.LiteralSchema<true, undefined>;
78
+ readonly account_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
79
+ readonly external_id: v.StringSchema<undefined>;
80
+ readonly meeting_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
81
+ readonly created: v.BooleanSchema<undefined>;
82
+ readonly inserted_transcripts: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
83
+ readonly replayed_transcripts: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
84
+ readonly superseded_transcripts: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
85
+ readonly segments: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
86
+ readonly media_sha256: v.StringSchema<undefined>;
87
+ readonly engine: v.StringSchema<undefined>;
88
+ readonly model: v.StringSchema<undefined>;
89
+ readonly model_version: v.NullableSchema<v.StringSchema<undefined>, undefined>;
90
+ readonly timing: v.PicklistSchema<["fixed-windows", "recognition-segments"], undefined>;
91
+ }, undefined>], undefined>;
92
+ readonly meeting_embedding: v.UnionSchema<[v.StrictObjectSchema<{
93
+ readonly account_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
94
+ readonly model: v.StrictObjectSchema<{
95
+ readonly key: v.StringSchema<undefined>;
96
+ readonly dims: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
97
+ readonly kind: v.PicklistSchema<["local", "remote"], undefined>;
98
+ readonly model: v.StringSchema<undefined>;
99
+ }, undefined>;
100
+ readonly status: v.StrictObjectSchema<{
101
+ readonly chunks: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
102
+ readonly embedded: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
103
+ }, undefined>;
104
+ readonly applied: v.LiteralSchema<false, undefined>;
105
+ readonly scope: v.LiteralSchema<"existing-current-chunks", undefined>;
106
+ readonly rebuild_required: v.LiteralSchema<"explicit", undefined>;
107
+ }, undefined>, v.StrictObjectSchema<{
108
+ readonly account_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
109
+ readonly model: v.StrictObjectSchema<{
110
+ readonly key: v.StringSchema<undefined>;
111
+ readonly dims: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
112
+ readonly kind: v.PicklistSchema<["local", "remote"], undefined>;
113
+ readonly model: v.StringSchema<undefined>;
114
+ }, undefined>;
115
+ readonly saved: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
116
+ readonly skipped: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
117
+ readonly has_more: v.BooleanSchema<undefined>;
118
+ readonly next_hash: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
119
+ readonly applied: v.LiteralSchema<true, undefined>;
120
+ readonly rebuild: v.StrictObjectSchema<{
121
+ readonly transcripts: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
122
+ readonly chunks: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
123
+ readonly has_more: v.BooleanSchema<undefined>;
124
+ readonly next_transcript_id: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
125
+ }, undefined>;
126
+ }, undefined>], undefined>;
127
+ };
@@ -0,0 +1,125 @@
1
+ import * as v from "valibot";
2
+ const text = v.string();
3
+ const identifier = v.pipe(text, v.minLength(1));
4
+ const nullableText = v.nullable(text);
5
+ const count = v.pipe(v.number(), v.integer(), v.minValue(0));
6
+ const flag = v.boolean();
7
+ const scope = v.strictObject({ provider: text, account: text });
8
+ const run = v.strictObject({
9
+ meetings: count,
10
+ participants: count,
11
+ transcript_rows: count,
12
+ summaries: count,
13
+ warnings: v.array(v.strictObject({ external_id: text, message: text })),
14
+ timezone: v.optional(text),
15
+ });
16
+ const exported = v.union([
17
+ v.strictObject({ meeting_id: identifier, format: v.picklist(["markdown", "vtt"]), filename: text, content: text }),
18
+ v.strictObject({ meeting_id: identifier, format: v.picklist(["markdown", "vtt"]), output: text }),
19
+ ]);
20
+ const eventChange = v.strictObject({
21
+ action: v.literal("event.link"),
22
+ event_id: v.nullable(identifier),
23
+ expected_event_id: v.optional(v.nullable(identifier)),
24
+ });
25
+ const personChange = v.strictObject({
26
+ action: v.literal("person.link"),
27
+ participant_id: identifier,
28
+ person_uid: text,
29
+ expected_person_uid: v.optional(nullableText),
30
+ target_account_ids: v.optional(v.array(identifier)),
31
+ });
32
+ const eventResult = v.strictObject({
33
+ meeting_id: identifier,
34
+ event_id: v.nullable(identifier),
35
+ previous_event_id: v.nullable(identifier),
36
+ changed: flag,
37
+ });
38
+ const personResult = v.strictObject({
39
+ meeting_id: identifier,
40
+ participant_id: identifier,
41
+ person_uid: text,
42
+ previous_person_uid: nullableText,
43
+ changed: flag,
44
+ });
45
+ const meetingChange = v.strictObject({
46
+ scope,
47
+ account_id: identifier,
48
+ meeting_id: identifier,
49
+ change: v.union([eventChange, personChange]),
50
+ applied: flag,
51
+ result: v.optional(v.union([eventResult, personResult])),
52
+ });
53
+ const recognition = v.strictObject({
54
+ engine: text,
55
+ model: text,
56
+ version: v.optional(text),
57
+ timing: v.optional(v.picklist(["fixed-windows", "recognition-segments"])),
58
+ });
59
+ const transcription = v.union([
60
+ v.strictObject({
61
+ applied: v.literal(false),
62
+ account_id: identifier,
63
+ external_id: text,
64
+ segments: count,
65
+ media: v.strictObject({
66
+ id: text,
67
+ content_hash: text,
68
+ size: count,
69
+ duration_ms: count,
70
+ format: text,
71
+ sample_rate: count,
72
+ channels: count,
73
+ recognition,
74
+ }),
75
+ }),
76
+ v.strictObject({
77
+ applied: v.literal(true),
78
+ account_id: identifier,
79
+ external_id: text,
80
+ meeting_id: identifier,
81
+ created: flag,
82
+ inserted_transcripts: count,
83
+ replayed_transcripts: count,
84
+ superseded_transcripts: count,
85
+ segments: count,
86
+ media_sha256: text,
87
+ engine: text,
88
+ model: text,
89
+ model_version: nullableText,
90
+ timing: v.picklist(["fixed-windows", "recognition-segments"]),
91
+ }),
92
+ ]);
93
+ const embeddingModel = v.strictObject({ key: text, dims: count, kind: v.picklist(["local", "remote"]), model: text });
94
+ const embedding = v.union([
95
+ v.strictObject({
96
+ account_id: identifier,
97
+ model: embeddingModel,
98
+ status: v.strictObject({ chunks: count, embedded: count }),
99
+ applied: v.literal(false),
100
+ scope: v.literal("existing-current-chunks"),
101
+ rebuild_required: v.literal("explicit"),
102
+ }),
103
+ v.strictObject({
104
+ account_id: identifier,
105
+ model: embeddingModel,
106
+ saved: count,
107
+ skipped: count,
108
+ has_more: flag,
109
+ next_hash: v.optional(text),
110
+ applied: v.literal(true),
111
+ rebuild: v.strictObject({
112
+ transcripts: count,
113
+ chunks: count,
114
+ has_more: flag,
115
+ next_transcript_id: v.optional(identifier),
116
+ }),
117
+ }),
118
+ ]);
119
+ export const MEETING_RESULT_ENTITIES = {
120
+ meeting_ingestion: run,
121
+ meeting_export: exported,
122
+ meeting_association: meetingChange,
123
+ meeting_transcription: transcription,
124
+ meeting_embedding: embedding,
125
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirecat/cli-core",
3
- "version": "0.406.0",
3
+ "version": "0.408.0",
4
4
  "description": "The messenger-neutral half of a messaging CLI: domain model, message locators, rendering, name resolution, the SQLite seam, the command skeleton and shared read commands, the send guard, run records and the message store",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Viacheslav Ptsarev",