@onetaskgraph/sdk 0.12.12 → 0.12.14

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.
package/dist/index.js CHANGED
@@ -7167,6 +7167,7 @@ var binaryCommands = [
7167
7167
  "task render",
7168
7168
  "task answers",
7169
7169
  "task assets",
7170
+ "task project-human",
7170
7171
  "project list",
7171
7172
  "project show",
7172
7173
  "project deps",
@@ -7192,7 +7193,7 @@ var binaryCommands = [
7192
7193
  ];
7193
7194
 
7194
7195
  // src/generated/models.ts
7195
- var SCHEMA_BUNDLE_VERSION = 49;
7196
+ var SCHEMA_BUNDLE_VERSION = 51;
7196
7197
 
7197
7198
  // src/generated/schemas.ts
7198
7199
  var runtimeSchemas = {
@@ -8325,6 +8326,13 @@ reader already written against this shape can ignore.`,
8325
8326
  ],
8326
8327
  type: "object"
8327
8328
  },
8329
+ GlobalId: {
8330
+ description: `One item, qualified by the source it came from.
8331
+
8332
+ Rendered \`<source>:<native>\` and parsed by splitting on the **first** colon,
8333
+ so a native id may contain colons freely.`,
8334
+ type: "string"
8335
+ },
8328
8336
  NativeId: {
8329
8337
  description: `A source's own opaque identifier for one item.
8330
8338
 
@@ -8333,6 +8341,42 @@ is, colons included. The engine parses a qualified id by splitting on the
8333
8341
  *first* colon precisely so this stays true.`,
8334
8342
  type: "string"
8335
8343
  },
8344
+ Priority: {
8345
+ description: `How much a task matters, in the one vocabulary every source is normalised into.
8346
+
8347
+ Five values, most pressing first after [\`None\`](Self::None): Linear's own priority has
8348
+ exactly these, and a source whose backend has none of its own maps its representation
8349
+ onto them. \`none\` is a value rather than an absent field, because "no priority is set" is
8350
+ something a person sets — writing \`none\` clears a priority — and a reader tells it apart
8351
+ from nothing by the value alone.`,
8352
+ oneOf: [
8353
+ {
8354
+ const: "none",
8355
+ description: "No priority is set.",
8356
+ type: "string"
8357
+ },
8358
+ {
8359
+ const: "urgent",
8360
+ description: "Drop everything for it.",
8361
+ type: "string"
8362
+ },
8363
+ {
8364
+ const: "high",
8365
+ description: "Next, before the rest.",
8366
+ type: "string"
8367
+ },
8368
+ {
8369
+ const: "medium",
8370
+ description: "In its turn.",
8371
+ type: "string"
8372
+ },
8373
+ {
8374
+ const: "low",
8375
+ description: "When there is nothing more pressing.",
8376
+ type: "string"
8377
+ }
8378
+ ]
8379
+ },
8336
8380
  Spent: {
8337
8381
  description: `What one command spent, summed over the sources in it that meter their own requests.
8338
8382
 
@@ -8361,6 +8405,72 @@ interprets none of them, which is why the budget and unit names are open vocabul
8361
8405
  ],
8362
8406
  type: "object"
8363
8407
  },
8408
+ Status: {
8409
+ description: `A source's status, kept in both normalised and original form.
8410
+
8411
+ \`category\` is what every filter compares against; \`name\` is the source's own
8412
+ wording, preserved so display never flattens "In Review" into "In Progress".`,
8413
+ properties: {
8414
+ category: {
8415
+ $ref: "#/$defs/StatusCategory",
8416
+ description: "The normalised value filters compare against."
8417
+ },
8418
+ name: {
8419
+ description: "The source's own label for this status.",
8420
+ type: "string"
8421
+ }
8422
+ },
8423
+ required: [
8424
+ "category",
8425
+ "name"
8426
+ ],
8427
+ type: "object"
8428
+ },
8429
+ StatusCategory: {
8430
+ description: "The normalised status vocabulary shared across every source.",
8431
+ oneOf: [
8432
+ {
8433
+ const: "draft",
8434
+ description: "Written down but not yet committed to as work.",
8435
+ type: "string"
8436
+ },
8437
+ {
8438
+ const: "backlog",
8439
+ description: "Known about, not yet accepted as ready to work.",
8440
+ type: "string"
8441
+ },
8442
+ {
8443
+ const: "todo",
8444
+ description: "Accepted and ready to be picked up, and nothing has claimed it.",
8445
+ type: "string"
8446
+ },
8447
+ {
8448
+ const: "queued",
8449
+ description: "Claimed by work that will do it, and not yet started.",
8450
+ type: "string"
8451
+ },
8452
+ {
8453
+ const: "in-progress",
8454
+ description: "Being worked on.",
8455
+ type: "string"
8456
+ },
8457
+ {
8458
+ const: "done",
8459
+ description: "Finished.",
8460
+ type: "string"
8461
+ },
8462
+ {
8463
+ const: "cancelled",
8464
+ description: "Abandoned.",
8465
+ type: "string"
8466
+ },
8467
+ {
8468
+ const: "unknown",
8469
+ description: "The source reported a status this vocabulary cannot place.",
8470
+ type: "string"
8471
+ }
8472
+ ]
8473
+ },
8364
8474
  WriteFallback: {
8365
8475
  description: "That an expected write read its target before writing, and why.",
8366
8476
  properties: {
@@ -8458,26 +8568,57 @@ Never sent again: doing so could apply it twice.`,
8458
8568
  type: "object"
8459
8569
  },
8460
8570
  WriteResult: {
8461
- description: "What each mutation of an expected write came to, built from the mutations' own responses.",
8571
+ description: `What an item holds once a write is done, read off the write's own responses — and, for an
8572
+ expected write, what each mutation it sent came to.
8573
+
8574
+ Every write verb and every item a copy lands answers one, with no request added for it: a
8575
+ field the write kept is what the read before it held. \`version\` is \`null\` where the source
8576
+ cannot vouch for a token from its write's responses — a GitHub board for an item it has just
8577
+ written, a stdio-hosted plugin, an in-memory source — and otherwise the token a read would
8578
+ then give.`,
8462
8579
  properties: {
8463
8580
  parts: {
8464
- description: "One per mutation sent, in the order sent.",
8581
+ description: "One per mutation an expected write sent, in the order sent — absent for a write made\nwithout `--expect`.",
8465
8582
  items: {
8466
8583
  $ref: "#/$defs/WritePart"
8467
8584
  },
8468
- type: "array"
8585
+ type: [
8586
+ "array",
8587
+ "null"
8588
+ ]
8589
+ },
8590
+ priority: {
8591
+ anyOf: [
8592
+ {
8593
+ $ref: "#/$defs/Priority"
8594
+ },
8595
+ {
8596
+ type: "null"
8597
+ }
8598
+ ],
8599
+ default: null,
8600
+ description: "A task's priority after the write — `null` for a project or a document, which carry\nnone, and where an expected write that failed cannot say."
8601
+ },
8602
+ status: {
8603
+ anyOf: [
8604
+ {
8605
+ $ref: "#/$defs/Status"
8606
+ },
8607
+ {
8608
+ type: "null"
8609
+ }
8610
+ ],
8611
+ default: null,
8612
+ description: "The item's status after the write, exactly as `task show` spells it — `null` for a\ndocument, which has none, and where an expected write that failed cannot say."
8469
8613
  },
8470
8614
  version: {
8471
- description: "The task's version after the write, where the last response determines it.",
8615
+ description: "The item's version after the write, where the write's responses determine it.",
8472
8616
  type: [
8473
8617
  "string",
8474
8618
  "null"
8475
8619
  ]
8476
8620
  }
8477
8621
  },
8478
- required: [
8479
- "parts"
8480
- ],
8481
8622
  type: "object"
8482
8623
  }
8483
8624
  },
@@ -8521,6 +8662,17 @@ Never sent again: doing so could apply it twice.`,
8521
8662
  Opaque, as every [\`NativeId\`] is, and never qualified: a comment is addressed through
8522
8663
  the qualified id of the task it is on, so its own id needs no source of its own.`
8523
8664
  },
8665
+ item: {
8666
+ anyOf: [
8667
+ {
8668
+ $ref: "#/$defs/GlobalId"
8669
+ },
8670
+ {
8671
+ type: "null"
8672
+ }
8673
+ ],
8674
+ description: "The qualified id of the task the comment was added to — present on `task comment add`'s\nanswer, so a caller records what it commented on from the answer alone."
8675
+ },
8524
8676
  origin: {
8525
8677
  anyOf: [
8526
8678
  {
@@ -9428,6 +9580,11 @@ so as [\`NoCounterpart\`] instead.`,
9428
9580
  const: "match",
9429
9581
  description: "A search of the destination by the caller's `--match-by`.",
9430
9582
  type: "string"
9583
+ },
9584
+ {
9585
+ const: "intent",
9586
+ description: "The item the destination holds under the key of a create an earlier attempt of this\ncopy recorded its intent for, at `onetaskgraph.creating`: that attempt's create,\nfinished rather than made twice.",
9587
+ type: "string"
9431
9588
  }
9432
9589
  ]
9433
9590
  },
@@ -9896,6 +10053,11 @@ so as [\`NoCounterpart\`] instead.`,
9896
10053
  const: "match",
9897
10054
  description: "A search of the destination by the caller's `--match-by`.",
9898
10055
  type: "string"
10056
+ },
10057
+ {
10058
+ const: "intent",
10059
+ description: "The item the destination holds under the key of a create an earlier attempt of this\ncopy recorded its intent for, at `onetaskgraph.creating`: that attempt's create,\nfinished rather than made twice.",
10060
+ type: "string"
9899
10061
  }
9900
10062
  ]
9901
10063
  },
@@ -10000,6 +10162,60 @@ so a native id may contain colons freely.`,
10000
10162
  ],
10001
10163
  type: "object"
10002
10164
  },
10165
+ Priority: {
10166
+ description: `How much a task matters, in the one vocabulary every source is normalised into.
10167
+
10168
+ Five values, most pressing first after [\`None\`](Self::None): Linear's own priority has
10169
+ exactly these, and a source whose backend has none of its own maps its representation
10170
+ onto them. \`none\` is a value rather than an absent field, because "no priority is set" is
10171
+ something a person sets — writing \`none\` clears a priority — and a reader tells it apart
10172
+ from nothing by the value alone.`,
10173
+ oneOf: [
10174
+ {
10175
+ const: "none",
10176
+ description: "No priority is set.",
10177
+ type: "string"
10178
+ },
10179
+ {
10180
+ const: "urgent",
10181
+ description: "Drop everything for it.",
10182
+ type: "string"
10183
+ },
10184
+ {
10185
+ const: "high",
10186
+ description: "Next, before the rest.",
10187
+ type: "string"
10188
+ },
10189
+ {
10190
+ const: "medium",
10191
+ description: "In its turn.",
10192
+ type: "string"
10193
+ },
10194
+ {
10195
+ const: "low",
10196
+ description: "When there is nothing more pressing.",
10197
+ type: "string"
10198
+ }
10199
+ ]
10200
+ },
10201
+ PriorityCondition: {
10202
+ description: "What a guarded copy found a counterpart's priority at, and whether that met the condition.",
10203
+ properties: {
10204
+ held: {
10205
+ $ref: "#/$defs/Priority",
10206
+ description: "The counterpart's priority, as the copy's own pre-write read held it."
10207
+ },
10208
+ met: {
10209
+ description: "Whether that priority is one the condition names.",
10210
+ type: "boolean"
10211
+ }
10212
+ },
10213
+ required: [
10214
+ "held",
10215
+ "met"
10216
+ ],
10217
+ type: "object"
10218
+ },
10003
10219
  SourceName: {
10004
10220
  description: "The name a configuration document gives one configured source.",
10005
10221
  pattern: "^[a-z0-9][a-z0-9-]*$",
@@ -10033,58 +10249,142 @@ interprets none of them, which is why the budget and unit names are open vocabul
10033
10249
  ],
10034
10250
  type: "object"
10035
10251
  },
10036
- WriteFallback: {
10037
- description: "That an expected write read its target before writing, and why.",
10252
+ Status: {
10253
+ description: `A source's status, kept in both normalised and original form.
10254
+
10255
+ \`category\` is what every filter compares against; \`name\` is the source's own
10256
+ wording, preserved so display never flattens "In Review" into "In Progress".`,
10038
10257
  properties: {
10039
- read: {
10040
- description: "Always `true`: the write made one read.",
10041
- type: "boolean"
10258
+ category: {
10259
+ $ref: "#/$defs/StatusCategory",
10260
+ description: "The normalised value filters compare against."
10042
10261
  },
10043
- reason: {
10044
- description: "Why it could not take what it needed from the cache.",
10262
+ name: {
10263
+ description: "The source's own label for this status.",
10045
10264
  type: "string"
10046
10265
  }
10047
10266
  },
10048
10267
  required: [
10049
- "read",
10050
- "reason"
10268
+ "category",
10269
+ "name"
10051
10270
  ],
10052
10271
  type: "object"
10053
10272
  },
10054
- WritePart: {
10055
- description: "One mutation of an expected write.",
10273
+ StatusCategory: {
10274
+ description: "The normalised status vocabulary shared across every source.",
10056
10275
  oneOf: [
10057
10276
  {
10058
- description: "The backend answered that it was applied.",
10059
- properties: {
10060
- outcome: {
10061
- const: "landed",
10062
- type: "string"
10063
- }
10064
- },
10065
- required: [
10066
- "outcome"
10067
- ],
10068
- type: "object"
10277
+ const: "draft",
10278
+ description: "Written down but not yet committed to as work.",
10279
+ type: "string"
10069
10280
  },
10070
10281
  {
10071
- description: "The backend answered that it was refused.",
10072
- properties: {
10073
- error: {
10074
- description: "What the backend said.",
10075
- type: "string"
10076
- },
10077
- outcome: {
10078
- const: "rejected",
10079
- type: "string"
10080
- },
10081
- stale: {
10082
- default: false,
10083
- description: `Whether it was refused because an id the write took from a primed context — an
10084
- item's node id, a field's or an option's — no longer resolves. Such a part is
10085
- sent again once, after one read.`,
10086
- type: "boolean"
10087
- }
10282
+ const: "backlog",
10283
+ description: "Known about, not yet accepted as ready to work.",
10284
+ type: "string"
10285
+ },
10286
+ {
10287
+ const: "todo",
10288
+ description: "Accepted and ready to be picked up, and nothing has claimed it.",
10289
+ type: "string"
10290
+ },
10291
+ {
10292
+ const: "queued",
10293
+ description: "Claimed by work that will do it, and not yet started.",
10294
+ type: "string"
10295
+ },
10296
+ {
10297
+ const: "in-progress",
10298
+ description: "Being worked on.",
10299
+ type: "string"
10300
+ },
10301
+ {
10302
+ const: "done",
10303
+ description: "Finished.",
10304
+ type: "string"
10305
+ },
10306
+ {
10307
+ const: "cancelled",
10308
+ description: "Abandoned.",
10309
+ type: "string"
10310
+ },
10311
+ {
10312
+ const: "unknown",
10313
+ description: "The source reported a status this vocabulary cannot place.",
10314
+ type: "string"
10315
+ }
10316
+ ]
10317
+ },
10318
+ StatusCondition: {
10319
+ description: "What a guarded copy found a counterpart's status at, and whether that met the condition.",
10320
+ properties: {
10321
+ held: {
10322
+ $ref: "#/$defs/StatusCategory",
10323
+ description: "The counterpart's status category, as the copy's own pre-write read held it."
10324
+ },
10325
+ met: {
10326
+ description: "Whether that category is one the condition names.",
10327
+ type: "boolean"
10328
+ }
10329
+ },
10330
+ required: [
10331
+ "held",
10332
+ "met"
10333
+ ],
10334
+ type: "object"
10335
+ },
10336
+ WriteFallback: {
10337
+ description: "That an expected write read its target before writing, and why.",
10338
+ properties: {
10339
+ read: {
10340
+ description: "Always `true`: the write made one read.",
10341
+ type: "boolean"
10342
+ },
10343
+ reason: {
10344
+ description: "Why it could not take what it needed from the cache.",
10345
+ type: "string"
10346
+ }
10347
+ },
10348
+ required: [
10349
+ "read",
10350
+ "reason"
10351
+ ],
10352
+ type: "object"
10353
+ },
10354
+ WritePart: {
10355
+ description: "One mutation of an expected write.",
10356
+ oneOf: [
10357
+ {
10358
+ description: "The backend answered that it was applied.",
10359
+ properties: {
10360
+ outcome: {
10361
+ const: "landed",
10362
+ type: "string"
10363
+ }
10364
+ },
10365
+ required: [
10366
+ "outcome"
10367
+ ],
10368
+ type: "object"
10369
+ },
10370
+ {
10371
+ description: "The backend answered that it was refused.",
10372
+ properties: {
10373
+ error: {
10374
+ description: "What the backend said.",
10375
+ type: "string"
10376
+ },
10377
+ outcome: {
10378
+ const: "rejected",
10379
+ type: "string"
10380
+ },
10381
+ stale: {
10382
+ default: false,
10383
+ description: `Whether it was refused because an id the write took from a primed context — an
10384
+ item's node id, a field's or an option's — no longer resolves. Such a part is
10385
+ sent again once, after one read.`,
10386
+ type: "boolean"
10387
+ }
10088
10388
  },
10089
10389
  required: [
10090
10390
  "outcome",
@@ -10130,26 +10430,57 @@ Never sent again: doing so could apply it twice.`,
10130
10430
  type: "object"
10131
10431
  },
10132
10432
  WriteResult: {
10133
- description: "What each mutation of an expected write came to, built from the mutations' own responses.",
10433
+ description: `What an item holds once a write is done, read off the write's own responses — and, for an
10434
+ expected write, what each mutation it sent came to.
10435
+
10436
+ Every write verb and every item a copy lands answers one, with no request added for it: a
10437
+ field the write kept is what the read before it held. \`version\` is \`null\` where the source
10438
+ cannot vouch for a token from its write's responses — a GitHub board for an item it has just
10439
+ written, a stdio-hosted plugin, an in-memory source — and otherwise the token a read would
10440
+ then give.`,
10134
10441
  properties: {
10135
10442
  parts: {
10136
- description: "One per mutation sent, in the order sent.",
10443
+ description: "One per mutation an expected write sent, in the order sent — absent for a write made\nwithout `--expect`.",
10137
10444
  items: {
10138
10445
  $ref: "#/$defs/WritePart"
10139
10446
  },
10140
- type: "array"
10447
+ type: [
10448
+ "array",
10449
+ "null"
10450
+ ]
10451
+ },
10452
+ priority: {
10453
+ anyOf: [
10454
+ {
10455
+ $ref: "#/$defs/Priority"
10456
+ },
10457
+ {
10458
+ type: "null"
10459
+ }
10460
+ ],
10461
+ default: null,
10462
+ description: "A task's priority after the write — `null` for a project or a document, which carry\nnone, and where an expected write that failed cannot say."
10463
+ },
10464
+ status: {
10465
+ anyOf: [
10466
+ {
10467
+ $ref: "#/$defs/Status"
10468
+ },
10469
+ {
10470
+ type: "null"
10471
+ }
10472
+ ],
10473
+ default: null,
10474
+ description: "The item's status after the write, exactly as `task show` spells it — `null` for a\ndocument, which has none, and where an expected write that failed cannot say."
10141
10475
  },
10142
10476
  version: {
10143
- description: "The task's version after the write, where the last response determines it.",
10477
+ description: "The item's version after the write, where the write's responses determine it.",
10144
10478
  type: [
10145
10479
  "string",
10146
10480
  "null"
10147
10481
  ]
10148
10482
  }
10149
10483
  },
10150
- required: [
10151
- "parts"
10152
- ],
10153
10484
  type: "object"
10154
10485
  }
10155
10486
  },
@@ -10382,6 +10713,17 @@ exits \`4\`. Copying the item again once it has settled lands it.`,
10382
10713
  description: `That the write had to read its target first, and why — absent when it sent only its
10383
10714
  mutations.`
10384
10715
  },
10716
+ held: {
10717
+ anyOf: [
10718
+ {
10719
+ $ref: "#/$defs/WriteResult"
10720
+ },
10721
+ {
10722
+ type: "null"
10723
+ }
10724
+ ],
10725
+ description: "What the counterpart held, as the copy's read of it before writing found it — present\nonly on an item the copy refused after that read, such as `destination-status`."
10726
+ },
10385
10727
  placed: {
10386
10728
  anyOf: [
10387
10729
  {
@@ -10399,6 +10741,17 @@ included, so a would-be create still says where it would go; absent for a copy i
10399
10741
  a source with none, whose output is what it always was, and for an orphan, which was
10400
10742
  not placed at all.`
10401
10743
  },
10744
+ priority_condition: {
10745
+ anyOf: [
10746
+ {
10747
+ $ref: "#/$defs/PriorityCondition"
10748
+ },
10749
+ {
10750
+ type: "null"
10751
+ }
10752
+ ],
10753
+ description: "What `--when-destination-priority` found the counterpart's priority at, and whether\nthat met it — present only when the copy was given the condition and this item was an\nupdate of a task."
10754
+ },
10402
10755
  result: {
10403
10756
  anyOf: [
10404
10757
  {
@@ -10408,8 +10761,10 @@ not placed at all.`
10408
10761
  type: "null"
10409
10762
  }
10410
10763
  ],
10411
- description: `What each mutation the write sent came to, and the version it left the task at — for a
10412
- source that reports its writes' parts.`
10764
+ description: `What the item holds once the write is done — its version, status and priority — and,
10765
+ for a write made with \`--expect\` on a source that reports its writes' parts, what each
10766
+ mutation it sent came to. Absent for a dry run and for an item nothing was written to
10767
+ or read of.`
10413
10768
  },
10414
10769
  source: {
10415
10770
  $ref: "#/$defs/GlobalId",
@@ -10426,6 +10781,17 @@ source that reports its writes' parts.`
10426
10781
  ],
10427
10782
  description: `What the write spent at the sources that meter their own requests — the fallback's
10428
10783
  read included.`
10784
+ },
10785
+ status_condition: {
10786
+ anyOf: [
10787
+ {
10788
+ $ref: "#/$defs/StatusCondition"
10789
+ },
10790
+ {
10791
+ type: "null"
10792
+ }
10793
+ ],
10794
+ description: "What `--when-destination-status` found the counterpart's status at, and whether that\nmet it — present only when the copy was given the condition and this item was an update\nof a task, a refused one included."
10429
10795
  }
10430
10796
  },
10431
10797
  required: [
@@ -10767,6 +11133,17 @@ exits \`4\`. Copying the item again once it has settled lands it.`,
10767
11133
  description: `That the write had to read its target first, and why — absent when it sent only its
10768
11134
  mutations.`
10769
11135
  },
11136
+ held: {
11137
+ anyOf: [
11138
+ {
11139
+ $ref: "#/$defs/WriteResult"
11140
+ },
11141
+ {
11142
+ type: "null"
11143
+ }
11144
+ ],
11145
+ description: "What the counterpart held, as the copy's read of it before writing found it — present\nonly on an item the copy refused after that read, such as `destination-status`."
11146
+ },
10770
11147
  placed: {
10771
11148
  anyOf: [
10772
11149
  {
@@ -10784,6 +11161,17 @@ included, so a would-be create still says where it would go; absent for a copy i
10784
11161
  a source with none, whose output is what it always was, and for an orphan, which was
10785
11162
  not placed at all.`
10786
11163
  },
11164
+ priority_condition: {
11165
+ anyOf: [
11166
+ {
11167
+ $ref: "#/$defs/PriorityCondition"
11168
+ },
11169
+ {
11170
+ type: "null"
11171
+ }
11172
+ ],
11173
+ description: "What `--when-destination-priority` found the counterpart's priority at, and whether\nthat met it — present only when the copy was given the condition and this item was an\nupdate of a task."
11174
+ },
10787
11175
  result: {
10788
11176
  anyOf: [
10789
11177
  {
@@ -10793,8 +11181,10 @@ not placed at all.`
10793
11181
  type: "null"
10794
11182
  }
10795
11183
  ],
10796
- description: `What each mutation the write sent came to, and the version it left the task at — for a
10797
- source that reports its writes' parts.`
11184
+ description: `What the item holds once the write is done — its version, status and priority — and,
11185
+ for a write made with \`--expect\` on a source that reports its writes' parts, what each
11186
+ mutation it sent came to. Absent for a dry run and for an item nothing was written to
11187
+ or read of.`
10798
11188
  },
10799
11189
  source: {
10800
11190
  $ref: "#/$defs/GlobalId",
@@ -10811,6 +11201,17 @@ source that reports its writes' parts.`
10811
11201
  ],
10812
11202
  description: `What the write spent at the sources that meter their own requests — the fallback's
10813
11203
  read included.`
11204
+ },
11205
+ status_condition: {
11206
+ anyOf: [
11207
+ {
11208
+ $ref: "#/$defs/StatusCondition"
11209
+ },
11210
+ {
11211
+ type: "null"
11212
+ }
11213
+ ],
11214
+ description: "What `--when-destination-status` found the counterpart's status at, and whether that\nmet it — present only when the copy was given the condition and this item was an update\nof a task, a refused one included."
10814
11215
  }
10815
11216
  },
10816
11217
  required: [
@@ -10851,6 +11252,11 @@ so as [\`NoCounterpart\`] instead.`,
10851
11252
  const: "match",
10852
11253
  description: "A search of the destination by the caller's `--match-by`.",
10853
11254
  type: "string"
11255
+ },
11256
+ {
11257
+ const: "intent",
11258
+ description: "The item the destination holds under the key of a create an earlier attempt of this\ncopy recorded its intent for, at `onetaskgraph.creating`: that attempt's create,\nfinished rather than made twice.",
11259
+ type: "string"
10854
11260
  }
10855
11261
  ]
10856
11262
  },
@@ -11072,6 +11478,60 @@ so a native id may contain colons freely.`,
11072
11478
  ],
11073
11479
  type: "object"
11074
11480
  },
11481
+ Priority: {
11482
+ description: `How much a task matters, in the one vocabulary every source is normalised into.
11483
+
11484
+ Five values, most pressing first after [\`None\`](Self::None): Linear's own priority has
11485
+ exactly these, and a source whose backend has none of its own maps its representation
11486
+ onto them. \`none\` is a value rather than an absent field, because "no priority is set" is
11487
+ something a person sets — writing \`none\` clears a priority — and a reader tells it apart
11488
+ from nothing by the value alone.`,
11489
+ oneOf: [
11490
+ {
11491
+ const: "none",
11492
+ description: "No priority is set.",
11493
+ type: "string"
11494
+ },
11495
+ {
11496
+ const: "urgent",
11497
+ description: "Drop everything for it.",
11498
+ type: "string"
11499
+ },
11500
+ {
11501
+ const: "high",
11502
+ description: "Next, before the rest.",
11503
+ type: "string"
11504
+ },
11505
+ {
11506
+ const: "medium",
11507
+ description: "In its turn.",
11508
+ type: "string"
11509
+ },
11510
+ {
11511
+ const: "low",
11512
+ description: "When there is nothing more pressing.",
11513
+ type: "string"
11514
+ }
11515
+ ]
11516
+ },
11517
+ PriorityCondition: {
11518
+ description: "What a guarded copy found a counterpart's priority at, and whether that met the condition.",
11519
+ properties: {
11520
+ held: {
11521
+ $ref: "#/$defs/Priority",
11522
+ description: "The counterpart's priority, as the copy's own pre-write read held it."
11523
+ },
11524
+ met: {
11525
+ description: "Whether that priority is one the condition names.",
11526
+ type: "boolean"
11527
+ }
11528
+ },
11529
+ required: [
11530
+ "held",
11531
+ "met"
11532
+ ],
11533
+ type: "object"
11534
+ },
11075
11535
  SourceName: {
11076
11536
  description: "The name a configuration document gives one configured source.",
11077
11537
  pattern: "^[a-z0-9][a-z0-9-]*$",
@@ -11105,6 +11565,27 @@ interprets none of them, which is why the budget and unit names are open vocabul
11105
11565
  ],
11106
11566
  type: "object"
11107
11567
  },
11568
+ Status: {
11569
+ description: `A source's status, kept in both normalised and original form.
11570
+
11571
+ \`category\` is what every filter compares against; \`name\` is the source's own
11572
+ wording, preserved so display never flattens "In Review" into "In Progress".`,
11573
+ properties: {
11574
+ category: {
11575
+ $ref: "#/$defs/StatusCategory",
11576
+ description: "The normalised value filters compare against."
11577
+ },
11578
+ name: {
11579
+ description: "The source's own label for this status.",
11580
+ type: "string"
11581
+ }
11582
+ },
11583
+ required: [
11584
+ "category",
11585
+ "name"
11586
+ ],
11587
+ type: "object"
11588
+ },
11108
11589
  StatusCategory: {
11109
11590
  description: "The normalised status vocabulary shared across every source.",
11110
11591
  oneOf: [
@@ -11150,16 +11631,34 @@ interprets none of them, which is why the budget and unit names are open vocabul
11150
11631
  }
11151
11632
  ]
11152
11633
  },
11153
- WriteFallback: {
11154
- description: "That an expected write read its target before writing, and why.",
11634
+ StatusCondition: {
11635
+ description: "What a guarded copy found a counterpart's status at, and whether that met the condition.",
11155
11636
  properties: {
11156
- read: {
11157
- description: "Always `true`: the write made one read.",
11158
- type: "boolean"
11637
+ held: {
11638
+ $ref: "#/$defs/StatusCategory",
11639
+ description: "The counterpart's status category, as the copy's own pre-write read held it."
11159
11640
  },
11160
- reason: {
11161
- description: "Why it could not take what it needed from the cache.",
11162
- type: "string"
11641
+ met: {
11642
+ description: "Whether that category is one the condition names.",
11643
+ type: "boolean"
11644
+ }
11645
+ },
11646
+ required: [
11647
+ "held",
11648
+ "met"
11649
+ ],
11650
+ type: "object"
11651
+ },
11652
+ WriteFallback: {
11653
+ description: "That an expected write read its target before writing, and why.",
11654
+ properties: {
11655
+ read: {
11656
+ description: "Always `true`: the write made one read.",
11657
+ type: "boolean"
11658
+ },
11659
+ reason: {
11660
+ description: "Why it could not take what it needed from the cache.",
11661
+ type: "string"
11163
11662
  }
11164
11663
  },
11165
11664
  required: [
@@ -11247,26 +11746,57 @@ Never sent again: doing so could apply it twice.`,
11247
11746
  type: "object"
11248
11747
  },
11249
11748
  WriteResult: {
11250
- description: "What each mutation of an expected write came to, built from the mutations' own responses.",
11749
+ description: `What an item holds once a write is done, read off the write's own responses — and, for an
11750
+ expected write, what each mutation it sent came to.
11751
+
11752
+ Every write verb and every item a copy lands answers one, with no request added for it: a
11753
+ field the write kept is what the read before it held. \`version\` is \`null\` where the source
11754
+ cannot vouch for a token from its write's responses — a GitHub board for an item it has just
11755
+ written, a stdio-hosted plugin, an in-memory source — and otherwise the token a read would
11756
+ then give.`,
11251
11757
  properties: {
11252
11758
  parts: {
11253
- description: "One per mutation sent, in the order sent.",
11759
+ description: "One per mutation an expected write sent, in the order sent — absent for a write made\nwithout `--expect`.",
11254
11760
  items: {
11255
11761
  $ref: "#/$defs/WritePart"
11256
11762
  },
11257
- type: "array"
11763
+ type: [
11764
+ "array",
11765
+ "null"
11766
+ ]
11767
+ },
11768
+ priority: {
11769
+ anyOf: [
11770
+ {
11771
+ $ref: "#/$defs/Priority"
11772
+ },
11773
+ {
11774
+ type: "null"
11775
+ }
11776
+ ],
11777
+ default: null,
11778
+ description: "A task's priority after the write — `null` for a project or a document, which carry\nnone, and where an expected write that failed cannot say."
11779
+ },
11780
+ status: {
11781
+ anyOf: [
11782
+ {
11783
+ $ref: "#/$defs/Status"
11784
+ },
11785
+ {
11786
+ type: "null"
11787
+ }
11788
+ ],
11789
+ default: null,
11790
+ description: "The item's status after the write, exactly as `task show` spells it — `null` for a\ndocument, which has none, and where an expected write that failed cannot say."
11258
11791
  },
11259
11792
  version: {
11260
- description: "The task's version after the write, where the last response determines it.",
11793
+ description: "The item's version after the write, where the write's responses determine it.",
11261
11794
  type: [
11262
11795
  "string",
11263
11796
  "null"
11264
11797
  ]
11265
11798
  }
11266
11799
  },
11267
- required: [
11268
- "parts"
11269
- ],
11270
11800
  type: "object"
11271
11801
  }
11272
11802
  },
@@ -11402,10 +11932,42 @@ so as [\`NoCounterpart\`] instead.`,
11402
11932
  const: "match",
11403
11933
  description: "A search of the destination by the caller's `--match-by`.",
11404
11934
  type: "string"
11935
+ },
11936
+ {
11937
+ const: "intent",
11938
+ description: "The item the destination holds under the key of a create an earlier attempt of this\ncopy recorded its intent for, at `onetaskgraph.creating`: that attempt's create,\nfinished rather than made twice.",
11939
+ type: "string"
11405
11940
  }
11406
11941
  ],
11407
11942
  title: "CopyVia"
11408
11943
  },
11944
+ CreateSettings: {
11945
+ $schema: "https://json-schema.org/draft/2020-12/schema",
11946
+ description: "How a copy out of one source keeps a create safe to retry: its two settings, each in whole\nseconds, read off the source's own block beside `cache` and `routes`.\n\n`create_lease_seconds` is how long the intent a copy records on the item it copies, at\n`onetaskgraph.creating`, stays its own before another attempt may take it over — read off\nthe copy's **source**. `create_quiescence_seconds` is how long after an intent was first\ntaken a retry waits for an earlier attempt's create to become listed before creating again\n— read off the copy's **destination**, and only where that destination's lookup by create\nkey can lag a create. Both default to 120 and are left out of a configuration that does not\nset them.",
11947
+ properties: {
11948
+ create_lease_seconds: {
11949
+ description: "Seconds an intent to create stays the holder's own; 120 when absent.",
11950
+ format: "uint64",
11951
+ minimum: 0,
11952
+ type: [
11953
+ "integer",
11954
+ "null"
11955
+ ]
11956
+ },
11957
+ create_quiescence_seconds: {
11958
+ description: `Seconds after an intent was first taken that a retry waits for the earlier create to be
11959
+ listed; 120 when absent.`,
11960
+ format: "uint64",
11961
+ minimum: 0,
11962
+ type: [
11963
+ "integer",
11964
+ "null"
11965
+ ]
11966
+ }
11967
+ },
11968
+ title: "CreateSettings",
11969
+ type: "object"
11970
+ },
11409
11971
  CredentialLayer: {
11410
11972
  $schema: "https://json-schema.org/draft/2020-12/schema",
11411
11973
  description: "Which layer answered for one credential name.",
@@ -11463,6 +12025,42 @@ is, colons included. The engine parses a qualified id by splitting on the
11463
12025
  *first* colon precisely so this stays true.`,
11464
12026
  type: "string"
11465
12027
  },
12028
+ Priority: {
12029
+ description: `How much a task matters, in the one vocabulary every source is normalised into.
12030
+
12031
+ Five values, most pressing first after [\`None\`](Self::None): Linear's own priority has
12032
+ exactly these, and a source whose backend has none of its own maps its representation
12033
+ onto them. \`none\` is a value rather than an absent field, because "no priority is set" is
12034
+ something a person sets — writing \`none\` clears a priority — and a reader tells it apart
12035
+ from nothing by the value alone.`,
12036
+ oneOf: [
12037
+ {
12038
+ const: "none",
12039
+ description: "No priority is set.",
12040
+ type: "string"
12041
+ },
12042
+ {
12043
+ const: "urgent",
12044
+ description: "Drop everything for it.",
12045
+ type: "string"
12046
+ },
12047
+ {
12048
+ const: "high",
12049
+ description: "Next, before the rest.",
12050
+ type: "string"
12051
+ },
12052
+ {
12053
+ const: "medium",
12054
+ description: "In its turn.",
12055
+ type: "string"
12056
+ },
12057
+ {
12058
+ const: "low",
12059
+ description: "When there is nothing more pressing.",
12060
+ type: "string"
12061
+ }
12062
+ ]
12063
+ },
11466
12064
  Spent: {
11467
12065
  description: `What one command spent, summed over the sources in it that meter their own requests.
11468
12066
 
@@ -11491,6 +12089,72 @@ interprets none of them, which is why the budget and unit names are open vocabul
11491
12089
  ],
11492
12090
  type: "object"
11493
12091
  },
12092
+ Status: {
12093
+ description: `A source's status, kept in both normalised and original form.
12094
+
12095
+ \`category\` is what every filter compares against; \`name\` is the source's own
12096
+ wording, preserved so display never flattens "In Review" into "In Progress".`,
12097
+ properties: {
12098
+ category: {
12099
+ $ref: "#/$defs/StatusCategory",
12100
+ description: "The normalised value filters compare against."
12101
+ },
12102
+ name: {
12103
+ description: "The source's own label for this status.",
12104
+ type: "string"
12105
+ }
12106
+ },
12107
+ required: [
12108
+ "category",
12109
+ "name"
12110
+ ],
12111
+ type: "object"
12112
+ },
12113
+ StatusCategory: {
12114
+ description: "The normalised status vocabulary shared across every source.",
12115
+ oneOf: [
12116
+ {
12117
+ const: "draft",
12118
+ description: "Written down but not yet committed to as work.",
12119
+ type: "string"
12120
+ },
12121
+ {
12122
+ const: "backlog",
12123
+ description: "Known about, not yet accepted as ready to work.",
12124
+ type: "string"
12125
+ },
12126
+ {
12127
+ const: "todo",
12128
+ description: "Accepted and ready to be picked up, and nothing has claimed it.",
12129
+ type: "string"
12130
+ },
12131
+ {
12132
+ const: "queued",
12133
+ description: "Claimed by work that will do it, and not yet started.",
12134
+ type: "string"
12135
+ },
12136
+ {
12137
+ const: "in-progress",
12138
+ description: "Being worked on.",
12139
+ type: "string"
12140
+ },
12141
+ {
12142
+ const: "done",
12143
+ description: "Finished.",
12144
+ type: "string"
12145
+ },
12146
+ {
12147
+ const: "cancelled",
12148
+ description: "Abandoned.",
12149
+ type: "string"
12150
+ },
12151
+ {
12152
+ const: "unknown",
12153
+ description: "The source reported a status this vocabulary cannot place.",
12154
+ type: "string"
12155
+ }
12156
+ ]
12157
+ },
11494
12158
  WriteFallback: {
11495
12159
  description: "That an expected write read its target before writing, and why.",
11496
12160
  properties: {
@@ -11588,26 +12252,57 @@ Never sent again: doing so could apply it twice.`,
11588
12252
  type: "object"
11589
12253
  },
11590
12254
  WriteResult: {
11591
- description: "What each mutation of an expected write came to, built from the mutations' own responses.",
12255
+ description: `What an item holds once a write is done, read off the write's own responses — and, for an
12256
+ expected write, what each mutation it sent came to.
12257
+
12258
+ Every write verb and every item a copy lands answers one, with no request added for it: a
12259
+ field the write kept is what the read before it held. \`version\` is \`null\` where the source
12260
+ cannot vouch for a token from its write's responses — a GitHub board for an item it has just
12261
+ written, a stdio-hosted plugin, an in-memory source — and otherwise the token a read would
12262
+ then give.`,
11592
12263
  properties: {
11593
12264
  parts: {
11594
- description: "One per mutation sent, in the order sent.",
12265
+ description: "One per mutation an expected write sent, in the order sent — absent for a write made\nwithout `--expect`.",
11595
12266
  items: {
11596
12267
  $ref: "#/$defs/WritePart"
11597
12268
  },
11598
- type: "array"
12269
+ type: [
12270
+ "array",
12271
+ "null"
12272
+ ]
12273
+ },
12274
+ priority: {
12275
+ anyOf: [
12276
+ {
12277
+ $ref: "#/$defs/Priority"
12278
+ },
12279
+ {
12280
+ type: "null"
12281
+ }
12282
+ ],
12283
+ default: null,
12284
+ description: "A task's priority after the write — `null` for a project or a document, which carry\nnone, and where an expected write that failed cannot say."
12285
+ },
12286
+ status: {
12287
+ anyOf: [
12288
+ {
12289
+ $ref: "#/$defs/Status"
12290
+ },
12291
+ {
12292
+ type: "null"
12293
+ }
12294
+ ],
12295
+ default: null,
12296
+ description: "The item's status after the write, exactly as `task show` spells it — `null` for a\ndocument, which has none, and where an expected write that failed cannot say."
11599
12297
  },
11600
12298
  version: {
11601
- description: "The task's version after the write, where the last response determines it.",
12299
+ description: "The item's version after the write, where the write's responses determine it.",
11602
12300
  type: [
11603
12301
  "string",
11604
12302
  "null"
11605
12303
  ]
11606
12304
  }
11607
12305
  },
11608
- required: [
11609
- "parts"
11610
- ],
11611
12306
  type: "object"
11612
12307
  }
11613
12308
  },
@@ -13684,6 +14379,42 @@ name and the layer are reported and the value never is.`
13684
14379
  ],
13685
14380
  type: "object"
13686
14381
  },
14382
+ Priority: {
14383
+ description: `How much a task matters, in the one vocabulary every source is normalised into.
14384
+
14385
+ Five values, most pressing first after [\`None\`](Self::None): Linear's own priority has
14386
+ exactly these, and a source whose backend has none of its own maps its representation
14387
+ onto them. \`none\` is a value rather than an absent field, because "no priority is set" is
14388
+ something a person sets — writing \`none\` clears a priority — and a reader tells it apart
14389
+ from nothing by the value alone.`,
14390
+ oneOf: [
14391
+ {
14392
+ const: "none",
14393
+ description: "No priority is set.",
14394
+ type: "string"
14395
+ },
14396
+ {
14397
+ const: "urgent",
14398
+ description: "Drop everything for it.",
14399
+ type: "string"
14400
+ },
14401
+ {
14402
+ const: "high",
14403
+ description: "Next, before the rest.",
14404
+ type: "string"
14405
+ },
14406
+ {
14407
+ const: "medium",
14408
+ description: "In its turn.",
14409
+ type: "string"
14410
+ },
14411
+ {
14412
+ const: "low",
14413
+ description: "When there is nothing more pressing.",
14414
+ type: "string"
14415
+ }
14416
+ ]
14417
+ },
13687
14418
  Spent: {
13688
14419
  description: `What one command spent, summed over the sources in it that meter their own requests.
13689
14420
 
@@ -13712,21 +14443,87 @@ interprets none of them, which is why the budget and unit names are open vocabul
13712
14443
  ],
13713
14444
  type: "object"
13714
14445
  },
13715
- WriteFallback: {
13716
- description: "That an expected write read its target before writing, and why.",
14446
+ Status: {
14447
+ description: `A source's status, kept in both normalised and original form.
14448
+
14449
+ \`category\` is what every filter compares against; \`name\` is the source's own
14450
+ wording, preserved so display never flattens "In Review" into "In Progress".`,
13717
14451
  properties: {
13718
- read: {
13719
- description: "Always `true`: the write made one read.",
13720
- type: "boolean"
14452
+ category: {
14453
+ $ref: "#/$defs/StatusCategory",
14454
+ description: "The normalised value filters compare against."
13721
14455
  },
13722
- reason: {
13723
- description: "Why it could not take what it needed from the cache.",
14456
+ name: {
14457
+ description: "The source's own label for this status.",
13724
14458
  type: "string"
13725
14459
  }
13726
14460
  },
13727
14461
  required: [
13728
- "read",
13729
- "reason"
14462
+ "category",
14463
+ "name"
14464
+ ],
14465
+ type: "object"
14466
+ },
14467
+ StatusCategory: {
14468
+ description: "The normalised status vocabulary shared across every source.",
14469
+ oneOf: [
14470
+ {
14471
+ const: "draft",
14472
+ description: "Written down but not yet committed to as work.",
14473
+ type: "string"
14474
+ },
14475
+ {
14476
+ const: "backlog",
14477
+ description: "Known about, not yet accepted as ready to work.",
14478
+ type: "string"
14479
+ },
14480
+ {
14481
+ const: "todo",
14482
+ description: "Accepted and ready to be picked up, and nothing has claimed it.",
14483
+ type: "string"
14484
+ },
14485
+ {
14486
+ const: "queued",
14487
+ description: "Claimed by work that will do it, and not yet started.",
14488
+ type: "string"
14489
+ },
14490
+ {
14491
+ const: "in-progress",
14492
+ description: "Being worked on.",
14493
+ type: "string"
14494
+ },
14495
+ {
14496
+ const: "done",
14497
+ description: "Finished.",
14498
+ type: "string"
14499
+ },
14500
+ {
14501
+ const: "cancelled",
14502
+ description: "Abandoned.",
14503
+ type: "string"
14504
+ },
14505
+ {
14506
+ const: "unknown",
14507
+ description: "The source reported a status this vocabulary cannot place.",
14508
+ type: "string"
14509
+ }
14510
+ ]
14511
+ },
14512
+ WriteFallback: {
14513
+ description: "That an expected write read its target before writing, and why.",
14514
+ properties: {
14515
+ read: {
14516
+ description: "Always `true`: the write made one read.",
14517
+ type: "boolean"
14518
+ },
14519
+ reason: {
14520
+ description: "Why it could not take what it needed from the cache.",
14521
+ type: "string"
14522
+ }
14523
+ },
14524
+ required: [
14525
+ "read",
14526
+ "reason"
13730
14527
  ],
13731
14528
  type: "object"
13732
14529
  },
@@ -13809,26 +14606,57 @@ Never sent again: doing so could apply it twice.`,
13809
14606
  type: "object"
13810
14607
  },
13811
14608
  WriteResult: {
13812
- description: "What each mutation of an expected write came to, built from the mutations' own responses.",
14609
+ description: `What an item holds once a write is done, read off the write's own responses — and, for an
14610
+ expected write, what each mutation it sent came to.
14611
+
14612
+ Every write verb and every item a copy lands answers one, with no request added for it: a
14613
+ field the write kept is what the read before it held. \`version\` is \`null\` where the source
14614
+ cannot vouch for a token from its write's responses — a GitHub board for an item it has just
14615
+ written, a stdio-hosted plugin, an in-memory source — and otherwise the token a read would
14616
+ then give.`,
13813
14617
  properties: {
13814
14618
  parts: {
13815
- description: "One per mutation sent, in the order sent.",
14619
+ description: "One per mutation an expected write sent, in the order sent — absent for a write made\nwithout `--expect`.",
13816
14620
  items: {
13817
14621
  $ref: "#/$defs/WritePart"
13818
14622
  },
13819
- type: "array"
14623
+ type: [
14624
+ "array",
14625
+ "null"
14626
+ ]
14627
+ },
14628
+ priority: {
14629
+ anyOf: [
14630
+ {
14631
+ $ref: "#/$defs/Priority"
14632
+ },
14633
+ {
14634
+ type: "null"
14635
+ }
14636
+ ],
14637
+ default: null,
14638
+ description: "A task's priority after the write — `null` for a project or a document, which carry\nnone, and where an expected write that failed cannot say."
14639
+ },
14640
+ status: {
14641
+ anyOf: [
14642
+ {
14643
+ $ref: "#/$defs/Status"
14644
+ },
14645
+ {
14646
+ type: "null"
14647
+ }
14648
+ ],
14649
+ default: null,
14650
+ description: "The item's status after the write, exactly as `task show` spells it — `null` for a\ndocument, which has none, and where an expected write that failed cannot say."
13820
14651
  },
13821
14652
  version: {
13822
- description: "The task's version after the write, where the last response determines it.",
14653
+ description: "The item's version after the write, where the write's responses determine it.",
13823
14654
  type: [
13824
14655
  "string",
13825
14656
  "null"
13826
14657
  ]
13827
14658
  }
13828
14659
  },
13829
- required: [
13830
- "parts"
13831
- ],
13832
14660
  type: "object"
13833
14661
  }
13834
14662
  },
@@ -13856,8 +14684,10 @@ mutations.`
13856
14684
  type: "null"
13857
14685
  }
13858
14686
  ],
13859
- description: `What each mutation the write sent came to, and the version it left the task at — for a
13860
- source that reports its writes' parts.`
14687
+ description: `What the item holds once the write is done — its version, status and priority — and,
14688
+ for a write made with \`--expect\` on a source that reports its writes' parts, what each
14689
+ mutation it sent came to. Absent for a dry run and for an item nothing was written to
14690
+ or read of.`
13861
14691
  },
13862
14692
  spent: {
13863
14693
  anyOf: [
@@ -14059,6 +14889,42 @@ later.`,
14059
14889
  }
14060
14890
  ]
14061
14891
  },
14892
+ Priority: {
14893
+ description: `How much a task matters, in the one vocabulary every source is normalised into.
14894
+
14895
+ Five values, most pressing first after [\`None\`](Self::None): Linear's own priority has
14896
+ exactly these, and a source whose backend has none of its own maps its representation
14897
+ onto them. \`none\` is a value rather than an absent field, because "no priority is set" is
14898
+ something a person sets — writing \`none\` clears a priority — and a reader tells it apart
14899
+ from nothing by the value alone.`,
14900
+ oneOf: [
14901
+ {
14902
+ const: "none",
14903
+ description: "No priority is set.",
14904
+ type: "string"
14905
+ },
14906
+ {
14907
+ const: "urgent",
14908
+ description: "Drop everything for it.",
14909
+ type: "string"
14910
+ },
14911
+ {
14912
+ const: "high",
14913
+ description: "Next, before the rest.",
14914
+ type: "string"
14915
+ },
14916
+ {
14917
+ const: "medium",
14918
+ description: "In its turn.",
14919
+ type: "string"
14920
+ },
14921
+ {
14922
+ const: "low",
14923
+ description: "When there is nothing more pressing.",
14924
+ type: "string"
14925
+ }
14926
+ ]
14927
+ },
14062
14928
  SourceName: {
14063
14929
  description: "The name a configuration document gives one configured source.",
14064
14930
  pattern: "^[a-z0-9][a-z0-9-]*$",
@@ -14092,6 +14958,72 @@ interprets none of them, which is why the budget and unit names are open vocabul
14092
14958
  ],
14093
14959
  type: "object"
14094
14960
  },
14961
+ Status: {
14962
+ description: `A source's status, kept in both normalised and original form.
14963
+
14964
+ \`category\` is what every filter compares against; \`name\` is the source's own
14965
+ wording, preserved so display never flattens "In Review" into "In Progress".`,
14966
+ properties: {
14967
+ category: {
14968
+ $ref: "#/$defs/StatusCategory",
14969
+ description: "The normalised value filters compare against."
14970
+ },
14971
+ name: {
14972
+ description: "The source's own label for this status.",
14973
+ type: "string"
14974
+ }
14975
+ },
14976
+ required: [
14977
+ "category",
14978
+ "name"
14979
+ ],
14980
+ type: "object"
14981
+ },
14982
+ StatusCategory: {
14983
+ description: "The normalised status vocabulary shared across every source.",
14984
+ oneOf: [
14985
+ {
14986
+ const: "draft",
14987
+ description: "Written down but not yet committed to as work.",
14988
+ type: "string"
14989
+ },
14990
+ {
14991
+ const: "backlog",
14992
+ description: "Known about, not yet accepted as ready to work.",
14993
+ type: "string"
14994
+ },
14995
+ {
14996
+ const: "todo",
14997
+ description: "Accepted and ready to be picked up, and nothing has claimed it.",
14998
+ type: "string"
14999
+ },
15000
+ {
15001
+ const: "queued",
15002
+ description: "Claimed by work that will do it, and not yet started.",
15003
+ type: "string"
15004
+ },
15005
+ {
15006
+ const: "in-progress",
15007
+ description: "Being worked on.",
15008
+ type: "string"
15009
+ },
15010
+ {
15011
+ const: "done",
15012
+ description: "Finished.",
15013
+ type: "string"
15014
+ },
15015
+ {
15016
+ const: "cancelled",
15017
+ description: "Abandoned.",
15018
+ type: "string"
15019
+ },
15020
+ {
15021
+ const: "unknown",
15022
+ description: "The source reported a status this vocabulary cannot place.",
15023
+ type: "string"
15024
+ }
15025
+ ]
15026
+ },
14095
15027
  WriteFallback: {
14096
15028
  description: "That an expected write read its target before writing, and why.",
14097
15029
  properties: {
@@ -14189,26 +15121,57 @@ Never sent again: doing so could apply it twice.`,
14189
15121
  type: "object"
14190
15122
  },
14191
15123
  WriteResult: {
14192
- description: "What each mutation of an expected write came to, built from the mutations' own responses.",
15124
+ description: `What an item holds once a write is done, read off the write's own responses — and, for an
15125
+ expected write, what each mutation it sent came to.
15126
+
15127
+ Every write verb and every item a copy lands answers one, with no request added for it: a
15128
+ field the write kept is what the read before it held. \`version\` is \`null\` where the source
15129
+ cannot vouch for a token from its write's responses — a GitHub board for an item it has just
15130
+ written, a stdio-hosted plugin, an in-memory source — and otherwise the token a read would
15131
+ then give.`,
14193
15132
  properties: {
14194
15133
  parts: {
14195
- description: "One per mutation sent, in the order sent.",
15134
+ description: "One per mutation an expected write sent, in the order sent — absent for a write made\nwithout `--expect`.",
14196
15135
  items: {
14197
15136
  $ref: "#/$defs/WritePart"
14198
15137
  },
14199
- type: "array"
15138
+ type: [
15139
+ "array",
15140
+ "null"
15141
+ ]
15142
+ },
15143
+ priority: {
15144
+ anyOf: [
15145
+ {
15146
+ $ref: "#/$defs/Priority"
15147
+ },
15148
+ {
15149
+ type: "null"
15150
+ }
15151
+ ],
15152
+ default: null,
15153
+ description: "A task's priority after the write — `null` for a project or a document, which carry\nnone, and where an expected write that failed cannot say."
15154
+ },
15155
+ status: {
15156
+ anyOf: [
15157
+ {
15158
+ $ref: "#/$defs/Status"
15159
+ },
15160
+ {
15161
+ type: "null"
15162
+ }
15163
+ ],
15164
+ default: null,
15165
+ description: "The item's status after the write, exactly as `task show` spells it — `null` for a\ndocument, which has none, and where an expected write that failed cannot say."
14200
15166
  },
14201
15167
  version: {
14202
- description: "The task's version after the write, where the last response determines it.",
15168
+ description: "The item's version after the write, where the write's responses determine it.",
14203
15169
  type: [
14204
15170
  "string",
14205
15171
  "null"
14206
15172
  ]
14207
15173
  }
14208
15174
  },
14209
- required: [
14210
- "parts"
14211
- ],
14212
15175
  type: "object"
14213
15176
  }
14214
15177
  },
@@ -14231,6 +15194,17 @@ Never sent again: doing so could apply it twice.`,
14231
15194
  description: `That the write had to read its target first, and why — absent when it sent only its
14232
15195
  mutations.`
14233
15196
  },
15197
+ held: {
15198
+ anyOf: [
15199
+ {
15200
+ $ref: "#/$defs/WriteResult"
15201
+ },
15202
+ {
15203
+ type: "null"
15204
+ }
15205
+ ],
15206
+ description: "What the destination item a copy refused to write held, as the copy's read of it\nbefore writing found it — present only for a refusal made after that read, such as\n`target-task-origin`."
15207
+ },
14234
15208
  result: {
14235
15209
  anyOf: [
14236
15210
  {
@@ -14240,8 +15214,10 @@ mutations.`
14240
15214
  type: "null"
14241
15215
  }
14242
15216
  ],
14243
- description: `What each mutation the write sent came to, and the version it left the task at — for a
14244
- source that reports its writes' parts.`
15217
+ description: `What the item holds once the write is done — its version, status and priority — and,
15218
+ for a write made with \`--expect\` on a source that reports its writes' parts, what each
15219
+ mutation it sent came to. Absent for a dry run and for an item nothing was written to
15220
+ or read of.`
14245
15221
  },
14246
15222
  spent: {
14247
15223
  anyOf: [
@@ -14701,27 +15677,241 @@ and a whole item is not what a landing's closure needs.`,
14701
15677
  default: "task",
14702
15678
  description: "Which kind of item it is. Defaulted to `task` and left out of the wire while it is one,\nso a plugin written before a project could be held answers exactly what it answered."
14703
15679
  },
14704
- option: {
15680
+ option: {
15681
+ default: null,
15682
+ description: `The name of the option the task's card sits at, as the source spells it, when it sits
15683
+ at one.`,
15684
+ type: [
15685
+ "string",
15686
+ "null"
15687
+ ]
15688
+ },
15689
+ repositories: {
15690
+ description: "The repositories the task names.",
15691
+ items: {
15692
+ $ref: "#/$defs/Repository"
15693
+ },
15694
+ type: "array"
15695
+ }
15696
+ },
15697
+ required: [
15698
+ "id"
15699
+ ],
15700
+ title: "HeldTask",
15701
+ type: "object"
15702
+ },
15703
+ HumanTaskProjected: {
15704
+ $defs: {
15705
+ SourceName: {
15706
+ description: "The name a configuration document gives one configured source.",
15707
+ pattern: "^[a-z0-9][a-z0-9-]*$",
15708
+ type: "string"
15709
+ }
15710
+ },
15711
+ $schema: "https://json-schema.org/draft/2020-12/schema",
15712
+ additionalProperties: false,
15713
+ description: "A durable projection's bound tracker identity, suitable for a directly clickable card.",
15714
+ properties: {
15715
+ project: {
15716
+ description: "The resolved destination project.",
15717
+ type: "string"
15718
+ },
15719
+ source: {
15720
+ $ref: "#/$defs/SourceName",
15721
+ description: "The resolved configured source."
15722
+ },
15723
+ task: {
15724
+ description: "The qualified task identity.",
15725
+ type: "string"
15726
+ },
15727
+ url: {
15728
+ description: "The canonical tracker issue URL.",
15729
+ type: "string"
15730
+ }
15731
+ },
15732
+ required: [
15733
+ "task",
15734
+ "url",
15735
+ "project",
15736
+ "source"
15737
+ ],
15738
+ title: "HumanTaskProjected",
15739
+ type: "object"
15740
+ },
15741
+ HumanTaskProjection: {
15742
+ $defs: {
15743
+ Priority: {
15744
+ description: `How much a task matters, in the one vocabulary every source is normalised into.
15745
+
15746
+ Five values, most pressing first after [\`None\`](Self::None): Linear's own priority has
15747
+ exactly these, and a source whose backend has none of its own maps its representation
15748
+ onto them. \`none\` is a value rather than an absent field, because "no priority is set" is
15749
+ something a person sets — writing \`none\` clears a priority — and a reader tells it apart
15750
+ from nothing by the value alone.`,
15751
+ oneOf: [
15752
+ {
15753
+ const: "none",
15754
+ description: "No priority is set.",
15755
+ type: "string"
15756
+ },
15757
+ {
15758
+ const: "urgent",
15759
+ description: "Drop everything for it.",
15760
+ type: "string"
15761
+ },
15762
+ {
15763
+ const: "high",
15764
+ description: "Next, before the rest.",
15765
+ type: "string"
15766
+ },
15767
+ {
15768
+ const: "medium",
15769
+ description: "In its turn.",
15770
+ type: "string"
15771
+ },
15772
+ {
15773
+ const: "low",
15774
+ description: "When there is nothing more pressing.",
15775
+ type: "string"
15776
+ }
15777
+ ]
15778
+ },
15779
+ ProjectionOwner: {
15780
+ additionalProperties: false,
15781
+ description: "The producer that owns the intent; nullable run and plan are explicit on the wire.",
15782
+ properties: {
15783
+ plan: {
15784
+ description: "The owning plan, when applicable.",
15785
+ type: [
15786
+ "string",
15787
+ "null"
15788
+ ]
15789
+ },
15790
+ run: {
15791
+ description: "The owning run, when applicable.",
15792
+ type: [
15793
+ "string",
15794
+ "null"
15795
+ ]
15796
+ },
15797
+ session: {
15798
+ description: "The owning session.",
15799
+ type: "string"
15800
+ }
15801
+ },
15802
+ required: [
15803
+ "session",
15804
+ "run",
15805
+ "plan"
15806
+ ],
15807
+ type: "object"
15808
+ },
15809
+ ProjectionState: {
15810
+ description: "The requested tracker lifecycle. Questions have no representation here.",
15811
+ oneOf: [
15812
+ {
15813
+ const: "open",
15814
+ description: "The operator has work to do.",
15815
+ type: "string"
15816
+ },
15817
+ {
15818
+ const: "completed",
15819
+ description: "The operator completed the work.",
15820
+ type: "string"
15821
+ },
15822
+ {
15823
+ const: "dismissed",
15824
+ description: "The operator dismissed the work, optionally recording a reason.",
15825
+ type: "string"
15826
+ }
15827
+ ]
15828
+ },
15829
+ ProjectionVersion: {
15830
+ const: 1,
15831
+ type: "integer"
15832
+ },
15833
+ Repository: {
15834
+ description: "A repository identified by its normalized origin, without a URL scheme or `.git` suffix.",
15835
+ type: "string"
15836
+ },
15837
+ SourceName: {
15838
+ description: "The name a configuration document gives one configured source.",
15839
+ pattern: "^[a-z0-9][a-z0-9-]*$",
15840
+ type: "string"
15841
+ }
15842
+ },
15843
+ $schema: "https://json-schema.org/draft/2020-12/schema",
15844
+ additionalProperties: false,
15845
+ description: "Version 1 of the general human task projection request.",
15846
+ properties: {
15847
+ body: {
15848
+ description: "The visible task content.",
15849
+ type: "string"
15850
+ },
15851
+ item_id: {
15852
+ description: "The external idempotency identity, stable across producer retries.",
15853
+ type: "string"
15854
+ },
15855
+ owner: {
15856
+ $ref: "#/$defs/ProjectionOwner",
15857
+ description: "The producer that owns the intent."
15858
+ },
15859
+ priority: {
15860
+ $ref: "#/$defs/Priority",
15861
+ description: "Its priority, using the existing plugin API serialization."
15862
+ },
15863
+ project: {
15864
+ description: "The plan's resolved destination project, or null for a configured human project.",
15865
+ type: [
15866
+ "string",
15867
+ "null"
15868
+ ]
15869
+ },
15870
+ reason: {
14705
15871
  default: null,
14706
- description: `The name of the option the task's card sits at, as the source spells it, when it sits
14707
- at one.`,
15872
+ description: "An optional dismissal reason. Omission and null both preserve absence.",
14708
15873
  type: [
14709
15874
  "string",
14710
15875
  "null"
14711
15876
  ]
14712
15877
  },
14713
15878
  repositories: {
14714
- description: "The repositories the task names.",
15879
+ description: "Normalized repository origins whose work this item concerns.",
14715
15880
  items: {
14716
15881
  $ref: "#/$defs/Repository"
14717
15882
  },
14718
15883
  type: "array"
15884
+ },
15885
+ schema_version: {
15886
+ $ref: "#/$defs/ProjectionVersion",
15887
+ description: "The wire contract version, always 1."
15888
+ },
15889
+ source: {
15890
+ $ref: "#/$defs/SourceName",
15891
+ description: "The configured source through which placement is resolved."
15892
+ },
15893
+ state: {
15894
+ $ref: "#/$defs/ProjectionState",
15895
+ description: "The desired lifecycle."
15896
+ },
15897
+ title: {
15898
+ description: "The visible task title.",
15899
+ type: "string"
14719
15900
  }
14720
15901
  },
14721
15902
  required: [
14722
- "id"
15903
+ "schema_version",
15904
+ "item_id",
15905
+ "owner",
15906
+ "title",
15907
+ "body",
15908
+ "priority",
15909
+ "repositories",
15910
+ "project",
15911
+ "source",
15912
+ "state"
14723
15913
  ],
14724
- title: "HeldTask",
15914
+ title: "HumanTaskProjection",
14725
15915
  type: "object"
14726
15916
  },
14727
15917
  IssueCompleted: {
@@ -16122,12 +17312,24 @@ so as [\`NoCounterpart\`] instead.`,
16122
17312
  const: "match",
16123
17313
  description: "A search of the destination by the caller's `--match-by`.",
16124
17314
  type: "string"
17315
+ },
17316
+ {
17317
+ const: "intent",
17318
+ description: "The item the destination holds under the key of a create an earlier attempt of this\ncopy recorded its intent for, at `onetaskgraph.creating`: that attempt's create,\nfinished rather than made twice.",
17319
+ type: "string"
16125
17320
  }
16126
17321
  ]
16127
17322
  },
16128
17323
  CreatesIn: {
16129
17324
  description: "Where a create would file a task's issue.",
16130
17325
  properties: {
17326
+ refused: {
17327
+ description: "Why the destination's own policy on where it creates — a GitHub Projects source's\n`creation_owners` — would refuse a create there, as the copy's refusal says it; absent\nwhen it would not. The locate itself never fails for it.",
17328
+ type: [
17329
+ "string",
17330
+ "null"
17331
+ ]
17332
+ },
16131
17333
  repository: {
16132
17334
  $ref: "#/$defs/Repository",
16133
17335
  description: "The repository, as a normalized origin `host/owner/name`."
@@ -16405,6 +17607,42 @@ absolute path, so a reader can print the path or read the contents out.`,
16405
17607
  description: "One caller-owned metadata key: `<namespace>.<name>`, at least two non-empty segments\nseparated by dots, whose first segment is not [`MetadataKey::RESERVED_NAMESPACE`].\n\nValidated wherever one is built, deserialized included, so a plugin handed one never has\nto ask whether it names a key this product owns.",
16406
17608
  type: "string"
16407
17609
  },
17610
+ Priority: {
17611
+ description: `How much a task matters, in the one vocabulary every source is normalised into.
17612
+
17613
+ Five values, most pressing first after [\`None\`](Self::None): Linear's own priority has
17614
+ exactly these, and a source whose backend has none of its own maps its representation
17615
+ onto them. \`none\` is a value rather than an absent field, because "no priority is set" is
17616
+ something a person sets — writing \`none\` clears a priority — and a reader tells it apart
17617
+ from nothing by the value alone.`,
17618
+ oneOf: [
17619
+ {
17620
+ const: "none",
17621
+ description: "No priority is set.",
17622
+ type: "string"
17623
+ },
17624
+ {
17625
+ const: "urgent",
17626
+ description: "Drop everything for it.",
17627
+ type: "string"
17628
+ },
17629
+ {
17630
+ const: "high",
17631
+ description: "Next, before the rest.",
17632
+ type: "string"
17633
+ },
17634
+ {
17635
+ const: "medium",
17636
+ description: "In its turn.",
17637
+ type: "string"
17638
+ },
17639
+ {
17640
+ const: "low",
17641
+ description: "When there is nothing more pressing.",
17642
+ type: "string"
17643
+ }
17644
+ ]
17645
+ },
16408
17646
  Spent: {
16409
17647
  description: `What one command spent, summed over the sources in it that meter their own requests.
16410
17648
 
@@ -16433,6 +17671,72 @@ interprets none of them, which is why the budget and unit names are open vocabul
16433
17671
  ],
16434
17672
  type: "object"
16435
17673
  },
17674
+ Status: {
17675
+ description: `A source's status, kept in both normalised and original form.
17676
+
17677
+ \`category\` is what every filter compares against; \`name\` is the source's own
17678
+ wording, preserved so display never flattens "In Review" into "In Progress".`,
17679
+ properties: {
17680
+ category: {
17681
+ $ref: "#/$defs/StatusCategory",
17682
+ description: "The normalised value filters compare against."
17683
+ },
17684
+ name: {
17685
+ description: "The source's own label for this status.",
17686
+ type: "string"
17687
+ }
17688
+ },
17689
+ required: [
17690
+ "category",
17691
+ "name"
17692
+ ],
17693
+ type: "object"
17694
+ },
17695
+ StatusCategory: {
17696
+ description: "The normalised status vocabulary shared across every source.",
17697
+ oneOf: [
17698
+ {
17699
+ const: "draft",
17700
+ description: "Written down but not yet committed to as work.",
17701
+ type: "string"
17702
+ },
17703
+ {
17704
+ const: "backlog",
17705
+ description: "Known about, not yet accepted as ready to work.",
17706
+ type: "string"
17707
+ },
17708
+ {
17709
+ const: "todo",
17710
+ description: "Accepted and ready to be picked up, and nothing has claimed it.",
17711
+ type: "string"
17712
+ },
17713
+ {
17714
+ const: "queued",
17715
+ description: "Claimed by work that will do it, and not yet started.",
17716
+ type: "string"
17717
+ },
17718
+ {
17719
+ const: "in-progress",
17720
+ description: "Being worked on.",
17721
+ type: "string"
17722
+ },
17723
+ {
17724
+ const: "done",
17725
+ description: "Finished.",
17726
+ type: "string"
17727
+ },
17728
+ {
17729
+ const: "cancelled",
17730
+ description: "Abandoned.",
17731
+ type: "string"
17732
+ },
17733
+ {
17734
+ const: "unknown",
17735
+ description: "The source reported a status this vocabulary cannot place.",
17736
+ type: "string"
17737
+ }
17738
+ ]
17739
+ },
16436
17740
  WriteFallback: {
16437
17741
  description: "That an expected write read its target before writing, and why.",
16438
17742
  properties: {
@@ -16530,26 +17834,57 @@ Never sent again: doing so could apply it twice.`,
16530
17834
  type: "object"
16531
17835
  },
16532
17836
  WriteResult: {
16533
- description: "What each mutation of an expected write came to, built from the mutations' own responses.",
17837
+ description: `What an item holds once a write is done, read off the write's own responses — and, for an
17838
+ expected write, what each mutation it sent came to.
17839
+
17840
+ Every write verb and every item a copy lands answers one, with no request added for it: a
17841
+ field the write kept is what the read before it held. \`version\` is \`null\` where the source
17842
+ cannot vouch for a token from its write's responses — a GitHub board for an item it has just
17843
+ written, a stdio-hosted plugin, an in-memory source — and otherwise the token a read would
17844
+ then give.`,
16534
17845
  properties: {
16535
17846
  parts: {
16536
- description: "One per mutation sent, in the order sent.",
17847
+ description: "One per mutation an expected write sent, in the order sent — absent for a write made\nwithout `--expect`.",
16537
17848
  items: {
16538
17849
  $ref: "#/$defs/WritePart"
16539
17850
  },
16540
- type: "array"
17851
+ type: [
17852
+ "array",
17853
+ "null"
17854
+ ]
17855
+ },
17856
+ priority: {
17857
+ anyOf: [
17858
+ {
17859
+ $ref: "#/$defs/Priority"
17860
+ },
17861
+ {
17862
+ type: "null"
17863
+ }
17864
+ ],
17865
+ default: null,
17866
+ description: "A task's priority after the write — `null` for a project or a document, which carry\nnone, and where an expected write that failed cannot say."
17867
+ },
17868
+ status: {
17869
+ anyOf: [
17870
+ {
17871
+ $ref: "#/$defs/Status"
17872
+ },
17873
+ {
17874
+ type: "null"
17875
+ }
17876
+ ],
17877
+ default: null,
17878
+ description: "The item's status after the write, exactly as `task show` spells it — `null` for a\ndocument, which has none, and where an expected write that failed cannot say."
16541
17879
  },
16542
17880
  version: {
16543
- description: "The task's version after the write, where the last response determines it.",
17881
+ description: "The item's version after the write, where the write's responses determine it.",
16544
17882
  type: [
16545
17883
  "string",
16546
17884
  "null"
16547
17885
  ]
16548
17886
  }
16549
17887
  },
16550
- required: [
16551
- "parts"
16552
- ],
16553
17888
  type: "object"
16554
17889
  }
16555
17890
  },
@@ -29598,6 +30933,42 @@ Rendered \`<source>:<native>\` and parsed by splitting on the **first** colon,
29598
30933
  so a native id may contain colons freely.`,
29599
30934
  type: "string"
29600
30935
  },
30936
+ Priority: {
30937
+ description: `How much a task matters, in the one vocabulary every source is normalised into.
30938
+
30939
+ Five values, most pressing first after [\`None\`](Self::None): Linear's own priority has
30940
+ exactly these, and a source whose backend has none of its own maps its representation
30941
+ onto them. \`none\` is a value rather than an absent field, because "no priority is set" is
30942
+ something a person sets — writing \`none\` clears a priority — and a reader tells it apart
30943
+ from nothing by the value alone.`,
30944
+ oneOf: [
30945
+ {
30946
+ const: "none",
30947
+ description: "No priority is set.",
30948
+ type: "string"
30949
+ },
30950
+ {
30951
+ const: "urgent",
30952
+ description: "Drop everything for it.",
30953
+ type: "string"
30954
+ },
30955
+ {
30956
+ const: "high",
30957
+ description: "Next, before the rest.",
30958
+ type: "string"
30959
+ },
30960
+ {
30961
+ const: "medium",
30962
+ description: "In its turn.",
30963
+ type: "string"
30964
+ },
30965
+ {
30966
+ const: "low",
30967
+ description: "When there is nothing more pressing.",
30968
+ type: "string"
30969
+ }
30970
+ ]
30971
+ },
29601
30972
  Spent: {
29602
30973
  description: `What one command spent, summed over the sources in it that meter their own requests.
29603
30974
 
@@ -29613,18 +30984,84 @@ interprets none of them, which is why the budget and unit names are open vocabul
29613
30984
  },
29614
30985
  type: "array"
29615
30986
  },
29616
- requests: {
29617
- description: "How many HTTP requests those sources sent for this command.",
29618
- format: "uint64",
29619
- minimum: 0,
29620
- type: "integer"
30987
+ requests: {
30988
+ description: "How many HTTP requests those sources sent for this command.",
30989
+ format: "uint64",
30990
+ minimum: 0,
30991
+ type: "integer"
30992
+ }
30993
+ },
30994
+ required: [
30995
+ "requests",
30996
+ "budgets"
30997
+ ],
30998
+ type: "object"
30999
+ },
31000
+ Status: {
31001
+ description: `A source's status, kept in both normalised and original form.
31002
+
31003
+ \`category\` is what every filter compares against; \`name\` is the source's own
31004
+ wording, preserved so display never flattens "In Review" into "In Progress".`,
31005
+ properties: {
31006
+ category: {
31007
+ $ref: "#/$defs/StatusCategory",
31008
+ description: "The normalised value filters compare against."
31009
+ },
31010
+ name: {
31011
+ description: "The source's own label for this status.",
31012
+ type: "string"
31013
+ }
31014
+ },
31015
+ required: [
31016
+ "category",
31017
+ "name"
31018
+ ],
31019
+ type: "object"
31020
+ },
31021
+ StatusCategory: {
31022
+ description: "The normalised status vocabulary shared across every source.",
31023
+ oneOf: [
31024
+ {
31025
+ const: "draft",
31026
+ description: "Written down but not yet committed to as work.",
31027
+ type: "string"
31028
+ },
31029
+ {
31030
+ const: "backlog",
31031
+ description: "Known about, not yet accepted as ready to work.",
31032
+ type: "string"
31033
+ },
31034
+ {
31035
+ const: "todo",
31036
+ description: "Accepted and ready to be picked up, and nothing has claimed it.",
31037
+ type: "string"
31038
+ },
31039
+ {
31040
+ const: "queued",
31041
+ description: "Claimed by work that will do it, and not yet started.",
31042
+ type: "string"
31043
+ },
31044
+ {
31045
+ const: "in-progress",
31046
+ description: "Being worked on.",
31047
+ type: "string"
31048
+ },
31049
+ {
31050
+ const: "done",
31051
+ description: "Finished.",
31052
+ type: "string"
31053
+ },
31054
+ {
31055
+ const: "cancelled",
31056
+ description: "Abandoned.",
31057
+ type: "string"
31058
+ },
31059
+ {
31060
+ const: "unknown",
31061
+ description: "The source reported a status this vocabulary cannot place.",
31062
+ type: "string"
29621
31063
  }
29622
- },
29623
- required: [
29624
- "requests",
29625
- "budgets"
29626
- ],
29627
- type: "object"
31064
+ ]
29628
31065
  },
29629
31066
  WriteFallback: {
29630
31067
  description: "That an expected write read its target before writing, and why.",
@@ -29723,26 +31160,57 @@ Never sent again: doing so could apply it twice.`,
29723
31160
  type: "object"
29724
31161
  },
29725
31162
  WriteResult: {
29726
- description: "What each mutation of an expected write came to, built from the mutations' own responses.",
31163
+ description: `What an item holds once a write is done, read off the write's own responses — and, for an
31164
+ expected write, what each mutation it sent came to.
31165
+
31166
+ Every write verb and every item a copy lands answers one, with no request added for it: a
31167
+ field the write kept is what the read before it held. \`version\` is \`null\` where the source
31168
+ cannot vouch for a token from its write's responses — a GitHub board for an item it has just
31169
+ written, a stdio-hosted plugin, an in-memory source — and otherwise the token a read would
31170
+ then give.`,
29727
31171
  properties: {
29728
31172
  parts: {
29729
- description: "One per mutation sent, in the order sent.",
31173
+ description: "One per mutation an expected write sent, in the order sent — absent for a write made\nwithout `--expect`.",
29730
31174
  items: {
29731
31175
  $ref: "#/$defs/WritePart"
29732
31176
  },
29733
- type: "array"
31177
+ type: [
31178
+ "array",
31179
+ "null"
31180
+ ]
31181
+ },
31182
+ priority: {
31183
+ anyOf: [
31184
+ {
31185
+ $ref: "#/$defs/Priority"
31186
+ },
31187
+ {
31188
+ type: "null"
31189
+ }
31190
+ ],
31191
+ default: null,
31192
+ description: "A task's priority after the write — `null` for a project or a document, which carry\nnone, and where an expected write that failed cannot say."
31193
+ },
31194
+ status: {
31195
+ anyOf: [
31196
+ {
31197
+ $ref: "#/$defs/Status"
31198
+ },
31199
+ {
31200
+ type: "null"
31201
+ }
31202
+ ],
31203
+ default: null,
31204
+ description: "The item's status after the write, exactly as `task show` spells it — `null` for a\ndocument, which has none, and where an expected write that failed cannot say."
29734
31205
  },
29735
31206
  version: {
29736
- description: "The task's version after the write, where the last response determines it.",
31207
+ description: "The item's version after the write, where the write's responses determine it.",
29737
31208
  type: [
29738
31209
  "string",
29739
31210
  "null"
29740
31211
  ]
29741
31212
  }
29742
31213
  },
29743
- required: [
29744
- "parts"
29745
- ],
29746
31214
  type: "object"
29747
31215
  }
29748
31216
  },
@@ -32150,6 +33618,72 @@ interprets none of them, which is why the budget and unit names are open vocabul
32150
33618
  ],
32151
33619
  type: "object"
32152
33620
  },
33621
+ Status: {
33622
+ description: `A source's status, kept in both normalised and original form.
33623
+
33624
+ \`category\` is what every filter compares against; \`name\` is the source's own
33625
+ wording, preserved so display never flattens "In Review" into "In Progress".`,
33626
+ properties: {
33627
+ category: {
33628
+ $ref: "#/$defs/StatusCategory",
33629
+ description: "The normalised value filters compare against."
33630
+ },
33631
+ name: {
33632
+ description: "The source's own label for this status.",
33633
+ type: "string"
33634
+ }
33635
+ },
33636
+ required: [
33637
+ "category",
33638
+ "name"
33639
+ ],
33640
+ type: "object"
33641
+ },
33642
+ StatusCategory: {
33643
+ description: "The normalised status vocabulary shared across every source.",
33644
+ oneOf: [
33645
+ {
33646
+ const: "draft",
33647
+ description: "Written down but not yet committed to as work.",
33648
+ type: "string"
33649
+ },
33650
+ {
33651
+ const: "backlog",
33652
+ description: "Known about, not yet accepted as ready to work.",
33653
+ type: "string"
33654
+ },
33655
+ {
33656
+ const: "todo",
33657
+ description: "Accepted and ready to be picked up, and nothing has claimed it.",
33658
+ type: "string"
33659
+ },
33660
+ {
33661
+ const: "queued",
33662
+ description: "Claimed by work that will do it, and not yet started.",
33663
+ type: "string"
33664
+ },
33665
+ {
33666
+ const: "in-progress",
33667
+ description: "Being worked on.",
33668
+ type: "string"
33669
+ },
33670
+ {
33671
+ const: "done",
33672
+ description: "Finished.",
33673
+ type: "string"
33674
+ },
33675
+ {
33676
+ const: "cancelled",
33677
+ description: "Abandoned.",
33678
+ type: "string"
33679
+ },
33680
+ {
33681
+ const: "unknown",
33682
+ description: "The source reported a status this vocabulary cannot place.",
33683
+ type: "string"
33684
+ }
33685
+ ]
33686
+ },
32153
33687
  WriteFallback: {
32154
33688
  description: "That an expected write read its target before writing, and why.",
32155
33689
  properties: {
@@ -32247,26 +33781,57 @@ Never sent again: doing so could apply it twice.`,
32247
33781
  type: "object"
32248
33782
  },
32249
33783
  WriteResult: {
32250
- description: "What each mutation of an expected write came to, built from the mutations' own responses.",
33784
+ description: `What an item holds once a write is done, read off the write's own responses — and, for an
33785
+ expected write, what each mutation it sent came to.
33786
+
33787
+ Every write verb and every item a copy lands answers one, with no request added for it: a
33788
+ field the write kept is what the read before it held. \`version\` is \`null\` where the source
33789
+ cannot vouch for a token from its write's responses — a GitHub board for an item it has just
33790
+ written, a stdio-hosted plugin, an in-memory source — and otherwise the token a read would
33791
+ then give.`,
32251
33792
  properties: {
32252
33793
  parts: {
32253
- description: "One per mutation sent, in the order sent.",
33794
+ description: "One per mutation an expected write sent, in the order sent — absent for a write made\nwithout `--expect`.",
32254
33795
  items: {
32255
33796
  $ref: "#/$defs/WritePart"
32256
33797
  },
32257
- type: "array"
33798
+ type: [
33799
+ "array",
33800
+ "null"
33801
+ ]
33802
+ },
33803
+ priority: {
33804
+ anyOf: [
33805
+ {
33806
+ $ref: "#/$defs/Priority"
33807
+ },
33808
+ {
33809
+ type: "null"
33810
+ }
33811
+ ],
33812
+ default: null,
33813
+ description: "A task's priority after the write — `null` for a project or a document, which carry\nnone, and where an expected write that failed cannot say."
33814
+ },
33815
+ status: {
33816
+ anyOf: [
33817
+ {
33818
+ $ref: "#/$defs/Status"
33819
+ },
33820
+ {
33821
+ type: "null"
33822
+ }
33823
+ ],
33824
+ default: null,
33825
+ description: "The item's status after the write, exactly as `task show` spells it — `null` for a\ndocument, which has none, and where an expected write that failed cannot say."
32258
33826
  },
32259
33827
  version: {
32260
- description: "The task's version after the write, where the last response determines it.",
33828
+ description: "The item's version after the write, where the write's responses determine it.",
32261
33829
  type: [
32262
33830
  "string",
32263
33831
  "null"
32264
33832
  ]
32265
33833
  }
32266
33834
  },
32267
- required: [
32268
- "parts"
32269
- ],
32270
33835
  type: "object"
32271
33836
  }
32272
33837
  },
@@ -32856,6 +34421,42 @@ Rendered \`<source>:<native>\` and parsed by splitting on the **first** colon,
32856
34421
  so a native id may contain colons freely.`,
32857
34422
  type: "string"
32858
34423
  },
34424
+ Priority: {
34425
+ description: `How much a task matters, in the one vocabulary every source is normalised into.
34426
+
34427
+ Five values, most pressing first after [\`None\`](Self::None): Linear's own priority has
34428
+ exactly these, and a source whose backend has none of its own maps its representation
34429
+ onto them. \`none\` is a value rather than an absent field, because "no priority is set" is
34430
+ something a person sets — writing \`none\` clears a priority — and a reader tells it apart
34431
+ from nothing by the value alone.`,
34432
+ oneOf: [
34433
+ {
34434
+ const: "none",
34435
+ description: "No priority is set.",
34436
+ type: "string"
34437
+ },
34438
+ {
34439
+ const: "urgent",
34440
+ description: "Drop everything for it.",
34441
+ type: "string"
34442
+ },
34443
+ {
34444
+ const: "high",
34445
+ description: "Next, before the rest.",
34446
+ type: "string"
34447
+ },
34448
+ {
34449
+ const: "medium",
34450
+ description: "In its turn.",
34451
+ type: "string"
34452
+ },
34453
+ {
34454
+ const: "low",
34455
+ description: "When there is nothing more pressing.",
34456
+ type: "string"
34457
+ }
34458
+ ]
34459
+ },
32859
34460
  SourceName: {
32860
34461
  description: "The name a configuration document gives one configured source.",
32861
34462
  pattern: "^[a-z0-9][a-z0-9-]*$",
@@ -33052,26 +34653,57 @@ Never sent again: doing so could apply it twice.`,
33052
34653
  type: "object"
33053
34654
  },
33054
34655
  WriteResult: {
33055
- description: "What each mutation of an expected write came to, built from the mutations' own responses.",
34656
+ description: `What an item holds once a write is done, read off the write's own responses — and, for an
34657
+ expected write, what each mutation it sent came to.
34658
+
34659
+ Every write verb and every item a copy lands answers one, with no request added for it: a
34660
+ field the write kept is what the read before it held. \`version\` is \`null\` where the source
34661
+ cannot vouch for a token from its write's responses — a GitHub board for an item it has just
34662
+ written, a stdio-hosted plugin, an in-memory source — and otherwise the token a read would
34663
+ then give.`,
33056
34664
  properties: {
33057
34665
  parts: {
33058
- description: "One per mutation sent, in the order sent.",
34666
+ description: "One per mutation an expected write sent, in the order sent — absent for a write made\nwithout `--expect`.",
33059
34667
  items: {
33060
34668
  $ref: "#/$defs/WritePart"
33061
34669
  },
33062
- type: "array"
34670
+ type: [
34671
+ "array",
34672
+ "null"
34673
+ ]
34674
+ },
34675
+ priority: {
34676
+ anyOf: [
34677
+ {
34678
+ $ref: "#/$defs/Priority"
34679
+ },
34680
+ {
34681
+ type: "null"
34682
+ }
34683
+ ],
34684
+ default: null,
34685
+ description: "A task's priority after the write — `null` for a project or a document, which carry\nnone, and where an expected write that failed cannot say."
34686
+ },
34687
+ status: {
34688
+ anyOf: [
34689
+ {
34690
+ $ref: "#/$defs/Status"
34691
+ },
34692
+ {
34693
+ type: "null"
34694
+ }
34695
+ ],
34696
+ default: null,
34697
+ description: "The item's status after the write, exactly as `task show` spells it — `null` for a\ndocument, which has none, and where an expected write that failed cannot say."
33063
34698
  },
33064
34699
  version: {
33065
- description: "The task's version after the write, where the last response determines it.",
34700
+ description: "The item's version after the write, where the write's responses determine it.",
33066
34701
  type: [
33067
34702
  "string",
33068
34703
  "null"
33069
34704
  ]
33070
34705
  }
33071
34706
  },
33072
- required: [
33073
- "parts"
33074
- ],
33075
34707
  type: "object"
33076
34708
  }
33077
34709
  },
@@ -34655,26 +36287,57 @@ Never sent again: doing so could apply it twice.`,
34655
36287
  type: "object"
34656
36288
  },
34657
36289
  WriteResult: {
34658
- description: "What each mutation of an expected write came to, built from the mutations' own responses.",
36290
+ description: `What an item holds once a write is done, read off the write's own responses — and, for an
36291
+ expected write, what each mutation it sent came to.
36292
+
36293
+ Every write verb and every item a copy lands answers one, with no request added for it: a
36294
+ field the write kept is what the read before it held. \`version\` is \`null\` where the source
36295
+ cannot vouch for a token from its write's responses — a GitHub board for an item it has just
36296
+ written, a stdio-hosted plugin, an in-memory source — and otherwise the token a read would
36297
+ then give.`,
34659
36298
  properties: {
34660
36299
  parts: {
34661
- description: "One per mutation sent, in the order sent.",
36300
+ description: "One per mutation an expected write sent, in the order sent — absent for a write made\nwithout `--expect`.",
34662
36301
  items: {
34663
36302
  $ref: "#/$defs/WritePart"
34664
36303
  },
34665
- type: "array"
36304
+ type: [
36305
+ "array",
36306
+ "null"
36307
+ ]
36308
+ },
36309
+ priority: {
36310
+ anyOf: [
36311
+ {
36312
+ $ref: "#/$defs/Priority"
36313
+ },
36314
+ {
36315
+ type: "null"
36316
+ }
36317
+ ],
36318
+ default: null,
36319
+ description: "A task's priority after the write — `null` for a project or a document, which carry\nnone, and where an expected write that failed cannot say."
36320
+ },
36321
+ status: {
36322
+ anyOf: [
36323
+ {
36324
+ $ref: "#/$defs/Status"
36325
+ },
36326
+ {
36327
+ type: "null"
36328
+ }
36329
+ ],
36330
+ default: null,
36331
+ description: "The item's status after the write, exactly as `task show` spells it — `null` for a\ndocument, which has none, and where an expected write that failed cannot say."
34666
36332
  },
34667
36333
  version: {
34668
- description: "The task's version after the write, where the last response determines it.",
36334
+ description: "The item's version after the write, where the write's responses determine it.",
34669
36335
  type: [
34670
36336
  "string",
34671
36337
  "null"
34672
36338
  ]
34673
36339
  }
34674
36340
  },
34675
- required: [
34676
- "parts"
34677
- ],
34678
36341
  type: "object"
34679
36342
  }
34680
36343
  },
@@ -35241,6 +36904,7 @@ refusal can be printed wherever the write was asked for.`,
35241
36904
  // src/client.ts
35242
36905
  var projectGraphDirections = ["auto", "td", "lr"];
35243
36906
  var statusPolicies = ["source", "preserve-destination"];
36907
+ var otherwiseChoices = ["refuse", "preserve-destination"];
35244
36908
 
35245
36909
  class OnetaskgraphExecutionError extends Error {
35246
36910
  exitCode;
@@ -35312,6 +36976,7 @@ var commandResponseRoots = {
35312
36976
  "task render": "Regenerated",
35313
36977
  "task answers": "TemplateAnswers",
35314
36978
  "task assets": "TaskAssetNames",
36979
+ "task project-human": "HumanTaskProjected",
35315
36980
  "document create": "DocumentDetail",
35316
36981
  "document render": "Regenerated",
35317
36982
  "document answers": "TemplateAnswers"
@@ -35319,7 +36984,7 @@ var commandResponseRoots = {
35319
36984
  var commandAlternateRoots = {
35320
36985
  "sources fields": ["StatusNamesReport"]
35321
36986
  };
35322
- var partialResponseCommands = new Set(Object.keys(commandResponseRoots).filter((command) => command !== "config show" && command !== "cache clear" && command !== "sources list" && command !== "sources fields" && command !== "sources route" && command !== "project graph" && !command.startsWith("task comment ") && !command.endsWith(" metadata set") && !command.endsWith(" priority set") && !command.endsWith(" content set") && !command.startsWith("template ") && !command.endsWith(" render") && !command.endsWith(" answers") && command !== "task assets" && command !== "project create" && command !== "document create"));
36987
+ var partialResponseCommands = new Set(Object.keys(commandResponseRoots).filter((command) => command !== "config show" && command !== "cache clear" && command !== "sources list" && command !== "sources fields" && command !== "sources route" && command !== "project graph" && !command.startsWith("task comment ") && !command.endsWith(" metadata set") && !command.endsWith(" priority set") && !command.endsWith(" content set") && !command.startsWith("template ") && !command.endsWith(" render") && !command.endsWith(" answers") && command !== "task assets" && command !== "task project-human" && command !== "project create" && command !== "document create"));
35323
36988
  function bodyArguments(options) {
35324
36989
  return "bodyFile" in options ? { args: ["--body-file", options.bodyFile] } : { args: [], input: options.body };
35325
36990
  }
@@ -35668,8 +37333,22 @@ function taskCopyFlags(options) {
35668
37333
  if (options.create !== undefined && typeof options.create !== "boolean") {
35669
37334
  throw new TypeError("taskCopy: create must be a boolean");
35670
37335
  }
37336
+ const conditions = [];
37337
+ for (const status of stringList("taskCopy", "whenDestinationStatus", options.whenDestinationStatus)) {
37338
+ conditions.push("--when-destination-status", status);
37339
+ }
37340
+ if (options.otherwise !== undefined) {
37341
+ if (!otherwiseChoices.some((choice) => choice === options.otherwise)) {
37342
+ throw new TypeError(`taskCopy: otherwise must be ${otherwiseChoices.join(" or ")}`);
37343
+ }
37344
+ conditions.push("--otherwise", options.otherwise);
37345
+ }
37346
+ for (const priority of stringList("taskCopy", "whenDestinationPriority", options.whenDestinationPriority)) {
37347
+ conditions.push("--when-destination-priority", priority);
37348
+ }
35671
37349
  return [
35672
37350
  ...copyFlags("taskCopy", options),
37351
+ ...conditions,
35673
37352
  ...options.create ? ["--create"] : [],
35674
37353
  ...options.targetTask === undefined ? [] : ["--target-task", stringOption("taskCopy", "targetTask", options.targetTask)],
35675
37354
  ...expectFlags("taskCopy", options)
@@ -36066,6 +37745,12 @@ class OnetaskgraphClient {
36066
37745
  taskAssets(id, outputDir) {
36067
37746
  return this.run("task assets", [id, "--output-dir", outputDir]);
36068
37747
  }
37748
+ taskProjectHuman(input) {
37749
+ return this.run("task project-human", [
37750
+ "--input",
37751
+ stringOption("taskProjectHuman", "input", input)
37752
+ ]);
37753
+ }
36069
37754
  async projectCreate(source, id, title, options = {}) {
36070
37755
  const { args, input } = createArguments("projectCreate", ["--id", id, "--title", title], options);
36071
37756
  if (options.status !== undefined)
@@ -36157,7 +37842,7 @@ function assertCompleteCommandSurface() {
36157
37842
  }
36158
37843
 
36159
37844
  // src/index.ts
36160
- var VERSION = "0.12.12";
37845
+ var VERSION = "0.12.14";
36161
37846
  export {
36162
37847
  taskUpdateOptionFlags,
36163
37848
  taskUpdateFlags,
@@ -36165,6 +37850,7 @@ export {
36165
37850
  statusPolicies,
36166
37851
  projectGraphDirections,
36167
37852
  projectCopyFlags,
37853
+ otherwiseChoices,
36168
37854
  commandResponseRoots,
36169
37855
  commandAlternateRoots,
36170
37856
  clientCommands,