@robbeverhelst/do 1.73.0 → 1.75.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 +60 -35
  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,
@@ -22152,11 +22166,14 @@ var filmFacetSchema = exports_external.object({
22152
22166
  kind: exports_external.enum(["movie", "show"]).nullish(),
22153
22167
  year: exports_external.number().int().min(1888).max(2100).nullish(),
22154
22168
  director: exports_external.string().min(1).max(200).nullish(),
22155
- coverUrl
22169
+ coverUrl,
22170
+ episodeCount: exports_external.number().int().min(1).max(1e4).nullish(),
22171
+ currentEpisode: exports_external.number().int().min(0).max(1e4).nullish()
22156
22172
  }).strict();
22157
22173
  var gameFacetSchema2 = exports_external.object({
22158
22174
  platform: exports_external.string().min(1).max(120).nullish(),
22159
- coverUrl
22175
+ coverUrl,
22176
+ completion: exports_external.number().int().min(0).max(100).nullish()
22160
22177
  }).strict();
22161
22178
  var musicFacetSchema = exports_external.object({
22162
22179
  artist: exports_external.string().min(1).max(200).nullish(),
@@ -22201,7 +22218,14 @@ var COLLECTION_TYPES = {
22201
22218
  facetSchema: filmFacetSchema,
22202
22219
  view: "grid",
22203
22220
  subtitleKey: "director",
22204
- lookupId: "tmdb"
22221
+ lookupId: "tmdb",
22222
+ progress: {
22223
+ kind: "count",
22224
+ currentField: "currentEpisode",
22225
+ totalField: "episodeCount",
22226
+ unit: "episode",
22227
+ appliesWhen: { field: "kind", equals: "show" }
22228
+ }
22205
22229
  },
22206
22230
  game: {
22207
22231
  key: "game",
@@ -22218,7 +22242,8 @@ var COLLECTION_TYPES = {
22218
22242
  facetSchema: gameFacetSchema2,
22219
22243
  view: "grid",
22220
22244
  subtitleKey: "platform",
22221
- lookupId: "igdb"
22245
+ lookupId: "igdb",
22246
+ progress: { kind: "percent", field: "completion" }
22222
22247
  },
22223
22248
  music: {
22224
22249
  key: "music",
@@ -24356,7 +24381,7 @@ function parseCapture2(input, now) {
24356
24381
 
24357
24382
  // src/meta.ts
24358
24383
  var CLI_NAME = "do";
24359
- var VERSION = "1.73.0";
24384
+ var VERSION = "1.75.0";
24360
24385
  var API_PREFIX = "/api/v1";
24361
24386
  var DEFAULT_API_URL = "http://localhost:3001";
24362
24387
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robbeverhelst/do",
3
- "version": "1.73.0",
3
+ "version": "1.75.0",
4
4
  "private": false,
5
5
  "description": "do — the agent-drivable CLI over the public /api/v1 surface",
6
6
  "type": "module",