@ai-matrx/desktop-protocol 0.17.10 → 0.17.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // src/schema/primitives.ts
2
2
  import { z } from "zod";
3
3
  var PROTOCOL_MAJOR = 1;
4
- var PROTOCOL_MINOR = 14;
4
+ var PROTOCOL_MINOR = 16;
5
5
  var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
6
6
  var ProtocolVersion = z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
7
7
  var RequestId = z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
@@ -940,6 +940,7 @@ var ChatAppProject = z12.strictObject({
940
940
  id: z12.string().min(1).max(200),
941
941
  name: z12.string().max(200)
942
942
  });
943
+ var ChatTitleSource = z12.enum(["app", "app-remembered", "custom-title", "ai-title", "agent-name", "summary", "first-prompt", "last-prompt"]);
943
944
  var ChatRow = z12.strictObject({
944
945
  id: ChatId,
945
946
  /** The short id people see (the listing's first 8 characters). */
@@ -976,10 +977,12 @@ var ChatRow = z12.strictObject({
976
977
  * `title` is what to show (`title_override` when set, else this).
977
978
  */
978
979
  original_title: z12.string().max(1e3).optional(),
979
- /** 1.14: where `original_title` came from (app record, remembered, custom-title, ai-title, agent-name, summary, first-prompt, last-prompt). */
980
- title_source: z12.string().min(1).max(40).optional(),
980
+ /** 1.14: where `original_title` came from (the one rule's sources, strongest first; 1.15: a closed set). */
981
+ title_source: ChatTitleSource.optional(),
981
982
  /** 1.14: the person's rename inside Matrx (Coding Sessions), applied once by the row builder; absent = none. */
982
- title_override: z12.string().min(1).max(300).optional()
983
+ title_override: z12.string().min(1).max(300).optional(),
984
+ /** 1.15: the app itself archived it (hidden_in says where and why, in words for people; this is the typed fact). */
985
+ archived: z12.boolean().optional()
983
986
  });
984
987
  var ChatFamily = z12.strictObject({
985
988
  id: ChatId,
@@ -1658,121 +1661,207 @@ var ResourcesSnapshotResult = z23.strictObject({
1658
1661
  uptime_seconds: nonNegInt
1659
1662
  });
1660
1663
 
1661
- // src/schema/audio.ts
1664
+ // src/schema/stack.ts
1662
1665
  import { z as z24 } from "zod";
1663
- var AudioDevice = z24.strictObject({
1666
+ var StackServerName = z24.string().regex(/^[a-z0-9_-]{1,64}$/);
1667
+ var StackTone = z24.enum(["good", "wait", "bad", "off"]);
1668
+ var StackServer = z24.strictObject({
1669
+ name: StackServerName,
1670
+ /** One word: Healthy, Starting, Unhealthy, Restarting, Stopping, Waiting, Stopped, Crashed, Off. */
1671
+ label: z24.string().max(32),
1672
+ tone: StackTone,
1673
+ /** What is going on, in one or two plain sentences. */
1674
+ sentence: z24.string().max(2e3),
1675
+ /** The config's own description of the server. */
1676
+ description: z24.string().max(512),
1677
+ /** Where the server answers, when its description names an address. */
1678
+ open_url: z24.string().max(2048).nullable(),
1679
+ log_file: z24.string().max(4096),
1680
+ /** When its log file was last written. */
1681
+ last_output_at_ms: epochMs.nullable(),
1682
+ started_at_ms: epochMs.nullable(),
1683
+ restarts: nonNegInt,
1684
+ exit_code: z24.int().nullable(),
1685
+ pid: z24.int().nullable()
1686
+ });
1687
+ var StackEvent = z24.strictObject({
1688
+ at_ms: epochMs,
1689
+ /** A server name, or "stack" for the stack as a whole. */
1690
+ server: z24.string().max(64),
1691
+ /** started · stopped · healthy · unhealthy · crashed · exited · restarting · stopping · action · action-done · action-failed · setup · error */
1692
+ kind: z24.string().max(32),
1693
+ text: z24.string().max(4e3)
1694
+ });
1695
+ var StackStateParams = z24.strictObject({});
1696
+ var StackStateResult = z24.strictObject({
1697
+ /** The stack's config file, when found. */
1698
+ config_path: z24.string().max(4096).nullable(),
1699
+ /** Why the stack cannot be run from here (no config, no process-compose), else null. */
1700
+ problem: z24.string().max(1e3).nullable(),
1701
+ stack_up: z24.boolean(),
1702
+ stack_started_at_ms: epochMs.nullable(),
1703
+ servers: z24.array(StackServer).max(64),
1704
+ /** One line about the one-shot setup steps ("Docker Desktop: running."), or null. */
1705
+ setup_note: z24.string().max(500).nullable(),
1706
+ /** Start everything / Stop everything in flight. */
1707
+ pending: z24.strictObject({ verb: z24.enum(["start", "stop"]), label: z24.string().max(64), since_ms: epochMs }).nullable(),
1708
+ /** The newest entries last. */
1709
+ events: z24.array(StackEvent).max(300)
1710
+ });
1711
+ var StackStartParams = z24.strictObject({});
1712
+ var StackStopParams = z24.strictObject({});
1713
+ var StackRunResult = z24.strictObject({ accepted: z24.boolean() });
1714
+ var StackServerActionParams = z24.strictObject({
1715
+ name: StackServerName,
1716
+ verb: z24.enum(["start", "stop", "restart"])
1717
+ });
1718
+ var StackServerActionResult = z24.strictObject({ message: z24.string().max(1e3) });
1719
+ var StackLogsParams = z24.strictObject({
1720
+ name: StackServerName,
1721
+ /** Without `offset`: the last this-many complete lines. With it: new lines after it, at most this many. */
1722
+ lines: z24.int().min(1).max(2e5).default(2e3),
1723
+ /** Byte offset the last read ended at: answer only what was written after it (follow). */
1724
+ offset: nonNegInt.optional(),
1725
+ /** A "Clear" point: the lines written after this byte offset (no `offset`). */
1726
+ since: nonNegInt.optional(),
1727
+ /** With `offset`: wait up to this long for a new line when none is waiting (0 answers at once). */
1728
+ wait_ms: z24.int().min(0).max(25e3).default(0)
1729
+ });
1730
+ var StackLogsResult = z24.strictObject({
1731
+ /** Complete lines, colour codes removed. */
1732
+ lines: z24.array(z24.string().max(65536)).max(2e5),
1733
+ /** Where these lines end: pass it back as `offset` to follow. */
1734
+ offset: nonNegInt,
1735
+ /** False when `since` no longer exists (the log rotated): the lines are the plain tail instead. */
1736
+ since_valid: z24.boolean(),
1737
+ /** The log was rotated or truncated since `offset`: these lines start the file again. */
1738
+ reset: z24.boolean(),
1739
+ log_file: z24.string().max(4096)
1740
+ });
1741
+ var StackErrorsParams = z24.strictObject({
1742
+ window_minutes: z24.int().min(1).max(1440).default(60)
1743
+ });
1744
+ var StackErrorsResult = z24.strictObject({
1745
+ /** Per server: a heading line ("=== aidream — errors in the last 60 minutes (<file>) ===") and each error with the 10 lines after it. */
1746
+ sections: z24.array(z24.strictObject({ name: StackServerName, heading: z24.string().max(4096), lines: z24.array(z24.string().max(65536)).max(5e3) })).max(64),
1747
+ window_minutes: z24.int().min(1).max(1440)
1748
+ });
1749
+
1750
+ // src/schema/audio.ts
1751
+ import { z as z25 } from "zod";
1752
+ var AudioDevice = z25.strictObject({
1664
1753
  /** The OS's name for it, as audio.record takes it. */
1665
- id: z24.string().min(1).max(256),
1666
- name: z24.string().max(256),
1667
- default: z24.boolean()
1754
+ id: z25.string().min(1).max(256),
1755
+ name: z25.string().max(256),
1756
+ default: z25.boolean()
1668
1757
  });
1669
- var AudioDevicesParams = z24.strictObject({});
1670
- var AudioDevicesResult = z24.strictObject({
1671
- inputs: z24.array(AudioDevice).max(64),
1672
- outputs: z24.array(AudioDevice).max(64)
1758
+ var AudioDevicesParams = z25.strictObject({});
1759
+ var AudioDevicesResult = z25.strictObject({
1760
+ inputs: z25.array(AudioDevice).max(64),
1761
+ outputs: z25.array(AudioDevice).max(64)
1673
1762
  });
1674
- var AudioRecordParams = z24.strictObject({
1675
- seconds: z24.number().min(0.5).max(600),
1763
+ var AudioRecordParams = z25.strictObject({
1764
+ seconds: z25.number().min(0.5).max(600),
1676
1765
  /** The microphone (from audio.devices); the default input when absent. */
1677
- device_id: z24.string().min(1).max(256).optional(),
1766
+ device_id: z25.string().min(1).max(256).optional(),
1678
1767
  /** Where the WAV file goes; a new file in the temp folder when absent. */
1679
1768
  path: AbsPath.optional()
1680
1769
  });
1681
- var AudioRecordResult = z24.strictObject({
1770
+ var AudioRecordResult = z25.strictObject({
1682
1771
  path: AbsPath,
1683
- seconds: z24.number().min(0),
1772
+ seconds: z25.number().min(0),
1684
1773
  bytes: nonNegInt,
1685
1774
  /** Loudest sample, 0–1: 0 means the device gave silence. */
1686
- peak: z24.number().min(0).max(1)
1775
+ peak: z25.number().min(0).max(1)
1687
1776
  });
1688
- var AudioPlayParams = z24.strictObject({ path: AbsPath });
1689
- var AudioPlayResult = z24.strictObject({ path: AbsPath, seconds: z24.number().min(0) });
1777
+ var AudioPlayParams = z25.strictObject({ path: AbsPath });
1778
+ var AudioPlayResult = z25.strictObject({ path: AbsPath, seconds: z25.number().min(0) });
1690
1779
 
1691
1780
  // src/schema/fs-watch.ts
1692
- import { z as z25 } from "zod";
1693
- var FsWatchId = z25.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
1694
- var FsWatchStartParams = z25.strictObject({
1781
+ import { z as z26 } from "zod";
1782
+ var FsWatchId = z26.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
1783
+ var FsWatchStartParams = z26.strictObject({
1695
1784
  path: AbsPath,
1696
- recursive: z25.boolean().default(true),
1785
+ recursive: z26.boolean().default(true),
1697
1786
  /** Globs relative to `path` whose changes are not reported (".git/**", "node_modules/**"). */
1698
- ignore: z25.array(z25.string().max(256)).max(64).default([])
1787
+ ignore: z26.array(z26.string().max(256)).max(64).default([])
1699
1788
  });
1700
- var FsWatchStartResult = z25.strictObject({
1789
+ var FsWatchStartResult = z26.strictObject({
1701
1790
  watch_id: FsWatchId,
1702
1791
  path: AbsPath,
1703
1792
  /** The watch ends by itself if nobody reads it for 30 minutes. */
1704
1793
  expires_at_ms: epochMs
1705
1794
  });
1706
- var FsWatchEventsParams = z25.strictObject({
1795
+ var FsWatchEventsParams = z26.strictObject({
1707
1796
  watch_id: FsWatchId,
1708
1797
  /** Wait up to this long for a first change when none is waiting (0 answers at once). */
1709
- wait_ms: z25.int().min(0).max(25e3).default(0)
1798
+ wait_ms: z26.int().min(0).max(25e3).default(0)
1710
1799
  });
1711
- var FsWatchEventsResult = z25.strictObject({
1800
+ var FsWatchEventsResult = z26.strictObject({
1712
1801
  /** What changed since the last read, oldest first; re-checked against the disk when read. */
1713
- changes: z25.array(FsChange).max(1e3),
1802
+ changes: z26.array(FsChange).max(1e3),
1714
1803
  /** Changes were dropped (more than 1000 waited): list the folder again. */
1715
- overflow: z25.boolean(),
1804
+ overflow: z26.boolean(),
1716
1805
  expires_at_ms: epochMs
1717
1806
  });
1718
- var FsWatchStopParams = z25.strictObject({ watch_id: FsWatchId });
1719
- var FsWatchStopResult = z25.strictObject({ watch_id: FsWatchId });
1807
+ var FsWatchStopParams = z26.strictObject({ watch_id: FsWatchId });
1808
+ var FsWatchStopResult = z26.strictObject({ watch_id: FsWatchId });
1720
1809
 
1721
1810
  // src/schema/exec-job.ts
1722
- import { z as z26 } from "zod";
1723
- var ExecJobId = z26.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
1724
- var ExecJobStartParams = z26.strictObject({
1725
- command: z26.string().min(1).max(131072),
1811
+ import { z as z27 } from "zod";
1812
+ var ExecJobId = z27.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
1813
+ var ExecJobStartParams = z27.strictObject({
1814
+ command: z27.string().min(1).max(131072),
1726
1815
  /** The folder it runs in; the home folder when absent. */
1727
1816
  cwd: AbsPath.optional(),
1728
- env: z26.record(z26.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(128), z26.string().max(32768)).optional()
1817
+ env: z27.record(z27.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(128), z27.string().max(32768)).optional()
1729
1818
  });
1730
- var ExecJobStartResult = z26.strictObject({ job_id: ExecJobId, pid: z26.int().min(1), cwd: AbsPath });
1731
- var ExecJobOutputParams = z26.strictObject({
1819
+ var ExecJobStartResult = z27.strictObject({ job_id: ExecJobId, pid: z27.int().min(1), cwd: AbsPath });
1820
+ var ExecJobOutputParams = z27.strictObject({
1732
1821
  job_id: ExecJobId,
1733
1822
  /** Byte offset into the job's output to read from (next_offset of the last read; 0 = the start). */
1734
1823
  offset: nonNegInt.default(0),
1735
1824
  /** Wait up to this long for new output or the exit when none is waiting (0 answers at once). */
1736
- wait_ms: z26.int().min(0).max(25e3).default(0),
1737
- max_bytes: z26.int().min(1024).max(1048576).default(65536)
1825
+ wait_ms: z27.int().min(0).max(25e3).default(0),
1826
+ max_bytes: z27.int().min(1024).max(1048576).default(65536)
1738
1827
  });
1739
- var ExecJobOutputResult = z26.strictObject({
1828
+ var ExecJobOutputResult = z27.strictObject({
1740
1829
  /** stdout and stderr interleaved as they arrived (UTF-8). */
1741
- output: z26.string(),
1830
+ output: z27.string(),
1742
1831
  next_offset: nonNegInt,
1743
1832
  /** Bytes before `offset` that are gone (the job keeps its last 4 MiB). */
1744
1833
  dropped_bytes: nonNegInt,
1745
- running: z26.boolean(),
1746
- exit_code: z26.int().nullable()
1834
+ running: z27.boolean(),
1835
+ exit_code: z27.int().nullable()
1747
1836
  });
1748
- var ExecJobStopParams = z26.strictObject({
1837
+ var ExecJobStopParams = z27.strictObject({
1749
1838
  job_id: ExecJobId,
1750
1839
  /** End it at once (SIGKILL; on Windows the whole tree with /F) instead of asking it to quit. */
1751
- force: z26.boolean().default(false)
1840
+ force: z27.boolean().default(false)
1752
1841
  });
1753
- var ExecJobStopResult = z26.strictObject({ job_id: ExecJobId, exited: z26.boolean(), exit_code: z26.int().nullable() });
1754
- var ExecJobInfo = z26.strictObject({
1842
+ var ExecJobStopResult = z27.strictObject({ job_id: ExecJobId, exited: z27.boolean(), exit_code: z27.int().nullable() });
1843
+ var ExecJobInfo = z27.strictObject({
1755
1844
  job_id: ExecJobId,
1756
- command: z26.string().max(1024),
1757
- pid: z26.int().min(1),
1845
+ command: z27.string().max(1024),
1846
+ pid: z27.int().min(1),
1758
1847
  cwd: AbsPath,
1759
- running: z26.boolean(),
1760
- exit_code: z26.int().nullable(),
1848
+ running: z27.boolean(),
1849
+ exit_code: z27.int().nullable(),
1761
1850
  started_at_ms: epochMs,
1762
1851
  output_bytes: nonNegInt
1763
1852
  });
1764
- var ExecJobListParams = z26.strictObject({});
1765
- var ExecJobListResult = z26.strictObject({ jobs: z26.array(ExecJobInfo).max(64) });
1853
+ var ExecJobListParams = z27.strictObject({});
1854
+ var ExecJobListResult = z27.strictObject({ jobs: z27.array(ExecJobInfo).max(64) });
1766
1855
 
1767
1856
  // src/schema/coding.ts
1768
- import { z as z27 } from "zod";
1769
- var CodingServiceCredentials = z27.strictObject({
1770
- access_token: z27.string().min(16).max(16384),
1771
- user_id: z27.string().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),
1857
+ import { z as z28 } from "zod";
1858
+ var CodingServiceCredentials = z28.strictObject({
1859
+ access_token: z28.string().min(16).max(16384),
1860
+ user_id: z28.string().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),
1772
1861
  /** The AI Matrx server this app talks to (production, or a local server on the nightly copy). */
1773
- server_url: z27.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
1862
+ server_url: z28.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
1774
1863
  });
1775
- var CodingHistoryBlocked = z27.enum([
1864
+ var CodingHistoryBlocked = z28.enum([
1776
1865
  "signed_out",
1777
1866
  "offline",
1778
1867
  "organization_required",
@@ -1780,11 +1869,11 @@ var CodingHistoryBlocked = z27.enum([
1780
1869
  "cloud_list_unavailable",
1781
1870
  "history_too_large"
1782
1871
  ]);
1783
- var CodingHistoryFailure = z27.strictObject({
1784
- session_id: z27.string().max(64),
1785
- reason: z27.string().max(300)
1872
+ var CodingHistoryFailure = z28.strictObject({
1873
+ session_id: z28.string().max(64),
1874
+ reason: z28.string().max(300)
1786
1875
  });
1787
- var CodingHistoryRun = z27.strictObject({
1876
+ var CodingHistoryRun = z28.strictObject({
1788
1877
  /** Claude Code sessions found on this computer. */
1789
1878
  local_sessions: nonNegInt,
1790
1879
  /** Of those, already complete in AI Matrx. */
@@ -1799,39 +1888,39 @@ var CodingHistoryRun = z27.strictObject({
1799
1888
  /** Changed while being read; a later run takes them. */
1800
1889
  changed: nonNegInt,
1801
1890
  failed: nonNegInt,
1802
- failures: z27.array(CodingHistoryFailure).max(20),
1891
+ failures: z28.array(CodingHistoryFailure).max(20),
1803
1892
  /** Candidates not reached yet. */
1804
1893
  remaining: nonNegInt,
1805
1894
  /** The one line a person reads, e.g. "Imported 12 of 14 sessions. 140 already in AI Matrx." */
1806
- summary: z27.string().max(400)
1895
+ summary: z28.string().max(400)
1807
1896
  });
1808
- var CodingHistoryStep = z27.strictObject({
1897
+ var CodingHistoryStep = z28.strictObject({
1809
1898
  /** Null when the run could not start (blocked before a plan existed). */
1810
- plan_id: z27.string().regex(/^[0-9a-f]{32}$/).nullable(),
1811
- finished: z27.boolean(),
1899
+ plan_id: z28.string().regex(/^[0-9a-f]{32}$/).nullable(),
1900
+ finished: z28.boolean(),
1812
1901
  blocked: CodingHistoryBlocked.nullable(),
1813
1902
  run: CodingHistoryRun
1814
1903
  });
1815
- var CodingPlanMissingParams = z27.strictObject({ credentials: CodingServiceCredentials.nullable() });
1816
- var CodingImportNextParams = z27.strictObject({
1817
- plan_id: z27.string().regex(/^[0-9a-f]{32}$/),
1904
+ var CodingPlanMissingParams = z28.strictObject({ credentials: CodingServiceCredentials.nullable() });
1905
+ var CodingImportNextParams = z28.strictObject({
1906
+ plan_id: z28.string().regex(/^[0-9a-f]{32}$/),
1818
1907
  credentials: CodingServiceCredentials.nullable()
1819
1908
  });
1820
- var CodingServiceProgress = z27.strictObject({
1821
- phase: z27.enum(["checking", "importing"]),
1909
+ var CodingServiceProgress = z28.strictObject({
1910
+ phase: z28.enum(["checking", "importing"]),
1822
1911
  done: nonNegInt,
1823
1912
  total: nonNegInt
1824
1913
  });
1825
- var CodingHistoryImportMissingParams = z27.strictObject({});
1826
- var CodingHistoryImportMissingResult = z27.strictObject({
1827
- state: z27.enum(["done", "blocked", "cancelled"]),
1914
+ var CodingHistoryImportMissingParams = z28.strictObject({});
1915
+ var CodingHistoryImportMissingResult = z28.strictObject({
1916
+ state: z28.enum(["done", "blocked", "cancelled"]),
1828
1917
  blocked: CodingHistoryBlocked.nullable(),
1829
1918
  run: CodingHistoryRun,
1830
1919
  elapsed_ms: nonNegInt
1831
1920
  });
1832
- var CodingHistoryProgressEvent = z27.strictObject({
1921
+ var CodingHistoryProgressEvent = z28.strictObject({
1833
1922
  request_id: RequestId,
1834
- phase: z27.enum(["checking", "importing"]),
1923
+ phase: z28.enum(["checking", "importing"]),
1835
1924
  /** Sessions settled so far, of `total` candidates (0 of 0 while checking). */
1836
1925
  done: nonNegInt,
1837
1926
  total: nonNegInt,
@@ -1936,6 +2025,13 @@ var OPS = {
1936
2025
  "audio.devices": { params: AudioDevicesParams, result: AudioDevicesResult, kind: "unary", since: "1.6", errors: ["PLATFORM_UNSUPPORTED", "INTERNAL"] },
1937
2026
  "audio.record": { params: AudioRecordParams, result: AudioRecordResult, kind: "unary", since: "1.6", errors: ["NOT_FOUND", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "RESOURCE_BUSY", "INTERNAL"] },
1938
2027
  "audio.play": { params: AudioPlayParams, result: AudioPlayResult, kind: "unary", since: "1.6", errors: ["NOT_FOUND", "INVALID_PARAMS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2028
+ // The local AI Matrx servers (aidream's process-compose stack), supervised from Matrx 2's core.
2029
+ "stack.state": { params: StackStateParams, result: StackStateResult, kind: "unary", since: "1.16", errors: ["INTERNAL"] },
2030
+ "stack.start": { params: StackStartParams, result: StackRunResult, kind: "unary", since: "1.16", errors: ["RESOURCE_BUSY", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2031
+ "stack.stop": { params: StackStopParams, result: StackRunResult, kind: "unary", since: "1.16", errors: ["RESOURCE_BUSY", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2032
+ "stack.server.action": { params: StackServerActionParams, result: StackServerActionResult, kind: "unary", since: "1.16", errors: ["NOT_FOUND", "CONFLICT", "INTERNAL"] },
2033
+ "stack.logs": { params: StackLogsParams, result: StackLogsResult, kind: "unary", since: "1.16", errors: ["NOT_FOUND", "INTERNAL"] },
2034
+ "stack.errors": { params: StackErrorsParams, result: StackErrorsResult, kind: "unary", since: "1.16", errors: ["INTERNAL"] },
1939
2035
  // Claude Code history (SPEC §6 coding): served by the `coding` Python service through SERVICES below.
1940
2036
  "coding.history.import_missing": { params: CodingHistoryImportMissingParams, result: CodingHistoryImportMissingResult, kind: "unary", since: "1.5", errors: ["RESOURCE_BUSY", "RESOURCE_GONE", "CANCELLED", "INTERNAL"] }
1941
2037
  };
@@ -2167,6 +2263,21 @@ var NAMED_SCHEMAS = {
2167
2263
  AudioRecordResult,
2168
2264
  AudioPlayParams,
2169
2265
  AudioPlayResult,
2266
+ StackServerName,
2267
+ StackTone,
2268
+ StackServer,
2269
+ StackEvent,
2270
+ StackStateParams,
2271
+ StackStateResult,
2272
+ StackStartParams,
2273
+ StackStopParams,
2274
+ StackRunResult,
2275
+ StackServerActionParams,
2276
+ StackServerActionResult,
2277
+ StackLogsParams,
2278
+ StackLogsResult,
2279
+ StackErrorsParams,
2280
+ StackErrorsResult,
2170
2281
  FsWatchId,
2171
2282
  FsWatchStartParams,
2172
2283
  FsWatchStartResult,
@@ -2295,7 +2406,7 @@ var FIELDS_SINCE = {
2295
2406
  AppsChatsListResult: { updating: "1.9", live: "1.9", families: "1.10" },
2296
2407
  AppsAccountsUsageResult: { problem: "1.12" },
2297
2408
  AppsAccountsResetsResult: { problem: "1.12" },
2298
- ChatRow: { app_project: "1.13", tokens: "1.13", original_title: "1.14", title_source: "1.14", title_override: "1.14" },
2409
+ ChatRow: { app_project: "1.13", tokens: "1.13", original_title: "1.14", title_source: "1.14", title_override: "1.14", archived: "1.15" },
2299
2410
  AccountUsage: { plan: "1.13", credits: "1.13" }
2300
2411
  };
2301
2412
  var NULL_SINCE = {
@@ -2424,7 +2535,7 @@ function forPeer(op, part, value, version) {
2424
2535
  var VERSIONED_RESULT_OPS = [.../* @__PURE__ */ new Set([...RESULT_PATH.keys(), ...WINDOW_RESULTS.keys(), ...NESTED_RESULTS.keys()])];
2425
2536
 
2426
2537
  // src/contract.ts
2427
- var CONTRACT_SHA256 = "274e5bac7ae2a9b7a8027a6c356f54654cd1ed91cf2363711a21ff821a33a676";
2538
+ var CONTRACT_SHA256 = "ee6873cbbdcba3960248ff0c5c71fe47c663b54c6e657d62d1ed5e04e51f17e2";
2428
2539
 
2429
2540
  // src/close-policy.ts
2430
2541
  var CLOSE_RULES = {
@@ -3087,6 +3198,21 @@ export {
3087
3198
  SpendScopes,
3088
3199
  SpendSplit,
3089
3200
  SpendStart,
3201
+ StackErrorsParams,
3202
+ StackErrorsResult,
3203
+ StackEvent,
3204
+ StackLogsParams,
3205
+ StackLogsResult,
3206
+ StackRunResult,
3207
+ StackServer,
3208
+ StackServerActionParams,
3209
+ StackServerActionResult,
3210
+ StackServerName,
3211
+ StackStartParams,
3212
+ StackStateParams,
3213
+ StackStateResult,
3214
+ StackStopParams,
3215
+ StackTone,
3090
3216
  StreamMeta,
3091
3217
  StreamMsg,
3092
3218
  SysinfoGetParams,