@overdeck/contracts 0.47.1 → 0.49.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.
package/dist/index.mjs CHANGED
@@ -91,7 +91,8 @@ const KNOWN_HARNESSES = new Set([
91
91
  "claude-code",
92
92
  "ohmypi",
93
93
  "codex",
94
- "acp"
94
+ "acp",
95
+ "kimi-code"
95
96
  ]);
96
97
  /**
97
98
  * Normalize a snapshot's runtime field to a known Harness value.
@@ -694,13 +695,14 @@ const ScanResult = Schema.Struct({
694
695
  });
695
696
  //#endregion
696
697
  //#region src/memory.ts
698
+ const MemoryAgentRole = Schema.Union([Role, Schema.Literal("conversation")]);
697
699
  const MemoryIdentity = Schema.Struct({
698
700
  projectId: Schema.String,
699
701
  workspaceId: Schema.String,
700
- issueId: IssueId,
702
+ issueId: Schema.NullOr(IssueId),
701
703
  runId: Schema.String,
702
704
  sessionId: Schema.String,
703
- agentRole: Role,
705
+ agentRole: MemoryAgentRole,
704
706
  agentHarness: Schema.String
705
707
  });
706
708
  const MemoryTokenUsage = Schema.Struct({
@@ -713,10 +715,10 @@ const MemoryObservation = Schema.Struct({
713
715
  timestamp: Schema.String,
714
716
  projectId: Schema.String,
715
717
  workspaceId: Schema.String,
716
- issueId: IssueId,
718
+ issueId: Schema.NullOr(IssueId),
717
719
  runId: Schema.String,
718
720
  sessionId: Schema.String,
719
- agentRole: Role,
721
+ agentRole: MemoryAgentRole,
720
722
  agentHarness: Schema.String,
721
723
  gitBranch: Schema.String,
722
724
  sourceTranscriptOffset: Schema.Number,
@@ -1154,6 +1156,7 @@ const AgentStartedEvent = Schema.Struct({
1154
1156
  payload: Schema.Struct({
1155
1157
  agentId: AgentId,
1156
1158
  issueId: IssueId,
1159
+ workspaceId: Schema.optional(Schema.String),
1157
1160
  agent: AgentSnapshot
1158
1161
  })
1159
1162
  });
@@ -1165,6 +1168,7 @@ const AgentStoppedEvent = Schema.Struct({
1165
1168
  payload: Schema.Struct({
1166
1169
  agentId: AgentId,
1167
1170
  issueId: IssueId,
1171
+ workspaceId: Schema.optional(Schema.String),
1168
1172
  sessionId: Schema.optional(Schema.String)
1169
1173
  })
1170
1174
  });
@@ -1175,6 +1179,7 @@ const AgentHeartbeatDeadEvent = Schema.Struct({
1175
1179
  payload: Schema.Struct({
1176
1180
  agentId: AgentId,
1177
1181
  issueId: Schema.optional(IssueId),
1182
+ workspaceId: Schema.optional(Schema.String),
1178
1183
  sessionId: Schema.optional(Schema.String)
1179
1184
  })
1180
1185
  });
@@ -1185,6 +1190,7 @@ const WorkCompletedEvent = Schema.Struct({
1185
1190
  timestamp: Schema.String,
1186
1191
  payload: Schema.Struct({
1187
1192
  issueId: IssueId,
1193
+ workspaceId: Schema.optional(Schema.String),
1188
1194
  agentId: Schema.optional(AgentId)
1189
1195
  })
1190
1196
  });
@@ -1195,6 +1201,7 @@ const AgentCompletedEvent = Schema.Struct({
1195
1201
  timestamp: Schema.String,
1196
1202
  payload: Schema.Struct({
1197
1203
  issueId: IssueId,
1204
+ workspaceId: Schema.optional(Schema.String),
1198
1205
  agentId: Schema.optional(AgentId),
1199
1206
  role: Schema.optional(Role)
1200
1207
  })
@@ -1204,14 +1211,20 @@ const ReviewApprovedEvent = Schema.Struct({
1204
1211
  type: Schema.Literal("review.approved"),
1205
1212
  sequence: SequenceNumber,
1206
1213
  timestamp: Schema.String,
1207
- payload: Schema.Struct({ issueId: IssueId })
1214
+ payload: Schema.Struct({
1215
+ issueId: IssueId,
1216
+ workspaceId: Schema.optional(Schema.String)
1217
+ })
1208
1218
  });
1209
1219
  /** Role lifecycle — tests passed and shipping should prepare the branch. */
1210
1220
  const TestPassedEvent = Schema.Struct({
1211
1221
  type: Schema.Literal("test.passed"),
1212
1222
  sequence: SequenceNumber,
1213
1223
  timestamp: Schema.String,
1214
- payload: Schema.Struct({ issueId: IssueId })
1224
+ payload: Schema.Struct({
1225
+ issueId: IssueId,
1226
+ workspaceId: Schema.optional(Schema.String)
1227
+ })
1215
1228
  });
1216
1229
  /** Replaces socket.io `godview:status-change` */
1217
1230
  const AgentStatusChangedEvent = Schema.Struct({
@@ -1221,6 +1234,7 @@ const AgentStatusChangedEvent = Schema.Struct({
1221
1234
  payload: Schema.Struct({
1222
1235
  agentId: AgentId,
1223
1236
  issueId: Schema.optional(IssueId),
1237
+ workspaceId: Schema.optional(Schema.String),
1224
1238
  status: AgentStatus,
1225
1239
  previousStatus: Schema.optional(AgentStatus),
1226
1240
  hasLiveTmuxSession: Schema.optional(Schema.Boolean),
@@ -1281,6 +1295,8 @@ const AgentEnrichmentChangedEvent = Schema.Struct({
1281
1295
  timestamp: Schema.String,
1282
1296
  payload: Schema.Struct({
1283
1297
  agentId: AgentId,
1298
+ issueId: Schema.optional(IssueId),
1299
+ workspaceId: Schema.optional(Schema.String),
1284
1300
  role: Schema.optional(Role),
1285
1301
  hasPendingQuestion: Schema.optional(Schema.Boolean),
1286
1302
  pendingQuestionCount: Schema.optional(Schema.Number),
@@ -1318,6 +1334,7 @@ const AgentCreatedEvent = Schema.Struct({
1318
1334
  payload: Schema.Struct({
1319
1335
  agentId: AgentId,
1320
1336
  issueId: IssueId,
1337
+ workspaceId: Schema.optional(Schema.String),
1321
1338
  agent: AgentSnapshot
1322
1339
  })
1323
1340
  });
@@ -1328,7 +1345,19 @@ const AgentActivityChangedEvent = Schema.Struct({
1328
1345
  payload: Schema.Struct({
1329
1346
  agentId: AgentId,
1330
1347
  activity: Activity,
1331
- currentTool: Schema.optional(Schema.String)
1348
+ currentTool: Schema.optional(Schema.String),
1349
+ hookName: Schema.optional(Schema.String)
1350
+ })
1351
+ });
1352
+ /** A registered harness hook fired without implying an agent activity transition. */
1353
+ const AgentHookFiredEvent = Schema.Struct({
1354
+ type: Schema.Literal("agent.hook_fired"),
1355
+ sequence: SequenceNumber,
1356
+ timestamp: Schema.String,
1357
+ payload: Schema.Struct({
1358
+ agentId: AgentId,
1359
+ hookName: Schema.String,
1360
+ tool: Schema.optional(Schema.String)
1332
1361
  })
1333
1362
  });
1334
1363
  const AgentThinkingStartedEvent = Schema.Struct({
@@ -1392,6 +1421,7 @@ const AgentPermissionResolvedEvent = Schema.Struct({
1392
1421
  requestId: Schema.String,
1393
1422
  agentId: AgentId,
1394
1423
  issueId: Schema.optional(IssueId),
1424
+ workspaceId: Schema.optional(Schema.String),
1395
1425
  behavior: ClaudeChannelPermissionBehavior
1396
1426
  })
1397
1427
  });
@@ -1500,6 +1530,7 @@ const PlanningStartedEvent = Schema.Struct({
1500
1530
  timestamp: Schema.String,
1501
1531
  payload: Schema.Struct({
1502
1532
  issueId: IssueId,
1533
+ workspaceId: Schema.optional(Schema.String),
1503
1534
  sessionName: Schema.String,
1504
1535
  harness: Schema.optional(Schema.String)
1505
1536
  })
@@ -1511,6 +1542,7 @@ const PlanningFailedEvent = Schema.Struct({
1511
1542
  timestamp: Schema.String,
1512
1543
  payload: Schema.Struct({
1513
1544
  issueId: IssueId,
1545
+ workspaceId: Schema.optional(Schema.String),
1514
1546
  error: Schema.String
1515
1547
  })
1516
1548
  });
@@ -1521,6 +1553,7 @@ const PlanningSyncEvent = Schema.Struct({
1521
1553
  timestamp: Schema.String,
1522
1554
  payload: Schema.Struct({
1523
1555
  issueId: IssueId,
1556
+ workspaceId: Schema.optional(Schema.String),
1524
1557
  status: Schema.String,
1525
1558
  progress: Schema.optional(Schema.Number),
1526
1559
  message: Schema.optional(Schema.String)
@@ -1533,6 +1566,7 @@ const PlanItemStatusChangedEvent = Schema.Struct({
1533
1566
  timestamp: Schema.String,
1534
1567
  payload: Schema.Struct({
1535
1568
  issueId: IssueId,
1569
+ workspaceId: Schema.optional(Schema.String),
1536
1570
  itemId: Schema.String,
1537
1571
  status: Schema.String
1538
1572
  })
@@ -1544,6 +1578,7 @@ const PlanSubitemStatusChangedEvent = Schema.Struct({
1544
1578
  timestamp: Schema.String,
1545
1579
  payload: Schema.Struct({
1546
1580
  issueId: IssueId,
1581
+ workspaceId: Schema.optional(Schema.String),
1547
1582
  itemId: Schema.String,
1548
1583
  subItemId: Schema.String,
1549
1584
  status: Schema.String
@@ -1556,6 +1591,7 @@ const PlanItemsUnblockedEvent = Schema.Struct({
1556
1591
  timestamp: Schema.String,
1557
1592
  payload: Schema.Struct({
1558
1593
  issueId: IssueId,
1594
+ workspaceId: Schema.optional(Schema.String),
1559
1595
  items: Schema.Array(Schema.String)
1560
1596
  })
1561
1597
  });
@@ -1566,6 +1602,7 @@ const PipelineStatusChangedEvent = Schema.Struct({
1566
1602
  timestamp: Schema.String,
1567
1603
  payload: Schema.Struct({
1568
1604
  issueId: IssueId,
1605
+ workspaceId: Schema.optional(Schema.String),
1569
1606
  status: ReviewStatusSnapshot
1570
1607
  })
1571
1608
  });
@@ -1574,7 +1611,10 @@ const MergeReadyEvent = Schema.Struct({
1574
1611
  type: Schema.Literal("merge.ready"),
1575
1612
  sequence: SequenceNumber,
1576
1613
  timestamp: Schema.String,
1577
- payload: Schema.Struct({ issueId: IssueId })
1614
+ payload: Schema.Struct({
1615
+ issueId: IssueId,
1616
+ workspaceId: Schema.optional(Schema.String)
1617
+ })
1578
1618
  });
1579
1619
  /** New — review status changed */
1580
1620
  const ReviewStatusChangedEvent = Schema.Struct({
@@ -1583,6 +1623,7 @@ const ReviewStatusChangedEvent = Schema.Struct({
1583
1623
  timestamp: Schema.String,
1584
1624
  payload: Schema.Struct({
1585
1625
  issueId: IssueId,
1626
+ workspaceId: Schema.optional(Schema.String),
1586
1627
  status: ReviewStatusSnapshot
1587
1628
  })
1588
1629
  });
@@ -1591,7 +1632,10 @@ const PipelineReviewStartedEvent = Schema.Struct({
1591
1632
  type: Schema.Literal("pipeline.review-started"),
1592
1633
  sequence: SequenceNumber,
1593
1634
  timestamp: Schema.String,
1594
- payload: Schema.Struct({ issueId: IssueId })
1635
+ payload: Schema.Struct({
1636
+ issueId: IssueId,
1637
+ workspaceId: Schema.optional(Schema.String)
1638
+ })
1595
1639
  });
1596
1640
  /** New — review specialist finished (passed or failed) */
1597
1641
  const PipelineReviewCompletedEvent = Schema.Struct({
@@ -1600,6 +1644,7 @@ const PipelineReviewCompletedEvent = Schema.Struct({
1600
1644
  timestamp: Schema.String,
1601
1645
  payload: Schema.Struct({
1602
1646
  issueId: IssueId,
1647
+ workspaceId: Schema.optional(Schema.String),
1603
1648
  passed: Schema.Boolean
1604
1649
  })
1605
1650
  });
@@ -1608,7 +1653,10 @@ const PipelineTestStartedEvent = Schema.Struct({
1608
1653
  type: Schema.Literal("pipeline.test-started"),
1609
1654
  sequence: SequenceNumber,
1610
1655
  timestamp: Schema.String,
1611
- payload: Schema.Struct({ issueId: IssueId })
1656
+ payload: Schema.Struct({
1657
+ issueId: IssueId,
1658
+ workspaceId: Schema.optional(Schema.String)
1659
+ })
1612
1660
  });
1613
1661
  /** New — test specialist finished (passed or failed) */
1614
1662
  const PipelineTestCompletedEvent = Schema.Struct({
@@ -1617,6 +1665,7 @@ const PipelineTestCompletedEvent = Schema.Struct({
1617
1665
  timestamp: Schema.String,
1618
1666
  payload: Schema.Struct({
1619
1667
  issueId: IssueId,
1668
+ workspaceId: Schema.optional(Schema.String),
1620
1669
  passed: Schema.Boolean
1621
1670
  })
1622
1671
  });
@@ -1625,7 +1674,10 @@ const PipelineVerificationStartedEvent = Schema.Struct({
1625
1674
  type: Schema.Literal("pipeline.verification-started"),
1626
1675
  sequence: SequenceNumber,
1627
1676
  timestamp: Schema.String,
1628
- payload: Schema.Struct({ issueId: IssueId })
1677
+ payload: Schema.Struct({
1678
+ issueId: IssueId,
1679
+ workspaceId: Schema.optional(Schema.String)
1680
+ })
1629
1681
  });
1630
1682
  /** New — verification gate failed (carries failedCheck for gate failures, message for infra errors) */
1631
1683
  const PipelineVerificationFailedEvent = Schema.Struct({
@@ -1634,6 +1686,7 @@ const PipelineVerificationFailedEvent = Schema.Struct({
1634
1686
  timestamp: Schema.String,
1635
1687
  payload: Schema.Struct({
1636
1688
  issueId: IssueId,
1689
+ workspaceId: Schema.optional(Schema.String),
1637
1690
  failedCheck: Schema.optional(Schema.String),
1638
1691
  message: Schema.optional(Schema.String)
1639
1692
  })
@@ -1647,6 +1700,7 @@ const IssueTransitionedEvent = Schema.Struct({
1647
1700
  timestamp: Schema.String,
1648
1701
  payload: Schema.Struct({
1649
1702
  issueId: IssueId,
1703
+ workspaceId: Schema.optional(Schema.String),
1650
1704
  state: Schema.String
1651
1705
  })
1652
1706
  });
@@ -1656,6 +1710,7 @@ const OperatorInterventionEvent = Schema.Struct({
1656
1710
  timestamp: Schema.String,
1657
1711
  payload: Schema.Struct({
1658
1712
  issueId: IssueId,
1713
+ workspaceId: Schema.optional(Schema.String),
1659
1714
  kind: Schema.Literals([
1660
1715
  "tell",
1661
1716
  "pause",
@@ -1720,6 +1775,7 @@ const SubstrateBugFiledEvent = Schema.Struct({
1720
1775
  timestamp: Schema.String,
1721
1776
  payload: Schema.Struct({
1722
1777
  issueId: IssueId,
1778
+ workspaceId: Schema.optional(Schema.String),
1723
1779
  runId: Schema.optional(Schema.String),
1724
1780
  filedBy: Schema.Literals(["agent", "operator"]),
1725
1781
  discoveredIn: Schema.optional(IssueId),
@@ -1741,6 +1797,7 @@ const ReviewReviewerStartedEvent = Schema.Struct({
1741
1797
  timestamp: Schema.String,
1742
1798
  payload: Schema.Struct({
1743
1799
  issueId: IssueId,
1800
+ workspaceId: Schema.optional(Schema.String),
1744
1801
  role: Schema.String,
1745
1802
  sessionName: Schema.String
1746
1803
  })
@@ -1755,6 +1812,7 @@ const ReviewReviewerCompletedEvent = Schema.Struct({
1755
1812
  timestamp: Schema.String,
1756
1813
  payload: Schema.Struct({
1757
1814
  issueId: IssueId,
1815
+ workspaceId: Schema.optional(Schema.String),
1758
1816
  role: Schema.String
1759
1817
  })
1760
1818
  });
@@ -1769,6 +1827,7 @@ const ReviewSpecialistTimedOutEvent = Schema.Struct({
1769
1827
  timestamp: Schema.String,
1770
1828
  payload: Schema.Struct({
1771
1829
  issueId: IssueId,
1830
+ workspaceId: Schema.optional(Schema.String),
1772
1831
  role: Schema.String,
1773
1832
  sessionName: Schema.String,
1774
1833
  attempt: Schema.Number,
@@ -1787,6 +1846,7 @@ const ReviewCoordinatorStartedEvent = Schema.Struct({
1787
1846
  timestamp: Schema.String,
1788
1847
  payload: Schema.Struct({
1789
1848
  issueId: IssueId,
1849
+ workspaceId: Schema.optional(Schema.String),
1790
1850
  sessionName: Schema.String
1791
1851
  })
1792
1852
  });
@@ -1797,10 +1857,62 @@ const ReviewCoordinatorDiedEvent = Schema.Struct({
1797
1857
  timestamp: Schema.String,
1798
1858
  payload: Schema.Struct({
1799
1859
  issueId: IssueId,
1860
+ workspaceId: Schema.optional(Schema.String),
1800
1861
  sessionName: Schema.String,
1801
1862
  reason: Schema.String
1802
1863
  })
1803
1864
  });
1865
+ /** A terminal review verdict was rejected due to stale evidence. */
1866
+ const ReviewVerdictRejectedEvent = Schema.Struct({
1867
+ type: Schema.Literal("review.verdict_rejected"),
1868
+ sequence: SequenceNumber,
1869
+ timestamp: Schema.String,
1870
+ payload: Schema.Struct({
1871
+ issueId: IssueId,
1872
+ workspaceId: Schema.optional(Schema.String),
1873
+ writer: Schema.String,
1874
+ verdict: Schema.String,
1875
+ evidenceHead: Schema.String,
1876
+ rowHead: Schema.String,
1877
+ reason: Schema.String
1878
+ })
1879
+ });
1880
+ /** A terminal review verdict was landed and dispatched with a fresh evidence head. */
1881
+ const ReviewVerdictDispatchedEvent = Schema.Struct({
1882
+ type: Schema.Literal("review.verdict_dispatched"),
1883
+ sequence: SequenceNumber,
1884
+ timestamp: Schema.String,
1885
+ payload: Schema.Struct({
1886
+ issueId: IssueId,
1887
+ workspaceId: Schema.optional(Schema.String),
1888
+ writer: Schema.String,
1889
+ verdict: Schema.String,
1890
+ evidenceHead: Schema.String,
1891
+ rowHead: Schema.String,
1892
+ classification: Schema.String,
1893
+ testGateReset: Schema.Boolean
1894
+ })
1895
+ });
1896
+ /**
1897
+ * A recovery path found a fresh verdict artifact but declined to restore it,
1898
+ * because the artifact's head evidence disagrees with the row's anchor. The
1899
+ * verdict is NOT lost silently — it is reported here so the operator can see a
1900
+ * finished review that recovery refused to write (PAN-3511).
1901
+ */
1902
+ const ReviewVerdictRestoreBlockedEvent = Schema.Struct({
1903
+ type: Schema.Literal("review.verdict_restore_blocked"),
1904
+ sequence: SequenceNumber,
1905
+ timestamp: Schema.String,
1906
+ payload: Schema.Struct({
1907
+ issueId: IssueId,
1908
+ /** Recovery path that attempted the restore (orphan-reset, sweeper, …). */
1909
+ caller: Schema.String,
1910
+ verdict: Schema.String,
1911
+ artifactHead: Schema.String,
1912
+ rowHead: Schema.String,
1913
+ reason: Schema.String
1914
+ })
1915
+ });
1804
1916
  const SpecialistLifecycleState = Schema.Literals([
1805
1917
  "active",
1806
1918
  "sleeping",
@@ -1826,7 +1938,8 @@ const SpecialistCompletedEvent = Schema.Struct({
1826
1938
  timestamp: Schema.String,
1827
1939
  payload: Schema.Struct({
1828
1940
  name: Role,
1829
- issueId: Schema.optional(IssueId)
1941
+ issueId: Schema.optional(IssueId),
1942
+ workspaceId: Schema.optional(Schema.String)
1830
1943
  })
1831
1944
  });
1832
1945
  /** New — role-backed specialist failed */
@@ -1837,6 +1950,7 @@ const SpecialistFailedEvent = Schema.Struct({
1837
1950
  payload: Schema.Struct({
1838
1951
  name: Role,
1839
1952
  issueId: Schema.optional(IssueId),
1953
+ workspaceId: Schema.optional(Schema.String),
1840
1954
  error: Schema.String
1841
1955
  })
1842
1956
  });
@@ -1876,7 +1990,10 @@ const IssuesUpdatedEvent = Schema.Struct({
1876
1990
  type: Schema.Literal("issues.updated"),
1877
1991
  sequence: SequenceNumber,
1878
1992
  timestamp: Schema.String,
1879
- payload: Schema.Struct({ issueId: Schema.optional(IssueId) })
1993
+ payload: Schema.Struct({
1994
+ issueId: Schema.optional(IssueId),
1995
+ workspaceId: Schema.optional(Schema.String)
1996
+ })
1880
1997
  });
1881
1998
  /** Patch a single issue's status in the read model without a full snapshot refresh. */
1882
1999
  const IssueStatusChangedEvent = Schema.Struct({
@@ -1885,6 +2002,7 @@ const IssueStatusChangedEvent = Schema.Struct({
1885
2002
  timestamp: Schema.String,
1886
2003
  payload: Schema.Struct({
1887
2004
  issueId: IssueId,
2005
+ workspaceId: Schema.optional(Schema.String),
1888
2006
  status: Schema.String,
1889
2007
  canonicalStatus: Schema.String,
1890
2008
  labels: Schema.optional(Schema.Array(Schema.String))
@@ -1917,6 +2035,7 @@ const ActivityEntryEvent = Schema.Struct({
1917
2035
  details: Schema.optional(Schema.String),
1918
2036
  output: Schema.optional(Schema.String),
1919
2037
  issueId: Schema.optional(IssueId),
2038
+ workspaceId: Schema.optional(Schema.String),
1920
2039
  /** Dashboard route the feed navigates to on click (e.g. /conv/<name>, /flywheel). */
1921
2040
  link: Schema.optional(Schema.String),
1922
2041
  /** PAN-1862 (FR-12): fire a desktop notification for this entry (operator-facing warnings). */
@@ -1935,6 +2054,7 @@ const ActivityDetailedEvent = Schema.Struct({
1935
2054
  message: Schema.String,
1936
2055
  details: Schema.optional(Schema.String),
1937
2056
  issueId: Schema.optional(IssueId),
2057
+ workspaceId: Schema.optional(Schema.String),
1938
2058
  triggeringEvent: Schema.optional(Schema.String)
1939
2059
  })
1940
2060
  });
@@ -1948,6 +2068,7 @@ const ActivityTtsEvent = Schema.Struct({
1948
2068
  utterance: Schema.String,
1949
2069
  priority: Schema.optional(Schema.Number),
1950
2070
  issueId: Schema.optional(IssueId),
2071
+ workspaceId: Schema.optional(Schema.String),
1951
2072
  source: Schema.optional(Schema.String),
1952
2073
  eventType: Schema.optional(Schema.String)
1953
2074
  })
@@ -1960,6 +2081,7 @@ const DashboardLifecycleStartedEvent = Schema.Struct({
1960
2081
  payload: Schema.Struct({
1961
2082
  reason: Schema.String,
1962
2083
  issueId: Schema.optional(IssueId),
2084
+ workspaceId: Schema.optional(Schema.String),
1963
2085
  trigger: Schema.String
1964
2086
  })
1965
2087
  });
@@ -1971,6 +2093,7 @@ const DashboardLifecycleCompletedEvent = Schema.Struct({
1971
2093
  payload: Schema.Struct({
1972
2094
  reason: Schema.String,
1973
2095
  issueId: Schema.optional(IssueId),
2096
+ workspaceId: Schema.optional(Schema.String),
1974
2097
  durationMs: Schema.Number
1975
2098
  })
1976
2099
  });
@@ -1982,6 +2105,7 @@ const DashboardLifecycleFailedEvent = Schema.Struct({
1982
2105
  payload: Schema.Struct({
1983
2106
  reason: Schema.String,
1984
2107
  issueId: Schema.optional(IssueId),
2108
+ workspaceId: Schema.optional(Schema.String),
1985
2109
  error: Schema.String
1986
2110
  })
1987
2111
  });
@@ -1992,6 +2116,7 @@ const ShadowInferenceUpdateEvent = Schema.Struct({
1992
2116
  timestamp: Schema.String,
1993
2117
  payload: Schema.Struct({
1994
2118
  issueId: IssueId,
2119
+ workspaceId: Schema.optional(Schema.String),
1995
2120
  content: Schema.String
1996
2121
  })
1997
2122
  });
@@ -2002,6 +2127,7 @@ const WorkspaceCreatedEvent = Schema.Struct({
2002
2127
  timestamp: Schema.String,
2003
2128
  payload: Schema.Struct({
2004
2129
  issueId: IssueId,
2130
+ workspaceId: Schema.optional(Schema.String),
2005
2131
  workspacePath: Schema.String
2006
2132
  })
2007
2133
  });
@@ -2010,21 +2136,30 @@ const WorkspaceWipeStartedEvent = Schema.Struct({
2010
2136
  type: Schema.Literal("workspace.wipe_started"),
2011
2137
  sequence: SequenceNumber,
2012
2138
  timestamp: Schema.String,
2013
- payload: Schema.Struct({ issueId: IssueId })
2139
+ payload: Schema.Struct({
2140
+ issueId: IssueId,
2141
+ workspaceId: Schema.optional(Schema.String)
2142
+ })
2014
2143
  });
2015
2144
  /** New — deep-wipe completed, workspace fully destroyed */
2016
2145
  const WorkspaceDestroyedEvent = Schema.Struct({
2017
2146
  type: Schema.Literal("workspace.destroyed"),
2018
2147
  sequence: SequenceNumber,
2019
2148
  timestamp: Schema.String,
2020
- payload: Schema.Struct({ issueId: IssueId })
2149
+ payload: Schema.Struct({
2150
+ issueId: IssueId,
2151
+ workspaceId: Schema.optional(Schema.String)
2152
+ })
2021
2153
  });
2022
2154
  /** New — cleanup-workspace completed, workspace directory removed */
2023
2155
  const WorkspaceDeletedEvent = Schema.Struct({
2024
2156
  type: Schema.Literal("workspace.deleted"),
2025
2157
  sequence: SequenceNumber,
2026
2158
  timestamp: Schema.String,
2027
- payload: Schema.Struct({ issueId: IssueId })
2159
+ payload: Schema.Struct({
2160
+ issueId: IssueId,
2161
+ workspaceId: Schema.optional(Schema.String)
2162
+ })
2028
2163
  });
2029
2164
  /** New — planning aborted, workspace returned to idle state */
2030
2165
  const WorkspaceAbortedEvent = Schema.Struct({
@@ -2033,6 +2168,7 @@ const WorkspaceAbortedEvent = Schema.Struct({
2033
2168
  timestamp: Schema.String,
2034
2169
  payload: Schema.Struct({
2035
2170
  issueId: IssueId,
2171
+ workspaceId: Schema.optional(Schema.String),
2036
2172
  sessionName: Schema.optional(Schema.String)
2037
2173
  })
2038
2174
  });
@@ -2082,6 +2218,7 @@ const MemoryHealthChangedEvent = Schema.Struct({
2082
2218
  payload: Schema.Struct({
2083
2219
  projectId: Schema.String,
2084
2220
  issueId: IssueId,
2221
+ workspaceId: Schema.optional(Schema.String),
2085
2222
  status: Schema.Literals([
2086
2223
  "healthy",
2087
2224
  "degraded",
@@ -2100,6 +2237,7 @@ const CostEventRecordedEvent = Schema.Struct({
2100
2237
  payload: Schema.Struct({
2101
2238
  agentId: AgentId,
2102
2239
  issueId: IssueId,
2240
+ workspaceId: Schema.optional(Schema.String),
2103
2241
  cost: Schema.Number,
2104
2242
  inputTokens: Schema.Number,
2105
2243
  outputTokens: Schema.Number
@@ -2123,6 +2261,18 @@ const ConversationCreatedEvent = Schema.Struct({
2123
2261
  timestamp: Schema.String,
2124
2262
  payload: Schema.Struct({ conversationName: Schema.String })
2125
2263
  });
2264
+ /** Emitted (in-memory only, not persisted) when a conversation's project
2265
+ * assignment override changes, so the sidebar can re-group it live instead of
2266
+ * waiting for its poll tick. */
2267
+ const ConversationMovedEvent = Schema.Struct({
2268
+ type: Schema.Literal("conversation.moved"),
2269
+ sequence: SequenceNumber,
2270
+ timestamp: Schema.String,
2271
+ payload: Schema.Struct({
2272
+ conversationName: Schema.String,
2273
+ projectKey: Schema.String
2274
+ })
2275
+ });
2126
2276
  /** Emitted (in-memory only) when a conversation title changes, so the sidebar
2127
2277
  * list can refresh immediately instead of waiting for its poll tick. */
2128
2278
  const ConversationTitleChangedEvent = Schema.Struct({
@@ -2223,6 +2373,45 @@ const EmbedProgressEvent = Schema.Struct({
2223
2373
  error: Schema.optional(Schema.String)
2224
2374
  })
2225
2375
  });
2376
+ /** The parked population changed — carries the full new population (compact rows). */
2377
+ const SweepScanEvent = Schema.Struct({
2378
+ type: Schema.Literal("sweep.scan"),
2379
+ sequence: SequenceNumber,
2380
+ timestamp: Schema.String,
2381
+ payload: Schema.Struct({
2382
+ issueCount: Schema.Number,
2383
+ rowCount: Schema.Number,
2384
+ rows: Schema.Array(Schema.Struct({
2385
+ issueId: Schema.String,
2386
+ orbit: Schema.String,
2387
+ parkedAt: Schema.String
2388
+ }))
2389
+ })
2390
+ });
2391
+ /** A parked row was (re-)surfaced to the operator — gates respected, TTL re-surface, or exhaustion. */
2392
+ const SweepEscalatedEvent = Schema.Struct({
2393
+ type: Schema.Literal("sweep.escalated"),
2394
+ sequence: SequenceNumber,
2395
+ timestamp: Schema.String,
2396
+ payload: Schema.Struct({
2397
+ issueId: Schema.String,
2398
+ orbit: Schema.String,
2399
+ reason: Schema.String
2400
+ })
2401
+ });
2402
+ /** The sweeper recommended a remedy for a parked row (observability-only — never an action, PAN-3551). */
2403
+ const SweepRecommendationEvent = Schema.Struct({
2404
+ type: Schema.Literal("sweep.recommendation"),
2405
+ sequence: SequenceNumber,
2406
+ timestamp: Schema.String,
2407
+ payload: Schema.Struct({
2408
+ issueId: Schema.String,
2409
+ orbit: Schema.String,
2410
+ recommendation: Schema.String,
2411
+ recurring: Schema.optional(Schema.Boolean),
2412
+ agentId: Schema.optional(Schema.String)
2413
+ })
2414
+ });
2226
2415
  /** All domain events — the shape streamed via subscribeDomainEvents RPC */
2227
2416
  const DomainEvent = Schema.Union([
2228
2417
  SystemHeartbeatEvent,
@@ -2239,6 +2428,7 @@ const DomainEvent = Schema.Union([
2239
2428
  AgentStatusChangedEvent,
2240
2429
  AgentOutputReceivedEvent,
2241
2430
  AgentActivityChangedEvent,
2431
+ AgentHookFiredEvent,
2242
2432
  AgentThinkingStartedEvent,
2243
2433
  AgentThinkingStoppedEvent,
2244
2434
  AgentWaitingStartedEvent,
@@ -2280,6 +2470,9 @@ const DomainEvent = Schema.Union([
2280
2470
  ReviewSpecialistTimedOutEvent,
2281
2471
  ReviewCoordinatorStartedEvent,
2282
2472
  ReviewCoordinatorDiedEvent,
2473
+ ReviewVerdictRejectedEvent,
2474
+ ReviewVerdictDispatchedEvent,
2475
+ ReviewVerdictRestoreBlockedEvent,
2283
2476
  SpecialistStartedEvent,
2284
2477
  SpecialistCompletedEvent,
2285
2478
  SpecialistFailedEvent,
@@ -2309,6 +2502,7 @@ const DomainEvent = Schema.Union([
2309
2502
  DashboardLifecycleFailedEvent,
2310
2503
  ConversationCompactingChangedEvent,
2311
2504
  ConversationCreatedEvent,
2505
+ ConversationMovedEvent,
2312
2506
  ConversationTitleChangedEvent,
2313
2507
  ConversationPermissionChangedEvent,
2314
2508
  ScanStartedEvent,
@@ -2316,7 +2510,10 @@ const DomainEvent = Schema.Union([
2316
2510
  ScanCompleteEvent,
2317
2511
  EnrichProgressEvent,
2318
2512
  EnrichCompleteEvent,
2319
- EmbedProgressEvent
2513
+ EmbedProgressEvent,
2514
+ SweepScanEvent,
2515
+ SweepEscalatedEvent,
2516
+ SweepRecommendationEvent
2320
2517
  ]);
2321
2518
  //#endregion
2322
2519
  //#region src/editor.ts
@@ -2491,7 +2688,8 @@ const FlywheelHarness = Schema.Literals([
2491
2688
  "pi",
2492
2689
  "ohmypi",
2493
2690
  "codex",
2494
- "acp"
2691
+ "acp",
2692
+ "kimi-code"
2495
2693
  ]);
2496
2694
  const FlywheelEffort = Schema.Literals([
2497
2695
  "low",
@@ -2684,6 +2882,8 @@ const WS_METHODS = {
2684
2882
  replayEvents: "pan.replayEvents",
2685
2883
  getWorkspaceDetail: "pan.getWorkspaceDetail",
2686
2884
  readWorkspaceFile: "pan.readWorkspaceFile",
2885
+ readFileAtPath: "pan.readFileAtPath",
2886
+ writeFileAtPath: "pan.writeFileAtPath",
2687
2887
  resolveFilePathExists: "pan.resolveFilePathExists",
2688
2888
  terminalOpen: "pan.terminalOpen",
2689
2889
  terminalWrite: "pan.terminalWrite",
@@ -2829,12 +3029,17 @@ const SessionTreeDelta = Schema.Struct({
2829
3029
  "session_added",
2830
3030
  "session_removed",
2831
3031
  "presence_changed",
2832
- "status_changed"
3032
+ "status_changed",
3033
+ "pending_input_changed"
2833
3034
  ]),
2834
3035
  issueId: Schema.String,
2835
3036
  sessionId: Schema.String,
2836
3037
  presence: Schema.optional(SessionNodePresence),
2837
3038
  status: Schema.optional(AgentStatus),
3039
+ awaitingInput: Schema.optional(Schema.Boolean),
3040
+ awaitingInputPrompt: Schema.optional(Schema.String),
3041
+ awaitingInputReason: Schema.optional(Schema.String),
3042
+ pendingInputKinds: Schema.optional(Schema.Array(Schema.String)),
2838
3043
  timestamp: Schema.String
2839
3044
  });
2840
3045
  /** 1. Subscribe to the live domain event stream (stream) */
@@ -2935,6 +3140,44 @@ const ReadWorkspaceFileRpc = Rpc.make(WS_METHODS.readWorkspaceFile, {
2935
3140
  success: ReadWorkspaceFileResult,
2936
3141
  error: PanRpcError
2937
3142
  });
3143
+ const ReadFileAtPathInput = Schema.Struct({ path: Schema.String });
3144
+ const ReadFileAtPathResult = Schema.Struct({
3145
+ text: Schema.String,
3146
+ lang: Schema.String,
3147
+ mtimeMs: Schema.Number,
3148
+ totalLines: Schema.Number
3149
+ });
3150
+ /**
3151
+ * 10b-2. Read an allowlisted markdown file by absolute path (PAN-3260).
3152
+ *
3153
+ * Unlike ReadWorkspaceFileRpc this takes no issueId — the internal markdown
3154
+ * editor pane opens files reached from surfaces with no workspace context
3155
+ * (e.g. a repo-root file chip inside a conversation). The server validates
3156
+ * `path` against registered project roots + OVERDECK_HOME before reading.
3157
+ */
3158
+ const ReadFileAtPathRpc = Rpc.make(WS_METHODS.readFileAtPath, {
3159
+ payload: ReadFileAtPathInput,
3160
+ success: ReadFileAtPathResult,
3161
+ error: PanRpcError
3162
+ });
3163
+ const WriteFileAtPathInput = Schema.Struct({
3164
+ path: Schema.String,
3165
+ content: Schema.String,
3166
+ expectedMtimeMs: Schema.optional(Schema.Number)
3167
+ });
3168
+ const WriteFileAtPathResult = Schema.Struct({ mtimeMs: Schema.Number });
3169
+ /**
3170
+ * 10b-3. Write an allowlisted markdown file by absolute path (PAN-3260).
3171
+ *
3172
+ * `expectedMtimeMs` enables optimistic concurrency: a stale value is
3173
+ * rejected with a PanRpcError code of WRITE_CONFLICT and nothing is
3174
+ * written. Omitting it (e.g. an explicit Overwrite action) skips the check.
3175
+ */
3176
+ const WriteFileAtPathRpc = Rpc.make(WS_METHODS.writeFileAtPath, {
3177
+ payload: WriteFileAtPathInput,
3178
+ success: WriteFileAtPathResult,
3179
+ error: PanRpcError
3180
+ });
2938
3181
  /**
2939
3182
  * 10c. Resolve whether a file path candidate exists on disk (PAN-1457).
2940
3183
  *
@@ -2952,7 +3195,7 @@ const ReadWorkspaceFileRpc = Rpc.make(WS_METHODS.readWorkspaceFile, {
2952
3195
  * chat happens outside any single workspace.
2953
3196
  */
2954
3197
  const ResolveFilePathExistsInput = Schema.Struct({
2955
- cwd: Schema.String,
3198
+ cwd: Schema.optional(Schema.String),
2956
3199
  path: Schema.String
2957
3200
  });
2958
3201
  const ResolveFilePathExistsResult = Schema.Struct({
@@ -3209,7 +3452,7 @@ const GetConversationStatsRpc = Rpc.make(WS_METHODS.getConversationStats, {
3209
3452
  error: PanRpcError
3210
3453
  });
3211
3454
  /** All Overdeck WebSocket RPC methods */
3212
- const PanRpcGroup = RpcGroup.make(SubscribeDomainEventsRpc, SubscribeIssueEventsRpc, SubscribeTerminalRpc, SubscribeAgentOutputRpc, GetSnapshotRpc, ReplayEventsRpc, GetWorkspaceDetailRpc, ReadWorkspaceFileRpc, ResolveFilePathExistsRpc, TerminalOpenRpc, TerminalWriteRpc, TerminalResizeRpc, TerminalCloseRpc, StartPlanningRpc, StartAgentRpc, DeepWipeRpc, SendTerminalInputRpc, ResizeTerminalRpc, SubscribeConversationMessagesRpc, SubscribeProjectSessionTreeRpc, SubscribeFlywheelStatusRpc, ShellOpenInEditorRpc, GetAvailableEditorsRpc, ScanConversationsRpc, SearchConversationsRpc, ListDiscoveredSessionsRpc, ListSessionsFeedRpc, GetSessionsFeedFacetsRpc, GetDiscoveredSessionRpc, EnrichSessionsRpc, EmbedSessionsRpc, GetConversationCostRpc, GetConversationCostByWorkspaceRpc, GetConversationStatsRpc);
3455
+ const PanRpcGroup = RpcGroup.make(SubscribeDomainEventsRpc, SubscribeIssueEventsRpc, SubscribeTerminalRpc, SubscribeAgentOutputRpc, GetSnapshotRpc, ReplayEventsRpc, GetWorkspaceDetailRpc, ReadWorkspaceFileRpc, ReadFileAtPathRpc, WriteFileAtPathRpc, ResolveFilePathExistsRpc, TerminalOpenRpc, TerminalWriteRpc, TerminalResizeRpc, TerminalCloseRpc, StartPlanningRpc, StartAgentRpc, DeepWipeRpc, SendTerminalInputRpc, ResizeTerminalRpc, SubscribeConversationMessagesRpc, SubscribeProjectSessionTreeRpc, SubscribeFlywheelStatusRpc, ShellOpenInEditorRpc, GetAvailableEditorsRpc, ScanConversationsRpc, SearchConversationsRpc, ListDiscoveredSessionsRpc, ListSessionsFeedRpc, GetSessionsFeedFacetsRpc, GetDiscoveredSessionRpc, EnrichSessionsRpc, EmbedSessionsRpc, GetConversationCostRpc, GetConversationCostByWorkspaceRpc, GetConversationStatsRpc);
3213
3456
  //#endregion
3214
3457
  //#region src/event-reducers.ts
3215
3458
  const INITIAL_READ_MODEL_STATE = {
@@ -3866,7 +4109,8 @@ function applyEvent(state, event) {
3866
4109
  };
3867
4110
  case "memory.observation_created": {
3868
4111
  const observation = event.payload.observation;
3869
- const existing = state.observationsByIssueId[observation.issueId] ?? [];
4112
+ const observationKey = observation.issueId ?? observation.workspaceId;
4113
+ const existing = state.observationsByIssueId[observationKey] ?? [];
3870
4114
  const index = existing.findIndex((entry) => entry.id === observation.id);
3871
4115
  const updated = trimMemoryObservations(index === -1 ? [...existing, observation] : existing.map((entry, entryIndex) => entryIndex === index ? observation : entry));
3872
4116
  return {
@@ -3874,7 +4118,7 @@ function applyEvent(state, event) {
3874
4118
  sequence: Math.max(state.sequence, event.sequence),
3875
4119
  observationsByIssueId: {
3876
4120
  ...state.observationsByIssueId,
3877
- [observation.issueId]: updated
4121
+ [observationKey]: updated
3878
4122
  }
3879
4123
  };
3880
4124
  }
@@ -3943,6 +4187,10 @@ function applyEvent(state, event) {
3943
4187
  }
3944
4188
  };
3945
4189
  }
4190
+ case "agent.hook_fired": return {
4191
+ ...state,
4192
+ sequence: Math.max(state.sequence, event.sequence)
4193
+ };
3946
4194
  case "agent.activity_changed": {
3947
4195
  const { agentId, activity, currentTool } = event.payload;
3948
4196
  const prev = state.agentRuntimeById[agentId] ?? defaultRuntimeSnapshot(agentId, event.timestamp, event.sequence);
@@ -4400,6 +4648,10 @@ function applyEvent(state, event) {
4400
4648
  ...state,
4401
4649
  conversationsListRevision: state.conversationsListRevision + 1
4402
4650
  };
4651
+ case "conversation.moved": return {
4652
+ ...state,
4653
+ conversationsListRevision: state.conversationsListRevision + 1
4654
+ };
4403
4655
  case "conversation.title_changed": return {
4404
4656
  ...state,
4405
4657
  conversationsListRevision: state.conversationsListRevision + 1
@@ -4641,7 +4893,8 @@ const CONTEXT_PREVIEW_HARNESSES = [
4641
4893
  "claude-code",
4642
4894
  "ohmypi",
4643
4895
  "codex",
4644
- "acp"
4896
+ "acp",
4897
+ "kimi-code"
4645
4898
  ];
4646
4899
  const ContextLayerKind = Schema.Literals(CONTEXT_LAYER_KINDS);
4647
4900
  const ContextPreviewHarness = Schema.Literals(CONTEXT_PREVIEW_HARNESSES);
@@ -4749,6 +5002,7 @@ const ContextHarnessPreviews = Schema.Struct({
4749
5002
  ohmypi: Schema.String,
4750
5003
  codex: Schema.String,
4751
5004
  acp: Schema.String,
5005
+ "kimi-code": Schema.String,
4752
5006
  fullPrompt: Schema.String
4753
5007
  });
4754
5008
  const ContextPreviewDiagnostic = Schema.Struct({
@@ -4804,6 +5058,7 @@ const ArtifactAgentHarness = Schema.Literals([
4804
5058
  "ohmypi",
4805
5059
  "codex",
4806
5060
  "acp",
5061
+ "kimi-code",
4807
5062
  "user"
4808
5063
  ]);
4809
5064
  const ArtifactLifecycleState = Schema.Literals([
@@ -5037,16 +5292,40 @@ const ACP_BEHAVIOR = {
5037
5292
  workAgentMode: "acp-host",
5038
5293
  readyTimeoutSeconds: 30
5039
5294
  };
5295
+ const KIMI_CODE_BEHAVIOR = {
5296
+ displayName: "Kimi Code",
5297
+ nativeCommands: [],
5298
+ executableName: "kimi",
5299
+ processNames: ["kimi"],
5300
+ launchCommandKind: "kimi-code-tui",
5301
+ deliveryKind: "pty-supervisor",
5302
+ readinessKind: "kimi-session-signal",
5303
+ transcriptKind: "kimi-wire-jsonl",
5304
+ sessionIdSource: "kimi-session-newest",
5305
+ contextLayerKind: "kimi-code",
5306
+ feedKind: "kimi_code",
5307
+ supportsPtySupervisor: true,
5308
+ supportsChannelsBridge: false,
5309
+ supportsConversationStreaming: true,
5310
+ supportsPatchProjection: false,
5311
+ usesRpcFifo: false,
5312
+ usesCodexHome: false,
5313
+ injectsPromptTimeMemory: false,
5314
+ workAgentMode: "kimi-code-tui",
5315
+ readyTimeoutSeconds: 60
5316
+ };
5040
5317
  const BEHAVIORS = {
5041
5318
  "claude-code": CLAUDE_CODE_BEHAVIOR,
5042
5319
  ohmypi: OHMYPI_BEHAVIOR,
5043
5320
  codex: CODEX_BEHAVIOR,
5044
- acp: ACP_BEHAVIOR
5321
+ acp: ACP_BEHAVIOR,
5322
+ "kimi-code": KIMI_CODE_BEHAVIOR
5045
5323
  };
5046
5324
  function getHarnessBehavior(harness) {
5047
5325
  if (harness === "ohmypi" || harness === "pi") return OHMYPI_BEHAVIOR;
5048
5326
  if (harness === "codex") return CODEX_BEHAVIOR;
5049
5327
  if (harness === "acp") return ACP_BEHAVIOR;
5328
+ if (harness === "kimi-code") return KIMI_CODE_BEHAVIOR;
5050
5329
  return CLAUDE_CODE_BEHAVIOR;
5051
5330
  }
5052
5331
  function getRuntimeBehavior(runtime) {
@@ -5260,7 +5539,8 @@ const TELEMETRY_PROPERTY_DOMAINS = {
5260
5539
  "god-view",
5261
5540
  "deacon",
5262
5541
  "sessions",
5263
- "awaiting-merge"
5542
+ "awaiting-merge",
5543
+ "workspace"
5264
5544
  ],
5265
5545
  decision_subject: ["agent", "conversation"],
5266
5546
  duration_bucket: [
@@ -5279,7 +5559,8 @@ const TELEMETRY_PROPERTY_DOMAINS = {
5279
5559
  "claude-code",
5280
5560
  "ohmypi",
5281
5561
  "codex",
5282
- "acp"
5562
+ "acp",
5563
+ "kimi-code"
5283
5564
  ],
5284
5565
  merge_kind: ["pipeline"],
5285
5566
  model_family: [
@@ -5793,29 +6074,11 @@ const COMPOSER_COMMAND_MANIFEST = [
5793
6074
  "aliases": [],
5794
6075
  "category": "Review"
5795
6076
  },
5796
- {
5797
- "id": "pan-review-scope",
5798
- "path": ["review", "scope"],
5799
- "display": "/pan review scope",
5800
- "description": "Set per-issue re-review scope (all, changed, or blockers) — which convoy reviewers re-run (PAN-1874)",
5801
- "args": [{
5802
- "name": "id",
5803
- "required": true,
5804
- "variadic": false
5805
- }, {
5806
- "name": "scope",
5807
- "required": true,
5808
- "variadic": false
5809
- }],
5810
- "options": [],
5811
- "aliases": [],
5812
- "category": "Review"
5813
- },
5814
6077
  {
5815
6078
  "id": "pan-review-restart",
5816
6079
  "path": ["review", "restart"],
5817
6080
  "display": "/pan review restart",
5818
- "description": "Kill running reviewers and dispatch fresh review pipeline",
6081
+ "description": "Resume review and re-dispatch reviewers missing a report",
5819
6082
  "args": [{
5820
6083
  "name": "id",
5821
6084
  "required": true,
@@ -5940,7 +6203,7 @@ const COMPOSER_COMMAND_MANIFEST = [
5940
6203
  },
5941
6204
  {
5942
6205
  "flags": "--harness <harness>",
5943
- "description": "Coding-agent harness: claude-code | pi | codex | acp (defaults to role/provider settings)",
6206
+ "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code (defaults to role/provider settings)",
5944
6207
  "required": true,
5945
6208
  "valueHint": "harness"
5946
6209
  },
@@ -6044,6 +6307,24 @@ const COMPOSER_COMMAND_MANIFEST = [
6044
6307
  "aliases": [],
6045
6308
  "category": "Lifecycle"
6046
6309
  },
6310
+ {
6311
+ "id": "pan-answer",
6312
+ "path": ["answer"],
6313
+ "display": "/pan answer",
6314
+ "description": "Show a pending pane choice, or answer its numbered option",
6315
+ "args": [{
6316
+ "name": "id",
6317
+ "required": true,
6318
+ "variadic": false
6319
+ }, {
6320
+ "name": "option",
6321
+ "required": false,
6322
+ "variadic": false
6323
+ }],
6324
+ "options": [],
6325
+ "aliases": [],
6326
+ "category": "CLI"
6327
+ },
6047
6328
  {
6048
6329
  "id": "pan-monitor",
6049
6330
  "path": ["monitor"],
@@ -6115,6 +6396,20 @@ const COMPOSER_COMMAND_MANIFEST = [
6115
6396
  "aliases": [],
6116
6397
  "category": "Lifecycle"
6117
6398
  },
6399
+ {
6400
+ "id": "pan-reset-session",
6401
+ "path": ["reset-session"],
6402
+ "display": "/pan reset-session",
6403
+ "description": "Clear saved session pointers so the next start creates a fresh session",
6404
+ "args": [{
6405
+ "name": "id",
6406
+ "required": true,
6407
+ "variadic": false
6408
+ }],
6409
+ "options": [],
6410
+ "aliases": [],
6411
+ "category": "Lifecycle"
6412
+ },
6118
6413
  {
6119
6414
  "id": "pan-pause",
6120
6415
  "path": ["pause"],
@@ -6162,6 +6457,20 @@ const COMPOSER_COMMAND_MANIFEST = [
6162
6457
  "aliases": [],
6163
6458
  "category": "Lifecycle"
6164
6459
  },
6460
+ {
6461
+ "id": "pan-unstick",
6462
+ "path": ["unstick"],
6463
+ "display": "/pan unstick",
6464
+ "description": "Clear an issue stuck gate without resetting a merged lifecycle",
6465
+ "args": [{
6466
+ "name": "id",
6467
+ "required": true,
6468
+ "variadic": false
6469
+ }],
6470
+ "options": [],
6471
+ "aliases": [],
6472
+ "category": "CLI"
6473
+ },
6165
6474
  {
6166
6475
  "id": "pan-fork",
6167
6476
  "path": ["fork"],
@@ -6185,6 +6494,12 @@ const COMPOSER_COMMAND_MANIFEST = [
6185
6494
  "required": true,
6186
6495
  "valueHint": "path"
6187
6496
  },
6497
+ {
6498
+ "flags": "--project <key>",
6499
+ "description": "Project (yaml key or display name) for the new conversation; defaults to inheriting the source conversation's project",
6500
+ "required": true,
6501
+ "valueHint": "key"
6502
+ },
6188
6503
  {
6189
6504
  "flags": "--plain",
6190
6505
  "description": "Skip summary generation and copy raw conversation history",
@@ -6228,6 +6543,12 @@ const COMPOSER_COMMAND_MANIFEST = [
6228
6543
  "required": true,
6229
6544
  "valueHint": "path"
6230
6545
  },
6546
+ {
6547
+ "flags": "--project <key>",
6548
+ "description": "Project (yaml key or display name) for the new conversation; defaults to inheriting the source conversation's project",
6549
+ "required": true,
6550
+ "valueHint": "key"
6551
+ },
6231
6552
  {
6232
6553
  "flags": "--issue <id>",
6233
6554
  "description": "Issue ID to associate with the new conversation",
@@ -6546,9 +6867,15 @@ const COMPOSER_COMMAND_MANIFEST = [
6546
6867
  "required": false,
6547
6868
  "valueHint": null
6548
6869
  },
6870
+ {
6871
+ "flags": "--accept-ship",
6872
+ "description": "Accept a missed DoD row 7 (Version strings propagated) — recorded as an explicit override in the close-out record",
6873
+ "required": false,
6874
+ "valueHint": null
6875
+ },
6549
6876
  {
6550
6877
  "flags": "--accept-deploy",
6551
- "description": "Accept a missed DoD row 7 (Deployed) — recorded as an explicit override in the close-out record",
6878
+ "description": "Accept a missed DoD row 8 (Deployed) — recorded as an explicit override in the close-out record",
6552
6879
  "required": false,
6553
6880
  "valueHint": null
6554
6881
  },
@@ -6557,6 +6884,12 @@ const COMPOSER_COMMAND_MANIFEST = [
6557
6884
  "description": "Record an abandoned disposition (PAN-3211): skip the DoD gate and close without landing evidence. Operator-conversation only; cannot be combined with --accept-* flags",
6558
6885
  "required": true,
6559
6886
  "valueHint": "reason"
6887
+ },
6888
+ {
6889
+ "flags": "--residue <reason>",
6890
+ "description": "Record a residue disposition (PAN-3396): close stale convention PRs/MRs, skip the DoD gate with verified evidence, and mark terminal without merge claim. Operator-conversation only; cannot be combined with --abandon or --accept-* flags",
6891
+ "required": true,
6892
+ "valueHint": "reason"
6560
6893
  }
6561
6894
  ],
6562
6895
  "aliases": [],
@@ -6599,7 +6932,7 @@ const COMPOSER_COMMAND_MANIFEST = [
6599
6932
  },
6600
6933
  {
6601
6934
  "flags": "--harness <harness>",
6602
- "description": "Coding-agent harness: claude-code | pi | codex | acp (defaults to role/provider settings)",
6935
+ "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code (defaults to role/provider settings)",
6603
6936
  "required": true,
6604
6937
  "valueHint": "harness"
6605
6938
  },
@@ -6665,7 +6998,7 @@ const COMPOSER_COMMAND_MANIFEST = [
6665
6998
  },
6666
6999
  {
6667
7000
  "flags": "--force",
6668
- "description": "Clear a paused agent gate and start anyway",
7001
+ "description": "Clear paused and pending-operator-decision gates and start anyway",
6669
7002
  "required": false,
6670
7003
  "valueHint": null
6671
7004
  },
@@ -6716,7 +7049,7 @@ const COMPOSER_COMMAND_MANIFEST = [
6716
7049
  },
6717
7050
  {
6718
7051
  "flags": "--harness <harness>",
6719
- "description": "Coding-agent harness: claude-code | pi | codex | acp (defaults to role/provider settings)",
7052
+ "description": "Coding-agent harness: claude-code | pi | codex | acp | kimi-code (defaults to role/provider settings)",
6720
7053
  "required": true,
6721
7054
  "valueHint": "harness"
6722
7055
  },
@@ -7365,17 +7698,32 @@ const COMPOSER_COMMAND_MANIFEST = [
7365
7698
  "display": "/pan workspace list",
7366
7699
  "description": "List all workspaces",
7367
7700
  "args": [],
7368
- "options": [{
7369
- "flags": "--json",
7370
- "description": "Output as JSON",
7371
- "required": false,
7372
- "valueHint": null
7373
- }, {
7374
- "flags": "--all",
7375
- "description": "List workspaces across all registered projects",
7376
- "required": false,
7377
- "valueHint": null
7378
- }],
7701
+ "options": [
7702
+ {
7703
+ "flags": "--json",
7704
+ "description": "Output as JSON",
7705
+ "required": false,
7706
+ "valueHint": null
7707
+ },
7708
+ {
7709
+ "flags": "--all",
7710
+ "description": "List workspaces across all registered projects",
7711
+ "required": false,
7712
+ "valueHint": null
7713
+ },
7714
+ {
7715
+ "flags": "--kind <kind>",
7716
+ "description": "Filter by workspace kind (main|issue|scratch), reading through the resolver",
7717
+ "required": true,
7718
+ "valueHint": "kind"
7719
+ },
7720
+ {
7721
+ "flags": "--archived",
7722
+ "description": "Include archived workspaces (only applies with --kind)",
7723
+ "required": false,
7724
+ "valueHint": null
7725
+ }
7726
+ ],
7379
7727
  "aliases": [],
7380
7728
  "category": "Workspace"
7381
7729
  },
@@ -7389,25 +7737,160 @@ const COMPOSER_COMMAND_MANIFEST = [
7389
7737
  "required": true,
7390
7738
  "variadic": false
7391
7739
  }],
7392
- "options": [{
7393
- "flags": "--force",
7394
- "description": "Force removal even with uncommitted changes",
7395
- "required": false,
7396
- "valueHint": null
7397
- }, {
7398
- "flags": "--project <path>",
7399
- "description": "Explicit project path (overrides registry)",
7400
- "required": true,
7401
- "valueHint": "path"
7402
- }],
7740
+ "options": [
7741
+ {
7742
+ "flags": "--force",
7743
+ "description": "Force removal even with uncommitted changes",
7744
+ "required": false,
7745
+ "valueHint": null
7746
+ },
7747
+ {
7748
+ "flags": "--project <path>",
7749
+ "description": "Explicit project path (overrides registry)",
7750
+ "required": true,
7751
+ "valueHint": "path"
7752
+ },
7753
+ {
7754
+ "flags": "--purge-memory",
7755
+ "description": "Also permanently delete the workspace's memory home (irreversible)",
7756
+ "required": false,
7757
+ "valueHint": null
7758
+ }
7759
+ ],
7403
7760
  "aliases": [],
7404
7761
  "category": "Workspace"
7405
7762
  },
7406
7763
  {
7407
- "id": "pan-workspace-render-devcontainer",
7408
- "path": ["workspace", "render-devcontainer"],
7409
- "display": "/pan workspace render-devcontainer",
7410
- "description": "Re-render <workspace>/.devcontainer/ from the project compose template",
7764
+ "id": "pan-workspace-new",
7765
+ "path": ["workspace", "new"],
7766
+ "display": "/pan workspace new",
7767
+ "description": "Create a scratch workspace (shared dir by default; --isolated for a git worktree)",
7768
+ "args": [{
7769
+ "name": "name",
7770
+ "required": true,
7771
+ "variadic": false
7772
+ }],
7773
+ "options": [
7774
+ {
7775
+ "flags": "--project <key>",
7776
+ "description": "Registered project key (defaults to the sole project, or the one resolved from cwd)",
7777
+ "required": true,
7778
+ "valueHint": "key"
7779
+ },
7780
+ {
7781
+ "flags": "--isolated",
7782
+ "description": "Create an isolated git worktree instead of sharing the project directory",
7783
+ "required": false,
7784
+ "valueHint": null
7785
+ },
7786
+ {
7787
+ "flags": "--parent-branch <branch>",
7788
+ "description": "Parent branch for the isolated worktree (default: inferred from the project's current branch)",
7789
+ "required": true,
7790
+ "valueHint": "branch"
7791
+ },
7792
+ {
7793
+ "flags": "--target-path <dir>",
7794
+ "description": "Target an existing directory as the workspace path (rejects --isolated)",
7795
+ "required": true,
7796
+ "valueHint": "dir"
7797
+ },
7798
+ {
7799
+ "flags": "--dry-run",
7800
+ "description": "Print the resolved intent as JSON and create nothing",
7801
+ "required": false,
7802
+ "valueHint": null
7803
+ }
7804
+ ],
7805
+ "aliases": [],
7806
+ "category": "Workspace"
7807
+ },
7808
+ {
7809
+ "id": "pan-workspace-main",
7810
+ "path": ["workspace", "main"],
7811
+ "display": "/pan workspace main",
7812
+ "description": "Resolve or create the project's singleton main workspace",
7813
+ "args": [],
7814
+ "options": [{
7815
+ "flags": "--project <key>",
7816
+ "description": "Registered project key (defaults to the sole project, or the one resolved from cwd)",
7817
+ "required": true,
7818
+ "valueHint": "key"
7819
+ }],
7820
+ "aliases": [],
7821
+ "category": "Workspace"
7822
+ },
7823
+ {
7824
+ "id": "pan-workspace-get",
7825
+ "path": ["workspace", "get"],
7826
+ "display": "/pan workspace get",
7827
+ "description": "Show a workspace row by id",
7828
+ "args": [{
7829
+ "name": "ws",
7830
+ "required": true,
7831
+ "variadic": false
7832
+ }],
7833
+ "options": [],
7834
+ "aliases": [],
7835
+ "category": "Workspace"
7836
+ },
7837
+ {
7838
+ "id": "pan-workspace-activate",
7839
+ "path": ["workspace", "activate"],
7840
+ "display": "/pan workspace activate",
7841
+ "description": "Touch a workspace's last-accessed time and print its layout hint",
7842
+ "args": [{
7843
+ "name": "ws",
7844
+ "required": true,
7845
+ "variadic": false
7846
+ }],
7847
+ "options": [],
7848
+ "aliases": [],
7849
+ "category": "Workspace"
7850
+ },
7851
+ {
7852
+ "id": "pan-workspace-archive",
7853
+ "path": ["workspace", "archive"],
7854
+ "display": "/pan workspace archive",
7855
+ "description": "Archive a workspace (reversible; refuses kind=main)",
7856
+ "args": [{
7857
+ "name": "ws",
7858
+ "required": true,
7859
+ "variadic": false
7860
+ }],
7861
+ "options": [],
7862
+ "aliases": [],
7863
+ "category": "Workspace"
7864
+ },
7865
+ {
7866
+ "id": "pan-workspace-relocate",
7867
+ "path": ["workspace", "relocate"],
7868
+ "display": "/pan workspace relocate",
7869
+ "description": "Point a workspace at a new path (refuses kind=issue; kind=main requires --force)",
7870
+ "args": [{
7871
+ "name": "ws",
7872
+ "required": true,
7873
+ "variadic": false
7874
+ }],
7875
+ "options": [{
7876
+ "flags": "--path <dir>",
7877
+ "description": "New path (must be an existing directory)",
7878
+ "required": true,
7879
+ "valueHint": "dir"
7880
+ }, {
7881
+ "flags": "--force",
7882
+ "description": "Allow relocating the main workspace, diverging it from projects.yaml",
7883
+ "required": false,
7884
+ "valueHint": null
7885
+ }],
7886
+ "aliases": [],
7887
+ "category": "Workspace"
7888
+ },
7889
+ {
7890
+ "id": "pan-workspace-render-devcontainer",
7891
+ "path": ["workspace", "render-devcontainer"],
7892
+ "display": "/pan workspace render-devcontainer",
7893
+ "description": "Re-render <workspace>/.devcontainer/ from the project compose template",
7411
7894
  "args": [{
7412
7895
  "name": "featureName",
7413
7896
  "required": true,
@@ -8036,10 +8519,10 @@ const COMPOSER_COMMAND_MANIFEST = [
8036
8519
  "valueHint": "id"
8037
8520
  },
8038
8521
  {
8039
- "flags": "--workspace <id>",
8040
- "description": "Workspace ID",
8522
+ "flags": "--workspace <id|name>",
8523
+ "description": "Workspace id or name",
8041
8524
  "required": true,
8042
- "valueHint": "id"
8525
+ "valueHint": "id|name"
8043
8526
  },
8044
8527
  {
8045
8528
  "flags": "--issue <id>",
@@ -8059,6 +8542,18 @@ const COMPOSER_COMMAND_MANIFEST = [
8059
8542
  "required": false,
8060
8543
  "valueHint": null
8061
8544
  },
8545
+ {
8546
+ "flags": "--global",
8547
+ "description": "Search across all registered projects instead of just one",
8548
+ "required": false,
8549
+ "valueHint": null
8550
+ },
8551
+ {
8552
+ "flags": "--target [path]",
8553
+ "description": "Search all workspaces whose path targets a directory (bare flag = cwd); mutually exclusive with --workspace/--issue/--global",
8554
+ "required": false,
8555
+ "valueHint": "path"
8556
+ },
8062
8557
  {
8063
8558
  "flags": "--include-archived",
8064
8559
  "description": "Include observations hidden by reset markers",
@@ -8085,23 +8580,106 @@ const COMPOSER_COMMAND_MANIFEST = [
8085
8580
  "id": "pan-memory-status",
8086
8581
  "path": ["memory", "status"],
8087
8582
  "display": "/pan memory status",
8088
- "description": "Show current memory status for an issue",
8583
+ "description": "Show current memory status for an issue, a workspace, or the current directory",
8089
8584
  "args": [{
8090
8585
  "name": "issue",
8091
- "required": true,
8586
+ "required": false,
8092
8587
  "variadic": false
8093
8588
  }],
8094
- "options": [{
8095
- "flags": "--project <id>",
8096
- "description": "Project ID",
8589
+ "options": [
8590
+ {
8591
+ "flags": "--project <id>",
8592
+ "description": "Project ID",
8593
+ "required": true,
8594
+ "valueHint": "id"
8595
+ },
8596
+ {
8597
+ "flags": "--workspace <id|name>",
8598
+ "description": "Workspace id or name instead of an issue positional",
8599
+ "required": true,
8600
+ "valueHint": "id|name"
8601
+ },
8602
+ {
8603
+ "flags": "--history <n>",
8604
+ "description": "Also print up to N archived statuses, newest first (max 50)",
8605
+ "required": true,
8606
+ "valueHint": "n"
8607
+ },
8608
+ {
8609
+ "flags": "--json",
8610
+ "description": "Output JSON",
8611
+ "required": false,
8612
+ "valueHint": null
8613
+ }
8614
+ ],
8615
+ "aliases": [],
8616
+ "category": "Observation"
8617
+ },
8618
+ {
8619
+ "id": "pan-memory-timeline",
8620
+ "path": ["memory", "timeline"],
8621
+ "display": "/pan memory timeline",
8622
+ "description": "Print chronological observations for a workspace or the current directory",
8623
+ "args": [],
8624
+ "options": [
8625
+ {
8626
+ "flags": "--workspace <id|name>",
8627
+ "description": "Workspace id or name (defaults to the workspace owning the cwd)",
8628
+ "required": true,
8629
+ "valueHint": "id|name"
8630
+ },
8631
+ {
8632
+ "flags": "--days <n>",
8633
+ "description": "Most recent N days, today counting as day 1 (default 7)",
8634
+ "required": true,
8635
+ "valueHint": "n"
8636
+ },
8637
+ {
8638
+ "flags": "--limit <n>",
8639
+ "description": "Maximum observation rows",
8640
+ "required": true,
8641
+ "valueHint": "n"
8642
+ },
8643
+ {
8644
+ "flags": "--json",
8645
+ "description": "Output JSON",
8646
+ "required": false,
8647
+ "valueHint": null
8648
+ }
8649
+ ],
8650
+ "aliases": [],
8651
+ "category": "Observation"
8652
+ },
8653
+ {
8654
+ "id": "pan-memory-read",
8655
+ "path": ["memory", "read"],
8656
+ "display": "/pan memory read",
8657
+ "description": "Print a file from a workspace's memory home (path is relative to that home)",
8658
+ "args": [{
8659
+ "name": "path",
8097
8660
  "required": true,
8098
- "valueHint": "id"
8099
- }, {
8100
- "flags": "--json",
8101
- "description": "Output JSON",
8102
- "required": false,
8103
- "valueHint": null
8661
+ "variadic": false
8104
8662
  }],
8663
+ "options": [
8664
+ {
8665
+ "flags": "--workspace <id|name>",
8666
+ "description": "Workspace id or name (defaults to the workspace owning the cwd)",
8667
+ "required": true,
8668
+ "valueHint": "id|name"
8669
+ },
8670
+ {
8671
+ "flags": "--from <n>",
8672
+ "description": "First line to print, 1-based",
8673
+ "required": true,
8674
+ "valueHint": "n"
8675
+ },
8676
+ {
8677
+ "flags": "--lines <n>",
8678
+ "description": "Maximum number of lines to print",
8679
+ "required": true,
8680
+ "valueHint": "n"
8681
+ }
8682
+ ],
8105
8683
  "aliases": [],
8106
8684
  "category": "Observation"
8107
8685
  },
@@ -8152,10 +8730,10 @@ const COMPOSER_COMMAND_MANIFEST = [
8152
8730
  "id": "pan-memory-summary",
8153
8731
  "path": ["memory", "summary"],
8154
8732
  "display": "/pan memory summary",
8155
- "description": "Generate a daily markdown memory summary",
8733
+ "description": "Generate a daily markdown memory summary for an issue, a workspace, or the current directory",
8156
8734
  "args": [{
8157
8735
  "name": "issue",
8158
- "required": true,
8736
+ "required": false,
8159
8737
  "variadic": false
8160
8738
  }],
8161
8739
  "options": [
@@ -8165,6 +8743,12 @@ const COMPOSER_COMMAND_MANIFEST = [
8165
8743
  "required": true,
8166
8744
  "valueHint": "id"
8167
8745
  },
8746
+ {
8747
+ "flags": "--workspace <id|name>",
8748
+ "description": "Workspace id or name instead of an issue positional",
8749
+ "required": true,
8750
+ "valueHint": "id|name"
8751
+ },
8168
8752
  {
8169
8753
  "flags": "--date <yyyy-mm-dd>",
8170
8754
  "description": "Summary date",
@@ -8201,6 +8785,136 @@ const COMPOSER_COMMAND_MANIFEST = [
8201
8785
  "aliases": [],
8202
8786
  "category": "Observation"
8203
8787
  },
8788
+ {
8789
+ "id": "pan-memory-backfill",
8790
+ "path": ["memory", "backfill"],
8791
+ "display": "/pan memory backfill",
8792
+ "description": "Backfill memory observations from historical Claude Code JSONL transcripts",
8793
+ "args": [],
8794
+ "options": [
8795
+ {
8796
+ "flags": "--workspace <id>",
8797
+ "description": "Only backfill sessions resolved to this workspace id",
8798
+ "required": true,
8799
+ "valueHint": "id"
8800
+ },
8801
+ {
8802
+ "flags": "--project <id>",
8803
+ "description": "Only backfill sessions resolved to this project id",
8804
+ "required": true,
8805
+ "valueHint": "id"
8806
+ },
8807
+ {
8808
+ "flags": "--dry-run",
8809
+ "description": "Report matched sessions without extracting or writing anything",
8810
+ "required": false,
8811
+ "valueHint": null
8812
+ },
8813
+ {
8814
+ "flags": "--json",
8815
+ "description": "Output JSON",
8816
+ "required": false,
8817
+ "valueHint": null
8818
+ }
8819
+ ],
8820
+ "aliases": [],
8821
+ "category": "Observation"
8822
+ },
8823
+ {
8824
+ "id": "pan-memory-pin",
8825
+ "path": ["memory", "pin"],
8826
+ "display": "/pan memory pin",
8827
+ "description": "Pin a doc for prompt-time memory injection (path is stored project-relative)",
8828
+ "args": [{
8829
+ "name": "doc-path",
8830
+ "required": true,
8831
+ "variadic": false
8832
+ }],
8833
+ "options": [
8834
+ {
8835
+ "flags": "--project <id>",
8836
+ "description": "Project key to pin at project scope",
8837
+ "required": true,
8838
+ "valueHint": "id"
8839
+ },
8840
+ {
8841
+ "flags": "--workspace <id>",
8842
+ "description": "Workspace id to pin at workspace scope (overrides --project)",
8843
+ "required": true,
8844
+ "valueHint": "id"
8845
+ },
8846
+ {
8847
+ "flags": "--json",
8848
+ "description": "Output JSON",
8849
+ "required": false,
8850
+ "valueHint": null
8851
+ }
8852
+ ],
8853
+ "aliases": [],
8854
+ "category": "Observation"
8855
+ },
8856
+ {
8857
+ "id": "pan-memory-unpin",
8858
+ "path": ["memory", "unpin"],
8859
+ "display": "/pan memory unpin",
8860
+ "description": "Remove a pinned doc",
8861
+ "args": [{
8862
+ "name": "doc-path",
8863
+ "required": true,
8864
+ "variadic": false
8865
+ }],
8866
+ "options": [
8867
+ {
8868
+ "flags": "--project <id>",
8869
+ "description": "Project key the pin was made at project scope",
8870
+ "required": true,
8871
+ "valueHint": "id"
8872
+ },
8873
+ {
8874
+ "flags": "--workspace <id>",
8875
+ "description": "Workspace id the pin was made at workspace scope (overrides --project)",
8876
+ "required": true,
8877
+ "valueHint": "id"
8878
+ },
8879
+ {
8880
+ "flags": "--json",
8881
+ "description": "Output JSON",
8882
+ "required": false,
8883
+ "valueHint": null
8884
+ }
8885
+ ],
8886
+ "aliases": [],
8887
+ "category": "Observation"
8888
+ },
8889
+ {
8890
+ "id": "pan-memory-pins",
8891
+ "path": ["memory", "pins"],
8892
+ "display": "/pan memory pins",
8893
+ "description": "List pinned docs for a project or workspace",
8894
+ "args": [],
8895
+ "options": [
8896
+ {
8897
+ "flags": "--project <id>",
8898
+ "description": "Project key to list project-scoped pins for",
8899
+ "required": true,
8900
+ "valueHint": "id"
8901
+ },
8902
+ {
8903
+ "flags": "--workspace <id>",
8904
+ "description": "Workspace id to list workspace-scoped pins for (overrides --project)",
8905
+ "required": true,
8906
+ "valueHint": "id"
8907
+ },
8908
+ {
8909
+ "flags": "--json",
8910
+ "description": "Output JSON",
8911
+ "required": false,
8912
+ "valueHint": null
8913
+ }
8914
+ ],
8915
+ "aliases": [],
8916
+ "category": "Observation"
8917
+ },
8204
8918
  {
8205
8919
  "id": "pan-memory-config",
8206
8920
  "path": ["memory", "config"],
@@ -8439,7 +9153,12 @@ const COMPOSER_COMMAND_MANIFEST = [
8439
9153
  "required": true,
8440
9154
  "variadic": false
8441
9155
  }],
8442
- "options": [],
9156
+ "options": [{
9157
+ "flags": "--project <key>",
9158
+ "description": "Resolve the order book in another registered project",
9159
+ "required": true,
9160
+ "valueHint": "key"
9161
+ }],
8443
9162
  "aliases": [],
8444
9163
  "category": "Flywheel"
8445
9164
  },
@@ -8449,7 +9168,12 @@ const COMPOSER_COMMAND_MANIFEST = [
8449
9168
  "display": "/pan orders list",
8450
9169
  "description": "List order books",
8451
9170
  "args": [],
8452
- "options": [],
9171
+ "options": [{
9172
+ "flags": "--project <key>",
9173
+ "description": "Resolve the order book in another registered project",
9174
+ "required": true,
9175
+ "valueHint": "key"
9176
+ }],
8453
9177
  "aliases": [],
8454
9178
  "category": "Flywheel"
8455
9179
  },
@@ -8463,7 +9187,12 @@ const COMPOSER_COMMAND_MANIFEST = [
8463
9187
  "required": true,
8464
9188
  "variadic": false
8465
9189
  }],
8466
- "options": [],
9190
+ "options": [{
9191
+ "flags": "--project <key>",
9192
+ "description": "Resolve the order book in another registered project",
9193
+ "required": true,
9194
+ "valueHint": "key"
9195
+ }],
8467
9196
  "aliases": [],
8468
9197
  "category": "Flywheel"
8469
9198
  },
@@ -8499,6 +9228,12 @@ const COMPOSER_COMMAND_MANIFEST = [
8499
9228
  "description": "Require PRD re-verification before pickup",
8500
9229
  "required": false,
8501
9230
  "valueHint": null
9231
+ },
9232
+ {
9233
+ "flags": "--project <key>",
9234
+ "description": "Resolve the order book in another registered project",
9235
+ "required": true,
9236
+ "valueHint": "key"
8502
9237
  }
8503
9238
  ],
8504
9239
  "aliases": [],
@@ -8518,7 +9253,12 @@ const COMPOSER_COMMAND_MANIFEST = [
8518
9253
  "required": true,
8519
9254
  "variadic": false
8520
9255
  }],
8521
- "options": [],
9256
+ "options": [{
9257
+ "flags": "--project <key>",
9258
+ "description": "Resolve the order book in another registered project",
9259
+ "required": true,
9260
+ "valueHint": "key"
9261
+ }],
8522
9262
  "aliases": [],
8523
9263
  "category": "Flywheel"
8524
9264
  },
@@ -8536,16 +9276,44 @@ const COMPOSER_COMMAND_MANIFEST = [
8536
9276
  "required": true,
8537
9277
  "variadic": false
8538
9278
  }],
8539
- "options": [{
8540
- "flags": "--lane <lane>",
8541
- "description": "Target lane: A or B",
9279
+ "options": [
9280
+ {
9281
+ "flags": "--lane <lane>",
9282
+ "description": "Target lane: A or B",
9283
+ "required": true,
9284
+ "valueHint": "lane"
9285
+ },
9286
+ {
9287
+ "flags": "--order <n>",
9288
+ "description": "One-based position in the target lane",
9289
+ "required": true,
9290
+ "valueHint": "n"
9291
+ },
9292
+ {
9293
+ "flags": "--project <key>",
9294
+ "description": "Resolve the order book in another registered project",
9295
+ "required": true,
9296
+ "valueHint": "key"
9297
+ }
9298
+ ],
9299
+ "aliases": [],
9300
+ "category": "Flywheel"
9301
+ },
9302
+ {
9303
+ "id": "pan-orders-queue",
9304
+ "path": ["orders", "queue"],
9305
+ "display": "/pan orders queue",
9306
+ "description": "Mark a draft order book ready for dispatch",
9307
+ "args": [{
9308
+ "name": "id",
8542
9309
  "required": true,
8543
- "valueHint": "lane"
8544
- }, {
8545
- "flags": "--order <n>",
8546
- "description": "One-based position in the target lane",
9310
+ "variadic": false
9311
+ }],
9312
+ "options": [{
9313
+ "flags": "--project <key>",
9314
+ "description": "Resolve the order book in another registered project",
8547
9315
  "required": true,
8548
- "valueHint": "n"
9316
+ "valueHint": "key"
8549
9317
  }],
8550
9318
  "aliases": [],
8551
9319
  "category": "Flywheel"
@@ -8560,10 +9328,59 @@ const COMPOSER_COMMAND_MANIFEST = [
8560
9328
  "required": true,
8561
9329
  "variadic": false
8562
9330
  }],
8563
- "options": [],
9331
+ "options": [{
9332
+ "flags": "--project <key>",
9333
+ "description": "Resolve the order book in another registered project",
9334
+ "required": true,
9335
+ "valueHint": "key"
9336
+ }],
8564
9337
  "aliases": [],
8565
9338
  "category": "Flywheel"
8566
9339
  },
9340
+ {
9341
+ "id": "pan-parked",
9342
+ "path": ["parked"],
9343
+ "display": "/pan parked",
9344
+ "description": "List every issue parked in a stall orbit (stuck flags, gates, failed merges, zombies), oldest first, with why + release condition",
9345
+ "args": [],
9346
+ "options": [{
9347
+ "flags": "--json",
9348
+ "description": "Print the raw parked rows as JSON",
9349
+ "required": false,
9350
+ "valueHint": null
9351
+ }],
9352
+ "aliases": [],
9353
+ "category": "CLI"
9354
+ },
9355
+ {
9356
+ "id": "pan-parked-ack",
9357
+ "path": ["parked", "ack"],
9358
+ "display": "/pan parked ack",
9359
+ "description": "Batch-acknowledge parked rows (default orbit: needs-you), then print the flywheel hand-off",
9360
+ "args": [],
9361
+ "options": [
9362
+ {
9363
+ "flags": "--orbit <orbit>",
9364
+ "description": "Parked orbit to acknowledge",
9365
+ "required": true,
9366
+ "valueHint": "orbit"
9367
+ },
9368
+ {
9369
+ "flags": "--older-than <days>",
9370
+ "description": "Only rows parked at least this many days",
9371
+ "required": true,
9372
+ "valueHint": "days"
9373
+ },
9374
+ {
9375
+ "flags": "--dry-run",
9376
+ "description": "List what would be acknowledged without writing",
9377
+ "required": false,
9378
+ "valueHint": null
9379
+ }
9380
+ ],
9381
+ "aliases": [],
9382
+ "category": "CLI"
9383
+ },
8567
9384
  {
8568
9385
  "id": "pan-docs",
8569
9386
  "path": ["docs"],
@@ -8739,6 +9556,29 @@ const COMPOSER_COMMAND_MANIFEST = [
8739
9556
  "aliases": [],
8740
9557
  "category": "Admin"
8741
9558
  },
9559
+ {
9560
+ "id": "pan-admin-state-backfill-agents",
9561
+ "path": [
9562
+ "admin",
9563
+ "state",
9564
+ "backfill-agents"
9565
+ ],
9566
+ "display": "/pan admin state backfill-agents",
9567
+ "description": "Reconstruct durable agent runtime records from local and retained state",
9568
+ "args": [{
9569
+ "name": "project",
9570
+ "required": false,
9571
+ "variadic": false
9572
+ }],
9573
+ "options": [{
9574
+ "flags": "--dry-run",
9575
+ "description": "Report the records and sessions that would be written",
9576
+ "required": false,
9577
+ "valueHint": null
9578
+ }],
9579
+ "aliases": [],
9580
+ "category": "Admin"
9581
+ },
8742
9582
  {
8743
9583
  "id": "pan-admin-reconcile-labels",
8744
9584
  "path": ["admin", "reconcile-labels"],
@@ -8754,6 +9594,35 @@ const COMPOSER_COMMAND_MANIFEST = [
8754
9594
  "aliases": [],
8755
9595
  "category": "Admin"
8756
9596
  },
9597
+ {
9598
+ "id": "pan-admin-migrate-legacy-agent-dirs",
9599
+ "path": ["admin", "migrate-legacy-agent-dirs"],
9600
+ "display": "/pan admin migrate-legacy-agent-dirs",
9601
+ "description": "Copy pre-rebrand conv-* agent dirs into the configured Overdeck home without overwriting",
9602
+ "args": [],
9603
+ "options": [],
9604
+ "aliases": [],
9605
+ "category": "Admin"
9606
+ },
9607
+ {
9608
+ "id": "pan-admin-seed-uat-fixtures",
9609
+ "path": ["admin", "seed-uat-fixtures"],
9610
+ "display": "/pan admin seed-uat-fixtures",
9611
+ "description": "Seed the obviously-fake FIX-1 issue fixture into a workspace container for UI UAT. Host mode: `pan admin seed-uat-fixtures <issue-id>` seeds and restarts that issue's workspace container from the host. `--local` runs the seed itself against the current OVERDECK_HOME — used by the host wrapper, or manually inside a container.",
9612
+ "args": [{
9613
+ "name": "issue-id",
9614
+ "required": false,
9615
+ "variadic": false
9616
+ }],
9617
+ "options": [{
9618
+ "flags": "--local",
9619
+ "description": "Seed the current (container-local) OVERDECK_HOME directly, without a host wrapper step",
9620
+ "required": false,
9621
+ "valueHint": null
9622
+ }],
9623
+ "aliases": [],
9624
+ "category": "Admin"
9625
+ },
8757
9626
  {
8758
9627
  "id": "pan-admin-cloister",
8759
9628
  "path": ["admin", "cloister"],
@@ -8952,28 +9821,6 @@ const COMPOSER_COMMAND_MANIFEST = [
8952
9821
  "aliases": [],
8953
9822
  "category": "Admin"
8954
9823
  },
8955
- {
8956
- "id": "pan-admin-specialists-discovery-ready",
8957
- "path": [
8958
- "admin",
8959
- "specialists",
8960
- "discovery-ready"
8961
- ],
8962
- "display": "/pan admin specialists discovery-ready",
8963
- "description": "Signal that the review parent finished shared discovery — forks + launches the convoy (PAN-1862)",
8964
- "args": [{
8965
- "name": "type",
8966
- "required": true,
8967
- "variadic": false
8968
- }, {
8969
- "name": "issueId",
8970
- "required": true,
8971
- "variadic": false
8972
- }],
8973
- "options": [],
8974
- "aliases": [],
8975
- "category": "Admin"
8976
- },
8977
9824
  {
8978
9825
  "id": "pan-admin-specialists-done",
8979
9826
  "path": [
@@ -9012,16 +9859,22 @@ const COMPOSER_COMMAND_MANIFEST = [
9012
9859
  "valueHint": "notes"
9013
9860
  },
9014
9861
  {
9015
- "flags": "--run-id <runId>",
9016
- "description": "Review cycle ID used to deduplicate review feedback",
9862
+ "flags": "--uat-status <status>",
9863
+ "description": "Test only: required browser UAT result (passed or failed)",
9017
9864
  "required": true,
9018
- "valueHint": "runId"
9865
+ "valueHint": "status"
9866
+ },
9867
+ {
9868
+ "flags": "--uat-notes <notes>",
9869
+ "description": "Test only: browser UAT evidence or blocking condition",
9870
+ "required": true,
9871
+ "valueHint": "notes"
9019
9872
  },
9020
9873
  {
9021
- "flags": "--reviewers <verdicts>",
9022
- "description": "PAN-1862 (review only): per-reviewer verdicts, e.g. \"security=passed,correctness=blocked\"",
9874
+ "flags": "--run-id <runId>",
9875
+ "description": "Review cycle ID used to deduplicate review feedback",
9023
9876
  "required": true,
9024
- "valueHint": "verdicts"
9877
+ "valueHint": "runId"
9025
9878
  }
9026
9879
  ],
9027
9880
  "aliases": [],
@@ -9386,6 +10239,30 @@ const COMPOSER_COMMAND_MANIFEST = [
9386
10239
  "aliases": [],
9387
10240
  "category": "Admin"
9388
10241
  },
10242
+ {
10243
+ "id": "pan-admin-db-rebuild-workspaces",
10244
+ "path": [
10245
+ "admin",
10246
+ "db",
10247
+ "rebuild-workspaces"
10248
+ ],
10249
+ "display": "/pan admin db rebuild-workspaces",
10250
+ "description": "Rebuild the projects/workspaces tables from projects.yaml, worktree scan, and memory-home identity records (PAN-1990)",
10251
+ "args": [],
10252
+ "options": [{
10253
+ "flags": "--dry-run",
10254
+ "description": "Show what would be created without writing",
10255
+ "required": false,
10256
+ "valueHint": null
10257
+ }, {
10258
+ "flags": "--verbose",
10259
+ "description": "Log each processed workspace",
10260
+ "required": false,
10261
+ "valueHint": null
10262
+ }],
10263
+ "aliases": [],
10264
+ "category": "Admin"
10265
+ },
9389
10266
  {
9390
10267
  "id": "pan-admin-db-gc-agents",
9391
10268
  "path": [
@@ -10079,6 +10956,24 @@ const COMPOSER_COMMAND_MANIFEST = [
10079
10956
  "aliases": ["transcript"],
10080
10957
  "category": "Conversation"
10081
10958
  },
10959
+ {
10960
+ "id": "pan-conversations-move",
10961
+ "path": ["conversations", "move"],
10962
+ "display": "/pan conversations move",
10963
+ "description": "Reassign a conversation to a different project (exact name, then fuzzy title match)",
10964
+ "args": [{
10965
+ "name": "query",
10966
+ "required": true,
10967
+ "variadic": false
10968
+ }, {
10969
+ "name": "projectKey",
10970
+ "required": true,
10971
+ "variadic": false
10972
+ }],
10973
+ "options": [],
10974
+ "aliases": [],
10975
+ "category": "Conversation"
10976
+ },
10082
10977
  {
10083
10978
  "id": "pan-conversations-current",
10084
10979
  "path": ["conversations", "current"],
@@ -10692,7 +11587,7 @@ const COMPOSER_COMMAND_MANIFEST = [
10692
11587
  "id": "pan-flywheel-report",
10693
11588
  "path": ["flywheel", "report"],
10694
11589
  "display": "/pan flywheel report",
10695
- "description": "Finalize the active Flywheel run: write report.md, commit FLYWHEEL-STATE.md changes, and clear the active-run gate. Refuses to run while the orchestrator session is alive (pause or abort first).",
11590
+ "description": "Finalize the active Flywheel run: write report.md, compact over-threshold FLYWHEEL-STATE.md history, commit State changes, and clear the active-run gate. Refuses to run while the orchestrator session is alive (pause or abort first).",
10696
11591
  "args": [],
10697
11592
  "options": [{
10698
11593
  "flags": "--force",
@@ -10803,7 +11698,7 @@ const COMPOSER_COMMAND_MANIFEST = [
10803
11698
  },
10804
11699
  {
10805
11700
  "flags": "--agent-harness <harness>",
10806
- "description": "Agent harness: claude-code, pi, codex, acp, or user",
11701
+ "description": "Agent harness: claude-code, pi, ohmypi, codex, acp, kimi-code, or user",
10807
11702
  "required": true,
10808
11703
  "valueHint": "harness"
10809
11704
  },
@@ -11378,6 +12273,30 @@ const COMPOSER_COMMAND_MANIFEST = [
11378
12273
  "aliases": [],
11379
12274
  "category": "Project"
11380
12275
  },
12276
+ {
12277
+ "id": "pan-project-add-target",
12278
+ "path": ["project", "add-target"],
12279
+ "display": "/pan project add-target",
12280
+ "description": "Add a secondary target path for a registered project",
12281
+ "args": [{
12282
+ "name": "project",
12283
+ "required": true,
12284
+ "variadic": false
12285
+ }],
12286
+ "options": [{
12287
+ "flags": "--path <path>",
12288
+ "description": "Target path to add",
12289
+ "required": true,
12290
+ "valueHint": "path"
12291
+ }, {
12292
+ "flags": "--primary",
12293
+ "description": "Make this the primary target (demotes any existing primary)",
12294
+ "required": false,
12295
+ "valueHint": null
12296
+ }],
12297
+ "aliases": [],
12298
+ "category": "Project"
12299
+ },
11381
12300
  {
11382
12301
  "id": "pan-projects",
11383
12302
  "path": ["projects"],
@@ -11498,6 +12417,30 @@ const COMPOSER_COMMAND_MANIFEST = [
11498
12417
  "aliases": [],
11499
12418
  "category": "Project"
11500
12419
  },
12420
+ {
12421
+ "id": "pan-projects-add-target",
12422
+ "path": ["projects", "add-target"],
12423
+ "display": "/pan projects add-target",
12424
+ "description": "Add a secondary target path for a registered project",
12425
+ "args": [{
12426
+ "name": "project",
12427
+ "required": true,
12428
+ "variadic": false
12429
+ }],
12430
+ "options": [{
12431
+ "flags": "--path <path>",
12432
+ "description": "Target path to add",
12433
+ "required": true,
12434
+ "valueHint": "path"
12435
+ }, {
12436
+ "flags": "--primary",
12437
+ "description": "Make this the primary target (demotes any existing primary)",
12438
+ "required": false,
12439
+ "valueHint": null
12440
+ }],
12441
+ "aliases": [],
12442
+ "category": "Project"
12443
+ },
11501
12444
  {
11502
12445
  "id": "pan-health",
11503
12446
  "path": ["health"],
@@ -11908,6 +12851,106 @@ const COMPOSER_COMMAND_VARIANTS = [
11908
12851
  }
11909
12852
  ];
11910
12853
  //#endregion
11911
- export { ACP_BEHAVIOR, Activity, ActivityDetailedEvent, ActivityEntryEvent, ActivityTtsEvent, ActivityUpdatedEvent, AdmissionState, AgentActivityChangedEvent, AgentChannelReply, AgentChannelReplyEvent, AgentCompletedEvent, AgentContextSaturationChangedEvent, AgentCreatedEvent, AgentCurrentIssueSetEvent, AgentEnrichmentChangedEvent, AgentHealthKind, AgentHealthSnapshot, AgentHealthStatus, AgentHeartbeatDeadEvent, AgentId, AgentMessageReceivedEvent, AgentModelSetEvent, AgentOutput, AgentOutputReceivedEvent, AgentPermissionRequestedEvent, AgentPermissionResolvedEvent, AgentResolution, AgentResolutionChangedEvent, AgentRuntimeSnapshot, AgentSnapshot, AgentStartedEvent, AgentStateRestoredEvent, AgentStatus, AgentStatusChangedEvent, AgentStoppedEvent, AgentThinkingStartedEvent, AgentThinkingStoppedEvent, AgentTurnDiffCompletedEvent, AgentWaitingClearedEvent, AgentWaitingStartedEvent, ArtifactAgentHarness, ArtifactAgentRole, ArtifactCreateResponse, ArtifactDetailResponse, ArtifactHash, ArtifactId, ArtifactLifecycleState, ArtifactListEntry, ArtifactListResponse, ArtifactMetadata, ArtifactPublishResponse, ArtifactSlug, ArtifactStatusResponse, ArtifactUnshareResponse, ArtifactUrls, ArtifactValidationCode, ArtifactValidationFinding, ArtifactValidationResult, BeadsFreshnessChangedEvent, CHANNEL_REPLY_KIND_VALUES, CLAUDE_CODE_BEHAVIOR, CODEX_BEHAVIOR, COMPOSER_COMMAND_INSERT_OVERRIDES, COMPOSER_COMMAND_MANIFEST, COMPOSER_COMMAND_VARIANTS, CONTEXT_LAYER_KINDS, CONTEXT_PREVIEW_HARNESSES, ChannelPermissionRequestSnapshot, ChannelReplyArtifactRef, ChannelReplyKind, ChatMessage, ClaudeChannelPermissionBehavior, CompactBoundary, ContextEditableLayerRecord, ContextHarnessPreviews, ContextLayerDraft, ContextLayerKind, ContextLayerSaveRequest, ContextLayerSaveResponse, ContextLayerTarget, ContextLayersResponse, ContextPreviewDiagnostic, ContextPreviewHarness, ContextPreviewRequest, ContextPreviewResponse, ContextProjectSummary, ContextSyncRequest, ContextSyncResponse, ContextSyncTarget, ContextUsage, ContextWorkspaceSummary, ConversationCompactingChangedEvent, ConversationCostSummary, ConversationCreatedEvent, ConversationEvent, ConversationFilter, ConversationPermissionChangedEvent, ConversationResponse, ConversationTitleChangedEvent, CostEventRecordedEvent, DEFAULT_MAX_MEMORY_OBSERVATIONS_PER_ISSUE, DEFAULT_MAX_TURN_DIFF_SUMMARIES_PER_AGENT, DashboardLifecycleCompletedEvent, DashboardLifecycleFailedEvent, DashboardLifecycleStartedEvent, DashboardSnapshot, DeepWipeRpc, DeployStalenessSnapshot, DiscoveredSessionSnapshot, DomainEvent, EDITORS, EditorIdSchema, EmbedProgressEvent, EmbedProgressSnapshot, EmbedSessionsRpc, EnrichCompleteEvent, EnrichProgressEvent, EnrichProgressSnapshot, EnrichSessionsRpc, EnrichStatsSnapshot, ExtractionProviderConfig, ExtractionProviderTarget, FeatureNode, FeatureRegistryEntry, FeatureRegistryStatus, FlywheelAgent, FlywheelAgentStatus, FlywheelEffort, FlywheelHarness, FlywheelHeadline, FlywheelHttpUrl, FlywheelOrchestrator, FlywheelOrders, FlywheelParkedItem, FlywheelPipelineItem, FlywheelPipelineStatus, FlywheelPipelineVerb, FlywheelRunId, FlywheelScope, FlywheelStats, FlywheelStatsCriteria, FlywheelStatsCriterion, FlywheelStatsCriterionStatus, FlywheelStatsCriterionValue, FlywheelStatsCriterionValueObject, FlywheelStatsTrend, FlywheelStatus, FlywheelSubstrateBug, FlywheelSubstrateBugStatus, FlywheelSuggestion, FlywheelSuggestionAction, FlywheelSuggestionPriority, FlywheelSystemStatus, GetAvailableEditorsRpc, GetConversationCostByWorkspaceRpc, GetConversationCostRpc, GetConversationStatsRpc, GetDiscoveredSessionRpc, GetSessionsFeedFacetsRpc, GetSnapshotRpc, GetWorkspaceDetailRpc, GlobalContextLayerRecord, GlobalContextLayerTarget, HealthReason, HealthState, HostHealthMetrics, HostPlatform, HygieneFinding, HygienePullRequest, HygieneReport, INITIAL_READ_MODEL_STATE, IssueId, IssueStatusChangedEvent, IssueTransitionedEvent, IssuesSnapshotEvent, IssuesUpdatedEvent, LegacySystemHealthSummary, LegacyWebhookRelaySummary, LinearMcpAuthCallbackRelayedEvent, LinearMcpAuthHealthyEvent, LinearMcpAuthNotifiedEvent, LinearMcpAuthRequiredEvent, ListDiscoveredSessionsRpc, ListSessionsFeedRpc, MAX_CHANNEL_REPLY_ARTIFACT_LABEL_LENGTH, MAX_CHANNEL_REPLY_ARTIFACT_REFS, MAX_CHANNEL_REPLY_ARTIFACT_URI_LENGTH, MAX_CHANNEL_REPLY_SUMMARY_LENGTH, MEMBERSHIP_UNAVAILABLE_REASONS, MemoryHealthChangedEvent, MemoryIdentity, MemoryObservation, MemoryObservationCreatedEvent, MemoryResetMarkerCreatedEvent, MemoryRollupTriggeredEvent, MemoryStatus, MemoryStatusPhase, MemoryStatusUpdatedEvent, MemoryTokenUsage, MergeReadyEvent, MergeStatusValue, ModelOrigin, ModelOriginEntry, OHMYPI_BEHAVIOR, OVERDECK_AGENT_PROTOCOL_VERSION, OVERDECK_DASHBOARD_PROTOCOL_VERSION, OpenInEditorInput, OperatorInterventionEvent, OrderBook, OrderBookIndexEntry, OrderBookItem, OrderBookLane, OrderBookPosture, OrderBookSettings, OrderBookStatus, PanRpcError, PanRpcGroup, PendingTurn, PipelineReviewCompletedEvent, PipelineReviewStartedEvent, PipelineStatusChangedEvent, PipelineTestCompletedEvent, PipelineTestStartedEvent, PipelineVerificationFailedEvent, PipelineVerificationStartedEvent, PlanItemStatusChangedEvent, PlanItemsUnblockedEvent, PlanSubitemStatusChangedEvent, PlanningFailedEvent, PlanningStartedEvent, PlanningSyncEvent, ProjectContextLayerRecord, ProjectContextLayerTarget, ProjectSessionTree, ProposedPlan, RagDecision, RagDecisionSource, ReadWorkspaceFileInput, ReadWorkspaceFileResult, ReadWorkspaceFileRpc, ReleaseStatusValue, ReplayEventsRpc, ResetMarker, ResetMarkerScope, ResizeTerminalRpc, ResolveFilePathExistsInput, ResolveFilePathExistsResult, ResolveFilePathExistsRpc, ResourceStats, ResourcesUpdatedEvent, ReviewApprovedEvent, ReviewCoordinatorDiedEvent, ReviewCoordinatorStartedEvent, ReviewCycleEntry, ReviewReviewerCompletedEvent, ReviewReviewerStartedEvent, ReviewSpecialistTimedOutEvent, ReviewStatusChangedEvent, ReviewStatusSnapshot, ReviewStatusValue, ReviewerRoundMetadata, ReviewerRoundSummary, Role, ScanCompleteEvent, ScanConversationsRpc, ScanProgressEvent, ScanProgressSnapshot, ScanResult, ScanStartedEvent, SearchConversationsRpc, SendTerminalInputRpc, SequenceNumber, ServiceHealthSnapshot, ServiceHealthStatus, SessionNode, SessionNodePresence, SessionNodeType, SessionTreeDelta, SessionsFeedFacetsSnapshot, SessionsFeedRowSnapshot, SessionsFeedSource, ShadowInferenceUpdateEvent, ShellOpenInEditorRpc, SpecialistCompletedEvent, SpecialistFailedEvent, SpecialistLifecycle, SpecialistStartedEvent, StartAgentRpc, StartPlanningRpc, SubagentSummary, SubscribeAgentOutputRpc, SubscribeConversationMessagesRpc, SubscribeDomainEventsRpc, SubscribeFlywheelStatusRpc, SubscribeIssueEventsRpc, SubscribeProjectSessionTreeRpc, SubscribeTerminalRpc, SubstrateBugFiledEvent, SystemHealthConsumer, SystemHealthSeverityChangedEvent, SystemHealthSnapshot, SystemHeartbeatEvent, TELEMETRY_CLI_VERBS, TELEMETRY_EVENT_CATALOG, TELEMETRY_EVENT_NAMES, TELEMETRY_PROPERTY_DOMAINS, TerminalCloseRpc, TerminalOpenRpc, TerminalOutput, TerminalResizeRpc, TerminalWriteRpc, TestPassedEvent, TestStatusValue, ThinkingState, TurnDiffFileChange, TurnDiffSummary, UatStatusValue, VerificationStatusValue, WS_METHODS, WaitingReason, WaitingState, WorkCompletedEvent, WorkLogEntry, WorkspaceAbortedEvent, WorkspaceArtifactsResponse, WorkspaceContextLayerRecord, WorkspaceContextLayerTarget, WorkspaceCreatedEvent, WorkspaceDeletedEvent, WorkspaceDestroyedEvent, WorkspaceDetail, WorkspaceWipeStartedEvent, applyEvent, applyEvents, compareIssueIds, decodeFlywheelStats, encodeFlywheelStats, getHarness, getHarnessBehavior, getMaxMemoryObservationsPerIssue, getMaxTurnDiffSummariesPerAgent, getRuntimeBehavior, isChannelReplyKind, isTerminalTurnDiffSummaryStatus, normalizeChannelReplyPayload, omitTurnDiffSummariesForAgent, projectLegacySystemHealthSummary, syncSnapshot, trimMemoryObservations, trimTurnDiffSummaries };
12854
+ //#region src/hook-inventory.ts
12855
+ const HOOK_INVENTORY = [
12856
+ {
12857
+ name: "PreToolUse",
12858
+ wired: true,
12859
+ color: "#00d4ff"
12860
+ },
12861
+ {
12862
+ name: "PostToolUse",
12863
+ wired: true,
12864
+ color: "#39ff14"
12865
+ },
12866
+ {
12867
+ name: "PostToolUseFailure",
12868
+ wired: true,
12869
+ color: "#ff4444"
12870
+ },
12871
+ {
12872
+ name: "Stop",
12873
+ wired: true,
12874
+ color: "#ff2d7c"
12875
+ },
12876
+ {
12877
+ name: "SessionStart",
12878
+ wired: true,
12879
+ color: "#9d4edd"
12880
+ },
12881
+ {
12882
+ name: "Notification",
12883
+ wired: true,
12884
+ color: "#ffb800"
12885
+ },
12886
+ {
12887
+ name: "UserPromptSubmit",
12888
+ wired: true,
12889
+ color: "#00d4ff"
12890
+ },
12891
+ {
12892
+ name: "PreCompact",
12893
+ wired: true,
12894
+ color: "#ff7700"
12895
+ },
12896
+ {
12897
+ name: "PostCompact",
12898
+ wired: true,
12899
+ color: "#ff7700"
12900
+ },
12901
+ {
12902
+ name: "PermissionRequest",
12903
+ wired: true,
12904
+ color: "#ffb800"
12905
+ },
12906
+ {
12907
+ name: "SessionEnd",
12908
+ wired: false
12909
+ },
12910
+ {
12911
+ name: "SubagentStart",
12912
+ wired: false
12913
+ },
12914
+ {
12915
+ name: "SubagentStop",
12916
+ wired: false
12917
+ },
12918
+ {
12919
+ name: "StopFailure",
12920
+ wired: false
12921
+ },
12922
+ {
12923
+ name: "PermissionDenied",
12924
+ wired: false
12925
+ },
12926
+ {
12927
+ name: "TaskCreated",
12928
+ wired: false
12929
+ },
12930
+ {
12931
+ name: "TaskCompleted",
12932
+ wired: false
12933
+ },
12934
+ {
12935
+ name: "TeammateIdle",
12936
+ wired: false
12937
+ },
12938
+ {
12939
+ name: "ConfigChange",
12940
+ wired: false
12941
+ },
12942
+ {
12943
+ name: "WorktreeCreate",
12944
+ wired: false
12945
+ },
12946
+ {
12947
+ name: "InstructionsLoaded",
12948
+ wired: false
12949
+ }
12950
+ ];
12951
+ const WIRED_HOOK_INVENTORY = HOOK_INVENTORY.filter((hook) => hook.wired);
12952
+ const WIRED_HOOK_NAMES = WIRED_HOOK_INVENTORY.map((hook) => hook.name);
12953
+ //#endregion
12954
+ export { ACP_BEHAVIOR, Activity, ActivityDetailedEvent, ActivityEntryEvent, ActivityTtsEvent, ActivityUpdatedEvent, AdmissionState, AgentActivityChangedEvent, AgentChannelReply, AgentChannelReplyEvent, AgentCompletedEvent, AgentContextSaturationChangedEvent, AgentCreatedEvent, AgentCurrentIssueSetEvent, AgentEnrichmentChangedEvent, AgentHealthKind, AgentHealthSnapshot, AgentHealthStatus, AgentHeartbeatDeadEvent, AgentHookFiredEvent, AgentId, AgentMessageReceivedEvent, AgentModelSetEvent, AgentOutput, AgentOutputReceivedEvent, AgentPermissionRequestedEvent, AgentPermissionResolvedEvent, AgentResolution, AgentResolutionChangedEvent, AgentRuntimeSnapshot, AgentSnapshot, AgentStartedEvent, AgentStateRestoredEvent, AgentStatus, AgentStatusChangedEvent, AgentStoppedEvent, AgentThinkingStartedEvent, AgentThinkingStoppedEvent, AgentTurnDiffCompletedEvent, AgentWaitingClearedEvent, AgentWaitingStartedEvent, ArtifactAgentHarness, ArtifactAgentRole, ArtifactCreateResponse, ArtifactDetailResponse, ArtifactHash, ArtifactId, ArtifactLifecycleState, ArtifactListEntry, ArtifactListResponse, ArtifactMetadata, ArtifactPublishResponse, ArtifactSlug, ArtifactStatusResponse, ArtifactUnshareResponse, ArtifactUrls, ArtifactValidationCode, ArtifactValidationFinding, ArtifactValidationResult, BeadsFreshnessChangedEvent, CHANNEL_REPLY_KIND_VALUES, CLAUDE_CODE_BEHAVIOR, CODEX_BEHAVIOR, COMPOSER_COMMAND_INSERT_OVERRIDES, COMPOSER_COMMAND_MANIFEST, COMPOSER_COMMAND_VARIANTS, CONTEXT_LAYER_KINDS, CONTEXT_PREVIEW_HARNESSES, ChannelPermissionRequestSnapshot, ChannelReplyArtifactRef, ChannelReplyKind, ChatMessage, ClaudeChannelPermissionBehavior, CompactBoundary, ContextEditableLayerRecord, ContextHarnessPreviews, ContextLayerDraft, ContextLayerKind, ContextLayerSaveRequest, ContextLayerSaveResponse, ContextLayerTarget, ContextLayersResponse, ContextPreviewDiagnostic, ContextPreviewHarness, ContextPreviewRequest, ContextPreviewResponse, ContextProjectSummary, ContextSyncRequest, ContextSyncResponse, ContextSyncTarget, ContextUsage, ContextWorkspaceSummary, ConversationCompactingChangedEvent, ConversationCostSummary, ConversationCreatedEvent, ConversationEvent, ConversationFilter, ConversationMovedEvent, ConversationPermissionChangedEvent, ConversationResponse, ConversationTitleChangedEvent, CostEventRecordedEvent, DEFAULT_MAX_MEMORY_OBSERVATIONS_PER_ISSUE, DEFAULT_MAX_TURN_DIFF_SUMMARIES_PER_AGENT, DashboardLifecycleCompletedEvent, DashboardLifecycleFailedEvent, DashboardLifecycleStartedEvent, DashboardSnapshot, DeepWipeRpc, DeployStalenessSnapshot, DiscoveredSessionSnapshot, DomainEvent, EDITORS, EditorIdSchema, EmbedProgressEvent, EmbedProgressSnapshot, EmbedSessionsRpc, EnrichCompleteEvent, EnrichProgressEvent, EnrichProgressSnapshot, EnrichSessionsRpc, EnrichStatsSnapshot, ExtractionProviderConfig, ExtractionProviderTarget, FeatureNode, FeatureRegistryEntry, FeatureRegistryStatus, FlywheelAgent, FlywheelAgentStatus, FlywheelEffort, FlywheelHarness, FlywheelHeadline, FlywheelHttpUrl, FlywheelOrchestrator, FlywheelOrders, FlywheelParkedItem, FlywheelPipelineItem, FlywheelPipelineStatus, FlywheelPipelineVerb, FlywheelRunId, FlywheelScope, FlywheelStats, FlywheelStatsCriteria, FlywheelStatsCriterion, FlywheelStatsCriterionStatus, FlywheelStatsCriterionValue, FlywheelStatsCriterionValueObject, FlywheelStatsTrend, FlywheelStatus, FlywheelSubstrateBug, FlywheelSubstrateBugStatus, FlywheelSuggestion, FlywheelSuggestionAction, FlywheelSuggestionPriority, FlywheelSystemStatus, GetAvailableEditorsRpc, GetConversationCostByWorkspaceRpc, GetConversationCostRpc, GetConversationStatsRpc, GetDiscoveredSessionRpc, GetSessionsFeedFacetsRpc, GetSnapshotRpc, GetWorkspaceDetailRpc, GlobalContextLayerRecord, GlobalContextLayerTarget, HOOK_INVENTORY, HealthReason, HealthState, HostHealthMetrics, HostPlatform, HygieneFinding, HygienePullRequest, HygieneReport, INITIAL_READ_MODEL_STATE, IssueId, IssueStatusChangedEvent, IssueTransitionedEvent, IssuesSnapshotEvent, IssuesUpdatedEvent, KIMI_CODE_BEHAVIOR, KNOWN_HARNESSES, LegacySystemHealthSummary, LegacyWebhookRelaySummary, LinearMcpAuthCallbackRelayedEvent, LinearMcpAuthHealthyEvent, LinearMcpAuthNotifiedEvent, LinearMcpAuthRequiredEvent, ListDiscoveredSessionsRpc, ListSessionsFeedRpc, MAX_CHANNEL_REPLY_ARTIFACT_LABEL_LENGTH, MAX_CHANNEL_REPLY_ARTIFACT_REFS, MAX_CHANNEL_REPLY_ARTIFACT_URI_LENGTH, MAX_CHANNEL_REPLY_SUMMARY_LENGTH, MEMBERSHIP_UNAVAILABLE_REASONS, MemoryAgentRole, MemoryHealthChangedEvent, MemoryIdentity, MemoryObservation, MemoryObservationCreatedEvent, MemoryResetMarkerCreatedEvent, MemoryRollupTriggeredEvent, MemoryStatus, MemoryStatusPhase, MemoryStatusUpdatedEvent, MemoryTokenUsage, MergeReadyEvent, MergeStatusValue, ModelOrigin, ModelOriginEntry, OHMYPI_BEHAVIOR, OVERDECK_AGENT_PROTOCOL_VERSION, OVERDECK_DASHBOARD_PROTOCOL_VERSION, OpenInEditorInput, OperatorInterventionEvent, OrderBook, OrderBookIndexEntry, OrderBookItem, OrderBookLane, OrderBookPosture, OrderBookSettings, OrderBookStatus, PanRpcError, PanRpcGroup, PendingTurn, PipelineReviewCompletedEvent, PipelineReviewStartedEvent, PipelineStatusChangedEvent, PipelineTestCompletedEvent, PipelineTestStartedEvent, PipelineVerificationFailedEvent, PipelineVerificationStartedEvent, PlanItemStatusChangedEvent, PlanItemsUnblockedEvent, PlanSubitemStatusChangedEvent, PlanningFailedEvent, PlanningStartedEvent, PlanningSyncEvent, ProjectContextLayerRecord, ProjectContextLayerTarget, ProjectSessionTree, ProposedPlan, RagDecision, RagDecisionSource, ReadFileAtPathInput, ReadFileAtPathResult, ReadFileAtPathRpc, ReadWorkspaceFileInput, ReadWorkspaceFileResult, ReadWorkspaceFileRpc, ReleaseStatusValue, ReplayEventsRpc, ResetMarker, ResetMarkerScope, ResizeTerminalRpc, ResolveFilePathExistsInput, ResolveFilePathExistsResult, ResolveFilePathExistsRpc, ResourceStats, ResourcesUpdatedEvent, ReviewApprovedEvent, ReviewCoordinatorDiedEvent, ReviewCoordinatorStartedEvent, ReviewCycleEntry, ReviewReviewerCompletedEvent, ReviewReviewerStartedEvent, ReviewSpecialistTimedOutEvent, ReviewStatusChangedEvent, ReviewStatusSnapshot, ReviewStatusValue, ReviewVerdictDispatchedEvent, ReviewVerdictRejectedEvent, ReviewVerdictRestoreBlockedEvent, ReviewerRoundMetadata, ReviewerRoundSummary, Role, ScanCompleteEvent, ScanConversationsRpc, ScanProgressEvent, ScanProgressSnapshot, ScanResult, ScanStartedEvent, SearchConversationsRpc, SendTerminalInputRpc, SequenceNumber, ServiceHealthSnapshot, ServiceHealthStatus, SessionNode, SessionNodePresence, SessionNodeType, SessionTreeDelta, SessionsFeedFacetsSnapshot, SessionsFeedRowSnapshot, SessionsFeedSource, ShadowInferenceUpdateEvent, ShellOpenInEditorRpc, SpecialistCompletedEvent, SpecialistFailedEvent, SpecialistLifecycle, SpecialistStartedEvent, StartAgentRpc, StartPlanningRpc, SubagentSummary, SubscribeAgentOutputRpc, SubscribeConversationMessagesRpc, SubscribeDomainEventsRpc, SubscribeFlywheelStatusRpc, SubscribeIssueEventsRpc, SubscribeProjectSessionTreeRpc, SubscribeTerminalRpc, SubstrateBugFiledEvent, SweepEscalatedEvent, SweepRecommendationEvent, SweepScanEvent, SystemHealthConsumer, SystemHealthSeverityChangedEvent, SystemHealthSnapshot, SystemHeartbeatEvent, TELEMETRY_CLI_VERBS, TELEMETRY_EVENT_CATALOG, TELEMETRY_EVENT_NAMES, TELEMETRY_PROPERTY_DOMAINS, TerminalCloseRpc, TerminalOpenRpc, TerminalOutput, TerminalResizeRpc, TerminalWriteRpc, TestPassedEvent, TestStatusValue, ThinkingState, TurnDiffFileChange, TurnDiffSummary, UatStatusValue, VerificationStatusValue, WIRED_HOOK_INVENTORY, WIRED_HOOK_NAMES, WS_METHODS, WaitingReason, WaitingState, WorkCompletedEvent, WorkLogEntry, WorkspaceAbortedEvent, WorkspaceArtifactsResponse, WorkspaceContextLayerRecord, WorkspaceContextLayerTarget, WorkspaceCreatedEvent, WorkspaceDeletedEvent, WorkspaceDestroyedEvent, WorkspaceDetail, WorkspaceWipeStartedEvent, WriteFileAtPathInput, WriteFileAtPathResult, WriteFileAtPathRpc, applyEvent, applyEvents, compareIssueIds, decodeFlywheelStats, encodeFlywheelStats, getHarness, getHarnessBehavior, getMaxMemoryObservationsPerIssue, getMaxTurnDiffSummariesPerAgent, getRuntimeBehavior, isChannelReplyKind, isTerminalTurnDiffSummaryStatus, normalizeChannelReplyPayload, omitTurnDiffSummariesForAgent, projectLegacySystemHealthSummary, syncSnapshot, trimMemoryObservations, trimTurnDiffSummaries };
11912
12955
 
11913
12956
  //# sourceMappingURL=index.mjs.map