@codexhost/cli-linux-arm64 0.7.1 → 0.9.1-test.2

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 (33) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_NOTICES.txt +16 -0
  3. package/app/codexhost-distribution.json +1 -1
  4. package/app/desktop-controller.mjs +185 -47
  5. package/app/host-runtime.mjs +5084 -3890
  6. package/app/plugins/antigravity/plugin.mjs +71 -62
  7. package/app/plugins/claude-code/plugin.mjs +512 -217
  8. package/app/plugins/codebuddy/plugin.mjs +103 -70
  9. package/app/plugins/cursor-cli/plugin.mjs +70 -51
  10. package/app/plugins/deepseek-harness/plugin.mjs +82 -54
  11. package/app/plugins/enabled.json +4 -1
  12. package/app/plugins/grok/plugin.mjs +70 -48
  13. package/app/plugins/hermes/manifest.json +11 -0
  14. package/app/plugins/hermes/plugin.mjs +21680 -0
  15. package/app/plugins/kiro-cli/plugin.mjs +77 -50
  16. package/app/plugins/omp/plugin.mjs +80 -53
  17. package/app/plugins/opencode/plugin.mjs +139 -94
  18. package/app/plugins/pi/plugin.mjs +80 -53
  19. package/app/plugins/qoder/assets/icon.svg +1 -0
  20. package/app/plugins/qoder/manifest.json +12 -0
  21. package/app/plugins/qoder/plugin.mjs +52260 -0
  22. package/app/plugins/qoder-cn/assets/icon.svg +1 -0
  23. package/app/plugins/qoder-cn/manifest.json +12 -0
  24. package/app/plugins/qoder-cn/plugin.mjs +52258 -0
  25. package/app/renderer-extension.js +3389 -1036
  26. package/bin/codexhost +0 -0
  27. package/libexec/codexhost-shim +0 -0
  28. package/libexec/codexhost-updater +0 -0
  29. package/licenses/Qoder-Agent-SDK-LICENSE.txt +7 -0
  30. package/licenses/QoderCN-Agent-SDK-LICENSE.txt +7 -0
  31. package/licenses/opencodex-LICENSE.txt +21 -0
  32. package/licenses/tailwindcss-LICENSE.txt +21 -0
  33. package/package.json +1 -1
@@ -14526,6 +14526,46 @@ config(en_default());
14526
14526
  // ../../shared-contracts/dist/version.js
14527
14527
  var WORKSPACE_CONTRACT_VERSION = 1;
14528
14528
 
14529
+ // ../../shared-contracts/dist/idle-release.js
14530
+ var IDLE_RELEASE_TIMEOUT_MINUTES_MIN = 5;
14531
+ var IDLE_RELEASE_TIMEOUT_MINUTES_MAX = 1440;
14532
+ var idleReleaseSettingsSchema = external_exports.strictObject({
14533
+ enabled: external_exports.boolean(),
14534
+ timeoutMinutes: external_exports.number().int().min(IDLE_RELEASE_TIMEOUT_MINUTES_MIN).max(IDLE_RELEASE_TIMEOUT_MINUTES_MAX)
14535
+ });
14536
+ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
14537
+ enabled: false,
14538
+ timeoutMinutes: 30
14539
+ });
14540
+
14541
+ // ../../shared-contracts/dist/loaded-sessions.js
14542
+ var loadedSessionStateSchema = external_exports.enum([
14543
+ "idle",
14544
+ "running",
14545
+ "busy",
14546
+ "closing",
14547
+ "failed",
14548
+ "blocked"
14549
+ ]);
14550
+ var loadedSessionReasonSchema = external_exports.enum([
14551
+ "none",
14552
+ "disabled",
14553
+ "timeout",
14554
+ "operation",
14555
+ "background",
14556
+ "identity",
14557
+ "persistence",
14558
+ "closeFailed"
14559
+ ]);
14560
+ var loadedSessionsSchema = external_exports.array(external_exports.strictObject({
14561
+ threadId: external_exports.string(),
14562
+ title: external_exports.string(),
14563
+ harnessId: external_exports.string(),
14564
+ state: loadedSessionStateSchema,
14565
+ reason: loadedSessionReasonSchema,
14566
+ inactiveMs: external_exports.number().nonnegative()
14567
+ }));
14568
+
14529
14569
  // ../../shared-contracts/dist/ids.js
14530
14570
  var opaqueIdSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14531
14571
  message: "Identifier must not be empty or whitespace"
@@ -14630,12 +14670,21 @@ var harnessAccountSnapshotSchema = external_exports.object({
14630
14670
  plan: external_exports.string().trim().min(1).max(128).optional(),
14631
14671
  credits: accountCreditsSnapshotSchema
14632
14672
  }).strict();
14633
- var harnessAccountListParamsSchema = external_exports.object({}).strict();
14673
+ var harnessAccountIdentityShape = {
14674
+ harnessId: harnessIdSchema,
14675
+ harnessName: external_exports.string().trim().min(1).max(128)
14676
+ };
14677
+ var harnessAccountSourceSchema = external_exports.object(harnessAccountIdentityShape).strict();
14678
+ var harnessAccountSourceListParamsSchema = external_exports.object({}).strict();
14679
+ var harnessAccountSourceListResultSchema = external_exports.object({ sources: external_exports.array(harnessAccountSourceSchema).max(128) }).strict();
14680
+ var harnessAccountInspectParamsSchema = external_exports.object({ harnessId: harnessIdSchema, refresh: external_exports.boolean().optional() }).strict();
14681
+ var harnessAccountInspectResultSchema = external_exports.object({
14682
+ ...harnessAccountIdentityShape,
14683
+ account: harnessAccountSnapshotSchema.nullable()
14684
+ }).strict();
14685
+ var harnessAccountListParamsSchema = external_exports.object({ refresh: external_exports.boolean().optional() }).strict();
14634
14686
  var harnessAccountListResultSchema = external_exports.object({
14635
- accounts: external_exports.array(harnessAccountSnapshotSchema.extend({
14636
- harnessId: harnessIdSchema,
14637
- harnessName: external_exports.string().min(1)
14638
- })).max(128)
14687
+ accounts: external_exports.array(harnessAccountSnapshotSchema.extend(harnessAccountIdentityShape)).max(128)
14639
14688
  }).strict();
14640
14689
 
14641
14690
  // ../../shared-contracts/dist/json-value.js
@@ -14928,7 +14977,6 @@ var threadInspectionParamsSchema = external_exports.object({
14928
14977
  }).strict();
14929
14978
  var codexThreadInspectionSchema = external_exports.object({
14930
14979
  owner: external_exports.literal("codex"),
14931
- accountId: nonBlankTextSchema2.optional(),
14932
14980
  locked: external_exports.literal(true)
14933
14981
  }).strict();
14934
14982
  var externalThreadInspectionSchema = external_exports.object({
@@ -15066,52 +15114,24 @@ var codexAccountSchema = external_exports.object({
15066
15114
  accountId: accountIdSchema,
15067
15115
  label: nonBlankTextSchema3.max(256),
15068
15116
  email: external_exports.string().email().max(320).optional(),
15069
- planType: codexAccountPlanTypeSchema.optional(),
15070
- codexHome: nonBlankTextSchema3.max(16384),
15071
- active: external_exports.boolean(),
15072
- isDefault: external_exports.boolean()
15073
- }).strict();
15074
- var codexAccountListResultSchema = external_exports.object({ accounts: external_exports.array(codexAccountSchema).max(128) }).strict();
15075
- var codexAccountCreateParamsSchema = external_exports.object({ label: nonBlankTextSchema3.max(256).optional() }).strict();
15076
- var codexAccountActivateParamsSchema = external_exports.object({ accountId: accountIdSchema }).strict();
15077
- var codexAccountDeleteParamsSchema = external_exports.object({ accountId: accountIdSchema }).strict();
15078
- var codexAccountDeleteResultSchema = external_exports.object({ deletedAccountId: accountIdSchema }).strict();
15079
- var codexAccountMutationResultSchema = external_exports.object({ account: codexAccountSchema }).strict();
15080
- var codexAccountLoginStartParamsSchema = external_exports.object({ accountId: accountIdSchema }).strict();
15081
- var codexAccountLoginStartResultSchema = external_exports.object({
15082
- accountId: accountIdSchema,
15083
- loginId: nonBlankTextSchema3.max(1024),
15084
- verificationUrl: external_exports.string().url().max(16384),
15085
- userCode: nonBlankTextSchema3.max(1024)
15117
+ planType: codexAccountPlanTypeSchema.optional()
15086
15118
  }).strict();
15087
- var codexAccountLoginCancelParamsSchema = external_exports.object({ accountId: accountIdSchema.optional(), loginId: nonBlankTextSchema3.max(1024) }).strict();
15088
- var codexAccountLoginCancelResultSchema = external_exports.object({ cancelled: external_exports.boolean() }).strict();
15089
- var codexAccountLoginCompletedSchema = external_exports.object({
15090
- accountId: accountIdSchema,
15091
- loginId: nonBlankTextSchema3.max(1024),
15092
- success: external_exports.boolean(),
15093
- error: external_exports.string().max(4096).nullable()
15119
+ var codexAccountPhaseSchema = external_exports.enum(["ready", "unavailable"]);
15120
+ var codexAccountListResultSchema = external_exports.object({
15121
+ version: external_exports.literal(2),
15122
+ currentAccountId: accountIdSchema.nullable(),
15123
+ phase: codexAccountPhaseSchema,
15124
+ revision: external_exports.number().int().nonnegative(),
15125
+ instanceId: nonBlankTextSchema3.max(1024).optional(),
15126
+ accounts: external_exports.array(codexAccountSchema).max(1)
15094
15127
  }).strict();
15095
- var codexAccountUsageParamsSchema = external_exports.object({ accountId: accountIdSchema }).strict();
15128
+ var codexAccountUsageParamsSchema = external_exports.object({ accountId: accountIdSchema, refresh: external_exports.boolean().optional() }).strict();
15096
15129
  var codexAccountUsageResultSchema = external_exports.object({
15097
15130
  accountId: accountIdSchema,
15098
15131
  usage: threadUsageSnapshotSchema.nullable(),
15099
- accountCredits: accountCreditsSnapshotSchema.optional()
15100
- }).strict();
15101
- var codexAccountResetCreditConsumeParamsSchema = external_exports.object({
15102
- accountId: accountIdSchema,
15103
- idempotencyKey: external_exports.string().uuid().optional()
15104
- }).strict();
15105
- var codexAccountResetCreditConsumeOutcomeSchema = external_exports.enum([
15106
- "reset",
15107
- "nothingToReset",
15108
- "noCredit",
15109
- "alreadyRedeemed"
15110
- ]);
15111
- var codexAccountResetCreditConsumeResultSchema = external_exports.object({
15112
- accountId: accountIdSchema,
15113
- outcome: codexAccountResetCreditConsumeOutcomeSchema,
15114
- accountCredits: accountCreditsSnapshotSchema.optional()
15132
+ accountCredits: accountCreditsSnapshotSchema.optional(),
15133
+ freshness: external_exports.enum(["live", "cached"]),
15134
+ observedAt: external_exports.string().datetime().nullable()
15115
15135
  }).strict();
15116
15136
 
15117
15137
  // ../../shared-contracts/dist/harness-session-import.js
@@ -21698,6 +21718,7 @@ var KiroTurnOutput = class {
21698
21718
  const file2 = {
21699
21719
  type: "fileChange",
21700
21720
  itemId: hostItemIdSchema.parse(`file-${tool.item.itemId}`),
21721
+ sourceItemIds: [tool.item.itemId],
21701
21722
  changes: changes ?? []
21702
21723
  };
21703
21724
  if (tool.file) {
@@ -22081,6 +22102,10 @@ async function readKiroSnapshot(location) {
22081
22102
  const completedAtMs = Date.parse(end?.timestamp ?? "");
22082
22103
  const hasTiming = Number.isFinite(startedAtMs) && Number.isFinite(completedAtMs) && startedAtMs >= 0 && completedAtMs >= startedAtMs;
22083
22104
  const lastContent = turn.rows.findLast((row) => row.payload.type === "tool_call" || row.payload.type === "assistant" && kiroVisibleText(historyText(row.payload)).trim().length > 0 && !["Reasoning", "Summary"].includes(String(row.payload.operationType)));
22105
+ const toolSources = new Map(turn.rows.filter((row) => row.payload.type === "tool_call").map((row) => [
22106
+ row.payload.toolCallId,
22107
+ hostItemIdSchema.parse(`kiro-${nativeSessionId}-${row.id}`)
22108
+ ]));
22084
22109
  for (const row of turn.rows) {
22085
22110
  const type = row.payload?.type;
22086
22111
  const itemId = hostItemIdSchema.parse(`kiro-${nativeSessionId}-${row.id}`);
@@ -22131,10 +22156,12 @@ async function readKiroSnapshot(location) {
22131
22156
  } else if (type === "tool_result") {
22132
22157
  const changes = row.payload.success === true ? projectKiroFileChanges(row.payload.content, location.cwd) : null;
22133
22158
  if (changes) {
22159
+ const sourceItemId = toolSources.get(row.payload.toolCallId);
22134
22160
  items.push({
22135
22161
  item: {
22136
22162
  type: "fileChange",
22137
22163
  itemId,
22164
+ sourceItemIds: sourceItemId ? [sourceItemId] : [],
22138
22165
  changes
22139
22166
  },
22140
22167
  outcome: { status: "succeeded" }
@@ -22995,12 +23022,12 @@ var KiroSession = class {
22995
23022
  return { ok: true, value: { accepted: true } };
22996
23023
  }
22997
23024
  async #selectModel(command) {
22998
- if (this.#activeTurnId !== null || this.#configBusy) {
23025
+ if (this.#configBusy) {
22999
23026
  return {
23000
23027
  ok: false,
23001
23028
  error: {
23002
23029
  code: "sessionBusy",
23003
- message: "Cannot change model while turn is active",
23030
+ message: "Another configuration change is in progress",
23004
23031
  retryable: false
23005
23032
  }
23006
23033
  };
@@ -23091,7 +23118,7 @@ var KiroSession = class {
23091
23118
  });
23092
23119
  }
23093
23120
  async #selectThinking(command) {
23094
- if (this.#activeTurnId !== null || this.#configBusy) {
23121
+ if (this.#configBusy) {
23095
23122
  return {
23096
23123
  ok: false,
23097
23124
  error: { code: "sessionBusy", message: "Session is busy", retryable: true }
@@ -15046,6 +15046,46 @@ config(en_default());
15046
15046
  // ../../shared-contracts/dist/version.js
15047
15047
  var WORKSPACE_CONTRACT_VERSION = 1;
15048
15048
 
15049
+ // ../../shared-contracts/dist/idle-release.js
15050
+ var IDLE_RELEASE_TIMEOUT_MINUTES_MIN = 5;
15051
+ var IDLE_RELEASE_TIMEOUT_MINUTES_MAX = 1440;
15052
+ var idleReleaseSettingsSchema = external_exports.strictObject({
15053
+ enabled: external_exports.boolean(),
15054
+ timeoutMinutes: external_exports.number().int().min(IDLE_RELEASE_TIMEOUT_MINUTES_MIN).max(IDLE_RELEASE_TIMEOUT_MINUTES_MAX)
15055
+ });
15056
+ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15057
+ enabled: false,
15058
+ timeoutMinutes: 30
15059
+ });
15060
+
15061
+ // ../../shared-contracts/dist/loaded-sessions.js
15062
+ var loadedSessionStateSchema = external_exports.enum([
15063
+ "idle",
15064
+ "running",
15065
+ "busy",
15066
+ "closing",
15067
+ "failed",
15068
+ "blocked"
15069
+ ]);
15070
+ var loadedSessionReasonSchema = external_exports.enum([
15071
+ "none",
15072
+ "disabled",
15073
+ "timeout",
15074
+ "operation",
15075
+ "background",
15076
+ "identity",
15077
+ "persistence",
15078
+ "closeFailed"
15079
+ ]);
15080
+ var loadedSessionsSchema = external_exports.array(external_exports.strictObject({
15081
+ threadId: external_exports.string(),
15082
+ title: external_exports.string(),
15083
+ harnessId: external_exports.string(),
15084
+ state: loadedSessionStateSchema,
15085
+ reason: loadedSessionReasonSchema,
15086
+ inactiveMs: external_exports.number().nonnegative()
15087
+ }));
15088
+
15049
15089
  // ../../shared-contracts/dist/ids.js
15050
15090
  var opaqueIdSchema = external_exports.string().refine((value) => value.trim().length > 0, {
15051
15091
  message: "Identifier must not be empty or whitespace"
@@ -15150,12 +15190,21 @@ var harnessAccountSnapshotSchema = external_exports.object({
15150
15190
  plan: external_exports.string().trim().min(1).max(128).optional(),
15151
15191
  credits: accountCreditsSnapshotSchema
15152
15192
  }).strict();
15153
- var harnessAccountListParamsSchema = external_exports.object({}).strict();
15193
+ var harnessAccountIdentityShape = {
15194
+ harnessId: harnessIdSchema,
15195
+ harnessName: external_exports.string().trim().min(1).max(128)
15196
+ };
15197
+ var harnessAccountSourceSchema = external_exports.object(harnessAccountIdentityShape).strict();
15198
+ var harnessAccountSourceListParamsSchema = external_exports.object({}).strict();
15199
+ var harnessAccountSourceListResultSchema = external_exports.object({ sources: external_exports.array(harnessAccountSourceSchema).max(128) }).strict();
15200
+ var harnessAccountInspectParamsSchema = external_exports.object({ harnessId: harnessIdSchema, refresh: external_exports.boolean().optional() }).strict();
15201
+ var harnessAccountInspectResultSchema = external_exports.object({
15202
+ ...harnessAccountIdentityShape,
15203
+ account: harnessAccountSnapshotSchema.nullable()
15204
+ }).strict();
15205
+ var harnessAccountListParamsSchema = external_exports.object({ refresh: external_exports.boolean().optional() }).strict();
15154
15206
  var harnessAccountListResultSchema = external_exports.object({
15155
- accounts: external_exports.array(harnessAccountSnapshotSchema.extend({
15156
- harnessId: harnessIdSchema,
15157
- harnessName: external_exports.string().min(1)
15158
- })).max(128)
15207
+ accounts: external_exports.array(harnessAccountSnapshotSchema.extend(harnessAccountIdentityShape)).max(128)
15159
15208
  }).strict();
15160
15209
 
15161
15210
  // ../../shared-contracts/dist/json-value.js
@@ -15448,7 +15497,6 @@ var threadInspectionParamsSchema = external_exports.object({
15448
15497
  }).strict();
15449
15498
  var codexThreadInspectionSchema = external_exports.object({
15450
15499
  owner: external_exports.literal("codex"),
15451
- accountId: nonBlankTextSchema2.optional(),
15452
15500
  locked: external_exports.literal(true)
15453
15501
  }).strict();
15454
15502
  var externalThreadInspectionSchema = external_exports.object({
@@ -15586,52 +15634,24 @@ var codexAccountSchema = external_exports.object({
15586
15634
  accountId: accountIdSchema,
15587
15635
  label: nonBlankTextSchema3.max(256),
15588
15636
  email: external_exports.string().email().max(320).optional(),
15589
- planType: codexAccountPlanTypeSchema.optional(),
15590
- codexHome: nonBlankTextSchema3.max(16384),
15591
- active: external_exports.boolean(),
15592
- isDefault: external_exports.boolean()
15637
+ planType: codexAccountPlanTypeSchema.optional()
15593
15638
  }).strict();
15594
- var codexAccountListResultSchema = external_exports.object({ accounts: external_exports.array(codexAccountSchema).max(128) }).strict();
15595
- var codexAccountCreateParamsSchema = external_exports.object({ label: nonBlankTextSchema3.max(256).optional() }).strict();
15596
- var codexAccountActivateParamsSchema = external_exports.object({ accountId: accountIdSchema }).strict();
15597
- var codexAccountDeleteParamsSchema = external_exports.object({ accountId: accountIdSchema }).strict();
15598
- var codexAccountDeleteResultSchema = external_exports.object({ deletedAccountId: accountIdSchema }).strict();
15599
- var codexAccountMutationResultSchema = external_exports.object({ account: codexAccountSchema }).strict();
15600
- var codexAccountLoginStartParamsSchema = external_exports.object({ accountId: accountIdSchema }).strict();
15601
- var codexAccountLoginStartResultSchema = external_exports.object({
15602
- accountId: accountIdSchema,
15603
- loginId: nonBlankTextSchema3.max(1024),
15604
- verificationUrl: external_exports.string().url().max(16384),
15605
- userCode: nonBlankTextSchema3.max(1024)
15606
- }).strict();
15607
- var codexAccountLoginCancelParamsSchema = external_exports.object({ accountId: accountIdSchema.optional(), loginId: nonBlankTextSchema3.max(1024) }).strict();
15608
- var codexAccountLoginCancelResultSchema = external_exports.object({ cancelled: external_exports.boolean() }).strict();
15609
- var codexAccountLoginCompletedSchema = external_exports.object({
15610
- accountId: accountIdSchema,
15611
- loginId: nonBlankTextSchema3.max(1024),
15612
- success: external_exports.boolean(),
15613
- error: external_exports.string().max(4096).nullable()
15639
+ var codexAccountPhaseSchema = external_exports.enum(["ready", "unavailable"]);
15640
+ var codexAccountListResultSchema = external_exports.object({
15641
+ version: external_exports.literal(2),
15642
+ currentAccountId: accountIdSchema.nullable(),
15643
+ phase: codexAccountPhaseSchema,
15644
+ revision: external_exports.number().int().nonnegative(),
15645
+ instanceId: nonBlankTextSchema3.max(1024).optional(),
15646
+ accounts: external_exports.array(codexAccountSchema).max(1)
15614
15647
  }).strict();
15615
- var codexAccountUsageParamsSchema = external_exports.object({ accountId: accountIdSchema }).strict();
15648
+ var codexAccountUsageParamsSchema = external_exports.object({ accountId: accountIdSchema, refresh: external_exports.boolean().optional() }).strict();
15616
15649
  var codexAccountUsageResultSchema = external_exports.object({
15617
15650
  accountId: accountIdSchema,
15618
15651
  usage: threadUsageSnapshotSchema.nullable(),
15619
- accountCredits: accountCreditsSnapshotSchema.optional()
15620
- }).strict();
15621
- var codexAccountResetCreditConsumeParamsSchema = external_exports.object({
15622
- accountId: accountIdSchema,
15623
- idempotencyKey: external_exports.string().uuid().optional()
15624
- }).strict();
15625
- var codexAccountResetCreditConsumeOutcomeSchema = external_exports.enum([
15626
- "reset",
15627
- "nothingToReset",
15628
- "noCredit",
15629
- "alreadyRedeemed"
15630
- ]);
15631
- var codexAccountResetCreditConsumeResultSchema = external_exports.object({
15632
- accountId: accountIdSchema,
15633
- outcome: codexAccountResetCreditConsumeOutcomeSchema,
15634
- accountCredits: accountCreditsSnapshotSchema.optional()
15652
+ accountCredits: accountCreditsSnapshotSchema.optional(),
15653
+ freshness: external_exports.enum(["live", "cached"]),
15654
+ observedAt: external_exports.string().datetime().nullable()
15635
15655
  }).strict();
15636
15656
 
15637
15657
  // ../../shared-contracts/dist/harness-session-import.js
@@ -18589,7 +18609,8 @@ function synthesizeFileChange(kind, args, cwd) {
18589
18609
  {
18590
18610
  path: displayed.path,
18591
18611
  kind: "add",
18592
- unifiedDiff: createTwoFilesPatch(oldHeader2, newHeader2, "", content, "", "", { context: 3 })
18612
+ unifiedDiff: createTwoFilesPatch(oldHeader2, newHeader2, "", content, "", "", { context: 3 }),
18613
+ diffScope: "fragment"
18593
18614
  }
18594
18615
  ];
18595
18616
  }
@@ -18611,7 +18632,8 @@ function synthesizeFileChange(kind, args, cwd) {
18611
18632
  kind: "update",
18612
18633
  unifiedDiff: createTwoFilesPatch(oldHeader, newHeader, oldText, newText, "", "", {
18613
18634
  context: 3
18614
- })
18635
+ }),
18636
+ diffScope: "fragment"
18615
18637
  }
18616
18638
  ];
18617
18639
  }
@@ -19005,7 +19027,7 @@ var OmpHarnessSession = class {
19005
19027
  return this.#closePromise;
19006
19028
  }
19007
19029
  async #selectModel(command) {
19008
- if (this.#acceptingTurn || this.#active || this.#configuring) {
19030
+ if (this.#acceptingTurn || this.#configuring) {
19009
19031
  return {
19010
19032
  ok: false,
19011
19033
  error: {
@@ -19077,7 +19099,7 @@ var OmpHarnessSession = class {
19077
19099
  }
19078
19100
  };
19079
19101
  }
19080
- if (this.#acceptingTurn || this.#active || this.#configuring) {
19102
+ if (this.#acceptingTurn || this.#configuring) {
19081
19103
  return {
19082
19104
  ok: false,
19083
19105
  error: {
@@ -19862,12 +19884,17 @@ var OmpHarnessSession = class {
19862
19884
  try {
19863
19885
  const kind = fileMutatingKind(event.toolName);
19864
19886
  const args = tool.arguments;
19865
- if (kind && synthesizeFileChange(kind, args, this.#cwd)) {
19887
+ if (kind && !patchFromResult(event.result) && synthesizeFileChange(kind, args, this.#cwd)) {
19866
19888
  return;
19867
19889
  }
19868
19890
  const changes = reliableFileChange(event.toolName, args, event.result, this.#cwd);
19869
19891
  if (changes) {
19870
- const fileItem = { type: "fileChange", itemId: this.#newItemId(), changes };
19892
+ const fileItem = {
19893
+ type: "fileChange",
19894
+ itemId: this.#newItemId(),
19895
+ sourceItemIds: [tool.item.itemId],
19896
+ changes
19897
+ };
19871
19898
  this.#event({ type: "item.started", turnId: active.command.turnId, item: fileItem });
19872
19899
  this.#completeItem(active, fileItem, { status: "succeeded" });
19873
19900
  }