@unisonlabs/sixminute-admin 0.1.1175-next → 0.1.1176-next

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.
@@ -21,7 +21,7 @@ import { homedir } from "node:os";
21
21
  import { fileURLToPath } from "node:url";
22
22
 
23
23
  // tools/admin/src/build-info.ts
24
- var BUILT = { version: "0.1.1175-next", commit: "c34cee0a680177bc1e47e083cdb3d0e9675ab50c", surface: "481c62497e7a2c35" };
24
+ var BUILT = { version: "0.1.1176-next", commit: "e29549bfa51d4f19c66265cb76647e6f40ce8064", surface: "481c62497e7a2c35" };
25
25
 
26
26
  // tools/admin/src/run.ts
27
27
  import { rmSync as rmSync3 } from "node:fs";
@@ -4359,6 +4359,7 @@ var EntryStatusSchema = exports_external.enum(["draft", "released"]);
4359
4359
  var AssignmentSchema = exports_external.enum(["model", "user", "none"]);
4360
4360
  var EntryOwnerSchema = exports_external.enum(["engine", "person"]);
4361
4361
  var NARRATIVE_MAX_CHARS = 1024;
4362
+ var NARRATIVE_LIMIT_MAX = NARRATIVE_MAX_CHARS - 1;
4362
4363
  var NarrativeSchema = exports_external.string().transform((s) => s.trim()).superRefine((value, ctx) => {
4363
4364
  if (value.length > NARRATIVE_MAX_CHARS) {
4364
4365
  ctx.addIssue({
@@ -4794,7 +4795,11 @@ function refineOrdered(spans, ctx, prefix = []) {
4794
4795
  });
4795
4796
  }
4796
4797
  var WitnessListSchema = exports_external.array(WitnessSchema).superRefine((witnesses, ctx) => refineOrdered(witnesses, ctx));
4797
- var ScreenEvidenceSchema = WitnessSchema.extend({ source: exports_external.literal("screen") });
4798
+ var ScreenEvidenceSchema = WitnessSchema.extend({
4799
+ source: exports_external.literal("screen"),
4800
+ microphone: exports_external.boolean().optional(),
4801
+ camera: exports_external.boolean().optional()
4802
+ });
4798
4803
  var EvidenceItemSchema = exports_external.discriminatedUnion("source", [ScreenEvidenceSchema]);
4799
4804
  function refineInterval(interval, ctx) {
4800
4805
  if (interval.t_end <= interval.t_start) {
@@ -4839,11 +4844,20 @@ var DayIntervalSchema = exports_external.object({
4839
4844
  }).superRefine(refineInterval);
4840
4845
  var IntervalTextItemSchema = exports_external.object({
4841
4846
  t_start: TimestampSchema,
4842
- text: exports_external.string()
4847
+ text: exports_external.string(),
4848
+ summary: exports_external.string().nullable().optional(),
4849
+ t_end: TimestampSchema.optional(),
4850
+ windows: exports_external.array(ScreenEvidenceSchema).optional()
4851
+ });
4852
+ var IntervalTextEntrySchema = exports_external.object({
4853
+ t_start: TimestampSchema,
4854
+ t_end: TimestampSchema,
4855
+ matter_id: exports_external.string().nullable()
4843
4856
  });
4844
4857
  var IntervalTextSchema = exports_external.object({
4845
4858
  text: exports_external.array(IntervalTextItemSchema),
4846
- activity_type: ActivityTypeKeySchema.nullable()
4859
+ activity_type: ActivityTypeKeySchema.nullable(),
4860
+ entries: exports_external.array(IntervalTextEntrySchema).optional()
4847
4861
  });
4848
4862
 
4849
4863
  // packages/contracts/src/grid.ts
@@ -4881,7 +4895,7 @@ var TenantPolicySchema = exports_external.object({
4881
4895
  }).default({});
4882
4896
  var NARRATIVE_GUIDANCE_MAX_CHARS = 1500;
4883
4897
  var GUIDANCE_CONTROL = /[\u0000-\u0009\u000B-\u001F\u007F-\u009F]/;
4884
- var NarrativeMaxCharsSchema = exports_external.number().int().min(40).max(1023);
4898
+ var NarrativeMaxCharsSchema = exports_external.number().int().min(40).max(NARRATIVE_LIMIT_MAX);
4885
4899
  var NarrativeGuidanceSchema = exports_external.string().trim().max(NARRATIVE_GUIDANCE_MAX_CHARS).refine((text) => !GUIDANCE_CONTROL.test(text), { message: "guidance holds no control character but a newline" });
4886
4900
  var FirmAlwaysOnSchema = exports_external.enum(["member_choice", "enforced"]);
4887
4901
  var FirmSettingsSchema = exports_external.object({
@@ -5138,7 +5152,7 @@ var EntryPatchSchema = exports_external.object({
5138
5152
  });
5139
5153
  var ConfirmedNarrativeSchema = EntrySchema.innerType().shape.narrative.refine((narrative) => narrative.length > 0, { message: "a confirmed narrative is not empty: this is the line the person read and approved" });
5140
5154
  var EntryHalfSchema = exports_external.object({
5141
- matter_id: MatterIdSchema.optional(),
5155
+ matter_id: MatterIdSchema.nullable().optional(),
5142
5156
  narrative: ConfirmedNarrativeSchema,
5143
5157
  attributes: EntryAttributesSchema
5144
5158
  });
@@ -5162,7 +5176,7 @@ var EntrySplitResponseSchema = exports_external.object({ first: EntrySchema, sec
5162
5176
  var EntryMergeRequestSchema = exports_external.object({
5163
5177
  matter_id: MatterIdSchema.nullable().optional(),
5164
5178
  with: EntryIdSchema.optional(),
5165
- with_all: exports_external.array(EntryIdSchema).min(1).max(49).optional(),
5179
+ with_all: exports_external.array(EntryIdSchema).min(1).optional(),
5166
5180
  narrative: ConfirmedNarrativeSchema,
5167
5181
  attributes: EntryAttributesSchema
5168
5182
  }).superRefine((body, ctx) => {
@@ -5453,6 +5467,20 @@ var TELEMETRY_EVENT_PROPERTIES = {
5453
5467
  trigger: exports_external.enum(["press", "backstop"]),
5454
5468
  step: exports_external.enum(["decide", "join", "narrative", "write"])
5455
5469
  }),
5470
+ "entry.proposed": exports_external.object({
5471
+ ranges: Whole,
5472
+ intervals: Whole,
5473
+ how: exports_external.enum(["chosen", "most", "tie", "none"]),
5474
+ tie_called: exports_external.boolean(),
5475
+ attribute_calls: Whole,
5476
+ kept: exports_external.enum(["no_text", "not_signed_in", "refused", "offline"]),
5477
+ profile_ms: Whole,
5478
+ read_ms: Whole,
5479
+ matter_ms: Whole,
5480
+ attributes_ms: Whole,
5481
+ narrative_ms: Whole,
5482
+ total_ms: Whole
5483
+ }),
5456
5484
  "application.opened": exports_external.object({
5457
5485
  trigger: exports_external.enum(["launch", "login_item", "after_update", "tray"]),
5458
5486
  is_first_open: exports_external.boolean()
@@ -6266,35 +6294,30 @@ var LocalTimelineQuerySchema = exports_external.object({
6266
6294
  zoom: ZoomSchema.default("day")
6267
6295
  });
6268
6296
  var LocalAcceptedSchema = exports_external.object({ accepted: exports_external.literal(true) });
6269
- var LocalProposeKeptReasonSchema = exports_external.enum(["no_cells", "not_signed_in", "refused", "offline"]);
6270
- var LocalProposeRequestSchema = exports_external.discriminatedUnion("kind", [
6271
- exports_external.object({ kind: exports_external.literal("split"), id: EntryIdSchema, at: TimestampSchema }),
6272
- exports_external.object({ kind: exports_external.literal("merge"), entries: exports_external.array(EntryIdSchema).min(2).max(50) })
6273
- ]).superRefine((ask, ctx) => {
6274
- if (ask.kind === "merge" && new Set(ask.entries).size !== ask.entries.length) {
6275
- ctx.addIssue({
6276
- code: exports_external.ZodIssueCode.custom,
6277
- path: ["entries"],
6278
- message: "a merge joins different rows: an id is in `entries` twice"
6279
- });
6280
- }
6297
+ var LocalProposeRangeSchema = exports_external.object({ from: TimestampSchema, to: TimestampSchema, matter_id: MatterIdSchema.optional() }).refine((range) => Date.parse(range.from) < Date.parse(range.to), {
6298
+ path: ["to"],
6299
+ message: "a range ends after it starts"
6300
+ });
6301
+ var LocalProposeRangesRequestSchema = exports_external.object({
6302
+ ranges: exports_external.array(LocalProposeRangeSchema).min(1).max(2)
6303
+ });
6304
+ var LocalProposeHowSchema = exports_external.enum(["chosen", "most", "tie", "none"]);
6305
+ var LocalProposeRangesKeptReasonSchema = exports_external.enum(["no_text", "not_signed_in", "refused", "offline"]);
6306
+ var LocalRangeProposalSchema = exports_external.object({
6307
+ matter_id: MatterIdSchema.nullable(),
6308
+ how: LocalProposeHowSchema,
6309
+ narrative: exports_external.string(),
6310
+ attributes: EntryAttributesSchema
6281
6311
  });
6282
- var LocalProposeResponseSchema = exports_external.object({
6283
- proposals: exports_external.array(exports_external.object({ narrative: exports_external.string(), attributes: EntryAttributesSchema })).max(2),
6284
- kept: LocalProposeKeptReasonSchema.nullable()
6312
+ var LocalProposeRangesResponseSchema = exports_external.object({
6313
+ proposals: exports_external.array(LocalRangeProposalSchema.nullable()).max(2),
6314
+ kept: LocalProposeRangesKeptReasonSchema.nullable()
6285
6315
  }).superRefine((answer, ctx) => {
6286
- if (answer.proposals.length > 0 && answer.kept !== null) {
6287
- ctx.addIssue({
6288
- code: exports_external.ZodIssueCode.custom,
6289
- path: ["kept"],
6290
- message: "words were proposed, so nothing was kept: `kept` is null beside a proposal"
6291
- });
6292
- }
6293
- if (answer.proposals.length === 0 && answer.kept === null) {
6316
+ if (answer.kept === null ? !answer.proposals.some((one) => one !== null) : answer.proposals.length > 0) {
6294
6317
  ctx.addIssue({
6295
6318
  code: exports_external.ZodIssueCode.custom,
6296
6319
  path: ["kept"],
6297
- message: "nothing was proposed, so the answer says why: one of the four reasons"
6320
+ message: "an answer carries at least one proposal with `kept` null, or no proposal and one of the four reasons"
6298
6321
  });
6299
6322
  }
6300
6323
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unisonlabs/sixminute-admin",
3
- "version": "0.1.1175-next",
3
+ "version": "0.1.1176-next",
4
4
  "description": "Sixminute operator tool: the admin commands of the Sixminute API, run with your own operator sign-in.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {