@robbeverhelst/do 1.73.0 → 1.74.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 +45 -31
  2. package/package.json +1 -1
package/dist/do.js CHANGED
@@ -4987,6 +4987,7 @@ var automationRuns = pgTable("automation_runs", {
4987
4987
  ]);
4988
4988
  // ../../packages/schema/src/db/challenges.ts
4989
4989
  var challengeSource = pgEnum("challenge_source", ["self", "system"]);
4990
+ var challengeSubjectType = pgEnum("challenge_subject_type", ["habit", "area", "tag"]);
4990
4991
  var challenges = pgTable("challenges", {
4991
4992
  id: text("id").primaryKey(),
4992
4993
  tenantId: text("tenant_id").notNull().references(() => tenants.id, { onDelete: "cascade" }),
@@ -4994,6 +4995,8 @@ var challenges = pgTable("challenges", {
4994
4995
  description: text("description"),
4995
4996
  source: challengeSource("source").notNull().default("self"),
4996
4997
  metric: text("metric").notNull(),
4998
+ subjectType: challengeSubjectType("subject_type"),
4999
+ subjectId: text("subject_id"),
4997
5000
  target: integer("target").notNull(),
4998
5001
  startAt: timestamp("start_at", { withTimezone: true }).notNull(),
4999
5002
  endAt: timestamp("end_at", { withTimezone: true }).notNull(),
@@ -5002,7 +5005,9 @@ var challenges = pgTable("challenges", {
5002
5005
  updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow()
5003
5006
  }, (t) => [
5004
5007
  index("challenges_tenant_idx").on(t.tenantId),
5005
- index("challenges_tenant_window_idx").on(t.tenantId, t.startAt, t.endAt)
5008
+ index("challenges_tenant_window_idx").on(t.tenantId, t.startAt, t.endAt),
5009
+ index("challenges_tenant_subject_idx").on(t.tenantId, t.subjectType, t.subjectId),
5010
+ check("challenges_subject_pair_chk", sql`(${t.subjectType} IS NULL) = (${t.subjectId} IS NULL)`)
5006
5011
  ]);
5007
5012
  var challengeParticipants = pgTable("challenge_participants", {
5008
5013
  id: text("id").primaryKey(),
@@ -19733,6 +19738,7 @@ var connectionStatusSchema = exports_external.enum(connectionStatus.enumValues);
19733
19738
  var importantDateKindSchema = exports_external.enum(importantDateKind.enumValues);
19734
19739
  var mealTypeSchema = exports_external.enum(mealType.enumValues);
19735
19740
  var challengeSourceSchema = exports_external.enum(challengeSource.enumValues);
19741
+ var challengeSubjectTypeSchema = exports_external.enum(challengeSubjectType.enumValues);
19736
19742
  var automationRunStatusSchema = exports_external.enum(automationRunStatus.enumValues);
19737
19743
  var notificationTypeSchema = exports_external.enum(notificationType.enumValues);
19738
19744
  // ../../packages/schema/src/contracts/barcode.ts
@@ -20101,6 +20107,33 @@ var projectDetailSchema = projectViewSchema.extend({
20101
20107
  tasks: exports_external.array(taskViewSchema)
20102
20108
  });
20103
20109
  var attachTaskInputSchema = exports_external.object({ taskId: ulidSchema });
20110
+ // ../../packages/schema/src/contracts/notes.ts
20111
+ var noteSchema = createSelectSchema(notes);
20112
+ var createNoteInputSchema = createInsertSchema(notes, {
20113
+ id: ulidSchema,
20114
+ areaId: ulidSchema.nullish(),
20115
+ body: exports_external.string().nullish(),
20116
+ tags: exports_external.array(exports_external.string()).optional()
20117
+ }).omit({ tenantId: true }).extend({
20118
+ title: exports_external.string().min(1),
20119
+ parentId: ulidSchema.nullish()
20120
+ });
20121
+ var updateNoteInputSchema = createUpdateSchema(notes, {
20122
+ areaId: ulidSchema.nullish(),
20123
+ body: exports_external.string().nullish(),
20124
+ tags: exports_external.array(exports_external.string()).optional()
20125
+ }).omit({ id: true, tenantId: true }).extend({
20126
+ title: exports_external.string().min(1).optional(),
20127
+ parentId: ulidSchema.nullish()
20128
+ }).strict();
20129
+ var noteViewSchema = noteSchema.extend({
20130
+ title: exports_external.string(),
20131
+ parentId: ulidSchema.nullable(),
20132
+ createdAt: exports_external.coerce.date(),
20133
+ updatedAt: exports_external.coerce.date(),
20134
+ deletedAt: exports_external.coerce.date().nullable()
20135
+ });
20136
+
20104
20137
  // ../../packages/schema/src/contracts/areas.ts
20105
20138
  var areaSchema = createSelectSchema(areas);
20106
20139
  var areaIconSchema = exports_external.string().trim().min(1).max(64);
@@ -20125,7 +20158,8 @@ var areaDetailSchema = areaViewSchema.extend({
20125
20158
  projects: exports_external.array(projectViewSchema),
20126
20159
  habits: exports_external.array(habitSummarySchema),
20127
20160
  routines: exports_external.array(routineViewSchema),
20128
- tasks: exports_external.array(taskViewSchema)
20161
+ tasks: exports_external.array(taskViewSchema),
20162
+ notes: exports_external.array(noteViewSchema)
20129
20163
  });
20130
20164
  // ../../packages/schema/src/contracts/modules.ts
20131
20165
  var MODULE_KEYS = [
@@ -20790,32 +20824,6 @@ var mealPlanCookResultSchema = exports_external.object({
20790
20824
  consumedCount: exports_external.number().int().min(0),
20791
20825
  ingredients: exports_external.array(cookedIngredientSchema)
20792
20826
  });
20793
- // ../../packages/schema/src/contracts/notes.ts
20794
- var noteSchema = createSelectSchema(notes);
20795
- var createNoteInputSchema = createInsertSchema(notes, {
20796
- id: ulidSchema,
20797
- areaId: ulidSchema.nullish(),
20798
- body: exports_external.string().nullish(),
20799
- tags: exports_external.array(exports_external.string()).optional()
20800
- }).omit({ tenantId: true }).extend({
20801
- title: exports_external.string().min(1),
20802
- parentId: ulidSchema.nullish()
20803
- });
20804
- var updateNoteInputSchema = createUpdateSchema(notes, {
20805
- areaId: ulidSchema.nullish(),
20806
- body: exports_external.string().nullish(),
20807
- tags: exports_external.array(exports_external.string()).optional()
20808
- }).omit({ id: true, tenantId: true }).extend({
20809
- title: exports_external.string().min(1).optional(),
20810
- parentId: ulidSchema.nullish()
20811
- }).strict();
20812
- var noteViewSchema = noteSchema.extend({
20813
- title: exports_external.string(),
20814
- parentId: ulidSchema.nullable(),
20815
- createdAt: exports_external.coerce.date(),
20816
- updatedAt: exports_external.coerce.date(),
20817
- deletedAt: exports_external.coerce.date().nullable()
20818
- });
20819
20827
  // ../../packages/schema/src/contracts/node-links.ts
20820
20828
  var nodeLinkSchema = createSelectSchema(nodeLinks);
20821
20829
  var nodeLinkKindSchema = exports_external.enum(["ref", "embed"]);
@@ -21734,10 +21742,15 @@ var createChallengeInputSchema = createInsertSchema(challenges, {
21734
21742
  metric: exports_external.string().min(1),
21735
21743
  target: exports_external.number().int().positive(),
21736
21744
  startAt: exports_external.coerce.date(),
21737
- endAt: exports_external.coerce.date()
21745
+ endAt: exports_external.coerce.date(),
21746
+ subjectType: challengeSubjectTypeSchema.nullish(),
21747
+ subjectId: exports_external.string().min(1).nullish()
21738
21748
  }).omit({ tenantId: true, source: true, createdBy: true, createdAt: true, updatedAt: true }).strict().refine((v) => v.endAt > v.startAt, {
21739
21749
  message: "endAt must be after startAt",
21740
21750
  path: ["endAt"]
21751
+ }).refine((v) => v.subjectType == null === (v.subjectId == null), {
21752
+ message: "subjectType and subjectId must be set together",
21753
+ path: ["subjectId"]
21741
21754
  });
21742
21755
  var joinChallengeInputSchema = exports_external.object({ id: ulidSchema }).strict();
21743
21756
  var challengeViewSchema = challengeSchema.extend({
@@ -21745,7 +21758,8 @@ var challengeViewSchema = challengeSchema.extend({
21745
21758
  joined: exports_external.boolean(),
21746
21759
  progress: exports_external.number().int().nonnegative(),
21747
21760
  status: challengeStatusSchema,
21748
- completed: exports_external.boolean()
21761
+ completed: exports_external.boolean(),
21762
+ subjectTitle: exports_external.string().nullable()
21749
21763
  });
21750
21764
  var challengeLeaderboardEntrySchema = exports_external.object({
21751
21765
  userId: ulidSchema,
@@ -24356,7 +24370,7 @@ function parseCapture2(input, now) {
24356
24370
 
24357
24371
  // src/meta.ts
24358
24372
  var CLI_NAME = "do";
24359
- var VERSION = "1.73.0";
24373
+ var VERSION = "1.74.0";
24360
24374
  var API_PREFIX = "/api/v1";
24361
24375
  var DEFAULT_API_URL = "http://localhost:3001";
24362
24376
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robbeverhelst/do",
3
- "version": "1.73.0",
3
+ "version": "1.74.0",
4
4
  "private": false,
5
5
  "description": "do — the agent-drivable CLI over the public /api/v1 surface",
6
6
  "type": "module",