openmeld 0.3.237 → 0.3.239

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 (110) hide show
  1. package/dist/{add-me-membership-BEqSnfgo.js → add-me-membership-CoM_mJ-b.js} +2 -2
  2. package/dist/{add-me-membership-BEqSnfgo.js.map → add-me-membership-CoM_mJ-b.js.map} +1 -1
  3. package/dist/{agents-_Hh6L3Fi.js → agents-BrHNPIza.js} +17 -14
  4. package/dist/agents-BrHNPIza.js.map +1 -0
  5. package/dist/{api-client-foundation-CGc8AuMo.js → api-client-foundation-D5pIprkz.js} +3 -3
  6. package/dist/{api-client-foundation-CGc8AuMo.js.map → api-client-foundation-D5pIprkz.js.map} +1 -1
  7. package/dist/{api-client-foundation-ZuYF2Uah.js → api-client-foundation-DHkGzzGG.js} +1 -1
  8. package/dist/{auth-session-B3oyTcSI.js → auth-session-BTRu2Kc5.js} +2 -2
  9. package/dist/{auth-session-B3oyTcSI.js.map → auth-session-BTRu2Kc5.js.map} +1 -1
  10. package/dist/auth-session-D2f7Lud02.js +4 -0
  11. package/dist/{channel-BB6aEY--.js → channel-BxlX3o3i.js} +78 -4
  12. package/dist/channel-BxlX3o3i.js.map +1 -0
  13. package/dist/{command-D71NHS4j.js → command-DfIyDuvl.js} +37 -123
  14. package/dist/command-DfIyDuvl.js.map +1 -0
  15. package/dist/{computer-connection-DyL3C3HO.js → computer-connection-Sntn_-XO.js} +2 -2
  16. package/dist/{computer-connection-DyL3C3HO.js.map → computer-connection-Sntn_-XO.js.map} +1 -1
  17. package/dist/{computer-connection-review-BXuXP6KH.js → computer-connection-review-Ka_oNySD.js} +5 -5
  18. package/dist/{computer-connection-review-BXuXP6KH.js.map → computer-connection-review-Ka_oNySD.js.map} +1 -1
  19. package/dist/{computer-disconnect-BXZKVvxj.js → computer-disconnect-pvBUMehS.js} +8 -8
  20. package/dist/{computer-disconnect-BXZKVvxj.js.map → computer-disconnect-pvBUMehS.js.map} +1 -1
  21. package/dist/{computer-setup-continuation-DOvxRtAh.js → computer-setup-continuation-Cowbbx8k.js} +4 -4
  22. package/dist/{computer-setup-continuation-DOvxRtAh.js.map → computer-setup-continuation-Cowbbx8k.js.map} +1 -1
  23. package/dist/{daemon-device-id-Dwm7CHtX.js → daemon-device-id-D7lbw6c4.js} +226 -42
  24. package/dist/daemon-device-id-D7lbw6c4.js.map +1 -0
  25. package/dist/{daemon-lifecycle-journal-DrDyXoUO.js → daemon-lifecycle-journal-0gXU-eU8.js} +3 -3
  26. package/dist/{daemon-lifecycle-journal-DrDyXoUO.js.map → daemon-lifecycle-journal-0gXU-eU8.js.map} +1 -1
  27. package/dist/{daemon-service-runtime-D-tDDWWf.js → daemon-service-runtime-CTo2oiT_.js} +2 -2
  28. package/dist/{daemon-service-runtime-D-tDDWWf.js.map → daemon-service-runtime-CTo2oiT_.js.map} +1 -1
  29. package/dist/{daemon-service-update-coordinator-ykoOjGCd.js → daemon-service-update-coordinator-CfXSbQH7.js} +9 -10
  30. package/dist/{daemon-service-update-coordinator-ykoOjGCd.js.map → daemon-service-update-coordinator-CfXSbQH7.js.map} +1 -1
  31. package/dist/{dispatch-owned-runtime-eRa3wkl9.js → dispatch-owned-runtime-CPD9gM2K.js} +9 -7
  32. package/dist/{dispatch-owned-runtime-eRa3wkl9.js.map → dispatch-owned-runtime-CPD9gM2K.js.map} +1 -1
  33. package/dist/dist-JmQvl3T6.js +4 -0
  34. package/dist/{dist-DEjtwiDJ.js → dist-sH8NpjIN.js} +309 -18
  35. package/dist/dist-sH8NpjIN.js.map +1 -0
  36. package/dist/{elapsed-time-BnibmBPb.js → dual-view-guide-catalog-Qk4ZQfam.js} +215 -164
  37. package/dist/dual-view-guide-catalog-Qk4ZQfam.js.map +1 -0
  38. package/dist/elapsed-time-Df6d3nkk.js +165 -0
  39. package/dist/elapsed-time-Df6d3nkk.js.map +1 -0
  40. package/dist/{entry-CVxgr9uQ.js → entry-B6WlnCha.js} +7 -8
  41. package/dist/{entry-CVxgr9uQ.js.map → entry-B6WlnCha.js.map} +1 -1
  42. package/dist/{installation-inventory-HHLOQ2g7.js → installation-inventory-_duIUWss.js} +3 -3
  43. package/dist/{installation-inventory-HHLOQ2g7.js.map → installation-inventory-_duIUWss.js.map} +1 -1
  44. package/dist/{installer-Bg4KA0DR.js → installer-CJdJQco3.js} +2 -2
  45. package/dist/{installer-Bg4KA0DR.js.map → installer-CJdJQco3.js.map} +1 -1
  46. package/dist/{meta-api-CjvtAPvQ.js → meta-api-XVAyoWIw.js} +117 -6
  47. package/dist/meta-api-XVAyoWIw.js.map +1 -0
  48. package/dist/{openmeld-o_rTSEOO.js → openmeld-aOpLpGnq.js} +128 -88
  49. package/dist/openmeld-aOpLpGnq.js.map +1 -0
  50. package/dist/{openmeld-maintenance-worker-Cwv6_5UL.js → openmeld-maintenance-worker-BmCadk9-.js} +9 -9
  51. package/dist/{openmeld-maintenance-worker-Cwv6_5UL.js.map → openmeld-maintenance-worker-BmCadk9-.js.map} +1 -1
  52. package/dist/{openmeld-tools-update-join-IFQf70sm.js → openmeld-tools-update-join-9pbGIjqE.js} +4 -4
  53. package/dist/{openmeld-tools-update-join-IFQf70sm.js.map → openmeld-tools-update-join-9pbGIjqE.js.map} +1 -1
  54. package/dist/openmeld.js +4 -4
  55. package/dist/{prepare-provider-runtime-B_huS5DY.js → prepare-provider-runtime-BnwBAQkH.js} +126 -12
  56. package/dist/prepare-provider-runtime-BnwBAQkH.js.map +1 -0
  57. package/dist/{prepare-session-executor-WWjgnqsh.js → prepare-session-executor-CAz4foMJ.js} +19 -20
  58. package/dist/{prepare-session-executor-WWjgnqsh.js.map → prepare-session-executor-CAz4foMJ.js.map} +1 -1
  59. package/dist/{presenter-MJ5YgsOT.js → presenter-BcxiQyJg.js} +13 -3
  60. package/dist/presenter-BcxiQyJg.js.map +1 -0
  61. package/dist/{process-channel-C2dB41fO.js → process-channel-QRugdtrY.js} +2 -2
  62. package/dist/{process-channel-C2dB41fO.js.map → process-channel-QRugdtrY.js.map} +1 -1
  63. package/dist/{runtime-DjEQja8c.js → runtime-Ctey_DIE.js} +141 -18
  64. package/dist/runtime-Ctey_DIE.js.map +1 -0
  65. package/dist/{runtime-agent-controller-reporting-submission-CRS5CwMp.js → runtime-agent-controller-reporting-submission-adIxUk6V.js} +8 -8
  66. package/dist/{runtime-agent-controller-reporting-submission-CRS5CwMp.js.map → runtime-agent-controller-reporting-submission-adIxUk6V.js.map} +1 -1
  67. package/dist/{runtime-transport-B-GZhwVt.js → runtime-transport-BVCHi4qM.js} +10 -6
  68. package/dist/runtime-transport-BVCHi4qM.js.map +1 -0
  69. package/dist/{service-CleUczqJ.js → service-W-CdoiQ4.js} +43 -20
  70. package/dist/service-W-CdoiQ4.js.map +1 -0
  71. package/dist/{service-account-authorization-s1bXEswT.js → service-account-authorization-C1CdX1P3.js} +2 -2
  72. package/dist/{service-account-authorization-s1bXEswT.js.map → service-account-authorization-C1CdX1P3.js.map} +1 -1
  73. package/dist/{service-account-control-CjZ5uqK4.js → service-account-control-CRIDZfll.js} +8 -9
  74. package/dist/{service-account-control-CjZ5uqK4.js.map → service-account-control-CRIDZfll.js.map} +1 -1
  75. package/dist/{service-control-capabilities-D5izhuhD.js → service-control-capabilities-DUaoTDfB.js} +3 -3
  76. package/dist/{service-control-capabilities-D5izhuhD.js.map → service-control-capabilities-DUaoTDfB.js.map} +1 -1
  77. package/dist/{service-control-capabilities-Bcho1Rwq.js → service-control-capabilities-SarCxWmg.js} +1 -1
  78. package/dist/{state-CbrhgfNh.js → state-BCso_DsL.js} +2 -2
  79. package/dist/{state-CbrhgfNh.js.map → state-BCso_DsL.js.map} +1 -1
  80. package/dist/{updates-api-B7x39-DR.js → updates-api-BEVyS67y.js} +257 -13
  81. package/dist/updates-api-BEVyS67y.js.map +1 -0
  82. package/dist/upgrade-CbKLfGQ1.js +4 -0
  83. package/dist/{upgrade-BQSA2LfT.js → upgrade-DZKZ3xLM.js} +9 -9
  84. package/dist/{upgrade-BQSA2LfT.js.map → upgrade-DZKZ3xLM.js.map} +1 -1
  85. package/package.json +11 -11
  86. package/skills/openmeld-cli/playbooks/space-ops.md +24 -2
  87. package/skills/openmeld-cli/references/commands.md +9 -2
  88. package/dist/agents-_Hh6L3Fi.js.map +0 -1
  89. package/dist/auth-session-CoFlCq7_.js +0 -4
  90. package/dist/channel-BB6aEY--.js.map +0 -1
  91. package/dist/command-D71NHS4j.js.map +0 -1
  92. package/dist/context-43g3bIde.js +0 -162
  93. package/dist/context-43g3bIde.js.map +0 -1
  94. package/dist/daemon-device-id-Dwm7CHtX.js.map +0 -1
  95. package/dist/dist-CaCD0K8a.js +0 -216
  96. package/dist/dist-CaCD0K8a.js.map +0 -1
  97. package/dist/dist-DEjtwiDJ.js.map +0 -1
  98. package/dist/dist-DGNsLSYJ.js +0 -4
  99. package/dist/elapsed-time-BnibmBPb.js.map +0 -1
  100. package/dist/io-DT66typ4.js +0 -16
  101. package/dist/io-DT66typ4.js.map +0 -1
  102. package/dist/meta-api-CjvtAPvQ.js.map +0 -1
  103. package/dist/openmeld-o_rTSEOO.js.map +0 -1
  104. package/dist/prepare-provider-runtime-B_huS5DY.js.map +0 -1
  105. package/dist/presenter-MJ5YgsOT.js.map +0 -1
  106. package/dist/runtime-DjEQja8c.js.map +0 -1
  107. package/dist/runtime-transport-B-GZhwVt.js.map +0 -1
  108. package/dist/service-CleUczqJ.js.map +0 -1
  109. package/dist/updates-api-B7x39-DR.js.map +0 -1
  110. package/dist/upgrade-636PQBli.js +0 -4
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { tt as resolveSkillsAgentRegistry } from "./prepare-provider-runtime-B_huS5DY.js";
4
- import { f as withSkillsInstallLock, l as downloadOfficialSkillUpdate, r as ensureLocalSkills } from "./state-CbrhgfNh.js";
5
- import { $ as readPendingDaemonServiceUpdate, K as reconcileManagedCliLauncher, X as completePendingDaemonServiceUpdate, g as assertDaemonMaintenanceInstallationOwnership, nt as configureDaemonMaintenanceEnvironment } from "./daemon-service-runtime-D-tDDWWf.js";
6
- import { at as readPendingOpenMeldToolsUpdateAttempt, n as scheduleDaemonServiceUpdate, nt as createOpenMeldToolsUpdateCoordinator, ot as readOpenMeldToolsMaintenancePolicy, t as runPendingDaemonServiceUpdate, ut as prepareDaemonServiceUpdateWorkerCarrier } from "./daemon-service-update-coordinator-ykoOjGCd.js";
3
+ import { tt as resolveSkillsAgentRegistry } from "./prepare-provider-runtime-BnwBAQkH.js";
4
+ import { f as withSkillsInstallLock, l as downloadOfficialSkillUpdate, r as ensureLocalSkills } from "./state-BCso_DsL.js";
5
+ import { $ as readPendingDaemonServiceUpdate, K as reconcileManagedCliLauncher, X as completePendingDaemonServiceUpdate, g as assertDaemonMaintenanceInstallationOwnership, nt as configureDaemonMaintenanceEnvironment } from "./daemon-service-runtime-CTo2oiT_.js";
6
+ import { at as readPendingOpenMeldToolsUpdateAttempt, n as scheduleDaemonServiceUpdate, nt as createOpenMeldToolsUpdateCoordinator, ot as readOpenMeldToolsMaintenancePolicy, t as runPendingDaemonServiceUpdate, ut as prepareDaemonServiceUpdateWorkerCarrier } from "./daemon-service-update-coordinator-CfXSbQH7.js";
7
7
  import { a as isOpenMeldOrphanedLockError, d as runWithHeldLock, i as isOpenMeldLockError, t as acquireLock } from "./lock-BMI00i2F.js";
8
8
  import { g as getConfiguredSkillsConfig } from "./base-url-0AoeTi3w.js";
9
9
  import { W as withDaemonServiceReconcileLock } from "./daemon-state-Dte9re5V.js";
10
10
  import { i as readDaemonServiceContract } from "./daemon-service-contract-COPKbCy_.js";
11
- import { l as OPENMELD_VERSION } from "./daemon-lifecycle-journal-DrDyXoUO.js";
11
+ import { l as OPENMELD_VERSION } from "./daemon-lifecycle-journal-0gXU-eU8.js";
12
12
  import { S as resolveDaemonServiceManager, v as readDaemonServiceStartupPolicyCurrent } from "./daemon-service-manager-BXAp21GH.js";
13
- import { s as resolveTrackedInstallTargets } from "./installation-inventory-HHLOQ2g7.js";
14
- import { t as installSkillsToTargets } from "./installer-Bg4KA0DR.js";
13
+ import { s as resolveTrackedInstallTargets } from "./installation-inventory-_duIUWss.js";
14
+ import { t as installSkillsToTargets } from "./installer-CJdJQco3.js";
15
15
  //#region src/skills/maintenance.ts
16
16
  async function maintainOfficialCliSkill() {
17
17
  if (await downloadOfficialSkillUpdate().catch((error) => {
@@ -76,7 +76,7 @@ async function runMaintenancePass() {
76
76
  }
77
77
  const result = await runPendingDaemonServiceUpdate();
78
78
  if (result?.phase === "updated") {
79
- const { finishComputerSetupAfterBackgroundUpdate, recoverComputerSetupAfterBackgroundUpdate } = await import("./computer-setup-continuation-DOvxRtAh.js");
79
+ const { finishComputerSetupAfterBackgroundUpdate, recoverComputerSetupAfterBackgroundUpdate } = await import("./computer-setup-continuation-Cowbbx8k.js");
80
80
  await prepareDaemonServiceUpdateWorkerCarrier(result);
81
81
  await finishComputerSetupAfterBackgroundUpdate();
82
82
  await withDaemonServiceReconcileLock(async () => {
@@ -105,4 +105,4 @@ async function reconcileCurrentServiceStartupPolicy(updatesCurrent) {
105
105
  //#endregion
106
106
  export { runOpenMeldMaintenanceWorker };
107
107
 
108
- //# sourceMappingURL=openmeld-maintenance-worker-Cwv6_5UL.js.map
108
+ //# sourceMappingURL=openmeld-maintenance-worker-BmCadk9-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openmeld-maintenance-worker-Cwv6_5UL.js","names":[],"sources":["../src/skills/maintenance.ts","../src/local-service/maintenance/openmeld-maintenance-worker.ts"],"sourcesContent":["import { getConfiguredSkillsConfig } from \"../config/runtime-config\";\nimport { resolveSkillsAgentRegistry } from \"./agents\";\nimport { resolveTrackedInstallTargets } from \"./installation-inventory\";\nimport { installSkillsToTargets, withSkillsInstallLock } from \"./installer\";\nimport { downloadOfficialSkillUpdate } from \"./official-release\";\nimport { ensureLocalSkills } from \"./store\";\n\nexport async function maintainOfficialCliSkill(): Promise<void> {\n const outcome = await downloadOfficialSkillUpdate().catch(\n (error: unknown) => {\n process.stderr.write(\n `[openmeld] Skill download deferred: ${error instanceof Error ? error.message : String(error)}\\n`\n );\n return \"deferred\" as const;\n }\n );\n if (outcome === \"lane_isolated\") {\n return;\n }\n await withSkillsInstallLock(async () => {\n const localSkills = await ensureLocalSkills();\n const skillsConfig = await getConfiguredSkillsConfig();\n const targets = await resolveTrackedInstallTargets({\n skillsConfig,\n registry: resolveSkillsAgentRegistry(skillsConfig),\n localSkills,\n onlyOpenMeldInstalledTargets: false,\n });\n const results = await installSkillsToTargets({\n skills: localSkills,\n targets,\n });\n const failures = results.filter((result) => result.status === \"failed\");\n if (failures.length) {\n throw new Error(\n failures\n .map((result) => `${result.targetId}: ${result.reason}`)\n .join(\"; \")\n );\n }\n });\n}\n","import { readDaemonServiceContract } from \"../../config/daemon-service-contract\";\nimport { configureDaemonMaintenanceEnvironment } from \"../../config/daemon-service-update-worker-registration\";\nimport { withDaemonServiceReconcileLock } from \"../../config/daemon-state\";\nimport {\n acquireLock,\n isOpenMeldLockError,\n isOpenMeldOrphanedLockError,\n runWithHeldLock,\n} from \"../../config/lock\";\nimport { reconcileManagedCliLauncher } from \"../../local-components/managed-install\";\nimport { OPENMELD_VERSION } from \"../../runtime/version\";\nimport { maintainOfficialCliSkill } from \"../../skills/maintenance\";\nimport {\n readDaemonServiceStartupPolicyCurrent,\n resolveDaemonServiceManager,\n} from \"../lifecycle/daemon-service-manager\";\nimport { assertDaemonMaintenanceInstallationOwnership } from \"../lifecycle/daemon-service-manager-command-match\";\nimport {\n runPendingDaemonServiceUpdate,\n scheduleDaemonServiceUpdate,\n} from \"../lifecycle/daemon-service-update-coordinator\";\nimport {\n completePendingDaemonServiceUpdate,\n readPendingDaemonServiceUpdate,\n} from \"../lifecycle/daemon-service-update-state\";\nimport { prepareDaemonServiceUpdateWorkerCarrier } from \"../lifecycle/daemon-service-update-worker-manager\";\nimport { readOpenMeldToolsMaintenancePolicy } from \"./openmeld-tools-maintenance-policy\";\nimport { readPendingOpenMeldToolsUpdateAttempt } from \"./openmeld-tools-update-attempt-state\";\nimport { createOpenMeldToolsUpdateCoordinator } from \"./openmeld-tools-update-coordinator\";\n\n// The OS owns this process. It is also the sole executor of persisted download\n// attempts; Service requests only publish an attempt and wake this worker.\nexport async function runOpenMeldMaintenanceWorker(): Promise<void> {\n configureDaemonMaintenanceEnvironment(process.env);\n await runMaintenanceWithLock();\n}\n\nasync function runMaintenanceWithLock(): Promise<boolean> {\n try {\n const lock = await acquireLock({\n openMeldProfileId: \"__system__\",\n key: \"maintenance-worker\",\n });\n return await runWithHeldLock({\n lock,\n run: runMaintenancePass,\n releaseContext: { component: \"maintenance_worker\" },\n });\n } catch (error) {\n // Setup/repair may still own the lifecycle lock when the OS first runs us.\n // Leave its state intact; the existing OS trigger will run another pass.\n if (isOpenMeldLockError(error) && !isOpenMeldOrphanedLockError(error)) {\n return false;\n }\n throw error;\n }\n}\n\nasync function runMaintenancePass(): Promise<boolean> {\n const pendingJob = await readPendingDaemonServiceUpdate();\n const pendingAttempt = await readPendingOpenMeldToolsUpdateAttempt();\n if (!(pendingJob || pendingAttempt)) {\n const contract = await readDaemonServiceContract();\n if (!contract || contract.desiredState !== \"background\") {\n return false;\n }\n }\n await assertDaemonMaintenanceInstallationOwnership();\n await reconcileManagedCliLauncher();\n if ((await readOpenMeldToolsMaintenancePolicy()).automaticUpdatesEnabled) {\n try {\n await maintainOfficialCliSkill();\n } catch (error) {\n process.stderr.write(\n `[openmeld] Skill maintenance deferred: ${error instanceof Error ? error.message : String(error)}\\n`\n );\n }\n }\n const coordinator = createOpenMeldToolsUpdateCoordinator();\n if (!pendingJob) {\n if (pendingAttempt) {\n await coordinator.resumePendingUpdate();\n } else {\n const update = await coordinator.requestUpdate({\n requestSource: \"automatic\",\n });\n await reconcileCurrentServiceStartupPolicy(update.status === \"current\");\n }\n await coordinator.waitForIdle();\n }\n const result = await runPendingDaemonServiceUpdate();\n if (result?.phase === \"updated\") {\n const {\n finishComputerSetupAfterBackgroundUpdate,\n recoverComputerSetupAfterBackgroundUpdate,\n } = await import(\"../../commands/computer-setup-continuation\");\n // Only a verified replacement may replace the working recovery carrier.\n await prepareDaemonServiceUpdateWorkerCarrier(result);\n await finishComputerSetupAfterBackgroundUpdate();\n await withDaemonServiceReconcileLock(async () => {\n const current = await readPendingDaemonServiceUpdate();\n if (\n current?.jobId === result.jobId &&\n current.phase === \"updated\" &&\n current.targetVersion === result.targetVersion\n ) {\n await completePendingDaemonServiceUpdate(current);\n }\n });\n await recoverComputerSetupAfterBackgroundUpdate();\n return true;\n }\n if (result?.phase === \"restored\" || result?.phase === \"needs_help\") {\n process.exitCode = 1;\n }\n return false;\n}\n\nasync function reconcileCurrentServiceStartupPolicy(\n updatesCurrent: boolean\n): Promise<void> {\n if (!updatesCurrent) {\n return;\n }\n const contract = await readDaemonServiceContract();\n // An older recovery worker must not apply its policy to a newer Service,\n // and maintenance must preserve an explicit user stop.\n if (\n contract?.desiredState !== \"background\" ||\n contract.daemonVersion !== OPENMELD_VERSION\n ) {\n return;\n }\n const manager = await resolveDaemonServiceManager();\n if (\n (await readDaemonServiceStartupPolicyCurrent({\n controller: manager?.controller ?? null,\n status: (await manager?.status()) ?? null,\n })) === false\n ) {\n await scheduleDaemonServiceUpdate({\n targetVersion: contract.daemonVersion,\n urgency: \"available\",\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"openmeld-maintenance-worker-BmCadk9-.js","names":[],"sources":["../src/skills/maintenance.ts","../src/local-service/maintenance/openmeld-maintenance-worker.ts"],"sourcesContent":["import { getConfiguredSkillsConfig } from \"../config/runtime-config\";\nimport { resolveSkillsAgentRegistry } from \"./agents\";\nimport { resolveTrackedInstallTargets } from \"./installation-inventory\";\nimport { installSkillsToTargets, withSkillsInstallLock } from \"./installer\";\nimport { downloadOfficialSkillUpdate } from \"./official-release\";\nimport { ensureLocalSkills } from \"./store\";\n\nexport async function maintainOfficialCliSkill(): Promise<void> {\n const outcome = await downloadOfficialSkillUpdate().catch(\n (error: unknown) => {\n process.stderr.write(\n `[openmeld] Skill download deferred: ${error instanceof Error ? error.message : String(error)}\\n`\n );\n return \"deferred\" as const;\n }\n );\n if (outcome === \"lane_isolated\") {\n return;\n }\n await withSkillsInstallLock(async () => {\n const localSkills = await ensureLocalSkills();\n const skillsConfig = await getConfiguredSkillsConfig();\n const targets = await resolveTrackedInstallTargets({\n skillsConfig,\n registry: resolveSkillsAgentRegistry(skillsConfig),\n localSkills,\n onlyOpenMeldInstalledTargets: false,\n });\n const results = await installSkillsToTargets({\n skills: localSkills,\n targets,\n });\n const failures = results.filter((result) => result.status === \"failed\");\n if (failures.length) {\n throw new Error(\n failures\n .map((result) => `${result.targetId}: ${result.reason}`)\n .join(\"; \")\n );\n }\n });\n}\n","import { readDaemonServiceContract } from \"../../config/daemon-service-contract\";\nimport { configureDaemonMaintenanceEnvironment } from \"../../config/daemon-service-update-worker-registration\";\nimport { withDaemonServiceReconcileLock } from \"../../config/daemon-state\";\nimport {\n acquireLock,\n isOpenMeldLockError,\n isOpenMeldOrphanedLockError,\n runWithHeldLock,\n} from \"../../config/lock\";\nimport { reconcileManagedCliLauncher } from \"../../local-components/managed-install\";\nimport { OPENMELD_VERSION } from \"../../runtime/version\";\nimport { maintainOfficialCliSkill } from \"../../skills/maintenance\";\nimport {\n readDaemonServiceStartupPolicyCurrent,\n resolveDaemonServiceManager,\n} from \"../lifecycle/daemon-service-manager\";\nimport { assertDaemonMaintenanceInstallationOwnership } from \"../lifecycle/daemon-service-manager-command-match\";\nimport {\n runPendingDaemonServiceUpdate,\n scheduleDaemonServiceUpdate,\n} from \"../lifecycle/daemon-service-update-coordinator\";\nimport {\n completePendingDaemonServiceUpdate,\n readPendingDaemonServiceUpdate,\n} from \"../lifecycle/daemon-service-update-state\";\nimport { prepareDaemonServiceUpdateWorkerCarrier } from \"../lifecycle/daemon-service-update-worker-manager\";\nimport { readOpenMeldToolsMaintenancePolicy } from \"./openmeld-tools-maintenance-policy\";\nimport { readPendingOpenMeldToolsUpdateAttempt } from \"./openmeld-tools-update-attempt-state\";\nimport { createOpenMeldToolsUpdateCoordinator } from \"./openmeld-tools-update-coordinator\";\n\n// The OS owns this process. It is also the sole executor of persisted download\n// attempts; Service requests only publish an attempt and wake this worker.\nexport async function runOpenMeldMaintenanceWorker(): Promise<void> {\n configureDaemonMaintenanceEnvironment(process.env);\n await runMaintenanceWithLock();\n}\n\nasync function runMaintenanceWithLock(): Promise<boolean> {\n try {\n const lock = await acquireLock({\n openMeldProfileId: \"__system__\",\n key: \"maintenance-worker\",\n });\n return await runWithHeldLock({\n lock,\n run: runMaintenancePass,\n releaseContext: { component: \"maintenance_worker\" },\n });\n } catch (error) {\n // Setup/repair may still own the lifecycle lock when the OS first runs us.\n // Leave its state intact; the existing OS trigger will run another pass.\n if (isOpenMeldLockError(error) && !isOpenMeldOrphanedLockError(error)) {\n return false;\n }\n throw error;\n }\n}\n\nasync function runMaintenancePass(): Promise<boolean> {\n const pendingJob = await readPendingDaemonServiceUpdate();\n const pendingAttempt = await readPendingOpenMeldToolsUpdateAttempt();\n if (!(pendingJob || pendingAttempt)) {\n const contract = await readDaemonServiceContract();\n if (!contract || contract.desiredState !== \"background\") {\n return false;\n }\n }\n await assertDaemonMaintenanceInstallationOwnership();\n await reconcileManagedCliLauncher();\n if ((await readOpenMeldToolsMaintenancePolicy()).automaticUpdatesEnabled) {\n try {\n await maintainOfficialCliSkill();\n } catch (error) {\n process.stderr.write(\n `[openmeld] Skill maintenance deferred: ${error instanceof Error ? error.message : String(error)}\\n`\n );\n }\n }\n const coordinator = createOpenMeldToolsUpdateCoordinator();\n if (!pendingJob) {\n if (pendingAttempt) {\n await coordinator.resumePendingUpdate();\n } else {\n const update = await coordinator.requestUpdate({\n requestSource: \"automatic\",\n });\n await reconcileCurrentServiceStartupPolicy(update.status === \"current\");\n }\n await coordinator.waitForIdle();\n }\n const result = await runPendingDaemonServiceUpdate();\n if (result?.phase === \"updated\") {\n const {\n finishComputerSetupAfterBackgroundUpdate,\n recoverComputerSetupAfterBackgroundUpdate,\n } = await import(\"../../commands/computer-setup-continuation\");\n // Only a verified replacement may replace the working recovery carrier.\n await prepareDaemonServiceUpdateWorkerCarrier(result);\n await finishComputerSetupAfterBackgroundUpdate();\n await withDaemonServiceReconcileLock(async () => {\n const current = await readPendingDaemonServiceUpdate();\n if (\n current?.jobId === result.jobId &&\n current.phase === \"updated\" &&\n current.targetVersion === result.targetVersion\n ) {\n await completePendingDaemonServiceUpdate(current);\n }\n });\n await recoverComputerSetupAfterBackgroundUpdate();\n return true;\n }\n if (result?.phase === \"restored\" || result?.phase === \"needs_help\") {\n process.exitCode = 1;\n }\n return false;\n}\n\nasync function reconcileCurrentServiceStartupPolicy(\n updatesCurrent: boolean\n): Promise<void> {\n if (!updatesCurrent) {\n return;\n }\n const contract = await readDaemonServiceContract();\n // An older recovery worker must not apply its policy to a newer Service,\n // and maintenance must preserve an explicit user stop.\n if (\n contract?.desiredState !== \"background\" ||\n contract.daemonVersion !== OPENMELD_VERSION\n ) {\n return;\n }\n const manager = await resolveDaemonServiceManager();\n if (\n (await readDaemonServiceStartupPolicyCurrent({\n controller: manager?.controller ?? null,\n status: (await manager?.status()) ?? null,\n })) === false\n ) {\n await scheduleDaemonServiceUpdate({\n targetVersion: contract.daemonVersion,\n urgency: \"available\",\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAOA,eAAsB,2BAA0C;CAS9D,IAAI,MARkB,4BAA4B,CAAC,CAAC,OACjD,UAAmB;EAClB,QAAQ,OAAO,MACb,uCAAuC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,GAChG;EACA,OAAO;CACT,CACF,MACgB,iBACd;CAEF,MAAM,sBAAsB,YAAY;EACtC,MAAM,cAAc,MAAM,kBAAkB;EAC5C,MAAM,eAAe,MAAM,0BAA0B;EAWrD,MAAM,YAAW,MAJK,uBAAuB;GAC3C,QAAQ;GACR,SAAA,MARoB,6BAA6B;IACjD;IACA,UAAU,2BAA2B,YAAY;IACjD;IACA,8BAA8B;GAChC,CAAC;EAID,CAAC,EAAA,CACwB,QAAQ,WAAW,OAAO,WAAW,QAAQ;EACtE,IAAI,SAAS,QACX,MAAM,IAAI,MACR,SACG,KAAK,WAAW,GAAG,OAAO,SAAS,IAAI,OAAO,QAAQ,CAAC,CACvD,KAAK,IAAI,CACd;CAEJ,CAAC;AACH;;;ACTA,eAAsB,+BAA8C;CAClE,sCAAsC,QAAQ,GAAG;CACjD,MAAM,uBAAuB;AAC/B;AAEA,eAAe,yBAA2C;CACxD,IAAI;EAKF,OAAO,MAAM,gBAAgB;GAC3B,MAAA,MALiB,YAAY;IAC7B,mBAAmB;IACnB,KAAK;GACP,CAAC;GAGC,KAAK;GACL,gBAAgB,EAAE,WAAW,qBAAqB;EACpD,CAAC;CACH,SAAS,OAAO;EAGd,IAAI,oBAAoB,KAAK,KAAK,CAAC,4BAA4B,KAAK,GAClE,OAAO;EAET,MAAM;CACR;AACF;AAEA,eAAe,qBAAuC;CACpD,MAAM,aAAa,MAAM,+BAA+B;CACxD,MAAM,iBAAiB,MAAM,sCAAsC;CACnE,IAAI,EAAE,cAAc,iBAAiB;EACnC,MAAM,WAAW,MAAM,0BAA0B;EACjD,IAAI,CAAC,YAAY,SAAS,iBAAiB,cACzC,OAAO;CAEX;CACA,MAAM,6CAA6C;CACnD,MAAM,4BAA4B;CAClC,KAAK,MAAM,mCAAmC,EAAA,CAAG,yBAC/C,IAAI;EACF,MAAM,yBAAyB;CACjC,SAAS,OAAO;EACd,QAAQ,OAAO,MACb,0CAA0C,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,GACnG;CACF;CAEF,MAAM,cAAc,qCAAqC;CACzD,IAAI,CAAC,YAAY;EACf,IAAI,gBACF,MAAM,YAAY,oBAAoB;OAKtC,MAAM,sCAAqC,MAHtB,YAAY,cAAc,EAC7C,eAAe,YACjB,CAAC,EAAA,CACiD,WAAW,SAAS;EAExE,MAAM,YAAY,YAAY;CAChC;CACA,MAAM,SAAS,MAAM,8BAA8B;CACnD,IAAI,QAAQ,UAAU,WAAW;EAC/B,MAAM,EACJ,0CACA,8CACE,MAAM,OAAO;EAEjB,MAAM,wCAAwC,MAAM;EACpD,MAAM,yCAAyC;EAC/C,MAAM,+BAA+B,YAAY;GAC/C,MAAM,UAAU,MAAM,+BAA+B;GACrD,IACE,SAAS,UAAU,OAAO,SAC1B,QAAQ,UAAU,aAClB,QAAQ,kBAAkB,OAAO,eAEjC,MAAM,mCAAmC,OAAO;EAEpD,CAAC;EACD,MAAM,0CAA0C;EAChD,OAAO;CACT;CACA,IAAI,QAAQ,UAAU,cAAc,QAAQ,UAAU,cACpD,QAAQ,WAAW;CAErB,OAAO;AACT;AAEA,eAAe,qCACb,gBACe;CACf,IAAI,CAAC,gBACH;CAEF,MAAM,WAAW,MAAM,0BAA0B;CAGjD,IACE,UAAU,iBAAiB,gBAC3B,SAAS,kBAAkB,kBAE3B;CAEF,MAAM,UAAU,MAAM,4BAA4B;CAClD,IACG,MAAM,sCAAsC;EAC3C,YAAY,SAAS,cAAc;EACnC,QAAS,MAAM,SAAS,OAAO,KAAM;CACvC,CAAC,MAAO,OAER,MAAM,4BAA4B;EAChC,eAAe,SAAS;EACxB,SAAS;CACX,CAAC;AAEL"}
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { $ as readPendingDaemonServiceUpdate } from "./daemon-service-runtime-D-tDDWWf.js";
4
- import { at as readPendingOpenMeldToolsUpdateAttempt } from "./daemon-service-update-coordinator-ykoOjGCd.js";
5
- import { m as resolveOpenMeldToolsUpdateOperation } from "./elapsed-time-BnibmBPb.js";
3
+ import { $ as readPendingDaemonServiceUpdate } from "./daemon-service-runtime-CTo2oiT_.js";
4
+ import { at as readPendingOpenMeldToolsUpdateAttempt } from "./daemon-service-update-coordinator-CfXSbQH7.js";
5
+ import { m as resolveOpenMeldToolsUpdateOperation } from "./elapsed-time-Df6d3nkk.js";
6
6
  import { setTimeout } from "node:timers/promises";
7
7
  //#region src/local-service/maintenance/openmeld-tools-update-join.ts
8
8
  const DEFAULT_UPDATE_JOIN_POLL_INTERVAL_MS = 500;
@@ -61,4 +61,4 @@ async function waitForExternalOpenMeldToolsUpdate(input = {}) {
61
61
  //#endregion
62
62
  export { waitForExternalOpenMeldToolsUpdate as n, waitForOpenMeldToolsUpdateCompletion as r, resolveExternalOpenMeldToolsUpdate as t };
63
63
 
64
- //# sourceMappingURL=openmeld-tools-update-join-IFQf70sm.js.map
64
+ //# sourceMappingURL=openmeld-tools-update-join-9pbGIjqE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openmeld-tools-update-join-IFQf70sm.js","names":["sleep"],"sources":["../src/local-service/maintenance/openmeld-tools-update-join.ts"],"sourcesContent":["import { setTimeout as sleep } from \"node:timers/promises\";\nimport type { OpenMeldToolsUpdateOperation } from \"@openmeld/schemas/types\";\nimport type { OpenMeldPathResolutionInput } from \"../../config/paths\";\nimport { readPendingDaemonServiceUpdate } from \"../lifecycle/daemon-service-update-state\";\nimport { readPendingOpenMeldToolsUpdateAttempt } from \"./openmeld-tools-update-attempt-state\";\nimport { resolveOpenMeldToolsUpdateOperation } from \"./openmeld-tools-update-operation\";\n\nconst DEFAULT_UPDATE_JOIN_POLL_INTERVAL_MS = 500;\n\n// This is an observer of the existing durable operation, never an updater.\n// The OS-owned worker continues even if this caller exits while waiting.\nexport async function waitForOpenMeldToolsUpdateCompletion(\n input: {\n operationId?: string;\n pollIntervalMs?: number;\n onWaiting?: (\n operation: OpenMeldToolsUpdateOperation\n ) => Promise<void> | void;\n } = {}\n): Promise<OpenMeldToolsUpdateOperation | null> {\n let operationId = input.operationId ?? null;\n await waitForExternalOpenMeldToolsUpdate({\n completedServiceUpdateIsIdle: true,\n pollIntervalMs: input.pollIntervalMs,\n onWaiting: async (operation) => {\n if (operationId !== null && operationId !== operation.operationId) {\n throw new Error(\n `OpenMeld update ${operationId} was replaced before its completion could be verified.`\n );\n }\n operationId = operation.operationId;\n await input.onWaiting?.(operation);\n },\n });\n const completed = await resolveOpenMeldToolsUpdateOperation();\n if (\n operationId !== null &&\n (completed?.operationId !== operationId || completed.phase !== \"updated\")\n ) {\n throw new Error(\n `OpenMeld update ${operationId} did not finish successfully (${completed?.phase ?? \"completion evidence unavailable\"}).`\n );\n }\n return completed;\n}\n\nexport async function resolveExternalOpenMeldToolsUpdate(\n input: OpenMeldPathResolutionInput & {\n currentOperationId?: string | null;\n completedServiceUpdateIsIdle?: boolean;\n } = {}\n): Promise<OpenMeldToolsUpdateOperation | null> {\n // The coordinator persists the Service job before discarding the tools\n // attempt. Reading in this order prevents observers from seeing a false idle\n // gap while ownership moves from the CLI download to the Service worker.\n const toolsAttempt = await readPendingOpenMeldToolsUpdateAttempt(input);\n const serviceJob = await readPendingDaemonServiceUpdate(input);\n if (\n serviceJob &&\n serviceJob.jobId !== (input.currentOperationId ?? null) &&\n !(input.completedServiceUpdateIsIdle && serviceJob.phase === \"updated\")\n ) {\n return {\n operationId: serviceJob.jobId,\n phase: serviceJob.phase,\n requestSource: serviceJob.requestSource,\n requestedAt: serviceJob.requestedAt,\n ...(serviceJob.targetCliVersion\n ? { targetCliVersion: serviceJob.targetCliVersion }\n : {}),\n ...(serviceJob.targetServiceVersion\n ? { targetServiceVersion: serviceJob.targetServiceVersion }\n : {}),\n targetVersion: serviceJob.targetVersion,\n updatedAt: serviceJob.updatedAt,\n urgency: serviceJob.urgency,\n };\n }\n if (\n toolsAttempt &&\n toolsAttempt.operation.operationId !== (input.currentOperationId ?? null)\n ) {\n return toolsAttempt.operation;\n }\n return null;\n}\n\nexport async function waitForExternalOpenMeldToolsUpdate(\n input: OpenMeldPathResolutionInput & {\n currentOperationId?: string | null;\n completedServiceUpdateIsIdle?: boolean;\n onWaiting?: (\n operation: OpenMeldToolsUpdateOperation\n ) => Promise<void> | void;\n pollIntervalMs?: number;\n unclaimedTimeoutMs?: number;\n } = {}\n): Promise<void> {\n let reportedOperationId: string | null = null;\n let unclaimedSince: number | null = null;\n while (true) {\n const operation = await resolveExternalOpenMeldToolsUpdate(input);\n if (!operation) {\n return;\n }\n if (input.unclaimedTimeoutMs !== undefined) {\n const pending = await readPendingOpenMeldToolsUpdateAttempt(input);\n if (\n pending?.operation.operationId === operation.operationId &&\n pending.attempts === 0\n ) {\n unclaimedSince ??= Date.now();\n if (Date.now() - unclaimedSince >= input.unclaimedTimeoutMs) {\n throw new Error(\n \"OpenMeld's background updater did not start. Run openmeld doctor to check the background service, then try setup again.\"\n );\n }\n } else {\n unclaimedSince = null;\n }\n }\n if (reportedOperationId !== operation.operationId) {\n reportedOperationId = operation.operationId;\n await input.onWaiting?.(operation);\n }\n await sleep(\n Math.max(1, input.pollIntervalMs ?? DEFAULT_UPDATE_JOIN_POLL_INTERVAL_MS)\n );\n }\n}\n"],"mappings":";;;;;;;AAOA,MAAM,uCAAuC;AAI7C,eAAsB,qCACpB,QAMI,CAAC,GACyC;CAC9C,IAAI,cAAc,MAAM,eAAe;CACvC,MAAM,mCAAmC;EACvC,8BAA8B;EAC9B,gBAAgB,MAAM;EACtB,WAAW,OAAO,cAAc;GAC9B,IAAI,gBAAgB,QAAQ,gBAAgB,UAAU,aACpD,MAAM,IAAI,MACR,mBAAmB,YAAY,uDACjC;GAEF,cAAc,UAAU;GACxB,MAAM,MAAM,YAAY,SAAS;EACnC;CACF,CAAC;CACD,MAAM,YAAY,MAAM,oCAAoC;CAC5D,IACE,gBAAgB,SACf,WAAW,gBAAgB,eAAe,UAAU,UAAU,YAE/D,MAAM,IAAI,MACR,mBAAmB,YAAY,gCAAgC,WAAW,SAAS,kCAAkC,GACvH;CAEF,OAAO;AACT;AAEA,eAAsB,mCACpB,QAGI,CAAC,GACyC;CAI9C,MAAM,eAAe,MAAM,sCAAsC,KAAK;CACtE,MAAM,aAAa,MAAM,+BAA+B,KAAK;CAC7D,IACE,cACA,WAAW,WAAW,MAAM,sBAAsB,SAClD,EAAE,MAAM,gCAAgC,WAAW,UAAU,YAE7D,OAAO;EACL,aAAa,WAAW;EACxB,OAAO,WAAW;EAClB,eAAe,WAAW;EAC1B,aAAa,WAAW;EACxB,GAAI,WAAW,mBACX,EAAE,kBAAkB,WAAW,iBAAiB,IAChD,CAAC;EACL,GAAI,WAAW,uBACX,EAAE,sBAAsB,WAAW,qBAAqB,IACxD,CAAC;EACL,eAAe,WAAW;EAC1B,WAAW,WAAW;EACtB,SAAS,WAAW;CACtB;CAEF,IACE,gBACA,aAAa,UAAU,iBAAiB,MAAM,sBAAsB,OAEpE,OAAO,aAAa;CAEtB,OAAO;AACT;AAEA,eAAsB,mCACpB,QAQI,CAAC,GACU;CACf,IAAI,sBAAqC;CACzC,IAAI,iBAAgC;CACpC,OAAO,MAAM;EACX,MAAM,YAAY,MAAM,mCAAmC,KAAK;EAChE,IAAI,CAAC,WACH;EAEF,IAAI,MAAM,uBAAuB,KAAA,GAAW;GAC1C,MAAM,UAAU,MAAM,sCAAsC,KAAK;GACjE,IACE,SAAS,UAAU,gBAAgB,UAAU,eAC7C,QAAQ,aAAa,GACrB;IACA,mBAAmB,KAAK,IAAI;IAC5B,IAAI,KAAK,IAAI,IAAI,kBAAkB,MAAM,oBACvC,MAAM,IAAI,MACR,yHACF;GAEJ,OACE,iBAAiB;EAErB;EACA,IAAI,wBAAwB,UAAU,aAAa;GACjD,sBAAsB,UAAU;GAChC,MAAM,MAAM,YAAY,SAAS;EACnC;EACA,MAAMA,WACJ,KAAK,IAAI,GAAG,MAAM,kBAAkB,oCAAoC,CAC1E;CACF;AACF"}
1
+ {"version":3,"file":"openmeld-tools-update-join-9pbGIjqE.js","names":["sleep"],"sources":["../src/local-service/maintenance/openmeld-tools-update-join.ts"],"sourcesContent":["import { setTimeout as sleep } from \"node:timers/promises\";\nimport type { OpenMeldToolsUpdateOperation } from \"@openmeld/schemas/types\";\nimport type { OpenMeldPathResolutionInput } from \"../../config/paths\";\nimport { readPendingDaemonServiceUpdate } from \"../lifecycle/daemon-service-update-state\";\nimport { readPendingOpenMeldToolsUpdateAttempt } from \"./openmeld-tools-update-attempt-state\";\nimport { resolveOpenMeldToolsUpdateOperation } from \"./openmeld-tools-update-operation\";\n\nconst DEFAULT_UPDATE_JOIN_POLL_INTERVAL_MS = 500;\n\n// This is an observer of the existing durable operation, never an updater.\n// The OS-owned worker continues even if this caller exits while waiting.\nexport async function waitForOpenMeldToolsUpdateCompletion(\n input: {\n operationId?: string;\n pollIntervalMs?: number;\n onWaiting?: (\n operation: OpenMeldToolsUpdateOperation\n ) => Promise<void> | void;\n } = {}\n): Promise<OpenMeldToolsUpdateOperation | null> {\n let operationId = input.operationId ?? null;\n await waitForExternalOpenMeldToolsUpdate({\n completedServiceUpdateIsIdle: true,\n pollIntervalMs: input.pollIntervalMs,\n onWaiting: async (operation) => {\n if (operationId !== null && operationId !== operation.operationId) {\n throw new Error(\n `OpenMeld update ${operationId} was replaced before its completion could be verified.`\n );\n }\n operationId = operation.operationId;\n await input.onWaiting?.(operation);\n },\n });\n const completed = await resolveOpenMeldToolsUpdateOperation();\n if (\n operationId !== null &&\n (completed?.operationId !== operationId || completed.phase !== \"updated\")\n ) {\n throw new Error(\n `OpenMeld update ${operationId} did not finish successfully (${completed?.phase ?? \"completion evidence unavailable\"}).`\n );\n }\n return completed;\n}\n\nexport async function resolveExternalOpenMeldToolsUpdate(\n input: OpenMeldPathResolutionInput & {\n currentOperationId?: string | null;\n completedServiceUpdateIsIdle?: boolean;\n } = {}\n): Promise<OpenMeldToolsUpdateOperation | null> {\n // The coordinator persists the Service job before discarding the tools\n // attempt. Reading in this order prevents observers from seeing a false idle\n // gap while ownership moves from the CLI download to the Service worker.\n const toolsAttempt = await readPendingOpenMeldToolsUpdateAttempt(input);\n const serviceJob = await readPendingDaemonServiceUpdate(input);\n if (\n serviceJob &&\n serviceJob.jobId !== (input.currentOperationId ?? null) &&\n !(input.completedServiceUpdateIsIdle && serviceJob.phase === \"updated\")\n ) {\n return {\n operationId: serviceJob.jobId,\n phase: serviceJob.phase,\n requestSource: serviceJob.requestSource,\n requestedAt: serviceJob.requestedAt,\n ...(serviceJob.targetCliVersion\n ? { targetCliVersion: serviceJob.targetCliVersion }\n : {}),\n ...(serviceJob.targetServiceVersion\n ? { targetServiceVersion: serviceJob.targetServiceVersion }\n : {}),\n targetVersion: serviceJob.targetVersion,\n updatedAt: serviceJob.updatedAt,\n urgency: serviceJob.urgency,\n };\n }\n if (\n toolsAttempt &&\n toolsAttempt.operation.operationId !== (input.currentOperationId ?? null)\n ) {\n return toolsAttempt.operation;\n }\n return null;\n}\n\nexport async function waitForExternalOpenMeldToolsUpdate(\n input: OpenMeldPathResolutionInput & {\n currentOperationId?: string | null;\n completedServiceUpdateIsIdle?: boolean;\n onWaiting?: (\n operation: OpenMeldToolsUpdateOperation\n ) => Promise<void> | void;\n pollIntervalMs?: number;\n unclaimedTimeoutMs?: number;\n } = {}\n): Promise<void> {\n let reportedOperationId: string | null = null;\n let unclaimedSince: number | null = null;\n while (true) {\n const operation = await resolveExternalOpenMeldToolsUpdate(input);\n if (!operation) {\n return;\n }\n if (input.unclaimedTimeoutMs !== undefined) {\n const pending = await readPendingOpenMeldToolsUpdateAttempt(input);\n if (\n pending?.operation.operationId === operation.operationId &&\n pending.attempts === 0\n ) {\n unclaimedSince ??= Date.now();\n if (Date.now() - unclaimedSince >= input.unclaimedTimeoutMs) {\n throw new Error(\n \"OpenMeld's background updater did not start. Run openmeld doctor to check the background service, then try setup again.\"\n );\n }\n } else {\n unclaimedSince = null;\n }\n }\n if (reportedOperationId !== operation.operationId) {\n reportedOperationId = operation.operationId;\n await input.onWaiting?.(operation);\n }\n await sleep(\n Math.max(1, input.pollIntervalMs ?? DEFAULT_UPDATE_JOIN_POLL_INTERVAL_MS)\n );\n }\n}\n"],"mappings":";;;;;;;AAOA,MAAM,uCAAuC;AAI7C,eAAsB,qCACpB,QAMI,CAAC,GACyC;CAC9C,IAAI,cAAc,MAAM,eAAe;CACvC,MAAM,mCAAmC;EACvC,8BAA8B;EAC9B,gBAAgB,MAAM;EACtB,WAAW,OAAO,cAAc;GAC9B,IAAI,gBAAgB,QAAQ,gBAAgB,UAAU,aACpD,MAAM,IAAI,MACR,mBAAmB,YAAY,uDACjC;GAEF,cAAc,UAAU;GACxB,MAAM,MAAM,YAAY,SAAS;EACnC;CACF,CAAC;CACD,MAAM,YAAY,MAAM,oCAAoC;CAC5D,IACE,gBAAgB,SACf,WAAW,gBAAgB,eAAe,UAAU,UAAU,YAE/D,MAAM,IAAI,MACR,mBAAmB,YAAY,gCAAgC,WAAW,SAAS,kCAAkC,GACvH;CAEF,OAAO;AACT;AAEA,eAAsB,mCACpB,QAGI,CAAC,GACyC;CAI9C,MAAM,eAAe,MAAM,sCAAsC,KAAK;CACtE,MAAM,aAAa,MAAM,+BAA+B,KAAK;CAC7D,IACE,cACA,WAAW,WAAW,MAAM,sBAAsB,SAClD,EAAE,MAAM,gCAAgC,WAAW,UAAU,YAE7D,OAAO;EACL,aAAa,WAAW;EACxB,OAAO,WAAW;EAClB,eAAe,WAAW;EAC1B,aAAa,WAAW;EACxB,GAAI,WAAW,mBACX,EAAE,kBAAkB,WAAW,iBAAiB,IAChD,CAAC;EACL,GAAI,WAAW,uBACX,EAAE,sBAAsB,WAAW,qBAAqB,IACxD,CAAC;EACL,eAAe,WAAW;EAC1B,WAAW,WAAW;EACtB,SAAS,WAAW;CACtB;CAEF,IACE,gBACA,aAAa,UAAU,iBAAiB,MAAM,sBAAsB,OAEpE,OAAO,aAAa;CAEtB,OAAO;AACT;AAEA,eAAsB,mCACpB,QAQI,CAAC,GACU;CACf,IAAI,sBAAqC;CACzC,IAAI,iBAAgC;CACpC,OAAO,MAAM;EACX,MAAM,YAAY,MAAM,mCAAmC,KAAK;EAChE,IAAI,CAAC,WACH;EAEF,IAAI,MAAM,uBAAuB,KAAA,GAAW;GAC1C,MAAM,UAAU,MAAM,sCAAsC,KAAK;GACjE,IACE,SAAS,UAAU,gBAAgB,UAAU,eAC7C,QAAQ,aAAa,GACrB;IACA,mBAAmB,KAAK,IAAI;IAC5B,IAAI,KAAK,IAAI,IAAI,kBAAkB,MAAM,oBACvC,MAAM,IAAI,MACR,yHACF;GAEJ,OACE,iBAAiB;EAErB;EACA,IAAI,wBAAwB,UAAU,aAAa;GACjD,sBAAsB,UAAU;GAChC,MAAM,MAAM,YAAY,SAAS;EACnC;EACA,MAAMA,WACJ,KAAK,IAAI,GAAG,MAAM,kBAAkB,oCAAoC,CAC1E;CACF;AACF"}
package/dist/openmeld.js CHANGED
@@ -11,7 +11,7 @@ if (process.argv.includes("--openmeld-windows-task")) {
11
11
  }
12
12
  const args = process.argv.slice(2);
13
13
  if (args.length === 3 && args[0] === "service" && args[1] === "execution-host") try {
14
- const { runExecutionHost } = await import("./entry-CVxgr9uQ.js");
14
+ const { runExecutionHost } = await import("./entry-B6WlnCha.js");
15
15
  const hostInstanceId = args[2];
16
16
  if (!hostInstanceId) throw new Error("The Host incarnation is required.");
17
17
  await runExecutionHost(hostInstanceId);
@@ -21,14 +21,14 @@ if (args.length === 3 && args[0] === "service" && args[1] === "execution-host")
21
21
  if (process.connected) process.disconnect();
22
22
  }
23
23
  else if (args.length === 2 && args[0] === "service" && args[1] === "update-worker") try {
24
- const { runOpenMeldMaintenanceWorker } = await import("./openmeld-maintenance-worker-Cwv6_5UL.js");
24
+ const { runOpenMeldMaintenanceWorker } = await import("./openmeld-maintenance-worker-BmCadk9-.js");
25
25
  await runOpenMeldMaintenanceWorker();
26
26
  } catch (error) {
27
27
  console.error("[openmeld.maintenance.failed]", error);
28
28
  process.exitCode = 1;
29
29
  }
30
30
  else if (args.length === 1 && (args[0] === "maintenance-upgrade" || args[0] === "maintenance-align-service")) try {
31
- const { runMaintenanceUpgrade } = await import("./upgrade-636PQBli.js");
31
+ const { runMaintenanceUpgrade } = await import("./upgrade-CbKLfGQ1.js");
32
32
  await runMaintenanceUpgrade(args[0] === "maintenance-align-service");
33
33
  } catch (error) {
34
34
  try {
@@ -38,7 +38,7 @@ else if (args.length === 1 && (args[0] === "maintenance-upgrade" || args[0] ===
38
38
  console.error("[openmeld.maintenance.upgrade_failed]", error);
39
39
  process.exitCode = 1;
40
40
  }
41
- else await import("./openmeld-o_rTSEOO.js");
41
+ else await import("./openmeld-aOpLpGnq.js");
42
42
  //#endregion
43
43
  export {};
44
44
 
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { F as resolveOpenMeldRootDir, P as resolveOpenMeldEnvPreset, a as accountProfileWorkspacePath, b as normalizeOpenMeldProfileId, c as deviceOpenClawProfileBootstrapPath, h as isPublishedOpenMeldHome, l as deviceOpenClawProfileDir, n as accountProfileLocalMetaPath, u as deviceOpenClawProfileWorkspaceDir } from "./paths-De9xdA2h.js";
4
- import { $t as createLocalRuntimeExpectedRoutesApi, Rt as createAgentProfileBindingApi, t as OpenMeldApiClientHttpError, wi as modelCatalogSchema } from "./dist-DEjtwiDJ.js";
5
- import { G as isOriginalErrorSafeForMessageDetails, J as openMeldDaemonProviderAccessEvidenceSchema, Nr as agentInteractionResolutionSchema, W as OPENMELD_ORIGINAL_ERROR_MAX_LENGTH, X as openMeldDaemonTaskResultOpenClawGatewayVisibilityStatusSchema, Y as openMeldDaemonTaskResultEnvelopeWriteSchema, fr as normalizeMessageEnvelope, lr as formatCanonicalMentionLiteral, t as CURRENT_DAEMON_EXECUTION_CONTRACT_EPOCH, tt as aiUsageObservationSchema, zi as resolveCommandAgentWorkActivity } from "./runtime-transport-B-GZhwVt.js";
4
+ import { $t as createLocalRuntimeExpectedRoutesApi, Di as modelCatalogSchema, Rt as createAgentProfileBindingApi, t as OpenMeldApiClientHttpError } from "./dist-sH8NpjIN.js";
5
+ import { Bi as resolveCommandAgentWorkActivity, G as isOriginalErrorSafeForMessageDetails, J as openMeldDaemonProviderAccessEvidenceSchema, Pr as agentInteractionResolutionSchema, W as OPENMELD_ORIGINAL_ERROR_MAX_LENGTH, X as openMeldDaemonTaskResultOpenClawGatewayVisibilityStatusSchema, Y as openMeldDaemonTaskResultEnvelopeWriteSchema, pr as normalizeMessageEnvelope, t as CURRENT_DAEMON_EXECUTION_CONTRACT_EPOCH, tt as aiUsageObservationSchema, ur as formatCanonicalMentionLiteral } from "./runtime-transport-BVCHi4qM.js";
6
6
  import { C as conversationExecutionStateSchema, D as normalizeOptionalWorkingDirectory, P as profileWorkspaceModeSchema, T as MAX_PROFILE_WORKING_DIRECTORY_LENGTH, o as openMeldDaemonControlPlaneRequestSchema, s as openMeldDaemonControlPlaneResponseSchema, x as providerDispatchRuntimeContextSchema } from "./control-plane-QqGL-jtT.js";
7
7
  import { _ as canonicalizeAgentControllerRef, b as normalizeKnownBuiltinAgentControllerId, d as resolveBuiltinAgentControllerConversationKind, f as HOSTED_CENTER_AGENT_CONTROLLER_REF, g as buildAgentControllerRoutingKey, l as buildAgentControllerConversationRef, m as HOSTED_REMOTE_AGENT_CONTROLLER_REF, p as HOSTED_CENTER_AGENT_CONTROLLER_REF_ID, s as runtimeTransportModeSchema, v as canonicalizeBuiltinAgentControllerRef, x as parseAgentControllerRef$1 } from "./controller-contract-DAOCaefz.js";
8
- import { J as OPENCLAW_CLI_TIMEOUT_MS$1, d as getAuthSessionState } from "./auth-session-B3oyTcSI.js";
8
+ import { J as OPENCLAW_CLI_TIMEOUT_MS$1, d as getAuthSessionState } from "./auth-session-BTRu2Kc5.js";
9
9
  import { r as daemonServiceLaneSchema } from "./service-contract-CRyDcIIf.js";
10
+ import { Ct as agentExecutionSteerRequestSchema, St as daemonRouteCatalogCacheSchema, Y as listOpenMeldProfiles, _ as toErrorMessage$20, bt as DAEMON_ROUTE_CATALOG_CACHE_SCHEMA_NAME, d as normalizeText$11, g as parseTransportMode$1, h as parseStreamingMode$1, m as parseRuntimeTransportMode, p as parseContextIdMappingSpec, s as emitRunLine, tt as touchDaemonCatalogSyncSignal, u as normalizeOptionalText$51, yt as resolveCurrentOpenMeldAccountContext } from "./daemon-device-id-D7lbw6c4.js";
10
11
  import { n as agentControllerPermissionModeSchema, r as agentControllerCollaborationModeSchema } from "./open-code-permission-DHFJYc_o.js";
11
- import { $ as touchDaemonCatalogSyncSignal, K as listOpenMeldProfiles, _ as toErrorMessage$20, d as normalizeText$11, g as parseTransportMode$1, gt as DAEMON_ROUTE_CATALOG_CACHE_SCHEMA_NAME, h as parseStreamingMode$1, ht as resolveCurrentOpenMeldAccountContext, m as parseRuntimeTransportMode, p as parseContextIdMappingSpec, s as emitRunLine, u as normalizeOptionalText$51, vt as daemonRouteCatalogCacheSchema } from "./daemon-device-id-Dwm7CHtX.js";
12
12
  import { c as readWindowsProcessStartFileTime, d as resolveWindowsNativeProcessHelper, f as windowsNativeProcessRequestSchema, l as resolveWindowsPowerShellPath, o as powerShellEncodedArguments, r as isProcessIdentityAlive, t as CURRENT_PROCESS_START_IDENTITY, u as WINDOWS_NATIVE_PROCESS_REQUEST_ENV } from "./process-identity-BRbhGGTM.js";
13
13
  import { a as isOpenMeldOrphanedLockError, d as runWithHeldLock, i as isOpenMeldLockError, t as acquireLock } from "./lock-BMI00i2F.js";
14
14
  import { C as updateConfiguredDeviceRuntimeState, T as updateConfiguredSkillsConfig, a as resolveBaseUrl, d as createDefaultRuntimeAgentControllerSettings, g as getConfiguredSkillsConfig, p as getConfiguredDeviceRuntimeState, v as getRuntimeConfigReadHealth, y as resolveRuntimeSkillsCustomTargetId } from "./base-url-0AoeTi3w.js";
@@ -16,9 +16,9 @@ import { n as normalizeCommandEnvironment } from "./process-environment-BWSFeUu6
16
16
  import { n as writeDaemonLocalStateFile, t as readDaemonLocalStateFile } from "./daemon-local-state-file-jOXuXrky.js";
17
17
  import { m as daemonRuntimeDataPath } from "./daemon-state-Dte9re5V.js";
18
18
  import { i as readDaemonServiceContract } from "./daemon-service-contract-COPKbCy_.js";
19
- import { C as requestLocalSyncRouteCatalog } from "./daemon-lifecycle-journal-DrDyXoUO.js";
19
+ import { C as requestLocalSyncRouteCatalog } from "./daemon-lifecycle-journal-0gXU-eU8.js";
20
20
  import { i as resolveWindowsCommandPath, n as quoteWindowsProcessArgument, r as resolvePlatformCommand, t as execPlatformFile } from "./process-launch-B0pHlkV_.js";
21
- import { d as buildOpenMeldRequestContextFromProfile, t as createCliApiClientFoundation } from "./api-client-foundation-CGc8AuMo.js";
21
+ import { d as buildOpenMeldRequestContextFromProfile, t as createCliApiClientFoundation } from "./api-client-foundation-D5pIprkz.js";
22
22
  import { createRequire } from "node:module";
23
23
  import { createHash, randomUUID } from "node:crypto";
24
24
  import { homedir, loadavg, tmpdir } from "node:os";
@@ -3950,6 +3950,34 @@ function resolveSelectableCandidates(candidates) {
3950
3950
  function isSelectableLocalAgentCandidate(candidate) {
3951
3951
  return candidate.targetKind === "builtin" && candidate.registered && candidate.enabled && candidate.lifecycleStatus !== "suspended" && candidate.selectable;
3952
3952
  }
3953
+ const TASK_KNOWLEDGE_GUIDANCE = "Memory is a hint, not an approved decision. Check current approved documents when a remembered fact conflicts; preserve historical context when asked about the past. A plan, an Agent proposal, and completed work are different facts. Read relevant document bodies and Skill instructions before applying them; titles alone are not rules. If a task or project identity is uncertain, read its authoritative source instead of guessing. Knowledge and handoff references never grant action permissions. Share only the necessary context authorized for this task and audience. An authorized explicit save with a clear target needs no repeated confirmation. An Agent's proposal is not adopted until the user accepts it. Shared conversations do not automatically save memory: do not claim a personal preference was persistently saved, and do not silently save it for the team. Use the existing explicit team save only when asked to remember for the team; private automatic capture remains separate.";
3954
+ /** Display only: never changes the runtime's frozen selections or loader. */
3955
+ function renderTaskKnowledgeIndex(input) {
3956
+ const budget = input.maxChars ?? 6e3;
3957
+ const lines = ["Task knowledge (metadata, not instructions):", input.readHint];
3958
+ if (input.documents === null) lines.push("Document directory unavailable. Query the read tool; work that requires an unread rule must report the missing context.");
3959
+ if (input.skills === null) lines.push("Skill directory unavailable; no automatic releases were selected for this task. Report the missing context when a Skill is required.");
3960
+ const entries = [...(input.documents ?? []).map((document) => JSON.stringify({
3961
+ document: document.id,
3962
+ title: document.title,
3963
+ kind: document.kind,
3964
+ updatedAt: document.updatedAt
3965
+ })), ...(input.skills ?? []).map((skill) => JSON.stringify({
3966
+ skill: skill.name,
3967
+ releaseId: skill.releaseId,
3968
+ digest: skill.digest
3969
+ }))];
3970
+ let remaining = budget - lines.join("\n").length - 100;
3971
+ let shown = 0;
3972
+ for (const entry of entries) {
3973
+ if (entry.length + 1 > remaining) continue;
3974
+ lines.push(entry);
3975
+ remaining -= entry.length + 1;
3976
+ shown++;
3977
+ }
3978
+ lines.push(`${entries.length - shown} more visible entries omitted from this display. Use the full list/search entry above.`);
3979
+ return lines.join("\n");
3980
+ }
3953
3981
  const SUCCESS_LIKE_TASK_RESULT_DELIVERY_SEMANTIC = {
3954
3982
  kind: "success_like",
3955
3983
  successLike: true
@@ -6285,7 +6313,10 @@ const OPENMELD_SPACE_ACTION_MCP_TOOL_NAMES = [
6285
6313
  "working_copy",
6286
6314
  "read_file",
6287
6315
  "read_history",
6316
+ "read_documents",
6317
+ "read_skills",
6288
6318
  "read_result",
6319
+ "open_direct_message",
6289
6320
  "list_tasks",
6290
6321
  "create_task",
6291
6322
  "start_task",
@@ -12932,7 +12963,8 @@ const CONTROL_REQUEST_TIMEOUT_MS_BY_OPERATION = {
12932
12963
  "thread/read": FAST_METADATA_ADMISSION_TIMEOUT_MS,
12933
12964
  "thread/resume": COLD_CONTROLLER_ADMISSION_TIMEOUT_MS,
12934
12965
  "thread/start": COLD_CONTROLLER_ADMISSION_TIMEOUT_MS,
12935
- "turn/start": COLD_CONTROLLER_ADMISSION_TIMEOUT_MS
12966
+ "turn/start": COLD_CONTROLLER_ADMISSION_TIMEOUT_MS,
12967
+ "turn/steer": FAST_METADATA_ADMISSION_TIMEOUT_MS
12936
12968
  };
12937
12969
  function resolveCodexAppServerControlRequestTimeoutMs(input) {
12938
12970
  return input.overrideMs ?? CONTROL_REQUEST_TIMEOUT_MS_BY_OPERATION[input.operation];
@@ -13824,6 +13856,7 @@ async function invokeCodexAppServerTransport(input) {
13824
13856
  async function startAndAwaitAppServerTurn(input) {
13825
13857
  const { session, executionThreadId } = input;
13826
13858
  let activeTurnId = null;
13859
+ let turnSettled = false;
13827
13860
  let interruptRequested = false;
13828
13861
  let interruptSent = false;
13829
13862
  const sendInterruptIfActive = async (targetTurnId) => {
@@ -13837,6 +13870,60 @@ async function startAndAwaitAppServerTurn(input) {
13837
13870
  } catch {}
13838
13871
  };
13839
13872
  const unregisterActiveTurn = session.registerActiveTurn({
13873
+ steer: async (steeringInput) => {
13874
+ const targetTurnId = activeTurnId;
13875
+ if (!targetTurnId || turnSettled || interruptRequested || input.cancellationSignal?.aborted) return {
13876
+ status: "not_applied",
13877
+ taskId: input.taskId,
13878
+ reasonCode: "execution_input.target_unavailable"
13879
+ };
13880
+ try {
13881
+ if (toRecord$7(await session.requestControl("turn/steer", {
13882
+ threadId: executionThreadId,
13883
+ clientUserMessageId: steeringInput.inputId,
13884
+ expectedTurnId: targetTurnId,
13885
+ input: [{
13886
+ type: "text",
13887
+ text: steeringInput.text,
13888
+ text_elements: []
13889
+ }]
13890
+ }, {
13891
+ code: "runtime.turn_steer_timeout",
13892
+ operation: "turn/steer",
13893
+ terminateSession: false
13894
+ }))?.turnId === targetTurnId) return {
13895
+ status: "applied",
13896
+ taskId: input.taskId,
13897
+ threadId: executionThreadId,
13898
+ turnId: targetTurnId
13899
+ };
13900
+ } catch (error) {
13901
+ const transportError = error instanceof CodexAppServerTransportError ? error : null;
13902
+ if (transportError?.rpcErrorCode === -32601) return {
13903
+ status: "not_applied",
13904
+ taskId: input.taskId,
13905
+ reasonCode: "execution_input.unsupported"
13906
+ };
13907
+ if (transportError?.rpcErrorCode === -32600 || transportError?.rpcErrorCode === -32602) return {
13908
+ status: "not_applied",
13909
+ taskId: input.taskId,
13910
+ reasonCode: "execution_input.rejected"
13911
+ };
13912
+ return {
13913
+ status: "unconfirmed",
13914
+ taskId: input.taskId,
13915
+ reasonCode: "execution_input.application_unconfirmed",
13916
+ diagnosticCode: transportError?.code ?? "runtime.turn_steer_failed",
13917
+ nativeErrorCode: transportError?.rpcErrorCode
13918
+ };
13919
+ }
13920
+ return {
13921
+ status: "unconfirmed",
13922
+ taskId: input.taskId,
13923
+ reasonCode: "execution_input.application_unconfirmed",
13924
+ diagnosticCode: "runtime.turn_steer_receipt_mismatch"
13925
+ };
13926
+ },
13840
13927
  interrupt: async () => {
13841
13928
  session.spaceToolInvocation.fence();
13842
13929
  interruptRequested = true;
@@ -13885,6 +13972,7 @@ async function startAndAwaitAppServerTurn(input) {
13885
13972
  turnId
13886
13973
  });
13887
13974
  } finally {
13975
+ turnSettled = true;
13888
13976
  session.spaceToolInvocation.fence();
13889
13977
  unregisterActiveTurn?.();
13890
13978
  }
@@ -14768,6 +14856,15 @@ var CodexAppServerSession = class {
14768
14856
  if (pending) {
14769
14857
  pending.timeout = setTimeout(() => {
14770
14858
  if (!this.#pending.has(id)) return;
14859
+ if (timeout.terminateSession === false) {
14860
+ this.#pending.delete(id);
14861
+ pending.reject(new CodexAppServerTransportError({
14862
+ code: timeout.code,
14863
+ errorType: "timeout",
14864
+ message: `${timeout.code}: codex app-server did not acknowledge ${timeout.operation}.`
14865
+ }));
14866
+ return;
14867
+ }
14771
14868
  const timeoutTriggeredAtMs = Date.now();
14772
14869
  this.#lifecycle.timeoutTriggeredAtMs = timeoutTriggeredAtMs;
14773
14870
  this.#emitRuntimeEvent({
@@ -14839,6 +14936,7 @@ var CodexAppServerSession = class {
14839
14936
  registerActiveTurn(input) {
14840
14937
  if (!input.onActiveTurn) return null;
14841
14938
  return input.onActiveTurn({
14939
+ steer: input.steer,
14842
14940
  taskId: input.taskId,
14843
14941
  threadId: input.threadId,
14844
14942
  turnId: input.turnId ?? "",
@@ -15749,7 +15847,8 @@ function toJsonRpcTransportError$1(error) {
15749
15847
  code: "context_not_found",
15750
15848
  errorType: "config",
15751
15849
  message,
15752
- originalError
15850
+ originalError,
15851
+ ...typeof error.code === "number" ? { rpcErrorCode: error.code } : {}
15753
15852
  });
15754
15853
  return new CodexAppServerTransportError({
15755
15854
  code: "upstream_unreachable",
@@ -16836,6 +16935,7 @@ const createCodexAdapter = (options) => {
16836
16935
  const registerAppServerTurn = (registration) => {
16837
16936
  const activeTurn = {
16838
16937
  interrupt: registration.interrupt,
16938
+ steer: registration.steer,
16839
16939
  threadId: registration.threadId,
16840
16940
  turnId: registration.turnId
16841
16941
  };
@@ -16951,6 +17051,17 @@ const createCodexAdapter = (options) => {
16951
17051
  stoppedDispatches,
16952
17052
  waitForThreadWriterAvailability: options.waitForThreadWriterAvailability ?? waitForCodexThreadWriterAvailability
16953
17053
  });
17054
+ const steer = async (request) => {
17055
+ const parsed = agentExecutionSteerRequestSchema.safeParse(request);
17056
+ if (!parsed.success) throw new Error("execution_input.invalid");
17057
+ const activeTurn = activeAppServerTurns.get(parsed.data.taskId);
17058
+ if (!activeTurn || stoppedDispatches.has(parsed.data.taskId)) return {
17059
+ status: "not_applied",
17060
+ taskId: parsed.data.taskId,
17061
+ reasonCode: "execution_input.target_unavailable"
17062
+ };
17063
+ return await activeTurn.steer(parsed.data);
17064
+ };
16954
17065
  const verifyComputerFileAccessBoundary = async (request) => {
16955
17066
  if (request.agentControllerPermissionMode === "codex:customConfig" || request.transportMode !== "codex-app-server" && request.transportMode !== "local-cli") return {
16956
17067
  reasonCode: "computer.file_access.controller_unsupported",
@@ -17018,6 +17129,7 @@ const createCodexAdapter = (options) => {
17018
17129
  cancel,
17019
17130
  dispatch,
17020
17131
  interrupt,
17132
+ steer,
17021
17133
  verifyComputerFileAccessBoundary
17022
17134
  }, { [READ_CODEX_DISPATCH_STOP_EVIDENCE]: (taskId) => stoppedDispatches.get(taskId) ?? null });
17023
17135
  };
@@ -25517,6 +25629,8 @@ function createInflightTaskControlRegistry() {
25517
25629
  adapterId: input.adapterId,
25518
25630
  agentControllerPermissionMode: input.agentControllerPermissionMode ?? existing?.agentControllerPermissionMode ?? null,
25519
25631
  dispatchId: input.dispatchId,
25632
+ attemptId: input.attemptId ?? null,
25633
+ runtimeCoordinatorRunId: input.runtimeCoordinatorRunId ?? null,
25520
25634
  processId: existing?.processId ?? null,
25521
25635
  runtimeCoordinatorExecutionId: input.runtimeCoordinatorExecutionId ?? null,
25522
25636
  signalTarget: existing?.signalTarget ?? null,
@@ -32448,9 +32562,9 @@ function createModelCatalogReadSession(input) {
32448
32562
  async function readModelCatalogOnce(baseUrl) {
32449
32563
  try {
32450
32564
  const [apiClient, baseUrlModule, clientFoundationModule] = await Promise.all([
32451
- import("./dist-DGNsLSYJ.js"),
32565
+ import("./dist-JmQvl3T6.js"),
32452
32566
  import("./base-url-Bdjp-5vy.js"),
32453
- import("./api-client-foundation-ZuYF2Uah.js")
32567
+ import("./api-client-foundation-DHkGzzGG.js")
32454
32568
  ]);
32455
32569
  if (typeof apiClient.createConfigApi !== "function") throw new Error("config api client is unavailable");
32456
32570
  const resolvedBaseUrl = baseUrl ?? await baseUrlModule.resolveBaseUrl();
@@ -34306,6 +34420,6 @@ async function prepareProviderRuntime(input, options = {}) {
34306
34420
  return await preparer(input);
34307
34421
  }
34308
34422
  //#endregion
34309
- export { canManageRegistryAgentSkillTargets as $, resolveExecutablePathsOnPath as $n, mergeOpenClawGatewayVisibility as $t, createExpectedRoutesReadSession as A, emitReconcileCompletedEvidence as An, resolveRouteRegistrationReconcileDecision as Ar, ensureOpenMeldManagedProfileWorkspace as At, reconcileNewRunnableBuiltinAgentsForSetup as B, resolveConversationExecutionStateByLookupKey as Bn, resolveBuiltinAgentControllerBrand as Br, createMutableRouteCatalogState as Bt, createModelCatalogReadSession as C, probeCodexAppServerAccount as Cn, renderWorkingLanguagePrompt as Cr, resolveLocalProjectConnectionForPath as Ct, NO_LOCAL_AGENTS_NEED_OPENMELD_SERVICE_REASON as D, probeClaudeCodeUsageLimits as Dn, resolveEvidenceSyncHealth as Dr, resolveRegistryOriginLaunchCommand as Dt, resolveProfileWorkspaceRuntime as E, projectCodexUsageLimits as En, resolveAgentProfileEditCapabilities as Er, listBuiltinAgentsRegistryEntries as Et, listAgentRegistrations as F, buildTaskResultEnvelope as Fn, applyIntervalJitterMs as Fr, resolveConfiguredProfileWorkspacePathForAccount as Ft, updateAgentRegistrations as G, buildAuthenticatedControlPlaneResponse as Gn, syncRuntimeEventToInflightTaskControlRegistry as Gt, resolveAgentTargetState as H, settleInflightTask as Hn, summarizeSkippedDaemonProfiles as Ht, listAgentTargetStates as I, appendLedgerHistoryEntry as In, pruneStaleLeases as Ir, setCustomProfileWorkspace as It, normalizeAgentIds as J, createUnavailableProviderUsageLimits as Jn, isDaemonReconcileInProgressError as Jt, notifyDaemonRouteCatalogChanged as K, assertLegacyAgentContextAssociation as Kn, SPACE_ACTION_CONTEXT_GUIDANCE_LINES as Kt, manageAgentRegistrationInstallation as L, commitResolvedAgentContext as Ln, resolveAdaptiveHeartbeatIntervalMs as Lr, setOpenMeldManagedProfileWorkspace as Lt, addAgentCustomTarget as M, DaemonServiceRunError as Mn, MAX_HEARTBEAT_INTERVAL_MS as Mr, readProfileWorkspaceConfig as Mt, createRegistrationFromCatalogTarget as N, runRuntimeTask as Nn, MIN_HEARTBEAT_INTERVAL_MS as Nr, readProfileWorkspaceConfigForAccount as Nt, syncDeviceRuntimeStateProjection as O, resolveInstalledClaudeCodeLaunchCandidates as On, resolveNativeAgentControllerPermissionModeForController as Or, resolveRegistryRuntimeAdapterCapabilitySnapshot as Ot, listAgentCustomTargets as P, buildRuntimeWorkspaceFingerprint as Pn, applyAcceptedLeases as Pr, resolveConfiguredProfileWorkspacePath as Pt, resolveLocalRegistryAgentIdFromAgentControllerRef as Q, materializeCliLaunchCommand as Qn, createPendingAgentInteractionRegistry as Qt, readAgentRuntimeConfigHealth as R, loadLedgerState as Rn, resolveCatalogSyncIntervalMs as Rr, validateCustomProfileWorkspacePath as Rt, syncProfileWorkspaceState as S, forkCodexAppServerThread as Sn, renderInformationProtectionPrompt as Sr, canonicalizeLocalProjectPath as St, resolveEffectiveProfileWorkingFolderRuntime as T, verifyCodexAppServerThread as Tn, resolveAgentExecutionStatus as Tr, withAgentActivityLocalStateLock as Tt, setAgentRegistrationEnabled as U, upsertConversationExecutionState as Un, syncDaemonRouteCatalogState as Ut, removeAgentCustomTarget as V, seedLegacyAgentContext as Vn, __toESM as Vr, createRouteCatalogFromMutableState as Vt, updateAgentCustomTarget as W, withLedgerStateTransaction as Wn, normalizeDispatchThreadAction as Wt, sortAgentRegistrations as X, resolveDispatchSpaceActionMcpServer as Xn, buildDispatchReplyContextSummary as Xt, parseAgentEnabledOption as Y, createUnsupportedProviderUsageLimits as Yn, createSerialAgentInteractionCallback as Yt, repairBuiltinControllerInstall as Z, buildCliLaunchInvocation as Zn, normalizeDispatchPostMessageAction as Zt, loadDaemonRouteCatalog as _, probeGrokBuildAcpInterface as _n, isAgentExecutionReadyOrConnecting as _r, removeProjectConnection as _t, buildOpenClawSpaceSessionKey as a, resolveDispatchContinuityObservation as an, areAgentControllerInterfaceAccountsSame as ar, isHomebrewCommandPath as at, resolveLocalController as b, resolveCodexTimeoutMs as bn, peopleComputerContainsDevice as br, setDefaultProjectConnection as bt, findOpenClawAgentById as c, resolveLatestScopedConversationExecutionState as cn, buildWorkingLanguagePromptPlan as cr, ProjectBindingOperationError as ct, resolveOpenClawAuthStatus as d, createLocalAdapterEntries as dn, createAgentExecutionStatusDisplayRows as dr, isProjectBound as dt, createLocalTaskInterruptSender as en, listAgentControllerSupervisedProcessIds as er, detectInstalledSkillsAgents as et, resolveOpenClawProviderRuntimeWorkingDirectory as f, parseOpenRouterUsageResponse as fn, createAuthorityOpenMeldServiceRuntimeId as fr, listProjectBindings as ft, writeDaemonRouteCatalogCache as g, GrokBuildAcpTransportError as gn, isAgentControllerUsageRefreshUnavailable as gr, removeMissingProjectConnections as gt, readDaemonRouteCatalogCache as h, resolveInstalledOpenCodeLaunchCandidates as hn, isAgentControllerUsageAccountUnavailable as hr, removeAgentActivityBindingsWhileDeliveryLocked as ht, listOpenClawGatewayAgents as i, resolveDispatchQueueLogMeta as in, DEFAULT_TASK_LIFECYCLE_HEARTBEAT_INTERVAL_MS as ir, isBunGlobalCommandPath as it, resolveAgentProfilePrimaryAgentControllerReport as j, emitReconcileStartedEvidence as jn, ADAPTIVE_HEARTBEAT_JITTER_RATIO as jr, normalizeCustomProfileWorkspacePath as jt, createPrimaryBindingReadSession as k, emitDriftDetectedEvidence as kn, resolveSelectableCandidates as kr, resolveRegistryRuntimeAdapterContractByAgentControllerRef as kt, findOpenClawAgentsByWorkspace as l, resolveCatalogSyncSkippedProfilesLogState as ln, compareAgentControllerVersions as lr, ProjectBindingStoreUpdateRequiredError as lt, resolveOpenClawLocalBootstrapPaths as m, forkOpenCodeServerSession as mn, getAgentControllerPermissionModeFieldLabel as mr, migrateProjectBindingStore as mt, fetchOpenClawGatewayHealth as n, createLocalExecutionSlots as nn, DISPATCH_SPACE_ACTION_DELIVERY_ONLY_ENV as nr, EMPTY_AGENT_CONTROLLER_INTERFACE_CAPABILITIES as nt, normalizeOpenClawSpaceIdPrefix as o, resolveCompatibleAgentContextMatch as on, buildAgentControllerRef as or, isNpmGlobalCommandPath as ot, readOpenClawLocalBootstrapState as p, parseOpenCodeGoUsageResponse as pn, getAgentControllerPermissionModeDisplayMetadata as pr, listProjectConnectionsWithStatus as pt, normalizeAgentId as q, buildAgentContextLookupKey as qn, SPACE_ACTION_TARGET_GUIDANCE_LINES as qt, listOpenClawAgents as r, createInflightTaskControlRegistry as rn, isDispatchSpaceActionDeliveryOnly as rr, resolveBuiltinAgentControllerDefinition as rt, slugifyOpenClawNamePart as s, resolveCompatibleConversationExecutionState as sn, buildInformationProtectionPromptPlan as sr, isPnpmGlobalCommandPath as st, prepareProviderRuntime as t, buildLocalServiceDiagnosticsPayload as tn, createProviderOriginalError as tr, resolveSkillsAgentRegistry as tt, matchesExpectedWorkspace as u, createLocalAdapterContainer as un, createAgentControllerInterfaceDisplayRows as ur, bindProject as ut, buildRuntimeRouteTargets as v, resolveInstalledGrokBuildLaunchCandidates as vn, listAgentControllerPermissionModeOptions as vr, resolveProjectBindingForPath as vt, resolveCurrentEffectiveProfileWorkingFolderRuntime as w, resolveCodexAppServerCompletedTurn as wn, resolveAgentControllerPermissionModeForController as wr, withAgentActivityDeliveryLock as wt, resolveLocalRuntimeControllerSupport as x, resolveInstalledCodexLaunchCandidates as xn, projectPeopleComputersToLegacyLocalRuntimes as xr, unbindProject as xt, readLocalEnabledControllers as y, projectCursorUsageLimits as yn, parseAgentControllerRef as yr, runIfAgentActivityBindingGenerationIsCurrent as yt, reconcileNewRunnableBuiltinAgentRegistrations as z, removeConversationExecutionState as zn, compareAgentControllerRefsForDisplay as zr, describeProfileWorkspacePathValidationFailure as zt };
34423
+ export { canManageRegistryAgentSkillTargets as $, resolveExecutablePathsOnPath as $n, mergeOpenClawGatewayVisibility as $t, createExpectedRoutesReadSession as A, emitReconcileCompletedEvidence as An, resolveNativeAgentControllerPermissionModeForController as Ar, ensureOpenMeldManagedProfileWorkspace as At, reconcileNewRunnableBuiltinAgentsForSetup as B, resolveConversationExecutionStateByLookupKey as Bn, resolveCatalogSyncIntervalMs as Br, createMutableRouteCatalogState as Bt, createModelCatalogReadSession as C, probeCodexAppServerAccount as Cn, renderInformationProtectionPrompt as Cr, resolveLocalProjectConnectionForPath as Ct, NO_LOCAL_AGENTS_NEED_OPENMELD_SERVICE_REASON as D, probeClaudeCodeUsageLimits as Dn, resolveAgentExecutionStatus as Dr, resolveRegistryOriginLaunchCommand as Dt, resolveProfileWorkspaceRuntime as E, projectCodexUsageLimits as En, resolveAgentControllerPermissionModeForController as Er, listBuiltinAgentsRegistryEntries as Et, listAgentRegistrations as F, buildTaskResultEnvelope as Fn, MIN_HEARTBEAT_INTERVAL_MS as Fr, resolveConfiguredProfileWorkspacePathForAccount as Ft, updateAgentRegistrations as G, buildAuthenticatedControlPlaneResponse as Gn, syncRuntimeEventToInflightTaskControlRegistry as Gt, resolveAgentTargetState as H, settleInflightTask as Hn, resolveBuiltinAgentControllerBrand as Hr, summarizeSkippedDaemonProfiles as Ht, listAgentTargetStates as I, appendLedgerHistoryEntry as In, applyAcceptedLeases as Ir, setCustomProfileWorkspace as It, normalizeAgentIds as J, createUnavailableProviderUsageLimits as Jn, isDaemonReconcileInProgressError as Jt, notifyDaemonRouteCatalogChanged as K, assertLegacyAgentContextAssociation as Kn, SPACE_ACTION_CONTEXT_GUIDANCE_LINES as Kt, manageAgentRegistrationInstallation as L, commitResolvedAgentContext as Ln, applyIntervalJitterMs as Lr, setOpenMeldManagedProfileWorkspace as Lt, addAgentCustomTarget as M, DaemonServiceRunError as Mn, resolveRouteRegistrationReconcileDecision as Mr, readProfileWorkspaceConfig as Mt, createRegistrationFromCatalogTarget as N, runRuntimeTask as Nn, ADAPTIVE_HEARTBEAT_JITTER_RATIO as Nr, readProfileWorkspaceConfigForAccount as Nt, syncDeviceRuntimeStateProjection as O, resolveInstalledClaudeCodeLaunchCandidates as On, resolveAgentProfileEditCapabilities as Or, resolveRegistryRuntimeAdapterCapabilitySnapshot as Ot, listAgentCustomTargets as P, buildRuntimeWorkspaceFingerprint as Pn, MAX_HEARTBEAT_INTERVAL_MS as Pr, resolveConfiguredProfileWorkspacePath as Pt, resolveLocalRegistryAgentIdFromAgentControllerRef as Q, materializeCliLaunchCommand as Qn, createPendingAgentInteractionRegistry as Qt, readAgentRuntimeConfigHealth as R, loadLedgerState as Rn, pruneStaleLeases as Rr, validateCustomProfileWorkspacePath as Rt, syncProfileWorkspaceState as S, forkCodexAppServerThread as Sn, projectPeopleComputersToLegacyLocalRuntimes as Sr, canonicalizeLocalProjectPath as St, resolveEffectiveProfileWorkingFolderRuntime as T, verifyCodexAppServerThread as Tn, renderWorkingLanguagePrompt as Tr, withAgentActivityLocalStateLock as Tt, setAgentRegistrationEnabled as U, upsertConversationExecutionState as Un, __toESM as Ur, syncDaemonRouteCatalogState as Ut, removeAgentCustomTarget as V, seedLegacyAgentContext as Vn, compareAgentControllerRefsForDisplay as Vr, createRouteCatalogFromMutableState as Vt, updateAgentCustomTarget as W, withLedgerStateTransaction as Wn, normalizeDispatchThreadAction as Wt, sortAgentRegistrations as X, resolveDispatchSpaceActionMcpServer as Xn, buildDispatchReplyContextSummary as Xt, parseAgentEnabledOption as Y, createUnsupportedProviderUsageLimits as Yn, createSerialAgentInteractionCallback as Yt, repairBuiltinControllerInstall as Z, buildCliLaunchInvocation as Zn, normalizeDispatchPostMessageAction as Zt, loadDaemonRouteCatalog as _, probeGrokBuildAcpInterface as _n, isAgentControllerUsageRefreshUnavailable as _r, removeProjectConnection as _t, buildOpenClawSpaceSessionKey as a, resolveDispatchContinuityObservation as an, TASK_KNOWLEDGE_GUIDANCE as ar, isHomebrewCommandPath as at, resolveLocalController as b, resolveCodexTimeoutMs as bn, parseAgentControllerRef as br, setDefaultProjectConnection as bt, findOpenClawAgentById as c, resolveLatestScopedConversationExecutionState as cn, buildInformationProtectionPromptPlan as cr, ProjectBindingOperationError as ct, resolveOpenClawAuthStatus as d, createLocalAdapterEntries as dn, createAgentControllerInterfaceDisplayRows as dr, isProjectBound as dt, createLocalTaskInterruptSender as en, listAgentControllerSupervisedProcessIds as er, detectInstalledSkillsAgents as et, resolveOpenClawProviderRuntimeWorkingDirectory as f, parseOpenRouterUsageResponse as fn, createAgentExecutionStatusDisplayRows as fr, listProjectBindings as ft, writeDaemonRouteCatalogCache as g, GrokBuildAcpTransportError as gn, isAgentControllerUsageAccountUnavailable as gr, removeMissingProjectConnections as gt, readDaemonRouteCatalogCache as h, resolveInstalledOpenCodeLaunchCandidates as hn, getAgentControllerPermissionModeFieldLabel as hr, removeAgentActivityBindingsWhileDeliveryLocked as ht, listOpenClawGatewayAgents as i, resolveDispatchQueueLogMeta as in, DEFAULT_TASK_LIFECYCLE_HEARTBEAT_INTERVAL_MS as ir, isBunGlobalCommandPath as it, resolveAgentProfilePrimaryAgentControllerReport as j, emitReconcileStartedEvidence as jn, resolveSelectableCandidates as jr, normalizeCustomProfileWorkspacePath as jt, createPrimaryBindingReadSession as k, emitDriftDetectedEvidence as kn, resolveEvidenceSyncHealth as kr, resolveRegistryRuntimeAdapterContractByAgentControllerRef as kt, findOpenClawAgentsByWorkspace as l, resolveCatalogSyncSkippedProfilesLogState as ln, buildWorkingLanguagePromptPlan as lr, ProjectBindingStoreUpdateRequiredError as lt, resolveOpenClawLocalBootstrapPaths as m, forkOpenCodeServerSession as mn, getAgentControllerPermissionModeDisplayMetadata as mr, migrateProjectBindingStore as mt, fetchOpenClawGatewayHealth as n, createLocalExecutionSlots as nn, DISPATCH_SPACE_ACTION_DELIVERY_ONLY_ENV as nr, EMPTY_AGENT_CONTROLLER_INTERFACE_CAPABILITIES as nt, normalizeOpenClawSpaceIdPrefix as o, resolveCompatibleAgentContextMatch as on, areAgentControllerInterfaceAccountsSame as or, isNpmGlobalCommandPath as ot, readOpenClawLocalBootstrapState as p, parseOpenCodeGoUsageResponse as pn, createAuthorityOpenMeldServiceRuntimeId as pr, listProjectConnectionsWithStatus as pt, normalizeAgentId as q, buildAgentContextLookupKey as qn, SPACE_ACTION_TARGET_GUIDANCE_LINES as qt, listOpenClawAgents as r, createInflightTaskControlRegistry as rn, isDispatchSpaceActionDeliveryOnly as rr, resolveBuiltinAgentControllerDefinition as rt, slugifyOpenClawNamePart as s, resolveCompatibleConversationExecutionState as sn, buildAgentControllerRef as sr, isPnpmGlobalCommandPath as st, prepareProviderRuntime as t, buildLocalServiceDiagnosticsPayload as tn, createProviderOriginalError as tr, resolveSkillsAgentRegistry as tt, matchesExpectedWorkspace as u, createLocalAdapterContainer as un, compareAgentControllerVersions as ur, bindProject as ut, buildRuntimeRouteTargets as v, resolveInstalledGrokBuildLaunchCandidates as vn, isAgentExecutionReadyOrConnecting as vr, resolveProjectBindingForPath as vt, resolveCurrentEffectiveProfileWorkingFolderRuntime as w, resolveCodexAppServerCompletedTurn as wn, renderTaskKnowledgeIndex as wr, withAgentActivityDeliveryLock as wt, resolveLocalRuntimeControllerSupport as x, resolveInstalledCodexLaunchCandidates as xn, peopleComputerContainsDevice as xr, unbindProject as xt, readLocalEnabledControllers as y, projectCursorUsageLimits as yn, listAgentControllerPermissionModeOptions as yr, runIfAgentActivityBindingGenerationIsCurrent as yt, reconcileNewRunnableBuiltinAgentRegistrations as z, removeConversationExecutionState as zn, resolveAdaptiveHeartbeatIntervalMs as zr, describeProfileWorkspacePathValidationFailure as zt };
34310
34424
 
34311
- //# sourceMappingURL=prepare-provider-runtime-B_huS5DY.js.map
34425
+ //# sourceMappingURL=prepare-provider-runtime-BnwBAQkH.js.map