@robbeverhelst/do 1.370.0 → 1.372.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 +309 -157
  2. package/package.json +1 -1
package/dist/do.js CHANGED
@@ -14420,7 +14420,7 @@ var configError = (message) => new CliError("config", message, EXIT.CONFIG);
14420
14420
 
14421
14421
  // src/meta.ts
14422
14422
  var CLI_NAME = "do";
14423
- var VERSION = "1.370.0";
14423
+ var VERSION = "1.372.0";
14424
14424
  var API_PREFIX = "/api/v1";
14425
14425
  var DEFAULT_API_URL = "http://localhost:3001";
14426
14426
 
@@ -19367,159 +19367,6 @@ var NODE_RECEIPT_ABOUT_VALUES = [
19367
19367
  ];
19368
19368
  var MONEY_RECEIPT_ABOUT_VALUES = RECEIPT_KINDS[MONEY_RECEIPT_NODE_TYPE].about;
19369
19369
 
19370
- // ../../packages/schema/src/visibility.ts
19371
- var NODE_VISIBILITY_VALUES = ["space", "owner"];
19372
- var SENSITIVE_SCOPE_GROUPS = {
19373
- health: ["health:read", "health:write", "health:export"],
19374
- journal: ["journal:read", "journal:write", "journal:export"],
19375
- documents: ["documents:private"],
19376
- finance: ["finance:read", "finance:write"],
19377
- family_tree: ["people:family-tree"]
19378
- };
19379
- var SENSITIVE_GROUP_VALUES = Object.keys(SENSITIVE_SCOPE_GROUPS);
19380
- var SENSITIVE_SCOPE_VALUES = Object.values(SENSITIVE_SCOPE_GROUPS).flat();
19381
- var HEALTH_NODE_TYPES = {
19382
- health_condition: { group: "health", forced: true },
19383
- health_episode: { group: "health", forced: true },
19384
- health_encounter: { group: "health", forced: true },
19385
- health_medication: { group: "health", forced: true },
19386
- health_lab_panel: { group: "health", forced: true }
19387
- };
19388
- var JOURNAL_NODE_TYPES = {
19389
- journal_day: { group: "journal", forced: true },
19390
- journal_entry: { group: "journal", forced: true },
19391
- journal_recap: { group: "journal", forced: true }
19392
- };
19393
- var FOOD_NODE_TYPES = {
19394
- meal_log: { group: "health", forced: true },
19395
- food_trial: { group: "health", forced: true },
19396
- food_week_read: { group: "health", forced: true }
19397
- };
19398
- var FAMILY_TREE_NODE_TYPES = {
19399
- family_tree: { group: "family_tree", forced: true }
19400
- };
19401
- var OWNER_ONLY_NODE_TYPES = {
19402
- ...FAMILY_TREE_NODE_TYPES,
19403
- ...FOOD_NODE_TYPES,
19404
- ...HEALTH_NODE_TYPES,
19405
- ...JOURNAL_NODE_TYPES
19406
- };
19407
- var OPTIONAL_OWNER_NODE_TYPES = {
19408
- recipe: { group: "health", forced: false },
19409
- document: { group: "documents", forced: false },
19410
- money_account: { group: "finance", forced: false },
19411
- journal_milestone: { group: "journal", forced: false },
19412
- money_goal: { group: "finance", forced: false },
19413
- money_recurring: { group: "finance", forced: false }
19414
- };
19415
- var NODE_TYPE_WALLS = {
19416
- ...OPTIONAL_OWNER_NODE_TYPES,
19417
- ...OWNER_ONLY_NODE_TYPES
19418
- };
19419
- var SCOPE_GROUP = new Map(SENSITIVE_GROUP_VALUES.flatMap((group) => SENSITIVE_SCOPE_GROUPS[group].map((scope) => [scope, group])));
19420
- function isSensitiveScope(scope) {
19421
- return SCOPE_GROUP.has(scope);
19422
- }
19423
- var PRIVATE_ACCESS_SCOPE = "private:*";
19424
-
19425
- // ../../packages/schema/src/contracts/common.ts
19426
- var ulidSchema = string2().length(26).regex(/^[0-9A-HJKMNP-TV-Z]{26}$/, "must be a valid ULID");
19427
- var nodeSchema = createSelectSchema(nodes, {
19428
- createdAt: exports_coerce.date(),
19429
- updatedAt: exports_coerce.date(),
19430
- deletedAt: exports_coerce.date().nullable(),
19431
- sortOrder: number2().int().nonnegative().default(0),
19432
- createdByUserId: string2().nullable().default(null),
19433
- createdByAgentId: string2().nullable().default(null),
19434
- updatedByUserId: string2().nullable().default(null),
19435
- updatedByAgentId: string2().nullable().default(null),
19436
- visibility: _enum2(NODE_VISIBILITY_VALUES).default("space"),
19437
- ownerUserId: string2().nullable().default(null)
19438
- });
19439
- var createNodeInputSchema = createInsertSchema(nodes, {
19440
- id: ulidSchema,
19441
- type: string2().min(1),
19442
- title: string2().min(1),
19443
- parentId: ulidSchema.nullish(),
19444
- sortOrder: number2().int().nonnegative().optional(),
19445
- displayKind: string2().min(1).default("default")
19446
- }).omit({
19447
- tenantId: true,
19448
- createdAt: true,
19449
- updatedAt: true,
19450
- deletedAt: true,
19451
- createdByUserId: true,
19452
- createdByAgentId: true,
19453
- updatedByUserId: true,
19454
- updatedByAgentId: true,
19455
- visibility: true,
19456
- ownerUserId: true
19457
- });
19458
- var TRASH_RETENTION_DAYS = 30;
19459
- var TRASH_RETENTION_MS = TRASH_RETENTION_DAYS * 24 * 60 * 60 * 1000;
19460
- var loginInputSchema = object({
19461
- email: string2().email(),
19462
- password: string2().min(1)
19463
- });
19464
- var loginResultSchema = object({
19465
- token: string2(),
19466
- user: object({ id: ulidSchema, email: string2().email() }),
19467
- tenantId: ulidSchema,
19468
- onboardingCompleted: boolean2()
19469
- });
19470
- var googleIdTokenInputSchema = object({
19471
- idToken: string2().min(1)
19472
- });
19473
- var registerInputSchema = object({
19474
- email: string2().email(),
19475
- password: string2().min(8)
19476
- });
19477
- var authResultSchema = object({
19478
- token: string2(),
19479
- onboardingCompleted: boolean2()
19480
- });
19481
- var oauthIdentitySchema = createSelectSchema(oauthIdentities, {
19482
- createdAt: exports_coerce.date()
19483
- });
19484
- var spaceSchema = createSelectSchema(tenants, {
19485
- createdAt: exports_coerce.date(),
19486
- updatedAt: exports_coerce.date(),
19487
- deletedAt: exports_coerce.date().nullable(),
19488
- address: string2().nullable().default(null)
19489
- }).omit({
19490
- gaardHouseUrl: true,
19491
- awayFrom: true,
19492
- awayUntil: true,
19493
- lastTaskNumber: true,
19494
- lastProjectNumber: true
19495
- });
19496
- var backdropIdSchema = string2().trim().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/, "a backdrop id is lowercase words joined by dashes").max(40);
19497
- var spaceAddressSchema = string2().trim().max(200).transform((line) => line || null).nullable();
19498
- var updateSpaceInputSchema = object({
19499
- name: string2().trim().min(1).max(120).optional(),
19500
- backdrop: backdropIdSchema.nullable().optional(),
19501
- address: spaceAddressSchema.optional()
19502
- }).strict().refine((input) => input.name !== undefined || input.backdrop !== undefined || input.address !== undefined, { message: "nothing to update" });
19503
- var setSpaceAddressInputSchema = object({ address: spaceAddressSchema }).strict();
19504
- var spaceAddressViewSchema = object({ address: string2().nullable() });
19505
- var onboardingResultSchema = object({ onboardingCompleted: boolean2() });
19506
- var authMethodsSchema = object({
19507
- hasPassword: boolean2(),
19508
- google: object({
19509
- connected: boolean2(),
19510
- email: string2().nullable()
19511
- })
19512
- });
19513
- var setPasswordInputSchema = object({
19514
- currentPassword: string2().optional(),
19515
- newPassword: string2().min(8)
19516
- });
19517
- var startLinkResultSchema = object({ authorizationUrl: string2().url() });
19518
- var linkGoogleInputSchema = object({
19519
- code: string2().min(1),
19520
- state: string2().min(1)
19521
- });
19522
-
19523
19370
  // ../../packages/schema/src/contracts/post-cards.ts
19524
19371
  var line2 = string2().trim().min(1).max(200);
19525
19372
  var words = string2().trim().max(2000);
@@ -19781,6 +19628,14 @@ var postCardCodeSchema = object({
19781
19628
  lang: string2().trim().min(1).max(40).optional(),
19782
19629
  code: string2().min(1).max(8000)
19783
19630
  });
19631
+ var postCardCatchupSchema = object({
19632
+ title: line2,
19633
+ sub: line2.optional(),
19634
+ items: array(object({
19635
+ thread: string2().trim().min(1).max(64),
19636
+ text: string2().trim().min(1).max(500)
19637
+ })).min(1).max(20)
19638
+ });
19784
19639
  var POST_CARD_DATA = {
19785
19640
  text: postCardTextSchema,
19786
19641
  brief: postCardBriefSchema,
@@ -19804,8 +19659,265 @@ var POST_CARD_DATA = {
19804
19659
  gallery: postCardGallerySchema,
19805
19660
  design: postCardDesignSchema,
19806
19661
  voice: postCardVoiceSchema,
19807
- code: postCardCodeSchema
19662
+ code: postCardCodeSchema,
19663
+ catchup: postCardCatchupSchema
19664
+ };
19665
+
19666
+ // ../../packages/schema/src/contracts/agent-asks.ts
19667
+ var askKindSchema = _enum2([
19668
+ "approval",
19669
+ "question",
19670
+ "draft",
19671
+ "checkin",
19672
+ "review",
19673
+ "decision"
19674
+ ]);
19675
+ var askStateSchema = _enum2(["open", "answered", "expired", "snoozed", "delegated"]);
19676
+ var askOnExpireSchema = _enum2(["ask_again", "safe_default", "drop"]);
19677
+ var askViaSchema = _enum2(["do", "push", "mirror"]);
19678
+ var line3 = string2().trim().min(1).max(200);
19679
+ var words2 = string2().trim().min(1).max(2000);
19680
+ var askBodySchema = object({
19681
+ code: string2().min(1).max(4000).optional(),
19682
+ why: words2.optional(),
19683
+ yes: line3.optional(),
19684
+ no: line3.optional(),
19685
+ options: array(object({ label: line3, sub: line3.optional() })).min(1).max(12).optional(),
19686
+ multi: boolean2().optional(),
19687
+ submit: line3.optional(),
19688
+ draft: string2().trim().min(1).max(8000).optional(),
19689
+ items: array(object({ title: line3, meta: line3.optional(), done: boolean2().optional() })).min(1).max(20).optional(),
19690
+ rateLabel: line3.optional(),
19691
+ acts: array(object({
19692
+ label: line3,
19693
+ primary: boolean2().optional(),
19694
+ href: string2().trim().min(1).max(2000).optional()
19695
+ })).min(1).max(6).optional()
19696
+ });
19697
+ var askAnswerSchema = discriminatedUnion("kind", [
19698
+ object({ kind: literal("yes") }),
19699
+ object({ kind: literal("no") }),
19700
+ object({
19701
+ kind: literal("pick"),
19702
+ picked: array(number2().int().nonnegative()).min(1).max(12)
19703
+ }),
19704
+ object({ kind: literal("act"), index: number2().int().nonnegative() }),
19705
+ object({ kind: literal("send"), text: string2().trim().min(1).max(8000) }),
19706
+ object({
19707
+ kind: literal("checkin"),
19708
+ done: array(boolean2()).max(20),
19709
+ rating: number2().int().min(1).max(10).nullable()
19710
+ })
19711
+ ]);
19712
+ var askAnchorSchema = object({
19713
+ type: _enum2(["task", "project", "habit", "note"]),
19714
+ id: string2().min(1).max(64)
19715
+ });
19716
+ var askExpirySchema = object({
19717
+ at: exports_iso.datetime({ offset: true }),
19718
+ windowS: number2().int().positive().max(7 * 24 * 3600).optional(),
19719
+ onExpire: askOnExpireSchema.default("drop"),
19720
+ note: words2.optional()
19721
+ });
19722
+ var agentAskSchema = object({
19723
+ askId: string2().min(1).max(100),
19724
+ threadId: string2().min(1).max(64),
19725
+ kind: askKindSchema,
19726
+ from: postCardWhoSchema.optional(),
19727
+ title: line3,
19728
+ detail: words2.optional(),
19729
+ risk: literal("high").optional(),
19730
+ expires: askExpirySchema.optional(),
19731
+ aboutToday: boolean2().default(false),
19732
+ anchor: askAnchorSchema.optional(),
19733
+ ...askBodySchema.shape
19734
+ });
19735
+ var echoAskSchema = object({
19736
+ id: string2(),
19737
+ threadId: string2(),
19738
+ postId: string2().nullable(),
19739
+ kind: askKindSchema,
19740
+ state: askStateSchema,
19741
+ from: postCardWhoSchema,
19742
+ title: string2(),
19743
+ detail: string2().nullable(),
19744
+ risk: literal("high").nullable(),
19745
+ body: askBodySchema,
19746
+ expiresAt: string2().nullable(),
19747
+ windowS: number2().int().nullable(),
19748
+ onExpire: askOnExpireSchema,
19749
+ expireNote: string2().nullable(),
19750
+ snoozedUntil: string2().nullable(),
19751
+ delegatedTo: string2().nullable(),
19752
+ answer: askAnswerSchema.nullable(),
19753
+ answeredAt: string2().nullable(),
19754
+ answeredVia: askViaSchema.nullable(),
19755
+ aboutToday: boolean2(),
19756
+ anchor: askAnchorSchema.nullable(),
19757
+ createdAt: string2()
19758
+ });
19759
+ var echoAsksSchema = object({ asks: array(echoAskSchema) });
19760
+ var echoAsksQuerySchema = object({
19761
+ since: exports_iso.datetime({ offset: true }).optional()
19762
+ });
19763
+ var answerEchoAskInputSchema = object({ answer: askAnswerSchema });
19764
+ var echoAskAnsweredSchema = object({ ask: echoAskSchema });
19765
+ var ASK_SNOOZE_MAX_MS = 7 * 24 * 3600 * 1000;
19766
+ var snoozeEchoAskInputSchema = object({ until: exports_iso.datetime({ offset: true }) });
19767
+ var delegateEchoAskInputSchema = object({ agentId: string2().min(1).nullable() });
19768
+
19769
+ // ../../packages/schema/src/visibility.ts
19770
+ var NODE_VISIBILITY_VALUES = ["space", "owner"];
19771
+ var SENSITIVE_SCOPE_GROUPS = {
19772
+ health: ["health:read", "health:write", "health:export"],
19773
+ journal: ["journal:read", "journal:write", "journal:export"],
19774
+ documents: ["documents:private"],
19775
+ finance: ["finance:read", "finance:write"],
19776
+ family_tree: ["people:family-tree"]
19808
19777
  };
19778
+ var SENSITIVE_GROUP_VALUES = Object.keys(SENSITIVE_SCOPE_GROUPS);
19779
+ var SENSITIVE_SCOPE_VALUES = Object.values(SENSITIVE_SCOPE_GROUPS).flat();
19780
+ var HEALTH_NODE_TYPES = {
19781
+ health_condition: { group: "health", forced: true },
19782
+ health_episode: { group: "health", forced: true },
19783
+ health_encounter: { group: "health", forced: true },
19784
+ health_medication: { group: "health", forced: true },
19785
+ health_lab_panel: { group: "health", forced: true }
19786
+ };
19787
+ var JOURNAL_NODE_TYPES = {
19788
+ journal_day: { group: "journal", forced: true },
19789
+ journal_entry: { group: "journal", forced: true },
19790
+ journal_recap: { group: "journal", forced: true }
19791
+ };
19792
+ var FOOD_NODE_TYPES = {
19793
+ meal_log: { group: "health", forced: true },
19794
+ food_trial: { group: "health", forced: true },
19795
+ food_week_read: { group: "health", forced: true }
19796
+ };
19797
+ var FAMILY_TREE_NODE_TYPES = {
19798
+ family_tree: { group: "family_tree", forced: true }
19799
+ };
19800
+ var OWNER_ONLY_NODE_TYPES = {
19801
+ ...FAMILY_TREE_NODE_TYPES,
19802
+ ...FOOD_NODE_TYPES,
19803
+ ...HEALTH_NODE_TYPES,
19804
+ ...JOURNAL_NODE_TYPES
19805
+ };
19806
+ var OPTIONAL_OWNER_NODE_TYPES = {
19807
+ recipe: { group: "health", forced: false },
19808
+ document: { group: "documents", forced: false },
19809
+ money_account: { group: "finance", forced: false },
19810
+ journal_milestone: { group: "journal", forced: false },
19811
+ money_goal: { group: "finance", forced: false },
19812
+ money_recurring: { group: "finance", forced: false }
19813
+ };
19814
+ var NODE_TYPE_WALLS = {
19815
+ ...OPTIONAL_OWNER_NODE_TYPES,
19816
+ ...OWNER_ONLY_NODE_TYPES
19817
+ };
19818
+ var SCOPE_GROUP = new Map(SENSITIVE_GROUP_VALUES.flatMap((group) => SENSITIVE_SCOPE_GROUPS[group].map((scope) => [scope, group])));
19819
+ function isSensitiveScope(scope) {
19820
+ return SCOPE_GROUP.has(scope);
19821
+ }
19822
+ var PRIVATE_ACCESS_SCOPE = "private:*";
19823
+
19824
+ // ../../packages/schema/src/contracts/common.ts
19825
+ var ulidSchema = string2().length(26).regex(/^[0-9A-HJKMNP-TV-Z]{26}$/, "must be a valid ULID");
19826
+ var nodeSchema = createSelectSchema(nodes, {
19827
+ createdAt: exports_coerce.date(),
19828
+ updatedAt: exports_coerce.date(),
19829
+ deletedAt: exports_coerce.date().nullable(),
19830
+ sortOrder: number2().int().nonnegative().default(0),
19831
+ createdByUserId: string2().nullable().default(null),
19832
+ createdByAgentId: string2().nullable().default(null),
19833
+ updatedByUserId: string2().nullable().default(null),
19834
+ updatedByAgentId: string2().nullable().default(null),
19835
+ visibility: _enum2(NODE_VISIBILITY_VALUES).default("space"),
19836
+ ownerUserId: string2().nullable().default(null)
19837
+ });
19838
+ var createNodeInputSchema = createInsertSchema(nodes, {
19839
+ id: ulidSchema,
19840
+ type: string2().min(1),
19841
+ title: string2().min(1),
19842
+ parentId: ulidSchema.nullish(),
19843
+ sortOrder: number2().int().nonnegative().optional(),
19844
+ displayKind: string2().min(1).default("default")
19845
+ }).omit({
19846
+ tenantId: true,
19847
+ createdAt: true,
19848
+ updatedAt: true,
19849
+ deletedAt: true,
19850
+ createdByUserId: true,
19851
+ createdByAgentId: true,
19852
+ updatedByUserId: true,
19853
+ updatedByAgentId: true,
19854
+ visibility: true,
19855
+ ownerUserId: true
19856
+ });
19857
+ var TRASH_RETENTION_DAYS = 30;
19858
+ var TRASH_RETENTION_MS = TRASH_RETENTION_DAYS * 24 * 60 * 60 * 1000;
19859
+ var loginInputSchema = object({
19860
+ email: string2().email(),
19861
+ password: string2().min(1)
19862
+ });
19863
+ var loginResultSchema = object({
19864
+ token: string2(),
19865
+ user: object({ id: ulidSchema, email: string2().email() }),
19866
+ tenantId: ulidSchema,
19867
+ onboardingCompleted: boolean2()
19868
+ });
19869
+ var googleIdTokenInputSchema = object({
19870
+ idToken: string2().min(1)
19871
+ });
19872
+ var registerInputSchema = object({
19873
+ email: string2().email(),
19874
+ password: string2().min(8)
19875
+ });
19876
+ var authResultSchema = object({
19877
+ token: string2(),
19878
+ onboardingCompleted: boolean2()
19879
+ });
19880
+ var oauthIdentitySchema = createSelectSchema(oauthIdentities, {
19881
+ createdAt: exports_coerce.date()
19882
+ });
19883
+ var spaceSchema = createSelectSchema(tenants, {
19884
+ createdAt: exports_coerce.date(),
19885
+ updatedAt: exports_coerce.date(),
19886
+ deletedAt: exports_coerce.date().nullable(),
19887
+ address: string2().nullable().default(null)
19888
+ }).omit({
19889
+ gaardHouseUrl: true,
19890
+ awayFrom: true,
19891
+ awayUntil: true,
19892
+ lastTaskNumber: true,
19893
+ lastProjectNumber: true
19894
+ });
19895
+ var backdropIdSchema = string2().trim().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/, "a backdrop id is lowercase words joined by dashes").max(40);
19896
+ var spaceAddressSchema = string2().trim().max(200).transform((line) => line || null).nullable();
19897
+ var updateSpaceInputSchema = object({
19898
+ name: string2().trim().min(1).max(120).optional(),
19899
+ backdrop: backdropIdSchema.nullable().optional(),
19900
+ address: spaceAddressSchema.optional()
19901
+ }).strict().refine((input) => input.name !== undefined || input.backdrop !== undefined || input.address !== undefined, { message: "nothing to update" });
19902
+ var setSpaceAddressInputSchema = object({ address: spaceAddressSchema }).strict();
19903
+ var spaceAddressViewSchema = object({ address: string2().nullable() });
19904
+ var onboardingResultSchema = object({ onboardingCompleted: boolean2() });
19905
+ var authMethodsSchema = object({
19906
+ hasPassword: boolean2(),
19907
+ google: object({
19908
+ connected: boolean2(),
19909
+ email: string2().nullable()
19910
+ })
19911
+ });
19912
+ var setPasswordInputSchema = object({
19913
+ currentPassword: string2().optional(),
19914
+ newPassword: string2().min(8)
19915
+ });
19916
+ var startLinkResultSchema = object({ authorizationUrl: string2().url() });
19917
+ var linkGoogleInputSchema = object({
19918
+ code: string2().min(1),
19919
+ state: string2().min(1)
19920
+ });
19809
19921
 
19810
19922
  // ../../packages/schema/src/contracts/agent-gateway.ts
19811
19923
  var AGENT_GATEWAY_VERSION = 1;
@@ -19855,7 +19967,8 @@ var postCardTypeSchema = _enum2([
19855
19967
  "digest",
19856
19968
  "handoff",
19857
19969
  "decision",
19858
- "answer"
19970
+ "answer",
19971
+ "catchup"
19859
19972
  ]);
19860
19973
  var postDigestKeySchema = string2().trim().min(1).max(40);
19861
19974
  var POST_CARD_DATA_MAX = 16000;
@@ -19886,6 +19999,7 @@ var postCardSchema = discriminatedUnion("type", [
19886
19999
  pinned("design"),
19887
20000
  pinned("voice"),
19888
20001
  pinned("code"),
20002
+ pinned("catchup"),
19889
20003
  object({
19890
20004
  type: postCardTypeSchema.exclude([
19891
20005
  "text",
@@ -19910,7 +20024,8 @@ var postCardSchema = discriminatedUnion("type", [
19910
20024
  "gallery",
19911
20025
  "design",
19912
20026
  "voice",
19913
- "code"
20027
+ "code",
20028
+ "catchup"
19914
20029
  ]),
19915
20030
  data: record(string2(), unknown()).default({})
19916
20031
  })
@@ -20106,6 +20221,29 @@ var promptAnswerFrameSchema = frame("prompt.answer", {
20106
20221
  memberId: string2().min(1),
20107
20222
  threadId: ulidSchema
20108
20223
  });
20224
+ var askAnswerFrameSchema = frame("ask.answer", {
20225
+ askId: string2().min(1),
20226
+ answer: askAnswerSchema,
20227
+ memberId: string2().min(1),
20228
+ threadId: ulidSchema,
20229
+ via: askViaSchema
20230
+ });
20231
+ var askExpiredFrameSchema = frame("ask.expired", {
20232
+ askId: string2().min(1),
20233
+ threadId: ulidSchema,
20234
+ applied: askOnExpireSchema
20235
+ });
20236
+ var askSnoozedFrameSchema = frame("ask.snoozed", {
20237
+ askId: string2().min(1),
20238
+ threadId: ulidSchema,
20239
+ until: exports_iso.datetime({ offset: true })
20240
+ });
20241
+ var askDelegatedFrameSchema = frame("ask.delegated", {
20242
+ askId: string2().min(1),
20243
+ threadId: ulidSchema,
20244
+ memberId: string2().min(1),
20245
+ to: object({ id: string2().min(1), name: string2().min(1) }).nullable()
20246
+ });
20109
20247
  var confirmationOutcomeFrameSchema = frame("confirmation.outcome", {
20110
20248
  confirmationId: string2().min(1),
20111
20249
  memberId: string2().min(1),
@@ -20141,6 +20279,10 @@ var agentGatewayServerFrameSchema = discriminatedUnion("type", [
20141
20279
  threadsFrameSchema,
20142
20280
  messageFrameSchema,
20143
20281
  promptAnswerFrameSchema,
20282
+ askAnswerFrameSchema,
20283
+ askExpiredFrameSchema,
20284
+ askSnoozedFrameSchema,
20285
+ askDelegatedFrameSchema,
20144
20286
  interruptFrameSchema,
20145
20287
  confirmationOutcomeFrameSchema,
20146
20288
  ackFrameSchema,
@@ -20160,6 +20302,10 @@ var promptCloseFrameSchema = frame("prompt.close", {
20160
20302
  optionId: string2().optional(),
20161
20303
  expired: boolean2()
20162
20304
  });
20305
+ var askFrameSchema = frame("ask", { ask: agentAskSchema });
20306
+ var askAnswerAckFrameSchema = frame("ask.answer.ack", { askId: string2().min(1) });
20307
+ var askExpiredAckFrameSchema = frame("ask.expired.ack", { askId: string2().min(1) });
20308
+ var askDelegatedAckFrameSchema = frame("ask.delegated.ack", { askId: string2().min(1) });
20163
20309
  var attachmentTranscriptFrameSchema = frame("attachment.transcript", {
20164
20310
  attachmentId: ulidSchema,
20165
20311
  text: string2().trim().min(1).max(AGENT_TRANSCRIPT_MAX)
@@ -20174,6 +20320,10 @@ var agentGatewayClientFrameSchema = discriminatedUnion("type", [
20174
20320
  typingFrameSchema,
20175
20321
  promptFrameSchema,
20176
20322
  promptCloseFrameSchema,
20323
+ askFrameSchema,
20324
+ askAnswerAckFrameSchema,
20325
+ askExpiredAckFrameSchema,
20326
+ askDelegatedAckFrameSchema,
20177
20327
  attachmentTranscriptFrameSchema
20178
20328
  ]);
20179
20329
  var SERVER_FRAME_TYPES = new Set(agentGatewayServerFrameSchema.options.map((o) => o.shape.type.value));
@@ -27675,6 +27825,7 @@ var echoPostSchema = object({
27675
27825
  brief: briefSchema.nullable().default(null),
27676
27826
  card: postCardSchema.nullable().default(null),
27677
27827
  digestKey: string2().nullable().default(null),
27828
+ relayOfPostId: string2().nullable().default(null),
27678
27829
  context: echoPostContextSchema.nullable().default(null)
27679
27830
  });
27680
27831
  var threadPushSchema = _enum2(["needs_you", "all", "off"]);
@@ -27733,6 +27884,7 @@ var echoThreadSummarySchema = object({
27733
27884
  notifyLevel: threadNotifyLevelSchema.default("now"),
27734
27885
  lastMessageAt: exports_coerce.date().nullable().default(null),
27735
27886
  lastLine: string2().nullable().default(null),
27887
+ lastByMember: boolean2().default(false),
27736
27888
  needsYou: number2().int().nonnegative().default(0),
27737
27889
  unseen: number2().int().nonnegative().default(0),
27738
27890
  turnCount: number2().int(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robbeverhelst/do",
3
- "version": "1.370.0",
3
+ "version": "1.372.0",
4
4
  "private": false,
5
5
  "description": "do — the agent-drivable CLI over the public /api/v1 surface",
6
6
  "homepage": "https://github.com/robbeverhelst/do/tree/main/apps/cli",