@robbeverhelst/do 1.20.10 → 1.21.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 (2) hide show
  1. package/dist/do.js +104 -16
  2. package/package.json +1 -1
package/dist/do.js CHANGED
@@ -4202,6 +4202,26 @@ var nodes = pgTable("nodes", {
4202
4202
  index("nodes_tenant_type_idx").on(t.tenantId, t.type),
4203
4203
  index("nodes_parent_idx").on(t.parentId)
4204
4204
  ]);
4205
+ // ../../packages/schema/src/db/areas.ts
4206
+ var areaColor = pgEnum("area_color", [
4207
+ "teal",
4208
+ "purple",
4209
+ "amber",
4210
+ "rose",
4211
+ "blue",
4212
+ "green",
4213
+ "red",
4214
+ "slate"
4215
+ ]);
4216
+ var reviewCadence = pgEnum("review_cadence", ["weekly", "monthly", "quarterly"]);
4217
+ var areas = pgTable("areas", {
4218
+ id: text("id").primaryKey().references(() => nodes.id),
4219
+ tenantId: text("tenant_id").notNull().references(() => tenants.id),
4220
+ color: areaColor("color").notNull().default("teal"),
4221
+ icon: text("icon"),
4222
+ reviewCadence: reviewCadence("review_cadence")
4223
+ }, (t) => [index("areas_tenant_idx").on(t.tenantId)]);
4224
+
4205
4225
  // ../../packages/schema/src/db/core.ts
4206
4226
  var routineKind = pgEnum("routine_kind", ["sequence", "time_blocked"]);
4207
4227
  var projectStatus = pgEnum("project_status", [
@@ -4229,8 +4249,12 @@ var routines = pgTable("routines", {
4229
4249
  tenantId: text("tenant_id").notNull().references(() => tenants.id),
4230
4250
  kind: routineKind("kind").notNull().default("sequence"),
4231
4251
  notes: text("notes"),
4232
- recurrenceRuleId: text("recurrence_rule_id").references(() => recurrenceRules.id)
4233
- }, (t) => [index("routines_tenant_idx").on(t.tenantId)]);
4252
+ recurrenceRuleId: text("recurrence_rule_id").references(() => recurrenceRules.id),
4253
+ areaId: text("area_id").references(() => areas.id)
4254
+ }, (t) => [
4255
+ index("routines_tenant_idx").on(t.tenantId),
4256
+ index("routines_tenant_area_idx").on(t.tenantId, t.areaId)
4257
+ ]);
4234
4258
  var routineSteps = pgTable("routine_steps", {
4235
4259
  id: text("id").primaryKey(),
4236
4260
  tenantId: text("tenant_id").notNull().references(() => tenants.id),
@@ -4270,8 +4294,12 @@ var projects = pgTable("projects", {
4270
4294
  progress: integer("progress").notNull().default(0),
4271
4295
  notes: text("notes"),
4272
4296
  startAt: timestamp("start_at", { withTimezone: true }),
4273
- dueAt: timestamp("due_at", { withTimezone: true })
4274
- }, (t) => [index("projects_tenant_idx").on(t.tenantId)]);
4297
+ dueAt: timestamp("due_at", { withTimezone: true }),
4298
+ areaId: text("area_id").references(() => areas.id)
4299
+ }, (t) => [
4300
+ index("projects_tenant_idx").on(t.tenantId),
4301
+ index("projects_tenant_area_idx").on(t.tenantId, t.areaId)
4302
+ ]);
4275
4303
  var projectMilestones = pgTable("project_milestones", {
4276
4304
  id: text("id").primaryKey(),
4277
4305
  tenantId: text("tenant_id").notNull().references(() => tenants.id),
@@ -4293,7 +4321,7 @@ var userSettings = pgTable("user_settings", {
4293
4321
  theme: settingsTheme("theme").notNull().default("system"),
4294
4322
  density: settingsDensity("density").notNull().default("comfortable"),
4295
4323
  accent: settingsAccent("accent").notNull().default("teal"),
4296
- enabledAreas: text("enabled_areas").array().notNull().default([]),
4324
+ enabledModules: text("enabled_modules").array().notNull().default([]),
4297
4325
  createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
4298
4326
  updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow()
4299
4327
  }, (t) => [unique("user_settings_tenant_user_uniq").on(t.tenantId, t.userId)]);
@@ -4331,9 +4359,11 @@ var tasks = pgTable("tasks", {
4331
4359
  durationMinutes: integer("duration_minutes"),
4332
4360
  tags: text("tags").array().notNull().default([]),
4333
4361
  recurrenceRuleId: text("recurrence_rule_id").references(() => recurrenceRules.id),
4334
- projectId: text("project_id").references(() => projects.id)
4362
+ projectId: text("project_id").references(() => projects.id),
4363
+ areaId: text("area_id").references(() => areas.id)
4335
4364
  }, (t) => [
4336
4365
  index("tasks_tenant_project_idx").on(t.tenantId, t.projectId),
4366
+ index("tasks_tenant_area_idx").on(t.tenantId, t.areaId),
4337
4367
  index("tasks_tenant_status_idx").on(t.tenantId, t.status),
4338
4368
  index("tasks_tenant_scheduled_idx").on(t.tenantId, t.scheduledAt),
4339
4369
  index("tasks_tenant_due_idx").on(t.tenantId, t.dueAt)
@@ -4346,8 +4376,12 @@ var habits = pgTable("habits", {
4346
4376
  targetUnit: text("target_unit"),
4347
4377
  period: habitPeriod("period").notNull().default("day"),
4348
4378
  frequencyCount: integer("frequency_count").notNull().default(1),
4349
- recurrenceRuleId: text("recurrence_rule_id").references(() => recurrenceRules.id)
4350
- }, (t) => [index("habits_tenant_idx").on(t.tenantId)]);
4379
+ recurrenceRuleId: text("recurrence_rule_id").references(() => recurrenceRules.id),
4380
+ areaId: text("area_id").references(() => areas.id)
4381
+ }, (t) => [
4382
+ index("habits_tenant_idx").on(t.tenantId),
4383
+ index("habits_tenant_area_idx").on(t.tenantId, t.areaId)
4384
+ ]);
4351
4385
  var habitEntries = pgTable("habit_entries", {
4352
4386
  id: text("id").primaryKey(),
4353
4387
  tenantId: text("tenant_id").notNull().references(() => tenants.id),
@@ -19513,6 +19547,8 @@ var taskViewSchema = taskSchema.extend({
19513
19547
  deletedAt: exports_external.coerce.date().nullable()
19514
19548
  });
19515
19549
  var taskProjectIdSchema = ulidSchema.nullish();
19550
+ var taskAreaIdSchema = ulidSchema.nullish();
19551
+ var taskAreaNameSchema = exports_external.string().trim().min(1).nullish();
19516
19552
  var createTaskInputSchema = exports_external.object({
19517
19553
  id: ulidSchema,
19518
19554
  title: exports_external.string().min(1),
@@ -19526,7 +19562,9 @@ var createTaskInputSchema = exports_external.object({
19526
19562
  dueAt: exports_external.coerce.date().nullish(),
19527
19563
  durationMinutes: exports_external.number().int().positive().nullish(),
19528
19564
  tags: exports_external.array(exports_external.string()).optional(),
19529
- projectId: taskProjectIdSchema
19565
+ projectId: taskProjectIdSchema,
19566
+ areaId: taskAreaIdSchema,
19567
+ areaName: taskAreaNameSchema
19530
19568
  });
19531
19569
  var updateTaskInputSchema = exports_external.object({
19532
19570
  title: exports_external.string().min(1).optional(),
@@ -19540,7 +19578,8 @@ var updateTaskInputSchema = exports_external.object({
19540
19578
  dueAt: exports_external.coerce.date().nullish(),
19541
19579
  durationMinutes: exports_external.number().int().positive().nullish(),
19542
19580
  tags: exports_external.array(exports_external.string()).optional(),
19543
- projectId: taskProjectIdSchema
19581
+ projectId: taskProjectIdSchema,
19582
+ areaId: taskAreaIdSchema
19544
19583
  }).strict();
19545
19584
  var taskListFilterSchema = exports_external.enum(["all", "unsorted"]);
19546
19585
  // ../../packages/schema/src/contracts/habits.ts
@@ -19563,14 +19602,16 @@ var createHabitInputSchema = exports_external.object({
19563
19602
  targetValue: exports_external.number().nonnegative().nullish(),
19564
19603
  targetUnit: exports_external.string().min(1).nullish(),
19565
19604
  period: habitPeriodSchema.default("day"),
19566
- frequencyCount: exports_external.number().int().positive().default(1)
19605
+ frequencyCount: exports_external.number().int().positive().default(1),
19606
+ areaId: ulidSchema.nullish()
19567
19607
  });
19568
19608
  var updateHabitInputSchema = exports_external.object({
19569
19609
  title: exports_external.string().min(1),
19570
19610
  targetValue: exports_external.number().nonnegative().nullable(),
19571
19611
  targetUnit: exports_external.string().min(1).nullable(),
19572
19612
  period: habitPeriodSchema,
19573
- frequencyCount: exports_external.number().int().positive()
19613
+ frequencyCount: exports_external.number().int().positive(),
19614
+ areaId: ulidSchema.nullish()
19574
19615
  }).partial();
19575
19616
  var createHabitEntryInputSchema = exports_external.object({
19576
19617
  id: ulidSchema,
@@ -19664,6 +19705,7 @@ var createRoutineInputSchema = exports_external.object({
19664
19705
  parentId: ulidSchema.nullish(),
19665
19706
  kind: routineKindSchema.optional(),
19666
19707
  notes: exports_external.string().nullish(),
19708
+ areaId: ulidSchema.nullish(),
19667
19709
  steps: exports_external.array(routineStepInputSchema).optional()
19668
19710
  });
19669
19711
  var updateRoutineInputSchema = exports_external.object({
@@ -19671,6 +19713,7 @@ var updateRoutineInputSchema = exports_external.object({
19671
19713
  parentId: ulidSchema.nullish(),
19672
19714
  kind: routineKindSchema.optional(),
19673
19715
  notes: exports_external.string().nullish(),
19716
+ areaId: ulidSchema.nullish(),
19674
19717
  steps: exports_external.array(routineStepInputSchema).optional()
19675
19718
  }).strict();
19676
19719
  var routineViewSchema = routineSchema.extend({
@@ -19735,6 +19778,7 @@ var createProjectInputSchema = exports_external.object({
19735
19778
  notes: exports_external.string().nullish(),
19736
19779
  startAt: exports_external.coerce.date().nullish(),
19737
19780
  dueAt: exports_external.coerce.date().nullish(),
19781
+ areaId: ulidSchema.nullish(),
19738
19782
  milestones: exports_external.array(projectMilestoneInputSchema).optional()
19739
19783
  });
19740
19784
  var updateProjectInputSchema = exports_external.object({
@@ -19745,6 +19789,7 @@ var updateProjectInputSchema = exports_external.object({
19745
19789
  notes: exports_external.string().nullish(),
19746
19790
  startAt: exports_external.coerce.date().nullish(),
19747
19791
  dueAt: exports_external.coerce.date().nullish(),
19792
+ areaId: ulidSchema.nullish(),
19748
19793
  milestones: exports_external.array(projectMilestoneInputSchema).optional()
19749
19794
  }).strict();
19750
19795
  var projectViewSchema = projectSchema.extend({
@@ -19763,6 +19808,40 @@ var projectDetailSchema = projectViewSchema.extend({
19763
19808
  tasks: exports_external.array(taskViewSchema)
19764
19809
  });
19765
19810
  var attachTaskInputSchema = exports_external.object({ taskId: ulidSchema });
19811
+ // ../../packages/schema/src/contracts/areas.ts
19812
+ var areaColorSchema = exports_external.enum(areaColor.enumValues);
19813
+ var reviewCadenceSchema = exports_external.enum(reviewCadence.enumValues);
19814
+ var areaSchema = createSelectSchema(areas);
19815
+ var areaIconSchema = exports_external.string().trim().min(1).max(64);
19816
+ var createAreaInputSchema = exports_external.object({
19817
+ id: ulidSchema,
19818
+ title: exports_external.string().min(1),
19819
+ color: areaColorSchema.optional(),
19820
+ icon: areaIconSchema.nullish(),
19821
+ reviewCadence: reviewCadenceSchema.nullish()
19822
+ });
19823
+ var updateAreaInputSchema = exports_external.object({
19824
+ title: exports_external.string().min(1).optional(),
19825
+ color: areaColorSchema.optional(),
19826
+ icon: areaIconSchema.nullish(),
19827
+ reviewCadence: reviewCadenceSchema.nullish()
19828
+ }).strict();
19829
+ var areaViewSchema = areaSchema.extend({
19830
+ title: exports_external.string(),
19831
+ createdAt: exports_external.coerce.date(),
19832
+ updatedAt: exports_external.coerce.date(),
19833
+ deletedAt: exports_external.coerce.date().nullable(),
19834
+ projectCount: exports_external.number().int().min(0),
19835
+ taskCount: exports_external.number().int().min(0),
19836
+ habitCount: exports_external.number().int().min(0),
19837
+ routineCount: exports_external.number().int().min(0)
19838
+ });
19839
+ var areaDetailSchema = areaViewSchema.extend({
19840
+ projects: exports_external.array(projectViewSchema),
19841
+ habits: exports_external.array(habitSummarySchema),
19842
+ routines: exports_external.array(routineViewSchema),
19843
+ tasks: exports_external.array(taskViewSchema)
19844
+ });
19766
19845
  // ../../packages/schema/src/contracts/settings.ts
19767
19846
  var settingsThemeSchema = exports_external.enum(settingsTheme.enumValues);
19768
19847
  var settingsDensitySchema = exports_external.enum(settingsDensity.enumValues);
@@ -19779,7 +19858,7 @@ var updateUserSettingsInputSchema = exports_external.object({
19779
19858
  theme: settingsThemeSchema.optional(),
19780
19859
  density: settingsDensitySchema.optional(),
19781
19860
  accent: settingsAccentSchema.optional(),
19782
- enabledAreas: exports_external.array(exports_external.string().trim().min(1)).optional()
19861
+ enabledModules: exports_external.array(exports_external.string().trim().min(1)).optional()
19783
19862
  }).strict();
19784
19863
  // ../../packages/schema/src/contracts/notifications.ts
19785
19864
  var notificationTypeSchema = exports_external.enum(["task_due", "occurrence_due"]);
@@ -20827,6 +20906,7 @@ var insightsOverviewSchema = exports_external.object({
20827
20906
  // ../../packages/schema/src/capture.ts
20828
20907
  var TAG_RE = /(?:^|\s)#([\p{L}\p{N}][\p{L}\p{N}_-]*)/gu;
20829
20908
  var PRIORITY_RE = /(?:^|\s)!([\p{L}]+)/gu;
20909
+ var AREA_RE = /(?:^|\s)~([\p{L}\p{N}][\p{L}\p{N}_-]*)/gu;
20830
20910
  var PRIORITY_ALIASES = {
20831
20911
  none: "none",
20832
20912
  n: "none",
@@ -20853,8 +20933,16 @@ function parseCapture(input) {
20853
20933
  if (mapped)
20854
20934
  priority = mapped;
20855
20935
  }
20856
- const title = input.replace(TAG_RE, " ").replace(PRIORITY_RE, " ").replace(/\s+/g, " ").trim();
20857
- return { title, tags, ...priority ? { priority } : {} };
20936
+ let area;
20937
+ for (const match of input.matchAll(AREA_RE)) {
20938
+ const token = match[1]?.toLowerCase();
20939
+ if (token) {
20940
+ area = token;
20941
+ break;
20942
+ }
20943
+ }
20944
+ const title = input.replace(TAG_RE, " ").replace(PRIORITY_RE, " ").replace(AREA_RE, " ").replace(/\s+/g, " ").trim();
20945
+ return { title, tags, ...priority ? { priority } : {}, ...area ? { area } : {} };
20858
20946
  }
20859
20947
  // ../../node_modules/.bun/ulidx@2.4.1/node_modules/ulidx/dist/node/index.js
20860
20948
  import crypto from "crypto";
@@ -21108,7 +21196,7 @@ function parseCapture2(input) {
21108
21196
 
21109
21197
  // src/meta.ts
21110
21198
  var CLI_NAME = "do";
21111
- var VERSION = "1.20.10";
21199
+ var VERSION = "1.21.0";
21112
21200
  var API_PREFIX = "/api/v1";
21113
21201
  var DEFAULT_API_URL = "http://localhost:3001";
21114
21202
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robbeverhelst/do",
3
- "version": "1.20.10",
3
+ "version": "1.21.0",
4
4
  "private": false,
5
5
  "description": "do — the agent-drivable CLI over the public /api/v1 surface",
6
6
  "type": "module",