@unisonlabs/sixminute-admin 0.1.1168 → 0.1.1169-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.1168", commit: "64467c1dd59e9dca407c488471e4a2186c70f45a", surface: "481c62497e7a2c35" };
24
+ var BUILT = { version: "0.1.1169-next", commit: "e6c68d90ce580b150a2840b87cd34ec1b641e06b", surface: "481c62497e7a2c35" };
25
25
 
26
26
  // tools/admin/src/run.ts
27
27
  import { rmSync as rmSync3 } from "node:fs";
@@ -4815,18 +4815,27 @@ function refineInterval(interval, ctx) {
4815
4815
  }
4816
4816
  });
4817
4817
  }
4818
+ var ACTIVITY_LABEL_MAX_CHARS = 60;
4819
+ var INTERVAL_SUMMARY_MAX_CHARS = 240;
4820
+ var IntervalActivitySchema = exports_external.object({
4821
+ key: exports_external.string().min(1).max(64),
4822
+ label: exports_external.string().trim().min(1).max(ACTIVITY_LABEL_MAX_CHARS).nullable()
4823
+ });
4818
4824
  var IntervalSchema = exports_external.object({
4819
4825
  t_start: TimestampSchema,
4820
4826
  t_end: TimestampSchema,
4821
4827
  evidence: exports_external.array(EvidenceItemSchema),
4822
4828
  text: exports_external.string().nullable(),
4823
- summary: exports_external.string().trim().min(1).max(240).nullable().default(null)
4829
+ summary: exports_external.string().trim().min(1).max(INTERVAL_SUMMARY_MAX_CHARS).nullable().default(null),
4830
+ activity: IntervalActivitySchema.nullable().default(null),
4831
+ stripped: exports_external.boolean().optional()
4824
4832
  }).superRefine(refineInterval);
4825
4833
  var DayIntervalSchema = exports_external.object({
4826
4834
  t_start: TimestampSchema,
4827
4835
  t_end: TimestampSchema,
4828
4836
  evidence: exports_external.array(EvidenceItemSchema),
4829
- summary: exports_external.string().nullable()
4837
+ summary: exports_external.string().nullable(),
4838
+ activity: IntervalActivitySchema.nullable().default(null)
4830
4839
  }).superRefine(refineInterval);
4831
4840
  var IntervalTextItemSchema = exports_external.object({
4832
4841
  t_start: TimestampSchema,
@@ -4977,7 +4986,8 @@ var MeSchema = exports_external.object({
4977
4986
  }),
4978
4987
  permissions: exports_external.array(exports_external.string()).default([]),
4979
4988
  judgment_pipeline: JudgmentPipelineSchema.default("standard"),
4980
- legalsense_connector: exports_external.boolean().default(false)
4989
+ legalsense_connector: exports_external.boolean().default(false),
4990
+ swallow_short_pauses: exports_external.boolean().optional()
4981
4991
  });
4982
4992
  var ProvisionResultSchema = MeSchema.extend({
4983
4993
  action: exports_external.enum(["ready", "refresh"]).default("ready")
@@ -5207,6 +5217,33 @@ var EntryBatchResultSchema = exports_external.object({
5207
5217
  reason: exports_external.string().min(1).optional()
5208
5218
  }))
5209
5219
  });
5220
+ function knownZone(zone) {
5221
+ try {
5222
+ new Intl.DateTimeFormat("en-GB", { timeZone: zone });
5223
+ return true;
5224
+ } catch {
5225
+ return false;
5226
+ }
5227
+ }
5228
+ var IntervalBatchSchema = exports_external.object({
5229
+ device_id: DeviceIdSchema,
5230
+ intervals: exports_external.array(IntervalSchema).min(1).max(500),
5231
+ time_zone: exports_external.string().min(1).refine(knownZone, "expected an IANA time zone").nullable().default(null)
5232
+ }).superRefine((batch, ctx) => {
5233
+ batch.intervals.forEach((interval, index) => {
5234
+ const previous = batch.intervals[index - 1];
5235
+ if (previous !== undefined && interval.t_start < previous.t_end) {
5236
+ ctx.addIssue({
5237
+ code: exports_external.ZodIssueCode.custom,
5238
+ path: ["intervals", index],
5239
+ message: `the intervals are in time order and do not overlap: this one starts at ${interval.t_start}, before the one before it ends at ${previous.t_end}`
5240
+ });
5241
+ }
5242
+ });
5243
+ });
5244
+ var IntervalBatchResultSchema = exports_external.object({
5245
+ stored: exports_external.number().int().nonnegative()
5246
+ });
5210
5247
  var CoverageSourceSchema = exports_external.string().regex(/^[a-z_]{1,40}$/, "a coverage source is one lowercase word");
5211
5248
  var coverageItemFields = {
5212
5249
  id: CoverageIdSchema,
@@ -5282,13 +5319,19 @@ var CompletionPurposeSchema = exports_external.enum([
5282
5319
  "assign",
5283
5320
  "judge"
5284
5321
  ]);
5322
+ var CompletionDecisionSchema = exports_external.object({
5323
+ property: exports_external.string().min(1),
5324
+ choices: exports_external.array(exports_external.object({ value: exports_external.string().min(1), description: exports_external.string() })).max(1000)
5325
+ });
5285
5326
  var CompletionWireRequestSchema = exports_external.object({
5286
5327
  purpose: CompletionPurposeSchema,
5287
- upstream: exports_external.enum(["openai", "jev"]).optional(),
5328
+ upstream: exports_external.enum(["openai", "jev", "decisions"]).optional(),
5288
5329
  messages: exports_external.array(exports_external.object({ role: exports_external.enum(["system", "user"]), content: exports_external.string() })).min(1),
5289
5330
  schema: exports_external.object({ name: exports_external.string().min(1), schema: exports_external.record(exports_external.unknown()) }),
5290
5331
  model: exports_external.string().min(1).optional(),
5291
- max_output_tokens: exports_external.number().int().positive().optional()
5332
+ max_output_tokens: exports_external.number().int().positive().optional(),
5333
+ decision: CompletionDecisionSchema.optional(),
5334
+ sampling: exports_external.literal("pinned").optional()
5292
5335
  });
5293
5336
  var CompletionWireResponseSchema = exports_external.object({
5294
5337
  output: exports_external.unknown(),
@@ -5307,6 +5350,10 @@ var CompletionWireResponseSchema = exports_external.object({
5307
5350
  output_tokens: exports_external.number().int().nonnegative()
5308
5351
  })
5309
5352
  }).optional(),
5353
+ decision: exports_external.object({
5354
+ probabilities: exports_external.array(exports_external.object({ value: exports_external.string(), probability: exports_external.number().finite().min(0).max(1) })),
5355
+ confidence: exports_external.number().finite().min(0).max(1).nullable()
5356
+ }).optional(),
5310
5357
  usage: exports_external.object({
5311
5358
  prompt_tokens: exports_external.number().int().nonnegative(),
5312
5359
  completion_tokens: exports_external.number().int().nonnegative(),
@@ -5363,7 +5410,8 @@ var TELEMETRY_ENTRY_ID_MAX = 64;
5363
5410
  var TELEMETRY_EVENT_PROPERTIES = {
5364
5411
  "capture.started": exports_external.object({
5365
5412
  trigger: exports_external.enum(["button", "tray", "always_on", "launch", "sign_in"]),
5366
- is_always_on: exports_external.boolean()
5413
+ is_always_on: exports_external.boolean(),
5414
+ swallow_short_pauses: exports_external.boolean().optional()
5367
5415
  }),
5368
5416
  "capture.stopped": exports_external.object({
5369
5417
  trigger: exports_external.enum(["button", "tray", "quit", "update", "sign_out"]),
@@ -5382,12 +5430,29 @@ var TELEMETRY_EVENT_PROPERTIES = {
5382
5430
  "always_on",
5383
5431
  "launch_at_login",
5384
5432
  "theme",
5385
- "exclusions"
5433
+ "exclusions",
5434
+ "entry_size"
5386
5435
  ]),
5387
5436
  scope: exports_external.enum(["device"])
5388
5437
  }),
5389
5438
  "raw_archive.turned_on": exports_external.object({}),
5390
5439
  "raw_archive.turned_off": exports_external.object({}),
5440
+ "generate.started": exports_external.object({
5441
+ trigger: exports_external.enum(["press", "backstop"]),
5442
+ intervals: Whole,
5443
+ recordings: Whole
5444
+ }),
5445
+ "generate.finished": exports_external.object({
5446
+ trigger: exports_external.enum(["press", "backstop"]),
5447
+ entries: Whole,
5448
+ blocks_joined: Whole,
5449
+ seconds: Whole,
5450
+ calls: Whole
5451
+ }),
5452
+ "generate.failed": exports_external.object({
5453
+ trigger: exports_external.enum(["press", "backstop"]),
5454
+ step: exports_external.enum(["decide", "join", "narrative", "write"])
5455
+ }),
5391
5456
  "application.opened": exports_external.object({
5392
5457
  trigger: exports_external.enum(["launch", "login_item", "after_update", "tray"]),
5393
5458
  is_first_open: exports_external.boolean()
@@ -5427,6 +5492,7 @@ var TELEMETRY_EVENT_PROPERTIES = {
5427
5492
  entries: Whole,
5428
5493
  via: exports_external.enum(["row", "release_all", "palette", "entry_page", "selection", "shortcut", "menu"])
5429
5494
  }),
5495
+ "generate.clicked": exports_external.object({ layout: exports_external.enum(["timeline", "list"]) }),
5430
5496
  "onboarding.step_viewed": exports_external.object({ step: exports_external.enum(["capture", "entries", "permissions", "release"]) }),
5431
5497
  "onboarding.completed": exports_external.object({ seconds: Whole })
5432
5498
  };
@@ -5794,7 +5860,9 @@ var ClientOutdatedProblemSchema = ProblemSchema.extend({
5794
5860
  var ConfigVersionSchema = exports_external.string().regex(/^[0-9a-f]{12}$/, "expected a 12-character lower-case hex fingerprint");
5795
5861
  var ConfigModelsSchema = exports_external.object({
5796
5862
  label: exports_external.string().min(1),
5797
- write: exports_external.string().min(1)
5863
+ write: exports_external.string().min(1),
5864
+ decisions: exports_external.string().min(1).optional(),
5865
+ reask: exports_external.string().min(1).optional()
5798
5866
  });
5799
5867
  var JudgeTunablesSchema = exports_external.object({
5800
5868
  shortlistSize: exports_external.number(),
@@ -5808,7 +5876,14 @@ var JudgeTunablesSchema = exports_external.object({
5808
5876
  sampleIntervalSeconds: exports_external.number(),
5809
5877
  absentAfterMinutes: exports_external.number(),
5810
5878
  maxNarrativeChars: exports_external.number(),
5811
- judgeSamples: exports_external.number()
5879
+ judgeSamples: exports_external.number(),
5880
+ matterReaskBelow: exports_external.number().min(0).max(1).optional(),
5881
+ joinMore: exports_external.number().min(0).max(1).optional(),
5882
+ joinBalanced: exports_external.number().min(0).max(1).optional(),
5883
+ joinFewer: exports_external.number().min(0).max(1).optional(),
5884
+ joinDefault: exports_external.enum(["more", "balanced", "fewer"]).optional(),
5885
+ summaryMaxChars: exports_external.number().int().positive().optional(),
5886
+ summaryStatedChars: exports_external.number().int().positive().optional()
5812
5887
  });
5813
5888
  var ServedJudgeTunablesSchema = JudgeTunablesSchema.extend({
5814
5889
  windowMinutes: exports_external.number(),
@@ -5816,10 +5891,35 @@ var ServedJudgeTunablesSchema = JudgeTunablesSchema.extend({
5816
5891
  renderBudgetChars: exports_external.number(),
5817
5892
  activitySamples: exports_external.number()
5818
5893
  });
5894
+ function joinOrder(judge, context) {
5895
+ const given = ["joinMore", "joinBalanced", "joinFewer"].flatMap((name) => judge[name] === undefined ? [] : [{ name, value: judge[name] }]);
5896
+ for (let i = 1;i < given.length; i++) {
5897
+ const [low, high] = [given[i - 1], given[i]];
5898
+ if (low.value > high.value)
5899
+ context.addIssue({ code: exports_external.ZodIssueCode.custom, path: [high.name], message: `${high.name} is below ${low.name}` });
5900
+ }
5901
+ }
5902
+ var SummaryPromptPartsSchema = exports_external.object({
5903
+ guide: exports_external.string().min(1),
5904
+ work: exports_external.string().min(1),
5905
+ verb_work: exports_external.string().min(1),
5906
+ thing_free: exports_external.string().min(1),
5907
+ tool_object: exports_external.string().min(1),
5908
+ speech: exports_external.string().min(1),
5909
+ work_read: exports_external.string().min(1),
5910
+ work_plan: exports_external.string().min(1)
5911
+ });
5819
5912
  var ConfigPromptsSchema = exports_external.object({
5820
5913
  label: exports_external.string().min(1),
5821
5914
  activity: exports_external.string().min(1).optional(),
5822
- narrative: exports_external.string().min(1)
5915
+ narrative: exports_external.string().min(1),
5916
+ summary: SummaryPromptPartsSchema.optional(),
5917
+ matter: exports_external.string().min(1).optional(),
5918
+ matter_prior: exports_external.string().min(1).optional(),
5919
+ block_boundary: exports_external.string().min(1).optional(),
5920
+ block_label: exports_external.string().min(1).optional(),
5921
+ join: exports_external.string().min(1).optional(),
5922
+ narrative_blocks: exports_external.string().min(1).optional()
5823
5923
  });
5824
5924
  var ServedConfigPromptsSchema = ConfigPromptsSchema.extend({ activity: exports_external.string().min(1) });
5825
5925
  var PublishedActivityTypesSchema = exports_external.array(ActivityTypeSchema).min(1, "a bundle carries at least one activity type: it is what a firm with no list is judged from").superRefine((types2, ctx) => {
@@ -5845,12 +5945,12 @@ var ConfigBundleSchema = exports_external.object({
5845
5945
  version: ConfigVersionSchema,
5846
5946
  generated_at: TimestampSchema,
5847
5947
  models: ConfigModelsSchema,
5848
- judge: JudgeTunablesSchema,
5948
+ judge: JudgeTunablesSchema.superRefine(joinOrder),
5849
5949
  prompts: ConfigPromptsSchema,
5850
5950
  vocabularies: ConfigVocabulariesSchema
5851
5951
  });
5852
5952
  var ServedConfigBundleSchema = ConfigBundleSchema.extend({
5853
- judge: ServedJudgeTunablesSchema,
5953
+ judge: ServedJudgeTunablesSchema.superRefine(joinOrder),
5854
5954
  prompts: ServedConfigPromptsSchema,
5855
5955
  vocabularies: ServedConfigVocabulariesSchema
5856
5956
  });
@@ -6039,6 +6139,7 @@ var LocalAlwaysOnSchema = exports_external.object({
6039
6139
  enforced: exports_external.boolean()
6040
6140
  });
6041
6141
  var ALWAYS_ON_OFF = { on: false, enforced: false };
6142
+ var EntrySizeSchema = exports_external.enum(["fewer", "balanced", "more"]);
6042
6143
  var LocalSettingsSchema = exports_external.object({
6043
6144
  capture_enabled: exports_external.boolean(),
6044
6145
  excluded_bundles: exports_external.array(exports_external.string().min(1)),
@@ -6052,7 +6153,8 @@ var LocalSettingsSchema = exports_external.object({
6052
6153
  until: TimestampSchema.nullable(),
6053
6154
  folder: exports_external.string().min(1).nullable()
6054
6155
  }).default({ allowed: false, on: false, on_since: null, until: null, folder: null }),
6055
- always_on: LocalAlwaysOnSchema.default(ALWAYS_ON_OFF)
6156
+ always_on: LocalAlwaysOnSchema.default(ALWAYS_ON_OFF),
6157
+ entry_size: EntrySizeSchema.default("balanced")
6056
6158
  });
6057
6159
  var LocalSettingsPatchSchema = exports_external.object({
6058
6160
  capture_enabled: exports_external.boolean().optional(),
@@ -6061,6 +6163,7 @@ var LocalSettingsPatchSchema = exports_external.object({
6061
6163
  add_excluded_bundles: exports_external.array(exports_external.string().min(1)).optional(),
6062
6164
  add_excluded_sites: exports_external.array(SiteSchema).optional(),
6063
6165
  always_on: exports_external.boolean().optional(),
6166
+ entry_size: EntrySizeSchema.optional(),
6064
6167
  raw_archive: exports_external.object({
6065
6168
  on: exports_external.boolean(),
6066
6169
  reason: RawArchiveReasonSchema.extract(["refused", "disk_low"]).optional()
@@ -6114,10 +6217,18 @@ var LocalOpenRecordingSchema = exports_external.object({
6114
6217
  id: RecordingIdSchema,
6115
6218
  started_at: TimestampSchema
6116
6219
  });
6117
- var LocalFormingSchema = exports_external.object({
6220
+ var LocalSpanSchema = exports_external.object({
6118
6221
  from: TimestampSchema,
6119
6222
  to: TimestampSchema
6120
6223
  });
6224
+ var LocalGenerateSchema = exports_external.object({
6225
+ pending: LocalSpanSchema.nullable(),
6226
+ running: exports_external.boolean(),
6227
+ days: exports_external.array(LocalDaySchema).default([]),
6228
+ day: LocalDaySchema.optional()
6229
+ });
6230
+ var LocalGenerateRequestSchema = exports_external.object({ day: LocalDaySchema });
6231
+ var LocalGenerateStartedSchema = exports_external.object({ started: exports_external.boolean() });
6121
6232
  var LocalStatusSchema = exports_external.object({
6122
6233
  version: exports_external.string().min(1),
6123
6234
  started_at: TimestampSchema,
@@ -6134,7 +6245,8 @@ var LocalStatusSchema = exports_external.object({
6134
6245
  config_version: ConfigVersionSchema.nullable().default(null),
6135
6246
  api_url: exports_external.string().nullable().default(null),
6136
6247
  update_required: exports_external.boolean().optional(),
6137
- forming: LocalFormingSchema.nullable().default(null),
6248
+ deciding: LocalSpanSchema.nullable().default(null),
6249
+ generate: LocalGenerateSchema.default({ pending: null, running: false, days: [] }),
6138
6250
  always_on: LocalAlwaysOnSchema.default(ALWAYS_ON_OFF)
6139
6251
  });
6140
6252
  var LocalRecordingsSchema = exports_external.array(RecordingSchema);
@@ -6203,6 +6315,20 @@ var LocalEventSchema = exports_external.discriminatedUnion("type", [
6203
6315
  depth: exports_external.number().int().nonnegative(),
6204
6316
  refused: exports_external.number().int().nonnegative()
6205
6317
  }),
6318
+ exports_external.object({
6319
+ type: exports_external.literal("generate-progress"),
6320
+ step: exports_external.enum(["forming", "writing", "entry", "done", "failed"]),
6321
+ from: TimestampSchema.optional(),
6322
+ to: TimestampSchema.optional(),
6323
+ day: LocalDaySchema.optional()
6324
+ }),
6325
+ exports_external.object({
6326
+ type: exports_external.literal("interval-progress"),
6327
+ step: exports_external.enum(["deciding", "decided"]),
6328
+ from: TimestampSchema,
6329
+ to: TimestampSchema,
6330
+ day: LocalDaySchema
6331
+ }),
6206
6332
  exports_external.object({
6207
6333
  type: exports_external.literal("coverage-changed"),
6208
6334
  from_at: TimestampSchema,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unisonlabs/sixminute-admin",
3
- "version": "0.1.1168",
3
+ "version": "0.1.1169-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": {