kanbo-cli 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +2 -0
  3. package/dist/cli-main.cjs +1347 -254
  4. package/dist/drizzle-postgres/0006_flow_rules_and_column_entries.sql +3 -0
  5. package/dist/drizzle-postgres/README.md +8 -0
  6. package/dist/drizzle-postgres/meta/0006_snapshot.json +1290 -0
  7. package/dist/drizzle-postgres/meta/_journal.json +7 -0
  8. package/dist/drizzle-sqlite/0005_flow_rules_and_column_entries.sql +3 -0
  9. package/dist/drizzle-sqlite/README.md +8 -0
  10. package/dist/drizzle-sqlite/meta/0005_snapshot.json +1097 -0
  11. package/dist/drizzle-sqlite/meta/_journal.json +7 -0
  12. package/dist/lib/{approval-BsBk2xVr.d.cts → approval-CnJJfwfi.d.mts} +30 -6
  13. package/dist/lib/{approval-LRZ6ontC.d.mts → approval-DNfUhYD5.d.cts} +30 -6
  14. package/dist/lib/{board-store-D_Mpfb84.d.mts → board-store-D2x2w1wG.d.cts} +26 -2
  15. package/dist/lib/{board-store-Dx-mw2I6.d.cts → board-store-DN5Y2U2y.d.mts} +26 -2
  16. package/dist/lib/index.cjs +3 -1
  17. package/dist/lib/index.d.cts +96 -6
  18. package/dist/lib/index.d.mts +96 -6
  19. package/dist/lib/index.mjs +2 -2
  20. package/dist/lib/{manifest-QPoQl8tn.cjs → manifest-DUGRyC7A.cjs} +1378 -300
  21. package/dist/lib/{manifest-v2e9x_C8.mjs → manifest-t4LvFgzH.mjs} +1369 -303
  22. package/dist/lib/mcp/index.cjs +35 -6
  23. package/dist/lib/mcp/index.d.cts +23 -4
  24. package/dist/lib/mcp/index.d.mts +23 -4
  25. package/dist/lib/mcp/index.mjs +35 -6
  26. package/dist/lib/{migrate-DtBeW3Fs.mjs → migrate-BUsaTJlj.mjs} +8 -1
  27. package/dist/lib/{migrate-Dca5WdYd.cjs → migrate-BoGrqK9m.cjs} +7 -0
  28. package/dist/lib/postgres/index.cjs +1 -1
  29. package/dist/lib/postgres/index.d.cts +69 -1
  30. package/dist/lib/postgres/index.d.mts +69 -1
  31. package/dist/lib/postgres/index.mjs +1 -1
  32. package/dist/lib/{roles.sql-BoOZSkBp.mjs → roles.sql-BDmmNUdx.mjs} +18 -2
  33. package/dist/lib/{roles.sql-E58x7mLS.cjs → roles.sql-CBFxSHy7.cjs} +17 -1
  34. package/dist/lib/{schema-D0MyXcej.d.cts → schema-Cwx3HosC.d.cts} +72 -0
  35. package/dist/lib/{schema-D0MyXcej.d.mts → schema-Cwx3HosC.d.mts} +72 -0
  36. package/dist/lib/sqlite/index.cjs +1 -1
  37. package/dist/lib/sqlite/index.d.cts +2 -2
  38. package/dist/lib/sqlite/index.d.mts +2 -2
  39. package/dist/lib/sqlite/index.mjs +1 -1
  40. package/dist/lib/sqlite/schema.cjs +13 -1
  41. package/dist/lib/sqlite/schema.d.cts +1 -1
  42. package/dist/lib/sqlite/schema.d.mts +1 -1
  43. package/dist/lib/sqlite/schema.mjs +13 -1
  44. package/dist/page/board.css +1622 -327
  45. package/dist/page/board.js +2 -2
  46. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
- import { a as IssuePullRequest, c as IssueStatus, f as issueFieldChanges, i as IssueMilestone, l as KanbanMeta, n as IssueComment, o as IssueRelation, r as IssueFieldChange, s as IssueRun, t as Issue, v as issues } from "./schema-D0MyXcej.mjs";
2
- import { _ as IssueRunStore, a as BoardMilestoneCardCount, c as BoardStore, d as IssueContextRefStore, f as IssueFieldChangeStore, g as IssueRowStore, h as IssueRelationStore, i as BoardLinkedPullRequest, l as BoardTransactionMode, m as IssuePullRequestStore, n as BoardCardPage, o as BoardRunProjection, p as IssueMilestoneStore, r as BoardCardQuery, s as BoardRunProjectionScope, t as BoardActiveRun, u as IssueCommentStore, v as IssueStatusStore, y as KanbanMetaStore } from "./board-store-D_Mpfb84.mjs";
3
- import { C as readEntryRules, S as readChecklist, _ as EntryRule, a as IssueActorReference, b as UnmetEntryRule, c as isOutsideWriter, d as KANBO_TOOL_CLI_EQUIVALENTS, f as KANBO_TOOL_NAMES, g as ENTRY_RULE_DESCRIPTIONS, h as ENTRY_RULES, i as IssueActorKind, l as normalizeCommentAuthorKind, m as KanboToolName, n as CardAttention, o as IssueView, p as KanboToolCliEquivalent, r as CardLastComment, s as IssueWriterProvenance, t as BoardApproval, u as toIssueView, v as EntryRuleFacts, w as serializeEntryRules, x as evaluateEntryRules, y as UNMET_ENTRY_RULE_REASONS } from "./approval-LRZ6ontC.mjs";
1
+ import { a as IssuePullRequest, c as IssueStatus, f as issueFieldChanges, i as IssueMilestone, l as KanbanMeta, n as IssueComment, o as IssueRelation, r as IssueFieldChange, s as IssueRun, t as Issue, v as issues } from "./schema-Cwx3HosC.mjs";
2
+ import { _ as IssueRelationStore, a as BoardLinkedPullRequest, b as IssueStatusStore, c as BoardRunProjectionScope, d as BoardWorkspaceFieldChange, f as IssueCommentStore, g as IssuePullRequestStore, h as IssueMilestoneStore, i as BoardFieldChangeQuery, l as BoardStore, m as IssueFieldChangeStore, n as BoardCardPage, o as BoardMilestoneCardCount, p as IssueContextRefStore, r as BoardCardQuery, s as BoardRunProjection, t as BoardActiveRun, u as BoardTransactionMode, v as IssueRowStore, x as KanbanMetaStore, y as IssueRunStore } from "./board-store-DN5Y2U2y.mjs";
3
+ import { C as readEntryRules, D as FlowRule, E as FLOW_RULES, O as readFlowRules, S as readChecklist, T as ColumnFlowRules, _ as EntryRule, a as IssueActorReference, b as UnmetEntryRule, c as isOutsideWriter, d as KANBO_TOOL_CLI_EQUIVALENTS, f as KANBO_TOOL_NAMES, g as ENTRY_RULE_DESCRIPTIONS, h as ENTRY_RULES, i as IssueActorKind, l as normalizeCommentAuthorKind, m as KanboToolName, n as CardAttention, o as IssueView, p as KanboToolCliEquivalent, r as CardLastComment, s as IssueWriterProvenance, t as BoardApproval, u as toIssueView, v as EntryRuleFacts, w as serializeEntryRules, x as evaluateEntryRules, y as UNMET_ENTRY_RULE_REASONS } from "./approval-CnJJfwfi.mjs";
4
4
  import { z } from "zod";
5
5
  //#region src/cli/output.d.ts
6
6
  /**
@@ -366,7 +366,7 @@ export declare function maskDatabaseUrls(text: string): string;
366
366
  * (`../serve/board-error-responses.ts`), the one table `kanbo serve` and any app
367
367
  * serving the board over HTTP answer with.
368
368
  */
369
- type BoardErrorCode = 'board_approval_requires_user' | 'board_column_name_taken' | 'board_column_not_empty' | 'board_column_ready_protected' | 'board_column_remove_target_invalid' | 'board_column_rules_requires_user' | 'board_column_structure_requires_user' | 'board_column_rules_unmet' | 'board_entry_rule_invalid' | 'board_execution_mode_locked' | 'board_pull_request_invalid' | 'board_pull_request_not_found' | 'board_pull_request_not_yours' | 'board_return_no_previous_column' | 'board_return_requires_user' | 'board_run_already_finished' | 'board_run_not_found' | 'board_run_session_ref_conflict' | 'board_run_session_ref_invalid' | 'board_run_session_ref_requires_user' | 'board_schema_outdated' | 'board_sprint_carry_invalid' | 'board_sprint_close_requires_user' | 'board_sprint_dates_invalid' | 'issue_comment_delete_requires_user' | 'issue_comment_not_found' | 'issue_context_ref_invalid_index' | 'issue_milestone_not_found' | 'issue_not_found' | 'issue_parent_not_found' | 'issue_parent_self_reference' | 'issue_relation_not_found' | 'issue_relation_self_reference' | 'issue_status_name_empty' | 'issue_status_not_found' | 'issue_status_reference_conflict' | 'issue_workspace_not_found';
369
+ type BoardErrorCode = 'board_approval_requires_user' | 'board_card_not_ready' | 'board_card_run_active' | 'board_column_name_taken' | 'board_column_not_empty' | 'board_column_ready_protected' | 'board_column_remove_target_invalid' | 'board_column_rules_requires_user' | 'board_column_structure_requires_user' | 'board_column_rules_unmet' | 'board_entry_rule_invalid' | 'board_execution_mode_locked' | 'board_flow_rule_invalid' | 'board_nothing_ready' | 'board_pull_request_invalid' | 'board_pull_request_not_found' | 'board_pull_request_not_yours' | 'board_return_no_previous_column' | 'board_return_requires_user' | 'board_run_already_finished' | 'board_run_not_found' | 'board_run_session_ref_conflict' | 'board_run_session_ref_invalid' | 'board_run_session_ref_requires_user' | 'board_schema_outdated' | 'board_sprint_carry_invalid' | 'board_sprint_close_requires_user' | 'board_sprint_dates_invalid' | 'issue_comment_delete_requires_user' | 'issue_comment_not_found' | 'issue_context_ref_invalid_index' | 'issue_milestone_not_found' | 'issue_not_found' | 'issue_parent_cycle' | 'issue_parent_not_found' | 'issue_parent_self_reference' | 'issue_relation_not_found' | 'issue_relation_self_reference' | 'issue_status_name_empty' | 'issue_status_not_found' | 'issue_status_reference_conflict' | 'issue_workspace_not_found';
370
370
  /** A board rule the caller broke, carrying the offending values in `details`. */
371
371
  export declare class BoardError extends Error {
372
372
  readonly code: BoardErrorCode;
@@ -960,6 +960,44 @@ type BoardRunView = IssueRun & {
960
960
  attempt: number;
961
961
  };
962
962
  //#endregion
963
+ //#region src/ops/claim.d.ts
964
+ /** What a claim takes: the board, the card when the claimer names one, and the run it starts. */
965
+ interface ClaimCardInput {
966
+ workspaceId: string;
967
+ /** The card to take; the first ready card in To Do, in board order, when absent. */
968
+ issueId?: string;
969
+ run: StartRunInput;
970
+ }
971
+ /** What a claim did: the card where it now is, the run it started, and the column it moved to. */
972
+ interface ClaimedCard {
973
+ /** Carries `unmetRules` when a person's claim put it in a column whose rules it does not meet. */
974
+ card: BoardCardWrite;
975
+ run: IssueRun;
976
+ column: IssueStatus;
977
+ }
978
+ /** Why a named card is not there to take, most telling first. */
979
+ type CardNotReadyReason = 'run_active' | 'waiting_for_person' | 'not_in_to_do';
980
+ //#endregion
981
+ //#region src/ops/column-entries.d.ts
982
+ /** One card entering one column: a move, or a card created in it (`fromStatusId: null`). */
983
+ interface ColumnEntry {
984
+ changeId: string;
985
+ issueId: string;
986
+ workspaceId: string;
987
+ fromStatusId: string | null;
988
+ toStatusId: string;
989
+ actorKind: IssueFieldChange['actorKind'];
990
+ actorId: string | null;
991
+ /** Unix seconds. */
992
+ at: number;
993
+ }
994
+ /** Which boards to read, from when (unix seconds, inclusive), and where a page may end. */
995
+ interface ListColumnEntriesInput {
996
+ workspaceIds: string[];
997
+ since: number;
998
+ limit?: number;
999
+ }
1000
+ //#endregion
963
1001
  //#region src/ops/activity.d.ts
964
1002
  /**
965
1003
  * What the host knows and the board does not: the names of its workspaces, who
@@ -1231,6 +1269,7 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1231
1269
  assertReturnable: (issueId: string, input: {
1232
1270
  toStatusName?: string | null;
1233
1271
  }, actor: BoardActor) => Promise<{
1272
+ allowedFrom: string | null;
1234
1273
  category: "backlog" | "canceled" | "completed" | "started" | "triage" | "unstarted";
1235
1274
  color: string | null;
1236
1275
  createdAt: number;
@@ -1239,6 +1278,7 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1239
1278
  id: string;
1240
1279
  name: string;
1241
1280
  order: number;
1281
+ wipLimit: number | null;
1242
1282
  workspaceId: string;
1243
1283
  }>;
1244
1284
  readApproval: (issueId: string) => Promise<BoardApproval>;
@@ -1317,6 +1357,7 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1317
1357
  carryTo?: string | null;
1318
1358
  }, actor: BoardActor, scope?: BoardWriteScope<TStore>) => Promise<CloseSprintResult>;
1319
1359
  listColumns: (workspaceId: string) => Promise<{
1360
+ allowedFrom: string | null;
1320
1361
  category: "backlog" | "canceled" | "completed" | "started" | "triage" | "unstarted";
1321
1362
  color: string | null;
1322
1363
  createdAt: number;
@@ -1325,9 +1366,11 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1325
1366
  id: string;
1326
1367
  name: string;
1327
1368
  order: number;
1369
+ wipLimit: number | null;
1328
1370
  workspaceId: string;
1329
1371
  }[]>;
1330
1372
  findColumn: (workspaceId: string, nameOrId: string) => Promise<{
1373
+ allowedFrom: string | null;
1331
1374
  category: "backlog" | "canceled" | "completed" | "started" | "triage" | "unstarted";
1332
1375
  color: string | null;
1333
1376
  createdAt: number;
@@ -1336,9 +1379,11 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1336
1379
  id: string;
1337
1380
  name: string;
1338
1381
  order: number;
1382
+ wipLimit: number | null;
1339
1383
  workspaceId: string;
1340
1384
  } | null>;
1341
1385
  requireColumn: (workspaceId: string, nameOrId: string) => Promise<{
1386
+ allowedFrom: string | null;
1342
1387
  category: "backlog" | "canceled" | "completed" | "started" | "triage" | "unstarted";
1343
1388
  color: string | null;
1344
1389
  createdAt: number;
@@ -1347,9 +1392,11 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1347
1392
  id: string;
1348
1393
  name: string;
1349
1394
  order: number;
1395
+ wipLimit: number | null;
1350
1396
  workspaceId: string;
1351
1397
  }>;
1352
1398
  ensureDefaultColumns: (workspaceId: string, scope?: BoardWriteScope<TStore>) => Promise<{
1399
+ allowedFrom: string | null;
1353
1400
  category: "backlog" | "canceled" | "completed" | "started" | "triage" | "unstarted";
1354
1401
  color: string | null;
1355
1402
  createdAt: number;
@@ -1358,9 +1405,11 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1358
1405
  id: string;
1359
1406
  name: string;
1360
1407
  order: number;
1408
+ wipLimit: number | null;
1361
1409
  workspaceId: string;
1362
1410
  }[]>;
1363
1411
  createColumn: (input: BoardColumnInput, actor: BoardActor, scope?: BoardWriteScope<TStore>) => Promise<{
1412
+ allowedFrom: string | null;
1364
1413
  category: "backlog" | "canceled" | "completed" | "started" | "triage" | "unstarted";
1365
1414
  color: string | null;
1366
1415
  createdAt: number;
@@ -1369,9 +1418,11 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1369
1418
  id: string;
1370
1419
  name: string;
1371
1420
  order: number;
1421
+ wipLimit: number | null;
1372
1422
  workspaceId: string;
1373
1423
  }>;
1374
1424
  updateColumn: (statusId: string, patch: BoardColumnPatch, actor: BoardActor, scope?: BoardWriteScope<TStore>) => Promise<{
1425
+ allowedFrom: string | null;
1375
1426
  category: "backlog" | "canceled" | "completed" | "started" | "triage" | "unstarted";
1376
1427
  color: string | null;
1377
1428
  createdAt: number;
@@ -1380,9 +1431,11 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1380
1431
  id: string;
1381
1432
  name: string;
1382
1433
  order: number;
1434
+ wipLimit: number | null;
1383
1435
  workspaceId: string;
1384
1436
  }>;
1385
1437
  describeColumn: (workspaceId: string, nameOrId: string, description: string | null, scope?: BoardWriteScope<TStore>) => Promise<{
1438
+ allowedFrom: string | null;
1386
1439
  category: "backlog" | "canceled" | "completed" | "started" | "triage" | "unstarted";
1387
1440
  color: string | null;
1388
1441
  createdAt: number;
@@ -1391,9 +1444,11 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1391
1444
  id: string;
1392
1445
  name: string;
1393
1446
  order: number;
1447
+ wipLimit: number | null;
1394
1448
  workspaceId: string;
1395
1449
  }>;
1396
1450
  setColumnEntryRules: (workspaceId: string, nameOrId: string, entryRules: readonly string[] | null, actor: BoardActor, scope?: BoardWriteScope<TStore>) => Promise<{
1451
+ allowedFrom: string | null;
1397
1452
  category: "backlog" | "canceled" | "completed" | "started" | "triage" | "unstarted";
1398
1453
  color: string | null;
1399
1454
  createdAt: number;
@@ -1402,8 +1457,35 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1402
1457
  id: string;
1403
1458
  name: string;
1404
1459
  order: number;
1460
+ wipLimit: number | null;
1405
1461
  workspaceId: string;
1406
1462
  }>;
1463
+ setColumnFlowRules: (columnId: string, rules: ColumnFlowRules, actor: BoardActor, scope?: BoardWriteScope<TStore>) => Promise<{
1464
+ allowedFrom: string | null;
1465
+ category: "backlog" | "canceled" | "completed" | "started" | "triage" | "unstarted";
1466
+ color: string | null;
1467
+ createdAt: number;
1468
+ description: string | null;
1469
+ entryRules: string | null;
1470
+ id: string;
1471
+ name: string;
1472
+ order: number;
1473
+ wipLimit: number | null;
1474
+ workspaceId: string;
1475
+ }>;
1476
+ applyStandardFlow: (workspaceId: string, actor: BoardActor, scope?: BoardWriteScope<TStore>) => Promise<{
1477
+ allowedFrom: string | null;
1478
+ category: "backlog" | "canceled" | "completed" | "started" | "triage" | "unstarted";
1479
+ color: string | null;
1480
+ createdAt: number;
1481
+ description: string | null;
1482
+ entryRules: string | null;
1483
+ id: string;
1484
+ name: string;
1485
+ order: number;
1486
+ wipLimit: number | null;
1487
+ workspaceId: string;
1488
+ }[]>;
1407
1489
  enforceColumnEntryForCards: (issueIds: string[], statusId: string, actor: BoardActor) => Promise<{
1408
1490
  issueId: string;
1409
1491
  unmet: UnmetEntryRule[];
@@ -1415,6 +1497,7 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1415
1497
  added: string[];
1416
1498
  }>;
1417
1499
  addColumn: (workspaceId: string, input: AddColumnInput, actor: BoardActor, scope?: BoardWriteScope<TStore>) => Promise<{
1500
+ allowedFrom: string | null;
1418
1501
  category: "backlog" | "canceled" | "completed" | "started" | "triage" | "unstarted";
1419
1502
  color: string | null;
1420
1503
  createdAt: number;
@@ -1423,6 +1506,7 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1423
1506
  id: string;
1424
1507
  name: string;
1425
1508
  order: number;
1509
+ wipLimit: number | null;
1426
1510
  workspaceId: string;
1427
1511
  }>;
1428
1512
  applyColumnTemplate: (workspaceId: string, columns: readonly ColumnSpec[], options: ApplyColumnTemplateOptions, scope?: BoardWriteScope<TStore>) => Promise<{
@@ -1430,6 +1514,7 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1430
1514
  added: string[];
1431
1515
  }>;
1432
1516
  renameColumn: (workspaceId: string, nameOrId: string, newName: string, actor: BoardActor, scope?: BoardWriteScope<TStore>) => Promise<{
1517
+ allowedFrom: string | null;
1433
1518
  category: "backlog" | "canceled" | "completed" | "started" | "triage" | "unstarted";
1434
1519
  color: string | null;
1435
1520
  createdAt: number;
@@ -1438,9 +1523,11 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1438
1523
  id: string;
1439
1524
  name: string;
1440
1525
  order: number;
1526
+ wipLimit: number | null;
1441
1527
  workspaceId: string;
1442
1528
  }>;
1443
1529
  moveColumn: (workspaceId: string, nameOrId: string, position: ColumnPosition, actor: BoardActor, scope?: BoardWriteScope<TStore>) => Promise<{
1530
+ allowedFrom: string | null;
1444
1531
  category: "backlog" | "canceled" | "completed" | "started" | "triage" | "unstarted";
1445
1532
  color: string | null;
1446
1533
  createdAt: number;
@@ -1449,6 +1536,7 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1449
1536
  id: string;
1450
1537
  name: string;
1451
1538
  order: number;
1539
+ wipLimit: number | null;
1452
1540
  workspaceId: string;
1453
1541
  }[]>;
1454
1542
  removeColumn: (workspaceId: string, nameOrId: string, options: RemoveColumnOptions, actor: BoardActor, scope?: BoardWriteScope<TStore>) => Promise<RemoveColumnResult>;
@@ -1469,6 +1557,7 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1469
1557
  state: "failed" | "finished" | "running" | "stopped";
1470
1558
  worktreePath: string | null;
1471
1559
  }>;
1560
+ claimCard: (input: ClaimCardInput, actor: BoardActor, scope?: BoardWriteScope<TStore>) => Promise<ClaimedCard>;
1472
1561
  attachRunExecution: (runId: string, input: AttachRunExecutionInput, scope?: BoardWriteScope<TStore>) => Promise<{
1473
1562
  agentId: string | null;
1474
1563
  agentName: string;
@@ -1596,6 +1685,7 @@ export declare function createBoardOps<TStore extends BoardStore>(store: TStore)
1596
1685
  limit?: number;
1597
1686
  offset?: number;
1598
1687
  }) => Promise<CardQueryResult>;
1688
+ listColumnEntries: (input: ListColumnEntriesInput) => Promise<ColumnEntry[]>;
1599
1689
  buildPrimeText: (workspaceId: string) => Promise<string>;
1600
1690
  };
1601
1691
  /** The board's operations, as a type callers can name. */
@@ -1622,7 +1712,7 @@ interface BoardErrorResponse {
1622
1712
  * answering for a person — approving a card, sending it back or closing a
1623
1713
  * sprint — as anyone but one is 403, dropping a pull request link somebody else made is the same 403
1624
1714
  * for the same reason, and acting on a run that has already ended is 409,
1625
- * because the answer would have been yes a moment earlier. An agent putting a
1715
+ * because the answer would have been yes a moment earlier. Starting a run on a card that has one going, and claiming a card nobody can take right now, are 409 for the same reason. An agent putting a
1626
1716
  * card in a column whose entry rules it does not meet yet is 409 for the same
1627
1717
  * reason turned around: the answer will be yes once the card meets them, and
1628
1718
  * `details.unmet` says what is missing. Deleting a column that still holds
@@ -1636,4 +1726,4 @@ interface BoardErrorResponse {
1636
1726
  */
1637
1727
  export declare const BOARD_ERROR_RESPONSES: Record<BoardErrorCode, BoardErrorResponse>;
1638
1728
  //#endregion
1639
- export { type AddColumnInput, type AddCommentInput, type ApplyColumnTemplateOptions, type AttachRunExecutionInput, type BoardActiveRun, type BoardActor, type BoardApproval, type BoardCardPage, type BoardCardQuery, type BoardCardWrite, type BoardColumnInput, type BoardColumnPatch, type BoardErrorCode, type BoardErrorResponse, type BoardLinkedPullRequest, type BoardMilestoneCardCount, type BoardOps, type BoardPullRequestStanding, type BoardRunProjection, type BoardRunProjectionScope, type BoardRunView, type BoardSprint, type BoardStore, type BoardTransactionMode, type BoardWorkspaceIdentity, type BoardWriteScope, type BulkUpdateCardsInput, type BulkUpdateCardsResult, type CardAttention, type CardLastComment, type CardQueryInput, type CardQueryResult, type CloseSprintResult, type ColumnPosition, type ColumnSpec, type ColumnTemplateId, type CreateCardInput, type CreateCommentOnceInput, type CreateMilestoneInput, type CreateRelationInput, ENTRY_RULES, ENTRY_RULE_DESCRIPTIONS, type EntryRule, type EntryRuleFacts, type ExternalSessionRef, type FinishRunInput, type Issue, type IssueActivityAction, type IssueActivityCommentView, type IssueActivityField, type IssueActivityFieldChangeView, type IssueActivityItemView, type IssueActivityLookup, type IssueActivityResolver, type IssueActivityValueToken, type IssueActivityValueView, type IssueActorKind, type IssueActorReference, type IssueComment, type IssueCommentAuthorView, type IssueCommentStore, type IssueContextRefStore, type IssueFieldChange, type IssueFieldChangeStore, type IssueMilestone, type IssueMilestoneStore, type IssueMutationActor, type IssuePullRequest, type IssuePullRequestStore, type IssueRelation, type IssueRelationCounterpart, type IssueRelationStore, type IssueRelationView, type IssueRowStore, type IssueRun, type IssueRunStore, type IssueStatus, type IssueStatusStore, type IssueView, KANBO_TOOL_CLI_EQUIVALENTS, KANBO_TOOL_NAMES, type KanbanMeta, type KanbanMetaStore, type KanboBinding, type KanboCapabilities, type KanboCapabilitiesPackage, type KanboCapabilitiesRoles, type KanboCapabilityCommand, type KanboCapabilityCommandArgument, type KanboCapabilityCommandOption, type KanboCapabilityEntryRule, type KanboCapabilityStorage, type KanboCapabilityTool, type KanboToolCliEquivalent, type KanboToolName, type MigrateCardsInput, type MigrateCardsResult, type PullRequestFactKeys, type RemoveColumnOptions, type RemoveColumnResult, type StartRunInput, UNMET_ENTRY_RULE_REASONS, type UnmetEntryRule, type UpdateCardInput, type UpdateMilestoneInput, evaluateEntryRules, isOutsideWriter, normalizeCommentAuthorKind, readChecklist, readEntryRules, serializeEntryRules, toIssueView };
1729
+ export { type AddColumnInput, type AddCommentInput, type ApplyColumnTemplateOptions, type AttachRunExecutionInput, type BoardActiveRun, type BoardActor, type BoardApproval, type BoardCardPage, type BoardCardQuery, type BoardCardWrite, type BoardColumnInput, type BoardColumnPatch, type BoardErrorCode, type BoardErrorResponse, type BoardFieldChangeQuery, type BoardLinkedPullRequest, type BoardMilestoneCardCount, type BoardOps, type BoardPullRequestStanding, type BoardRunProjection, type BoardRunProjectionScope, type BoardRunView, type BoardSprint, type BoardStore, type BoardTransactionMode, type BoardWorkspaceFieldChange, type BoardWorkspaceIdentity, type BoardWriteScope, type BulkUpdateCardsInput, type BulkUpdateCardsResult, type CardAttention, type CardLastComment, type CardNotReadyReason, type CardQueryInput, type CardQueryResult, type ClaimCardInput, type ClaimedCard, type CloseSprintResult, type ColumnEntry, type ColumnFlowRules, type ColumnPosition, type ColumnSpec, type ColumnTemplateId, type CreateCardInput, type CreateCommentOnceInput, type CreateMilestoneInput, type CreateRelationInput, ENTRY_RULES, ENTRY_RULE_DESCRIPTIONS, type EntryRule, type EntryRuleFacts, type ExternalSessionRef, FLOW_RULES, type FinishRunInput, type FlowRule, type Issue, type IssueActivityAction, type IssueActivityCommentView, type IssueActivityField, type IssueActivityFieldChangeView, type IssueActivityItemView, type IssueActivityLookup, type IssueActivityResolver, type IssueActivityValueToken, type IssueActivityValueView, type IssueActorKind, type IssueActorReference, type IssueComment, type IssueCommentAuthorView, type IssueCommentStore, type IssueContextRefStore, type IssueFieldChange, type IssueFieldChangeStore, type IssueMilestone, type IssueMilestoneStore, type IssueMutationActor, type IssuePullRequest, type IssuePullRequestStore, type IssueRelation, type IssueRelationCounterpart, type IssueRelationStore, type IssueRelationView, type IssueRowStore, type IssueRun, type IssueRunStore, type IssueStatus, type IssueStatusStore, type IssueView, KANBO_TOOL_CLI_EQUIVALENTS, KANBO_TOOL_NAMES, type KanbanMeta, type KanbanMetaStore, type KanboBinding, type KanboCapabilities, type KanboCapabilitiesPackage, type KanboCapabilitiesRoles, type KanboCapabilityCommand, type KanboCapabilityCommandArgument, type KanboCapabilityCommandOption, type KanboCapabilityEntryRule, type KanboCapabilityStorage, type KanboCapabilityTool, type KanboToolCliEquivalent, type KanboToolName, type ListColumnEntriesInput, type MigrateCardsInput, type MigrateCardsResult, type PullRequestFactKeys, type RemoveColumnOptions, type RemoveColumnResult, type StartRunInput, UNMET_ENTRY_RULE_REASONS, type UnmetEntryRule, type UpdateCardInput, type UpdateMilestoneInput, evaluateEntryRules, isOutsideWriter, normalizeCommentAuthorKind, readChecklist, readEntryRules, readFlowRules, serializeEntryRules, toIssueView };
@@ -1,3 +1,3 @@
1
- import { $ as COLUMN_TEMPLATES, B as createBoardOps, Ct as nextIssueIdentity, Et as readIssuePrefix, F as readBinding, G as ENTRY_RULES, H as formatExternalSessionRef, I as readProjectBinding, J as evaluateEntryRules, K as ENTRY_RULE_DESCRIPTIONS, L as writeBinding, M as renderCapabilitiesMarkdown, N as BINDING_FILE_PATH, P as ignoreBoardFile, Q as COLUMN_CATALOGUE, R as maskDatabaseUrl, St as formatIssueId, Tt as nextIssueOrder, U as parseExternalSessionRef, V as cardDisplayTitle, W as pullRequestFactKeys, X as readEntryRules, Y as readChecklist, Z as serializeEntryRules, _ as suggestCardKey, _t as parseActivityStringArray, a as BOARD_ERROR_RESPONSES, at as TRACKED_FIELDS, bt as normalizeCommentAuthorKind, ct as BOARD_ACTOR, dt as activityText, et as COLUMN_TEMPLATE_IDS, ft as activityToken, g as isValidCardKey, gt as isEmptyActivityValue, h as CARD_KEY_PATTERN, ht as formatPlainActivityValue, i as KANBO_TOOL_NAMES, it as normalizeStatusName, lt as currentUnixSeconds, mt as formatActivityIssueReference, n as buildCapabilitiesManifest, nt as runBoardWrite, ot as diffFieldChanges, pt as commentAuthorReference, q as UNMET_ENTRY_RULE_REASONS, r as KANBO_TOOL_CLI_EQUIVALENTS, rt as DEFAULT_STATUSES, t as CAPABILITIES_MANIFEST_VERSION, tt as readChangeSeq, ut as activityKindOrder, v as DEFAULT_BOARD_FILE_PATH, vt as readSystemCommentKind, wt as nextIssueNumber, xt as toIssueView, yt as isOutsideWriter, z as maskDatabaseUrls } from "./manifest-v2e9x_C8.mjs";
1
+ import { $ as serializeEntryRules, B as createBoardOps, Ct as toIssueView, Dt as nextIssueOrder, Et as nextIssueNumber, F as BINDING_FILE_PATH, G as FLOW_RULES, H as formatExternalSessionRef, I as ignoreBoardFile, J as ENTRY_RULE_DESCRIPTIONS, K as readFlowRules, L as readBinding, M as renderCapabilitiesMarkdown, N as maskDatabaseUrl, Ot as readIssuePrefix, P as maskDatabaseUrls, Q as readEntryRules, R as readProjectBinding, St as normalizeCommentAuthorKind, Tt as nextIssueIdentity, U as parseExternalSessionRef, V as cardDisplayTitle, W as pullRequestFactKeys, X as evaluateEntryRules, Y as UNMET_ENTRY_RULE_REASONS, Z as readChecklist, _ as suggestCardKey, _t as formatPlainActivityValue, a as BOARD_ERROR_RESPONSES, at as DEFAULT_STATUSES, bt as readSystemCommentKind, ct as diffFieldChanges, dt as currentUnixSeconds, et as COLUMN_CATALOGUE, ft as activityKindOrder, g as isValidCardKey, gt as formatActivityIssueReference, h as CARD_KEY_PATTERN, ht as commentAuthorReference, i as KANBO_TOOL_NAMES, it as runBoardWrite, mt as activityToken, n as buildCapabilitiesManifest, nt as COLUMN_TEMPLATE_IDS, ot as normalizeStatusName, pt as activityText, q as ENTRY_RULES, r as KANBO_TOOL_CLI_EQUIVALENTS, rt as readChangeSeq, st as TRACKED_FIELDS, t as CAPABILITIES_MANIFEST_VERSION, tt as COLUMN_TEMPLATES, ut as BOARD_ACTOR, v as DEFAULT_BOARD_FILE_PATH, vt as isEmptyActivityValue, wt as formatIssueId, xt as isOutsideWriter, yt as parseActivityStringArray, z as writeBinding } from "./manifest-t4LvFgzH.mjs";
2
2
  import { a as BoardError } from "./migrations-path-ClaYRNwk.mjs";
3
- export { BINDING_FILE_PATH, BOARD_ACTOR, BOARD_ERROR_RESPONSES, BoardError, CAPABILITIES_MANIFEST_VERSION, CARD_KEY_PATTERN, COLUMN_CATALOGUE, COLUMN_TEMPLATES, COLUMN_TEMPLATE_IDS, DEFAULT_BOARD_FILE_PATH, DEFAULT_STATUSES, ENTRY_RULES, ENTRY_RULE_DESCRIPTIONS, KANBO_TOOL_CLI_EQUIVALENTS, KANBO_TOOL_NAMES, TRACKED_FIELDS, UNMET_ENTRY_RULE_REASONS, activityKindOrder, activityText, activityToken, buildCapabilitiesManifest, cardDisplayTitle, commentAuthorReference, createBoardOps, currentUnixSeconds, diffFieldChanges, evaluateEntryRules, formatActivityIssueReference, formatExternalSessionRef, formatIssueId, formatPlainActivityValue, ignoreBoardFile, isEmptyActivityValue, isOutsideWriter, isValidCardKey, maskDatabaseUrl, maskDatabaseUrls, nextIssueIdentity, nextIssueNumber, nextIssueOrder, normalizeCommentAuthorKind, normalizeStatusName, parseActivityStringArray, parseExternalSessionRef, pullRequestFactKeys, readBinding, readChangeSeq, readChecklist, readEntryRules, readIssuePrefix, readProjectBinding, readSystemCommentKind, renderCapabilitiesMarkdown, runBoardWrite, serializeEntryRules, suggestCardKey, toIssueView, writeBinding };
3
+ export { BINDING_FILE_PATH, BOARD_ACTOR, BOARD_ERROR_RESPONSES, BoardError, CAPABILITIES_MANIFEST_VERSION, CARD_KEY_PATTERN, COLUMN_CATALOGUE, COLUMN_TEMPLATES, COLUMN_TEMPLATE_IDS, DEFAULT_BOARD_FILE_PATH, DEFAULT_STATUSES, ENTRY_RULES, ENTRY_RULE_DESCRIPTIONS, FLOW_RULES, KANBO_TOOL_CLI_EQUIVALENTS, KANBO_TOOL_NAMES, TRACKED_FIELDS, UNMET_ENTRY_RULE_REASONS, activityKindOrder, activityText, activityToken, buildCapabilitiesManifest, cardDisplayTitle, commentAuthorReference, createBoardOps, currentUnixSeconds, diffFieldChanges, evaluateEntryRules, formatActivityIssueReference, formatExternalSessionRef, formatIssueId, formatPlainActivityValue, ignoreBoardFile, isEmptyActivityValue, isOutsideWriter, isValidCardKey, maskDatabaseUrl, maskDatabaseUrls, nextIssueIdentity, nextIssueNumber, nextIssueOrder, normalizeCommentAuthorKind, normalizeStatusName, parseActivityStringArray, parseExternalSessionRef, pullRequestFactKeys, readBinding, readChangeSeq, readChecklist, readEntryRules, readFlowRules, readIssuePrefix, readProjectBinding, readSystemCommentKind, renderCapabilitiesMarkdown, runBoardWrite, serializeEntryRules, suggestCardKey, toIssueView, writeBinding };