@wjarka/cezarion 0.16.0-dev.1503 → 0.16.0-pr923.1504

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +15 -4
  2. package/dist/contract/index.js +3 -0
  3. package/dist/contract/runs.d.ts +30 -0
  4. package/dist/contract/skills.d.ts +4 -0
  5. package/dist/core/agent-runner.d.ts +9 -6
  6. package/dist/core/agent-runner.js +4 -2
  7. package/dist/core/agent-runner.js.map +1 -1
  8. package/dist/core/cursor-print-capabilities.d.ts +12 -0
  9. package/dist/core/cursor-print-capabilities.js +77 -0
  10. package/dist/core/cursor-print-capabilities.js.map +1 -0
  11. package/dist/core/cursor-print-process.d.ts +31 -0
  12. package/dist/core/cursor-print-process.js +129 -0
  13. package/dist/core/cursor-print-process.js.map +1 -0
  14. package/dist/core/cursor-print-runner.d.ts +26 -0
  15. package/dist/core/cursor-print-runner.js +512 -0
  16. package/dist/core/cursor-print-runner.js.map +1 -0
  17. package/dist/core/cursor-print-tool-catalog.d.ts +6 -0
  18. package/dist/core/cursor-print-tool-catalog.js +78 -0
  19. package/dist/core/cursor-print-tool-catalog.js.map +1 -0
  20. package/dist/core/cursor-print-ui-mapper.d.ts +47 -0
  21. package/dist/core/cursor-print-ui-mapper.js +573 -0
  22. package/dist/core/cursor-print-ui-mapper.js.map +1 -0
  23. package/dist/core/cursor-runner.d.ts +24 -0
  24. package/dist/core/cursor-runner.js +146 -0
  25. package/dist/core/cursor-runner.js.map +1 -0
  26. package/dist/core/process-usage.d.ts +5 -0
  27. package/dist/core/process-usage.js +24 -4
  28. package/dist/core/process-usage.js.map +1 -1
  29. package/dist/core/runner-factory.d.ts +4 -1
  30. package/dist/core/runner-factory.js +3 -3
  31. package/dist/core/runner-factory.js.map +1 -1
  32. package/dist/delegation/transport.d.ts +13 -13
  33. package/dist/runs/store.d.ts +9 -0
  34. package/dist/runs/store.js +1 -0
  35. package/dist/runs/store.js.map +1 -1
  36. package/dist/server/server.d.ts +118 -92
  37. package/dist/workflows/run.js +39 -8
  38. package/dist/workflows/run.js.map +1 -1
  39. package/package.json +3 -3
  40. package/scripts/mock-ci-tool.mjs +12 -4
  41. package/scripts/mock-cursor-acp.mjs +1 -0
  42. package/scripts/mock-cursor-print.mjs +196 -0
  43. package/scripts/probe-cursor-print.mjs +616 -0
  44. package/web/dist/assets/{agent-accounts-CFOBMVHc.js → agent-accounts-CDhVzwnd.js} +1 -1
  45. package/web/dist/assets/{alert-dialog-BrpNUwMt.js → alert-dialog-A0-kEfJK.js} +1 -1
  46. package/web/dist/assets/{button-C_rd7CPp.js → button-Jj1Itx83.js} +1 -1
  47. package/web/dist/assets/{compare-variants-D6WXhvXA.js → compare-variants-aor2j4bO.js} +1 -1
  48. package/web/dist/assets/{diff-DrEARXTV.js → diff-CDL5SDNO.js} +2 -2
  49. package/web/dist/assets/{diff-controls-B1-j7nFg.js → diff-controls-BWAkxipD.js} +1 -1
  50. package/web/dist/assets/{diff-view-DvGLjdTk.js → diff-view-DWh9FnNY.js} +1 -1
  51. package/web/dist/assets/{dropdown-menu-BegOZFrj.js → dropdown-menu-Ddqp8eUw.js} +1 -1
  52. package/web/dist/assets/{format-DpNe3S0A.js → format-DTNjugyE.js} +1 -1
  53. package/web/dist/assets/{git-toolbar-Cw4ljmhB.js → git-toolbar-B4rwm9Lr.js} +1 -1
  54. package/web/dist/assets/{github-CfV5sqL0.js → github-DgMD1v4U.js} +1 -1
  55. package/web/dist/assets/{image-preview-FOEfqpZP.js → image-preview-Dy5i96RC.js} +1 -1
  56. package/web/dist/assets/{index-DgWWlOLy.js → index-BfAearY6.js} +4 -4
  57. package/web/dist/assets/{nav-row-styles-vp2JbhuJ.js → nav-row-styles-Ci-Ke7wG.js} +1 -1
  58. package/web/dist/assets/{popover-BohP6WTx.js → popover-BjjDOSGv.js} +1 -1
  59. package/web/dist/assets/{preview-pane-connected-qTA5KNoJ.js → preview-pane-connected-Nv_nhV63.js} +1 -1
  60. package/web/dist/assets/{preview-state-vuMviq6q.js → preview-state-D8-YBJ6m.js} +1 -1
  61. package/web/dist/assets/{prompt-templates-Cubdut_C.js → prompt-templates-DFeXUVOZ.js} +1 -1
  62. package/web/dist/assets/{repo-git-Cf4t5PD0.js → repo-git-DcWh5s_b.js} +1 -1
  63. package/web/dist/assets/{run-diff-BpkUW37Z.js → run-diff-1ZzFrOx1.js} +1 -1
  64. package/web/dist/assets/{run-header-68WHf9wV.js → run-header-CPoYzbAy.js} +1 -1
  65. package/web/dist/assets/{skills-DiVIgKeU.js → skills-CnLazLgF.js} +1 -1
  66. package/web/dist/assets/{status-dot-CqTJHSP9.js → status-dot-DwFmt_Jg.js} +1 -1
  67. package/web/dist/assets/{tab-link-B07Hu4QX.js → tab-link-COpvArgR.js} +1 -1
  68. package/web/dist/assets/{task-changes--lQF6EYf.js → task-changes-CY-mi-mC.js} +1 -1
  69. package/web/dist/assets/{task-commits-Cx0qy4DN.js → task-commits-EvLi8T4a.js} +1 -1
  70. package/web/dist/assets/{task-files-D50s-gKW.js → task-files-BR3d8X2U.js} +1 -1
  71. package/web/dist/assets/{task-github-item-DaqmSwYT.js → task-github-item-BVsPg9RI.js} +1 -1
  72. package/web/dist/assets/{task-thread-BPQ64lui.js → task-thread-DQCsu_v8.js} +1 -1
  73. package/web/dist/assets/{textarea-D20O4Pw0.js → textarea-BbNV5Uo2.js} +1 -1
  74. package/web/dist/assets/{thread-state-DWcFMrvb.js → thread-state-DTkIvHsU.js} +1 -1
  75. package/web/dist/assets/{use-hand-to-agent-state-Cy9eyyfL.js → use-hand-to-agent-state-DT-QBsPC.js} +1 -1
  76. package/web/dist/assets/{utils-JsL3ZsJf.js → utils-POVs3UKu.js} +1 -1
  77. package/web/dist/assets/{workflows-jwG7uxqi.js → workflows-BTE-5RwX.js} +1 -1
  78. package/web/dist/assets/{zoomable-image-BJJ64KGc.js → zoomable-image-cL1VgYK4.js} +1 -1
  79. package/web/dist/index.html +13 -13
@@ -3126,6 +3126,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
3126
3126
  finishedAt?: string | undefined;
3127
3127
  error?: string | undefined;
3128
3128
  sessionId?: string | undefined;
3129
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
3129
3130
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
3130
3131
  profileId?: string | undefined;
3131
3132
  costUsd?: number | undefined;
@@ -4106,6 +4107,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
4106
4107
  finishedAt?: string | undefined;
4107
4108
  error?: string | undefined;
4108
4109
  sessionId?: string | undefined;
4110
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
4109
4111
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
4110
4112
  profileId?: string | undefined;
4111
4113
  costUsd?: number | undefined;
@@ -4742,6 +4744,19 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
4742
4744
  } & {
4743
4745
  "/repo/commit/:sha": {
4744
4746
  $get: {
4747
+ output: string;
4748
+ outputFormat: "text";
4749
+ status: import("hono/utils/http-status").ContentfulStatusCode;
4750
+ input: {
4751
+ query: {
4752
+ structured?: string | undefined;
4753
+ };
4754
+ } & {
4755
+ param: {
4756
+ sha: string;
4757
+ };
4758
+ };
4759
+ } | {
4745
4760
  output: {
4746
4761
  error: string;
4747
4762
  code?: "invalid_input" | undefined;
@@ -4805,19 +4820,6 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
4805
4820
  sha: string;
4806
4821
  };
4807
4822
  };
4808
- } | {
4809
- output: string;
4810
- outputFormat: "text";
4811
- status: import("hono/utils/http-status").ContentfulStatusCode;
4812
- input: {
4813
- query: {
4814
- structured?: string | undefined;
4815
- };
4816
- } & {
4817
- param: {
4818
- sha: string;
4819
- };
4820
- };
4821
4823
  };
4822
4824
  };
4823
4825
  } & {
@@ -7158,6 +7160,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
7158
7160
  finishedAt?: string | undefined;
7159
7161
  error?: string | undefined;
7160
7162
  sessionId?: string | undefined;
7163
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
7161
7164
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
7162
7165
  profileId?: string | undefined;
7163
7166
  costUsd?: number | undefined;
@@ -7557,11 +7560,22 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
7557
7560
  "/runs/:id/worker-destroy": {
7558
7561
  $post: {
7559
7562
  output: {
7560
- error: string;
7561
- code?: "invalid_input" | undefined;
7563
+ readonly code: "capacity_limit" | "denied_scope" | "incompatible_state" | "incomplete_cleanup" | "invalid_baseline" | "invalid_input" | "unauthenticated" | "unavailable_diff" | "unavailable_transport";
7564
+ readonly error: string;
7565
+ readonly modelChoices?: {
7566
+ runner: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi";
7567
+ requestedModel: string;
7568
+ availableModels: {
7569
+ id: string;
7570
+ label: string;
7571
+ description: string;
7572
+ effortLevels?: ("high" | "low" | "max" | "medium" | "xhigh")[] | undefined;
7573
+ }[];
7574
+ otherRunners: ("claude" | "codex" | "cursor" | "omp" | "opencode" | "pi")[];
7575
+ } | undefined;
7562
7576
  };
7563
7577
  outputFormat: "json";
7564
- status: 400;
7578
+ status: 400 | 401 | 403 | 409 | 503;
7565
7579
  input: {
7566
7580
  query: {
7567
7581
  [x: string]: string | string[];
@@ -7575,22 +7589,11 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
7575
7589
  };
7576
7590
  } | {
7577
7591
  output: {
7578
- readonly code: "capacity_limit" | "denied_scope" | "incompatible_state" | "incomplete_cleanup" | "invalid_baseline" | "invalid_input" | "unauthenticated" | "unavailable_diff" | "unavailable_transport";
7579
- readonly error: string;
7580
- readonly modelChoices?: {
7581
- runner: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi";
7582
- requestedModel: string;
7583
- availableModels: {
7584
- id: string;
7585
- label: string;
7586
- description: string;
7587
- effortLevels?: ("high" | "low" | "max" | "medium" | "xhigh")[] | undefined;
7588
- }[];
7589
- otherRunners: ("claude" | "codex" | "cursor" | "omp" | "opencode" | "pi")[];
7590
- } | undefined;
7592
+ error: string;
7593
+ code?: "invalid_input" | undefined;
7591
7594
  };
7592
7595
  outputFormat: "json";
7593
- status: 400 | 401 | 403 | 409 | 503;
7596
+ status: 400;
7594
7597
  input: {
7595
7598
  query: {
7596
7599
  [x: string]: string | string[];
@@ -8124,6 +8127,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
8124
8127
  finishedAt?: string | undefined;
8125
8128
  error?: string | undefined;
8126
8129
  sessionId?: string | undefined;
8130
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
8127
8131
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
8128
8132
  profileId?: string | undefined;
8129
8133
  costUsd?: number | undefined;
@@ -8636,6 +8640,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
8636
8640
  finishedAt?: string | undefined;
8637
8641
  error?: string | undefined;
8638
8642
  sessionId?: string | undefined;
8643
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
8639
8644
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
8640
8645
  profileId?: string | undefined;
8641
8646
  costUsd?: number | undefined;
@@ -9149,6 +9154,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
9149
9154
  finishedAt?: string | undefined;
9150
9155
  error?: string | undefined;
9151
9156
  sessionId?: string | undefined;
9157
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
9152
9158
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
9153
9159
  profileId?: string | undefined;
9154
9160
  costUsd?: number | undefined;
@@ -9689,6 +9695,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
9689
9695
  finishedAt?: string | undefined;
9690
9696
  error?: string | undefined;
9691
9697
  sessionId?: string | undefined;
9698
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
9692
9699
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
9693
9700
  profileId?: string | undefined;
9694
9701
  costUsd?: number | undefined;
@@ -10177,6 +10184,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
10177
10184
  finishedAt?: string | undefined;
10178
10185
  error?: string | undefined;
10179
10186
  sessionId?: string | undefined;
10187
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
10180
10188
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
10181
10189
  profileId?: string | undefined;
10182
10190
  costUsd?: number | undefined;
@@ -10665,6 +10673,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
10665
10673
  finishedAt?: string | undefined;
10666
10674
  error?: string | undefined;
10667
10675
  sessionId?: string | undefined;
10676
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
10668
10677
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
10669
10678
  profileId?: string | undefined;
10670
10679
  costUsd?: number | undefined;
@@ -11173,6 +11182,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
11173
11182
  finishedAt?: string | undefined;
11174
11183
  error?: string | undefined;
11175
11184
  sessionId?: string | undefined;
11185
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
11176
11186
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
11177
11187
  profileId?: string | undefined;
11178
11188
  costUsd?: number | undefined;
@@ -11820,6 +11830,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
11820
11830
  finishedAt?: string | undefined;
11821
11831
  error?: string | undefined;
11822
11832
  sessionId?: string | undefined;
11833
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
11823
11834
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
11824
11835
  profileId?: string | undefined;
11825
11836
  costUsd?: number | undefined;
@@ -12333,6 +12344,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
12333
12344
  finishedAt?: string | undefined;
12334
12345
  error?: string | undefined;
12335
12346
  sessionId?: string | undefined;
12347
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
12336
12348
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
12337
12349
  profileId?: string | undefined;
12338
12350
  costUsd?: number | undefined;
@@ -12950,6 +12962,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
12950
12962
  finishedAt?: string | undefined;
12951
12963
  error?: string | undefined;
12952
12964
  sessionId?: string | undefined;
12965
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
12953
12966
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
12954
12967
  profileId?: string | undefined;
12955
12968
  costUsd?: number | undefined;
@@ -13571,20 +13584,20 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
13571
13584
  } & {
13572
13585
  "/runs/:id/handoff": {
13573
13586
  $get: {
13574
- output: {
13575
- error: string;
13576
- };
13577
- outputFormat: "json";
13578
- status: 404;
13587
+ output: string;
13588
+ outputFormat: "text";
13589
+ status: 200;
13579
13590
  input: {
13580
13591
  param: {
13581
13592
  id: string;
13582
13593
  };
13583
13594
  };
13584
13595
  } | {
13585
- output: string;
13586
- outputFormat: "text";
13587
- status: 200;
13596
+ output: {
13597
+ error: string;
13598
+ };
13599
+ outputFormat: "json";
13600
+ status: 404;
13588
13601
  input: {
13589
13602
  param: {
13590
13603
  id: string;
@@ -13622,20 +13635,20 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
13622
13635
  } & {
13623
13636
  "/runs/:id/diff": {
13624
13637
  $get: {
13625
- output: {
13626
- error: string;
13627
- };
13628
- outputFormat: "json";
13629
- status: 404;
13638
+ output: string;
13639
+ outputFormat: "text";
13640
+ status: import("hono/utils/http-status").ContentfulStatusCode;
13630
13641
  input: {
13631
13642
  param: {
13632
13643
  id: string;
13633
13644
  };
13634
13645
  };
13635
13646
  } | {
13636
- output: string;
13637
- outputFormat: "text";
13638
- status: import("hono/utils/http-status").ContentfulStatusCode;
13647
+ output: {
13648
+ error: string;
13649
+ };
13650
+ outputFormat: "json";
13651
+ status: 404;
13639
13652
  input: {
13640
13653
  param: {
13641
13654
  id: string;
@@ -15152,6 +15165,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
15152
15165
  finishedAt?: string | undefined;
15153
15166
  error?: string | undefined;
15154
15167
  sessionId?: string | undefined;
15168
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
15155
15169
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
15156
15170
  profileId?: string | undefined;
15157
15171
  costUsd?: number | undefined;
@@ -16132,6 +16146,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
16132
16146
  finishedAt?: string | undefined;
16133
16147
  error?: string | undefined;
16134
16148
  sessionId?: string | undefined;
16149
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
16135
16150
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
16136
16151
  profileId?: string | undefined;
16137
16152
  costUsd?: number | undefined;
@@ -16768,6 +16783,19 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
16768
16783
  } & {
16769
16784
  "/repo/commit/:sha": {
16770
16785
  $get: {
16786
+ output: string;
16787
+ outputFormat: "text";
16788
+ status: import("hono/utils/http-status").ContentfulStatusCode;
16789
+ input: {
16790
+ query: {
16791
+ structured?: string | undefined;
16792
+ };
16793
+ } & {
16794
+ param: {
16795
+ sha: string;
16796
+ };
16797
+ };
16798
+ } | {
16771
16799
  output: {
16772
16800
  error: string;
16773
16801
  code?: "invalid_input" | undefined;
@@ -16831,19 +16859,6 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
16831
16859
  sha: string;
16832
16860
  };
16833
16861
  };
16834
- } | {
16835
- output: string;
16836
- outputFormat: "text";
16837
- status: import("hono/utils/http-status").ContentfulStatusCode;
16838
- input: {
16839
- query: {
16840
- structured?: string | undefined;
16841
- };
16842
- } & {
16843
- param: {
16844
- sha: string;
16845
- };
16846
- };
16847
16862
  };
16848
16863
  };
16849
16864
  } & {
@@ -19184,6 +19199,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
19184
19199
  finishedAt?: string | undefined;
19185
19200
  error?: string | undefined;
19186
19201
  sessionId?: string | undefined;
19202
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
19187
19203
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
19188
19204
  profileId?: string | undefined;
19189
19205
  costUsd?: number | undefined;
@@ -19583,11 +19599,22 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
19583
19599
  "/runs/:id/worker-destroy": {
19584
19600
  $post: {
19585
19601
  output: {
19586
- error: string;
19587
- code?: "invalid_input" | undefined;
19602
+ readonly code: "capacity_limit" | "denied_scope" | "incompatible_state" | "incomplete_cleanup" | "invalid_baseline" | "invalid_input" | "unauthenticated" | "unavailable_diff" | "unavailable_transport";
19603
+ readonly error: string;
19604
+ readonly modelChoices?: {
19605
+ runner: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi";
19606
+ requestedModel: string;
19607
+ availableModels: {
19608
+ id: string;
19609
+ label: string;
19610
+ description: string;
19611
+ effortLevels?: ("high" | "low" | "max" | "medium" | "xhigh")[] | undefined;
19612
+ }[];
19613
+ otherRunners: ("claude" | "codex" | "cursor" | "omp" | "opencode" | "pi")[];
19614
+ } | undefined;
19588
19615
  };
19589
19616
  outputFormat: "json";
19590
- status: 400;
19617
+ status: 400 | 401 | 403 | 409 | 503;
19591
19618
  input: {
19592
19619
  query: {
19593
19620
  [x: string]: string | string[];
@@ -19601,22 +19628,11 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
19601
19628
  };
19602
19629
  } | {
19603
19630
  output: {
19604
- readonly code: "capacity_limit" | "denied_scope" | "incompatible_state" | "incomplete_cleanup" | "invalid_baseline" | "invalid_input" | "unauthenticated" | "unavailable_diff" | "unavailable_transport";
19605
- readonly error: string;
19606
- readonly modelChoices?: {
19607
- runner: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi";
19608
- requestedModel: string;
19609
- availableModels: {
19610
- id: string;
19611
- label: string;
19612
- description: string;
19613
- effortLevels?: ("high" | "low" | "max" | "medium" | "xhigh")[] | undefined;
19614
- }[];
19615
- otherRunners: ("claude" | "codex" | "cursor" | "omp" | "opencode" | "pi")[];
19616
- } | undefined;
19631
+ error: string;
19632
+ code?: "invalid_input" | undefined;
19617
19633
  };
19618
19634
  outputFormat: "json";
19619
- status: 400 | 401 | 403 | 409 | 503;
19635
+ status: 400;
19620
19636
  input: {
19621
19637
  query: {
19622
19638
  [x: string]: string | string[];
@@ -20150,6 +20166,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
20150
20166
  finishedAt?: string | undefined;
20151
20167
  error?: string | undefined;
20152
20168
  sessionId?: string | undefined;
20169
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
20153
20170
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
20154
20171
  profileId?: string | undefined;
20155
20172
  costUsd?: number | undefined;
@@ -20662,6 +20679,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
20662
20679
  finishedAt?: string | undefined;
20663
20680
  error?: string | undefined;
20664
20681
  sessionId?: string | undefined;
20682
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
20665
20683
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
20666
20684
  profileId?: string | undefined;
20667
20685
  costUsd?: number | undefined;
@@ -21175,6 +21193,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
21175
21193
  finishedAt?: string | undefined;
21176
21194
  error?: string | undefined;
21177
21195
  sessionId?: string | undefined;
21196
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
21178
21197
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
21179
21198
  profileId?: string | undefined;
21180
21199
  costUsd?: number | undefined;
@@ -21715,6 +21734,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
21715
21734
  finishedAt?: string | undefined;
21716
21735
  error?: string | undefined;
21717
21736
  sessionId?: string | undefined;
21737
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
21718
21738
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
21719
21739
  profileId?: string | undefined;
21720
21740
  costUsd?: number | undefined;
@@ -22203,6 +22223,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
22203
22223
  finishedAt?: string | undefined;
22204
22224
  error?: string | undefined;
22205
22225
  sessionId?: string | undefined;
22226
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
22206
22227
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
22207
22228
  profileId?: string | undefined;
22208
22229
  costUsd?: number | undefined;
@@ -22691,6 +22712,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
22691
22712
  finishedAt?: string | undefined;
22692
22713
  error?: string | undefined;
22693
22714
  sessionId?: string | undefined;
22715
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
22694
22716
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
22695
22717
  profileId?: string | undefined;
22696
22718
  costUsd?: number | undefined;
@@ -23199,6 +23221,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
23199
23221
  finishedAt?: string | undefined;
23200
23222
  error?: string | undefined;
23201
23223
  sessionId?: string | undefined;
23224
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
23202
23225
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
23203
23226
  profileId?: string | undefined;
23204
23227
  costUsd?: number | undefined;
@@ -23846,6 +23869,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
23846
23869
  finishedAt?: string | undefined;
23847
23870
  error?: string | undefined;
23848
23871
  sessionId?: string | undefined;
23872
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
23849
23873
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
23850
23874
  profileId?: string | undefined;
23851
23875
  costUsd?: number | undefined;
@@ -24359,6 +24383,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
24359
24383
  finishedAt?: string | undefined;
24360
24384
  error?: string | undefined;
24361
24385
  sessionId?: string | undefined;
24386
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
24362
24387
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
24363
24388
  profileId?: string | undefined;
24364
24389
  costUsd?: number | undefined;
@@ -24976,6 +25001,7 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
24976
25001
  finishedAt?: string | undefined;
24977
25002
  error?: string | undefined;
24978
25003
  sessionId?: string | undefined;
25004
+ sessionTransport?: "cursor-acp" | "cursor-print" | undefined;
24979
25005
  backend?: "claude" | "codex" | "cursor" | "omp" | "opencode" | "pi" | undefined;
24980
25006
  profileId?: string | undefined;
24981
25007
  costUsd?: number | undefined;
@@ -25597,20 +25623,20 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
25597
25623
  } & {
25598
25624
  "/runs/:id/handoff": {
25599
25625
  $get: {
25600
- output: {
25601
- error: string;
25602
- };
25603
- outputFormat: "json";
25604
- status: 404;
25626
+ output: string;
25627
+ outputFormat: "text";
25628
+ status: 200;
25605
25629
  input: {
25606
25630
  param: {
25607
25631
  id: string;
25608
25632
  };
25609
25633
  };
25610
25634
  } | {
25611
- output: string;
25612
- outputFormat: "text";
25613
- status: 200;
25635
+ output: {
25636
+ error: string;
25637
+ };
25638
+ outputFormat: "json";
25639
+ status: 404;
25614
25640
  input: {
25615
25641
  param: {
25616
25642
  id: string;
@@ -25648,20 +25674,20 @@ export declare function createApp(deps: ServerDeps): import("hono/hono-base").Ho
25648
25674
  } & {
25649
25675
  "/runs/:id/diff": {
25650
25676
  $get: {
25651
- output: {
25652
- error: string;
25653
- };
25654
- outputFormat: "json";
25655
- status: 404;
25677
+ output: string;
25678
+ outputFormat: "text";
25679
+ status: import("hono/utils/http-status").ContentfulStatusCode;
25656
25680
  input: {
25657
25681
  param: {
25658
25682
  id: string;
25659
25683
  };
25660
25684
  };
25661
25685
  } | {
25662
- output: string;
25663
- outputFormat: "text";
25664
- status: import("hono/utils/http-status").ContentfulStatusCode;
25686
+ output: {
25687
+ error: string;
25688
+ };
25689
+ outputFormat: "json";
25690
+ status: 404;
25665
25691
  input: {
25666
25692
  param: {
25667
25693
  id: string;
@@ -11,7 +11,7 @@ import { randomUUID } from 'node:crypto';
11
11
  import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs';
12
12
  import { dirname, join } from 'node:path';
13
13
  import { parseAskMarkerResult, stripAskMarker, } from '../core/ask.js';
14
- import { hasRegisteredRunProcess, onUsage, registerRunProcess, unregisterRunProcess } from '../core/process-usage.js';
14
+ import { hasRegisteredRunProcess, onUsage, registerRunProcess, replaceRunProcess, unregisterRunProcess } from '../core/process-usage.js';
15
15
  import { processGroupAlive, processGroupOf, sessionGroupOf, signalProcessGroup } from '../core/session-process.js';
16
16
  import { WorkerScratchCleanup } from '../delegation/scratch-cleanup.js';
17
17
  import { noJitter, ORPHAN_BACKOFF, retryDelayMs } from '../delegation/retry-backoff.js';
@@ -2225,9 +2225,18 @@ export class RunManager {
2225
2225
  const sessionAccount = sessionStep.profileId ?? DEFAULT_AGENT_ACCOUNT_ID;
2226
2226
  const agentProfile = resumeIdentity?.account.profileId ?? run.agentProfile;
2227
2227
  const sameAccount = agentProfile === undefined || agentProfile === sessionAccount;
2228
+ const recoveredSessionId = sessionBackend === backend && sameAccount
2229
+ ? this.resumableSessionId(run.id, sessionStep) : undefined;
2230
+ if (sessionStep.sessionTransport === 'cursor-print' && sessionBackend === backend && sameAccount && !recoveredSessionId) {
2231
+ const error = 'Cursor print session identity lacks a matching recorded session event';
2232
+ const finishedAt = new Date().toISOString();
2233
+ this.store.updateStep(run.id, queuedContinuation.id, { status: 'failed', error, finishedAt });
2234
+ this.store.updateRun(run.id, { status: 'failed', error, finishedAt, currentStepId: undefined });
2235
+ return;
2236
+ }
2228
2237
  this.pendingContinuations.set(run.id, {
2229
2238
  stepId: queuedContinuation.id,
2230
- sessionId: sessionBackend === backend && sameAccount ? this.resumableSessionId(run.id, sessionStep) : undefined,
2239
+ sessionId: recoveredSessionId,
2231
2240
  backend,
2232
2241
  prompt: run.continuationMessage?.text ?? RESTART_CONTINUATION_PROMPT,
2233
2242
  images: [],
@@ -5285,7 +5294,18 @@ export class RunManager {
5285
5294
  if (!sessionStep?.sessionId)
5286
5295
  return undefined;
5287
5296
  if ((sessionStep.backend ?? this.store.getRun(runId)?.runner) === 'cursor') {
5288
- const confirmed = this.store.readEvents(runId).some((event) => event.type === 'session' && event.sessionId === sessionStep.sessionId);
5297
+ const run = this.store.getRun(runId);
5298
+ const sessionStepIndex = run?.steps.findIndex((step) => step.id === sessionStep.id) ?? -1;
5299
+ // A Continue records the existing ID before the resumed process emits its
5300
+ // own session event. After a crash, its original owning step still holds
5301
+ // the print-session proof; later steps cannot establish that proof.
5302
+ const printEvidenceSteps = new Set(run?.steps.slice(0, sessionStepIndex + 1)
5303
+ .filter((step) => step.sessionId === sessionStep.sessionId && step.sessionTransport === 'cursor-print')
5304
+ .map((step) => step.id));
5305
+ const confirmed = this.store.readEvents(runId).some((event) => event.type === 'session' && event.sessionId === sessionStep.sessionId &&
5306
+ (sessionStep.sessionTransport !== 'cursor-print' ||
5307
+ (event.stepId !== undefined && printEvidenceSteps.has(event.stepId) &&
5308
+ event.sessionTransport === 'cursor-print')));
5289
5309
  if (!confirmed)
5290
5310
  return undefined;
5291
5311
  }
@@ -5414,6 +5434,9 @@ export class RunManager {
5414
5434
  const accountSwitched = (opts.agentProfile ?? resumeIdentity?.account.profileId ?? run.agentProfile ?? sessionAccount) !== sessionAccount;
5415
5435
  const resume = sessionBackend === targetRunner && !accountSwitched;
5416
5436
  const resumeSessionId = resume ? this.resumableSessionId(runId, sessionStep) : undefined;
5437
+ if (resume && sessionStep?.sessionTransport === 'cursor-print' && !resumeSessionId) {
5438
+ return { ok: false, error: 'Cursor print session identity lacks a matching recorded session event' };
5439
+ }
5417
5440
  // Follow-up runner/model/account override (#401, spec 2026-07-29-agent-profiles): the composer
5418
5441
  // lets the user pick which backend, model and login handle this continuation — the same flat
5419
5442
  // pill the /new composer offers. Omitted → the run's current backend/model/account is kept
@@ -5713,6 +5736,9 @@ export class RunManager {
5713
5736
  startedAt: new Date().toISOString(),
5714
5737
  sessionId,
5715
5738
  backend,
5739
+ ...(sessionId && backend === 'cursor' ? {
5740
+ sessionTransport: record?.steps.find((step) => step.sessionId === sessionId)?.sessionTransport ?? 'cursor-acp',
5741
+ } : {}),
5716
5742
  });
5717
5743
  this.store.appendEvent(runId, { type: 'step-start', stepId, name: 'Continue', kind: 'agent', iteration: 1 });
5718
5744
  // Attachments pasted into the follow-up composer, on the same terms as a live-session
@@ -5795,7 +5821,8 @@ export class RunManager {
5795
5821
  if (sessionError || state.agentInputError)
5796
5822
  return;
5797
5823
  if (event.type === 'session') {
5798
- this.store.updateStep(runId, stepId, { sessionId: event.sessionId, backend });
5824
+ this.store.updateStep(runId, stepId, { sessionId: event.sessionId, backend,
5825
+ ...(event.sessionTransport ? { sessionTransport: event.sessionTransport } : {}) });
5799
5826
  }
5800
5827
  if (event.type === 'token-usage') {
5801
5828
  this.store.updateStep(runId, stepId, { tokensUsed: event.tokensUsed });
@@ -6073,7 +6100,10 @@ export class RunManager {
6073
6100
  state.delegationSettings = { cwd: state.cwd, runner: continueBackend, model: continueModel,
6074
6101
  effort: continueEffort, agentProfile: continueProfile.profileId, accountBinding: continueProfile.accountBinding,
6075
6102
  systemPrompt: record?.systemPrompt, allowedTools: grants.allowedTools, bashAllowlist: grants.bashAllowlist };
6076
- const runner = createRunner(continueBackend);
6103
+ const sessionTransport = sessionId !== undefined && continueBackend === 'cursor'
6104
+ ? owningStep?.sessionTransport ?? 'cursor-acp'
6105
+ : undefined;
6106
+ const runner = createRunner(continueBackend, sessionTransport ? { sessionTransport } : {});
6077
6107
  // Re-expand the continued step's skill from the current registry (#790) BEFORE
6078
6108
  // provisionSession. `await materializeSkillDir` used to sit after the pre-launch
6079
6109
  // revalidation, so Stop during that await still launched with revoked tools.
@@ -6208,7 +6238,7 @@ export class RunManager {
6208
6238
  },
6209
6239
  onAgentInputReady: () => this.handleAgentInputReady(runId, state, session),
6210
6240
  onAgentInputConsumed: (ids) => this.handleAgentInputConsumed(runId, state, session, ids),
6211
- onPidChange: (pid) => { registerRunProcess(runId, pid); this.recordWorkerProcess(runId, pid); },
6241
+ onPidChange: (pid) => { replaceRunProcess(runId, pid); this.recordWorkerProcess(runId, pid); },
6212
6242
  });
6213
6243
  }
6214
6244
  catch (error) {
@@ -6860,7 +6890,8 @@ export class RunManager {
6860
6890
  return;
6861
6891
  if (event.type === 'session') {
6862
6892
  // Codex/OpenCode mint their own session id — persist it so resume works.
6863
- this.store.updateStep(runId, step.id, { sessionId: event.sessionId, backend });
6893
+ this.store.updateStep(runId, step.id, { sessionId: event.sessionId, backend,
6894
+ ...(event.sessionTransport ? { sessionTransport: event.sessionTransport } : {}) });
6864
6895
  }
6865
6896
  if (event.type === 'token-usage') {
6866
6897
  this.store.updateStep(runId, step.id, { tokensUsed: startTokens + event.tokensUsed });
@@ -7105,7 +7136,7 @@ export class RunManager {
7105
7136
  },
7106
7137
  onAgentInputReady: () => this.handleAgentInputReady(runId, state, session),
7107
7138
  onAgentInputConsumed: (ids) => this.handleAgentInputConsumed(runId, state, session, ids),
7108
- onPidChange: (pid) => { registerRunProcess(runId, pid); this.recordWorkerProcess(runId, pid); },
7139
+ onPidChange: (pid) => { replaceRunProcess(runId, pid); this.recordWorkerProcess(runId, pid); },
7109
7140
  });
7110
7141
  }
7111
7142
  catch (err) {