orkestrator 2.34.0-alpha → 2.34.2-beta

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/client.js CHANGED
@@ -7730,7 +7730,7 @@ import path4 from "path";
7730
7730
  // ../../apps/backend/package.json
7731
7731
  var package_default = {
7732
7732
  name: "@orkestrator/backend",
7733
- version: "2.34.0-alpha",
7733
+ version: "2.34.2-beta",
7734
7734
  private: true,
7735
7735
  type: "module",
7736
7736
  exports: {
@@ -7744,7 +7744,7 @@ var package_default = {
7744
7744
  "start:web": "bun dist/main.js --fallback-host 127.0.0.1",
7745
7745
  "start:web-public": "bun dist/main.js --tailscale-serve --allowed-origins https://orkestrator.dev,https://www.orkestrator.dev",
7746
7746
  test: "bun test --preload ../../tests/setup-node.ts src tests --parallel",
7747
- "test:workspace": "bun test --preload ../../tests/setup-node.ts src tests --only-failures ${ORKESTRATOR_TEST_TIMINGS_DIR:+--timings=$ORKESTRATOR_TEST_TIMINGS_DIR/backend.json --update-timings} $ORKESTRATOR_BACKEND_TEST_IGNORE --parallel=${ORKESTRATOR_BACKEND_TEST_WORKERS:-${ORKESTRATOR_TEST_WORKERS:-2}}",
7747
+ "test:workspace": "bun --no-env-file ../../scripts/bun-test-tier.ts apps/backend src tests -- --preload ../../tests/setup-node.ts --only-failures ${ORKESTRATOR_TEST_TIMINGS_DIR:+--timings=$ORKESTRATOR_TEST_TIMINGS_DIR/backend.json --update-timings} --parallel=${ORKESTRATOR_BACKEND_TEST_WORKERS:-${ORKESTRATOR_TEST_WORKERS:-2}}",
7748
7748
  typecheck: "bun check -p tsconfig.json && bun check -p tsconfig.test.json"
7749
7749
  },
7750
7750
  dependencies: {
@@ -14233,6 +14233,7 @@ var sessionCommands = [
14233
14233
 
14234
14234
  // src/client/commands/ticket.ts
14235
14235
  var STATUSES = ["backlog", "in-progress", "review", "done"];
14236
+ var KINDS = ["feature", "work-brief"];
14236
14237
  var PROJECT_OPTION = {
14237
14238
  name: "project",
14238
14239
  kind: "string",
@@ -14264,6 +14265,18 @@ var TEXT_FIELD_OPTIONS = [
14264
14265
  kind: "string",
14265
14266
  valueName: "TEXT",
14266
14267
  description: "Acceptance criteria."
14268
+ },
14269
+ {
14270
+ name: "kind",
14271
+ kind: "string",
14272
+ valueName: "KIND",
14273
+ description: `Ticket kind: ${KINDS.join(", ")}.`
14274
+ },
14275
+ {
14276
+ name: "sections-file",
14277
+ kind: "string",
14278
+ valueName: "PATH",
14279
+ description: "Read structured sections (a JSON object) from a local file."
14267
14280
  }
14268
14281
  ];
14269
14282
  function requireProject(options2) {
@@ -14281,8 +14294,25 @@ async function ticketFields(io, options2) {
14281
14294
  names: { file: "--description-file", stdin: "--description-stdin", inline: "--description" },
14282
14295
  required: false
14283
14296
  });
14297
+ const sectionsText = await readTextSource(io, {
14298
+ file: options2["sections-file"],
14299
+ label: "Sections",
14300
+ maxBytes: 400000,
14301
+ names: { file: "--sections-file", stdin: "--sections-stdin" },
14302
+ required: false
14303
+ });
14304
+ let sections;
14305
+ if (sectionsText !== undefined) {
14306
+ try {
14307
+ sections = JSON.parse(sectionsText);
14308
+ } catch {
14309
+ throw new CliError("invalid-input", "--sections-file must contain a JSON object");
14310
+ }
14311
+ }
14284
14312
  return {
14285
14313
  ...stringOption(options2, "title") !== undefined ? { title: options2.title } : {},
14314
+ ...options2.kind !== undefined ? { kind: oneOf(options2.kind, KINDS, "--kind") } : {},
14315
+ ...sections !== undefined ? { sections } : {},
14286
14316
  ...description !== undefined ? { description } : {},
14287
14317
  ...stringOption(options2, "criteria") !== undefined ? { acceptanceCriteria: options2.criteria } : {},
14288
14318
  ...options2.status !== undefined ? { status: oneOf(options2.status, STATUSES, "--status") } : {}
@@ -14291,6 +14321,12 @@ async function ticketFields(io, options2) {
14291
14321
  function ticketRows(tickets) {
14292
14322
  return table(["ID", "STATUS", "TITLE", "COMMENTS"], tickets.map((ticket) => [ticket.id, ticket.status, ticket.title, String(ticket.commentCount)]));
14293
14323
  }
14324
+ var CRITERION_MARKS = {
14325
+ passed: "[x]",
14326
+ failed: "[!]",
14327
+ "not-checked": "[?]",
14328
+ unchecked: "[ ]"
14329
+ };
14294
14330
  function ticketLines(ticket) {
14295
14331
  return [
14296
14332
  ...keyValues([
@@ -14298,11 +14334,17 @@ function ticketLines(ticket) {
14298
14334
  ["project", ticket.projectId],
14299
14335
  ["status", ticket.status],
14300
14336
  ["title", ticket.title],
14337
+ ["kind", ticket.kind ?? "feature"],
14301
14338
  ["environment", ticket.environmentId],
14302
- ["pr", ticket.pr.url]
14339
+ ["pr", ticket.pr.url],
14340
+ ...ticket.deliveryPolicy ? [["delivery", ticket.deliveryPolicy]] : []
14303
14341
  ]),
14304
14342
  ...ticket.description ? ["", ticket.description] : [],
14305
- ...ticket.acceptanceCriteria ? ["", "Acceptance criteria:", ticket.acceptanceCriteria] : [],
14343
+ ...ticket.criteria?.length ? [
14344
+ "",
14345
+ "Acceptance criteria:",
14346
+ ...ticket.criteria.map((criterion) => `${CRITERION_MARKS[criterion.status ?? "unchecked"]} ${criterion.id} ${criterion.text}${criterion.evidence ? ` (${criterion.evidence})` : ""}`)
14347
+ ] : ticket.acceptanceCriteria ? ["", "Acceptance criteria:", ticket.acceptanceCriteria] : [],
14306
14348
  ...ticket.comments.flatMap((comment) => ["", `[${comment.createdAt}] ${comment.text}`])
14307
14349
  ];
14308
14350
  }
@@ -14375,7 +14417,8 @@ var ticketCommands = [
14375
14417
  options: [PROJECT_OPTION, ...TEXT_FIELD_OPTIONS, STATUS_OPTION, REQUEST_ID_OPTION],
14376
14418
  inputFields: {
14377
14419
  "description-file": "description",
14378
- criteria: "acceptanceCriteria"
14420
+ criteria: "acceptanceCriteria",
14421
+ "sections-file": "sections"
14379
14422
  },
14380
14423
  idOutput: "ticket ID",
14381
14424
  async run(context, parsed) {
@@ -14397,13 +14440,14 @@ var ticketCommands = [
14397
14440
  {
14398
14441
  path: ["ticket", "update"],
14399
14442
  action: "ticket.update",
14400
- summary: "Change a ticket's title, description, criteria or column.",
14443
+ summary: "Change a ticket's title, kind, sections, description, criteria or column.",
14401
14444
  positionals: [{ name: "ticket", required: true }],
14402
14445
  options: [PROJECT_OPTION, ...TEXT_FIELD_OPTIONS, STATUS_OPTION, REQUEST_ID_OPTION],
14403
14446
  inputFields: {
14404
14447
  ticket: "ticketId",
14405
14448
  "description-file": "description",
14406
- criteria: "acceptanceCriteria"
14449
+ criteria: "acceptanceCriteria",
14450
+ "sections-file": "sections"
14407
14451
  },
14408
14452
  idOutput: "ticket ID",
14409
14453
  async run(context, parsed) {