vibe64 0.1.26 → 0.1.28

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 (111) hide show
  1. package/dist/assets/{VRadioGroup-D6WRdUau.js → VRadioGroup-BuRMvs7d.js} +1 -1
  2. package/dist/assets/{VTabs-BGX5dGoS.js → VTabs-CQq9CAuT.js} +1 -1
  3. package/dist/assets/{VTextarea-CD6H_mtJ.js → VTextarea-Duvzvmjq.js} +1 -1
  4. package/dist/assets/{Vibe64AsyncModuleState-Cel3OePx.js → Vibe64AsyncModuleState-DuuzlJDp.js} +1 -1
  5. package/dist/assets/{Vibe64AuthSettingsButton-CMMeacsl.js → Vibe64AuthSettingsButton-CKOCL-kl.js} +1 -1
  6. package/dist/assets/{Vibe64DashboardShell-C2UhX2ke.js → Vibe64DashboardShell-DMT8aOp1.js} +1 -1
  7. package/dist/assets/{Vibe64DatabaseWorkspace-C43TE5-O.js → Vibe64DatabaseWorkspace-CqH0zfFZ.js} +1 -1
  8. package/dist/assets/{Vibe64OutputControls-BmzH2ASf.js → Vibe64OutputControls-DDILWOYb.js} +1 -1
  9. package/dist/assets/{Vibe64RepositoryWorkspace-CT9tkvHh.js → Vibe64RepositoryWorkspace-D11BZHtF.js} +1 -1
  10. package/dist/assets/Vibe64SessionFiles-BSoB7Xrs.js +1 -0
  11. package/dist/assets/{Vibe64SessionFiles-CH5PCxwg.css → Vibe64SessionFiles-DVux69YS.css} +1 -1
  12. package/dist/assets/{Vibe64SubsystemsView-DNx-pZp8.js → Vibe64SubsystemsView-tLlxmK3M.js} +1 -1
  13. package/dist/assets/{Vibe64SystemWorldView-UdNJZbqX.js → Vibe64SystemWorldView-8og8TPyL.js} +1 -1
  14. package/dist/assets/{_sessionId_-DZTmI19N.js → _sessionId_-Dts6gv4W.js} +1 -1
  15. package/dist/assets/{_sessionTool_-CugJWIK4.js → _sessionTool_-bHJUlHCW.js} +1 -1
  16. package/dist/assets/_slug_-B3fqw8Sl.js +12 -0
  17. package/dist/assets/_slug_-DfHqx2_b.css +1 -0
  18. package/dist/assets/{dashboard-D4NXqPY1.js → dashboard-CcD6GIaB.js} +1 -1
  19. package/dist/assets/{definitions-CyUCoqu-.js → definitions-ChGXm26a.js} +1 -1
  20. package/dist/assets/{error-kYKTA8fu.js → error-CStS-Kbt.js} +1 -1
  21. package/dist/assets/{index-hy7AAm-B.js → index-B262pg9q.js} +1 -1
  22. package/dist/assets/{index-DX6Rm6jZ.js → index-B_grpOta.js} +1 -1
  23. package/dist/assets/{index-Cpt19GIW.js → index-BtHA_DX9.js} +1 -1
  24. package/dist/assets/{index-SBc6H2In.js → index-C4KnwA0g.js} +4 -4
  25. package/dist/assets/{index-DeRx59Iq.js → index-CC7BFJAg.js} +1 -1
  26. package/dist/assets/{index-6Kv-7k0S.js → index-CKFrWxnr.js} +1 -1
  27. package/dist/assets/{index-BDe3NnFP.js → index-CPG-_bMW.js} +1 -1
  28. package/dist/assets/{index-CuEZOpKL.js → index-CV9pOpbQ.js} +1 -1
  29. package/dist/assets/{index-D4p1hWbM.js → index-DIQxSy1c.js} +1 -1
  30. package/dist/assets/{index-D5vnCntG.js → index-DVaJ8fEr.js} +1 -1
  31. package/dist/assets/{index-BGu7hfTb.js → index-DtGqjUin.js} +1 -1
  32. package/dist/assets/{index-Cca4WXur.js → index-YQALXwL4.js} +1 -1
  33. package/dist/assets/{placement-Nw6LF6xp.js → placement-Cyt3SnRe.js} +1 -1
  34. package/dist/assets/{studioGateApi-B2eiydiA.js → studioGateApi-BwBnOYBp.js} +1 -1
  35. package/dist/assets/{useArchivedVibe64Sessions-LeGda1Y9.js → useArchivedVibe64Sessions-_FKt1-qN.js} +1 -1
  36. package/dist/assets/{useVibe64ConversationLog-BPyKYbvH.js → useVibe64ConversationLog-BjnpqM9K.js} +1 -1
  37. package/dist/assets/{useVibe64ProjectScope-n5T5l2pY.js → useVibe64ProjectScope-DcDkjbLT.js} +1 -1
  38. package/dist/assets/{useVibe64SessionData-BToODuTg.js → useVibe64SessionData-BHLSmuPm.js} +1 -1
  39. package/dist/assets/{useVibe64SessionSelection-D1wXIWTm.js → useVibe64SessionSelection-G6KQKJxb.js} +1 -1
  40. package/dist/assets/{vibe64RepositoryRealtime-Xo7aIksE.js → vibe64RepositoryRealtime-C2WPn5do.js} +1 -1
  41. package/dist/assets/{vibe64SessionInfo-Dy_4bL3a.js → vibe64SessionInfo-8kuxgD5r.js} +1 -1
  42. package/dist/assets/{vibe64SessionPanelModel-5UED-6V-.js → vibe64SessionPanelModel-DDaXjAJ_.js} +1 -1
  43. package/dist/assets/{vibe64SessionRequestConfig-B7Llggdb.js → vibe64SessionRequestConfig-uGWcyQY6.js} +1 -1
  44. package/dist/assets/{vibe64SessionToolDefinitions-C4maKOfp.js → vibe64SessionToolDefinitions-D5CgOIqa.js} +1 -1
  45. package/dist/assets/{vueRefOrGetterValue-_KqAOFjr.js → vueRefOrGetterValue-CV9c3oBd.js} +1 -1
  46. package/dist/index.html +1 -1
  47. package/node_modules/@jskit-ai/connector-google-calendar/package.json +3 -3
  48. package/node_modules/@jskit-ai/connector-google-calendar/patterns/calendar-cli/example/package.json +4 -4
  49. package/node_modules/@jskit-ai/connectors-catalog/package.json +3 -3
  50. package/node_modules/@jskit-ai/connectors-catalog/test/dbt-semantic-layer.test.js +3 -0
  51. package/node_modules/@jskit-ai/connectors-catalog/test/google-ads.test.js +3 -0
  52. package/node_modules/@jskit-ai/connectors-catalog/test/salesforce.test.js +3 -0
  53. package/node_modules/@jskit-ai/connectors-catalog/test/xero.test.js +3 -0
  54. package/node_modules/@jskit-ai/connectors-core/package.json +4 -4
  55. package/node_modules/@jskit-ai/http-web/package.json +6 -6
  56. package/node_modules/@jskit-ai/kernel/package.json +1 -1
  57. package/node_modules/@jskit-ai/kernel/server/runtime/fastifyBootstrap.js +50 -10
  58. package/node_modules/@jskit-ai/kernel/server/runtime/fastifyBootstrap.test.js +38 -0
  59. package/node_modules/@jskit-ai/kernel/shared/support/normalize.js +8 -0
  60. package/node_modules/@jskit-ai/kernel/shared/support/normalize.test.js +10 -0
  61. package/node_modules/@jskit-ai/payments-core/package.json +1 -1
  62. package/node_modules/@jskit-ai/realtime/package.json +3 -3
  63. package/node_modules/@jskit-ai/realtime/patterns/realtime-application/example/package.json +2 -2
  64. package/node_modules/@jskit-ai/resource-core/package.json +2 -2
  65. package/node_modules/@jskit-ai/resource-crud-core/package.json +3 -3
  66. package/node_modules/@jskit-ai/shell-web/package.json +2 -2
  67. package/node_modules/@jskit-ai/uploads-runtime/package.json +2 -2
  68. package/node_modules/@local/current-app/package.json +1 -1
  69. package/node_modules/@local/main/package.json +2 -2
  70. package/node_modules/@local/studio-health/package.json +1 -1
  71. package/node_modules/@local/vibe64-accounts/package.json +3 -3
  72. package/node_modules/@local/vibe64-core/package.json +1 -1
  73. package/node_modules/@local/vibe64-database-tools/package.json +3 -3
  74. package/node_modules/@local/vibe64-project/package.json +1 -1
  75. package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProvider.js +34 -0
  76. package/node_modules/@local/vibe64-sessions/package.json +1 -1
  77. package/node_modules/@local/vibe64-sessions/src/server/sessionRenewal.js +4 -1
  78. package/node_modules/@local/vibe64-source-editor/package.json +5 -5
  79. package/node_modules/@local/vibe64-system-graph/package.json +3 -3
  80. package/node_modules/@local/vibe64-terminals/package.json +2 -2
  81. package/node_modules/@local/vibe64-terminals/src/server/agent/providers/codexSessionAgentProvider.js +6 -0
  82. package/node_modules/@local/vibe64-terminals/src/server/agent/sessionAgentManager.js +16 -0
  83. package/node_modules/@local/vibe64-terminals/src/server/codexTerminal.js +180 -64
  84. package/node_modules/@local/vibe64-terminals/src/server/registerRoutes.js +12 -0
  85. package/node_modules/@local/vibe64-terminals/src/server/service.js +57 -16
  86. package/node_modules/@local/vibe64-terminals/src/server/sessionPromptHints.js +9 -1
  87. package/node_modules/@local/vibe64-terminals/src/server/sessionSaveCommitMessage.js +1 -1
  88. package/package.json +15 -15
  89. package/packages/current-app/package.json +1 -1
  90. package/packages/main/package.json +2 -2
  91. package/packages/studio-health/package.json +1 -1
  92. package/packages/vibe64-accounts/package.json +3 -3
  93. package/packages/vibe64-core/package.json +1 -1
  94. package/packages/vibe64-database-tools/package.json +3 -3
  95. package/packages/vibe64-project/package.json +1 -1
  96. package/packages/vibe64-runtime/src/server/codexAppServerProvider.js +34 -0
  97. package/packages/vibe64-sessions/package.json +1 -1
  98. package/packages/vibe64-sessions/src/server/sessionRenewal.js +4 -1
  99. package/packages/vibe64-source-editor/package.json +5 -5
  100. package/packages/vibe64-system-graph/package.json +3 -3
  101. package/packages/vibe64-terminals/package.json +2 -2
  102. package/packages/vibe64-terminals/src/server/agent/providers/codexSessionAgentProvider.js +6 -0
  103. package/packages/vibe64-terminals/src/server/agent/sessionAgentManager.js +16 -0
  104. package/packages/vibe64-terminals/src/server/codexTerminal.js +180 -64
  105. package/packages/vibe64-terminals/src/server/registerRoutes.js +12 -0
  106. package/packages/vibe64-terminals/src/server/service.js +57 -16
  107. package/packages/vibe64-terminals/src/server/sessionPromptHints.js +9 -1
  108. package/packages/vibe64-terminals/src/server/sessionSaveCommitMessage.js +1 -1
  109. package/dist/assets/Vibe64SessionFiles-BS5MW7Qz.js +0 -1
  110. package/dist/assets/_slug_-BzRzebKA.js +0 -12
  111. package/dist/assets/_slug_-Q7ibe3SE.css +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibe64",
3
- "version": "0.1.26",
3
+ "version": "0.1.28",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "workspaces": [
@@ -90,9 +90,9 @@
90
90
  "jskit:check": "jskit check"
91
91
  },
92
92
  "dependencies": {
93
- "@jskit-ai/connectors-core": "0.1.1",
94
- "@jskit-ai/connectors-web": "0.1.1",
95
- "@jskit-ai/connector-google-calendar": "0.1.1",
93
+ "@jskit-ai/connectors-core": "0.1.4",
94
+ "@jskit-ai/connectors-web": "0.1.4",
95
+ "@jskit-ai/connector-google-calendar": "0.1.4",
96
96
  "@codemirror/commands": "^6.10.4",
97
97
  "@codemirror/lang-cpp": "^6.0.3",
98
98
  "@codemirror/lang-html": "^6.4.11",
@@ -106,12 +106,12 @@
106
106
  "@codemirror/view": "^6.43.4",
107
107
  "@fastify/static": "^9.1.1",
108
108
  "@fastify/websocket": "^11.2.0",
109
- "@jskit-ai/http-runtime": "0.1.182",
110
- "@jskit-ai/http-web": "0.1.29",
111
- "@jskit-ai/kernel": "0.1.184",
112
- "@jskit-ai/realtime": "0.1.181",
113
- "@jskit-ai/shell-web": "0.1.188",
114
- "@jskit-ai/uploads-runtime": "0.1.159",
109
+ "@jskit-ai/http-runtime": "0.1.185",
110
+ "@jskit-ai/http-web": "0.1.32",
111
+ "@jskit-ai/kernel": "0.1.187",
112
+ "@jskit-ai/realtime": "0.1.184",
113
+ "@jskit-ai/shell-web": "0.1.191",
114
+ "@jskit-ai/uploads-runtime": "0.1.162",
115
115
  "@local/current-app": "0.1.0",
116
116
  "@local/main": "0.1.0",
117
117
  "@local/studio-health": "0.1.0",
@@ -152,13 +152,13 @@
152
152
  "vue-router": "5.0.7",
153
153
  "vuetify": "^4.0.0",
154
154
  "ws": "^8.20.1",
155
- "@jskit-ai/connectors-catalog": "0.1.1",
156
- "@jskit-ai/payments-core": "0.1.1"
155
+ "@jskit-ai/connectors-catalog": "0.1.4",
156
+ "@jskit-ai/payments-core": "0.1.4"
157
157
  },
158
158
  "devDependencies": {
159
- "@jskit-ai/agent-docs": "0.1.156",
160
- "@jskit-ai/config-eslint": "0.1.181",
161
- "@jskit-ai/jskit-catalog": "0.1.209",
159
+ "@jskit-ai/agent-docs": "0.1.159",
160
+ "@jskit-ai/config-eslint": "0.1.184",
161
+ "@jskit-ai/jskit-catalog": "0.1.212",
162
162
  "@playwright/test": "1.61.1",
163
163
  "@vitejs/plugin-vue": "^5.2.1",
164
164
  "eslint": "^10.8.0",
@@ -48,7 +48,7 @@
48
48
  }
49
49
  },
50
50
  "dependencies": {
51
- "@jskit-ai/kernel": "0.1.184",
51
+ "@jskit-ai/kernel": "0.1.187",
52
52
  "@local/vibe64-core": "0.1.0",
53
53
  "@local/vibe64-genesis": "0.1.0",
54
54
  "@local/vibe64-project": "0.1.0",
@@ -28,7 +28,7 @@
28
28
  }
29
29
  },
30
30
  "dependencies": {
31
- "@jskit-ai/kernel": "0.1.184",
32
- "@jskit-ai/realtime": "0.1.181"
31
+ "@jskit-ai/kernel": "0.1.187",
32
+ "@jskit-ai/realtime": "0.1.184"
33
33
  }
34
34
  }
@@ -49,7 +49,7 @@
49
49
  }
50
50
  },
51
51
  "dependencies": {
52
- "@jskit-ai/kernel": "0.1.184",
52
+ "@jskit-ai/kernel": "0.1.187",
53
53
  "@local/vibe64-accounts": "0.1.0",
54
54
  "@local/vibe64-core": "0.1.0",
55
55
  "@local/vibe64-execution": "0.1.0",
@@ -61,9 +61,9 @@
61
61
  }
62
62
  },
63
63
  "dependencies": {
64
- "@jskit-ai/http-web": "0.1.29",
65
- "@jskit-ai/kernel": "0.1.184",
66
- "@jskit-ai/realtime": "0.1.181",
64
+ "@jskit-ai/http-web": "0.1.32",
65
+ "@jskit-ai/kernel": "0.1.187",
66
+ "@jskit-ai/realtime": "0.1.184",
67
67
  "@mdi/js": "^7.4.47",
68
68
  "@local/studio-terminal-core": "0.1.0",
69
69
  "@local/vibe64-core": "0.1.0",
@@ -98,7 +98,7 @@
98
98
  }
99
99
  },
100
100
  "dependencies": {
101
- "@jskit-ai/kernel": "0.1.184",
101
+ "@jskit-ai/kernel": "0.1.187",
102
102
  "@local/vibe64-execution": "0.1.0"
103
103
  }
104
104
  }
@@ -67,9 +67,9 @@
67
67
  "@codemirror/language": "^6.12.4",
68
68
  "@codemirror/state": "^6.7.0",
69
69
  "@codemirror/view": "^6.43.4",
70
- "@jskit-ai/http-web": "0.1.29",
71
- "@jskit-ai/kernel": "0.1.184",
72
- "@jskit-ai/shell-web": "0.1.188",
70
+ "@jskit-ai/http-web": "0.1.32",
71
+ "@jskit-ai/kernel": "0.1.187",
72
+ "@jskit-ai/shell-web": "0.1.191",
73
73
  "@local/vibe64-core": "0.1.0",
74
74
  "@local/vibe64-execution": "0.1.0",
75
75
  "@local/vibe64-project": "0.1.0",
@@ -57,7 +57,7 @@
57
57
  }
58
58
  },
59
59
  "dependencies": {
60
- "@jskit-ai/kernel": "0.1.184",
60
+ "@jskit-ai/kernel": "0.1.187",
61
61
  "@local/vibe64-core": "0.1.0",
62
62
  "@local/vibe64-execution": "0.1.0",
63
63
  "@local/vibe64-genesis": "0.1.0",
@@ -1480,6 +1480,19 @@ async function stopCodexAppServerRuntime(options = {}) {
1480
1480
  stopped: false
1481
1481
  };
1482
1482
  }
1483
+ const expectedAccount = normalizeAgentText(options.expectedAccountIdentitySignature);
1484
+ if (expectedAccount) {
1485
+ // A replacement runtime is installed only after the previous process has
1486
+ // drained under this same lock. Never stop that replacement for stale
1487
+ // ephemeral-thread cleanup.
1488
+ if (!codexAppServerProcessMetadataIsIdentifiable(existing, runtimeDir) ||
1489
+ !/^sha256:[a-f0-9]{64}$/u.test(existing.accountIdentitySignature)) {
1490
+ return { processExitVerified: false, runtimeDirRemoved: false, stopped: false };
1491
+ }
1492
+ if (existing.accountIdentitySignature !== expectedAccount) {
1493
+ return { ownershipSuperseded: true, processExitVerified: false, runtimeDirRemoved: false, stopped: false };
1494
+ }
1495
+ }
1483
1496
  processStop = await stopCodexAppServerProcess(runtimeDir, options);
1484
1497
  if (processStop.processExitVerified === true && preserveProcessExitProof) {
1485
1498
  const metadata = await readCodexAppServerMetadata(runtimeDir);
@@ -3650,6 +3663,25 @@ class CodexAppServerAgentProvider {
3650
3663
  };
3651
3664
  }
3652
3665
 
3666
+ async readGoal(threadId = "") {
3667
+ const client = await this.activeClient();
3668
+ return this.runRequest(
3669
+ () => client.request("thread/goal/get", { threadId: normalizeAgentText(threadId) }),
3670
+ "codex-app-server-goal-read"
3671
+ );
3672
+ }
3673
+
3674
+ async setGoalStatus(threadId = "", status = "") {
3675
+ if (!["active", "paused"].includes(status)) {
3676
+ throw new TypeError("Invalid Codex goal status.");
3677
+ }
3678
+ const client = await this.activeClient();
3679
+ return this.runRequest(
3680
+ () => client.request("thread/goal/set", { threadId: normalizeAgentText(threadId), status }),
3681
+ "codex-app-server-goal-status"
3682
+ );
3683
+ }
3684
+
3653
3685
  async readThread(threadId = "") {
3654
3686
  const client = await this.activeClient();
3655
3687
  const response = await this.runRequest(
@@ -3994,12 +4026,14 @@ class CodexAppServerAgentProvider {
3994
4026
  }
3995
4027
 
3996
4028
  async stopRuntime({
4029
+ expectedAccountIdentitySignature = "",
3997
4030
  preserveProcessExitProof = false
3998
4031
  } = {}) {
3999
4032
  this.close();
4000
4033
  const runtime = this.runtime || {};
4001
4034
  const result = await stopCodexAppServerRuntime({
4002
4035
  ...this.options,
4036
+ expectedAccountIdentitySignature,
4003
4037
  preserveProcessExitProof,
4004
4038
  runtimeDir: runtime.runtimeDir || this.options.runtimeDir
4005
4039
  });
@@ -50,7 +50,7 @@
50
50
  }
51
51
  },
52
52
  "dependencies": {
53
- "@jskit-ai/kernel": "0.1.184",
53
+ "@jskit-ai/kernel": "0.1.187",
54
54
  "@local/vibe64-core": "0.1.0",
55
55
  "@local/vibe64-execution": "0.1.0",
56
56
  "@local/vibe64-project": "0.1.0",
@@ -194,7 +194,10 @@ function manualDraftTemplate(terminals, basis = null) {
194
194
 
195
195
  function sessionHasActiveAgentRun(session = {}) {
196
196
  return (Array.isArray(session.agentRuns) ? session.agentRuns : [])
197
- .some((run) => vibe64AgentRunStateIsActive(run?.state));
197
+ .some((run) => vibe64AgentRunStateIsActive(run?.state) || (
198
+ run?.providerGoalStatus === "active" && run.providerGoalThreadId &&
199
+ run.providerGoalThreadId === run.providerThreadId
200
+ ));
198
201
  }
199
202
 
200
203
  function renewalAssistantSelectionMetadata(state = {}) {
@@ -58,16 +58,16 @@
58
58
  }
59
59
  },
60
60
  "dependencies": {
61
- "@jskit-ai/connectors-core": "0.1.1",
62
- "@jskit-ai/connectors-catalog": "0.1.1",
63
- "@jskit-ai/connector-google-calendar": "0.1.1",
64
- "@jskit-ai/kernel": "0.1.184",
61
+ "@jskit-ai/connectors-core": "0.1.4",
62
+ "@jskit-ai/connectors-catalog": "0.1.4",
63
+ "@jskit-ai/connector-google-calendar": "0.1.4",
64
+ "@jskit-ai/kernel": "0.1.187",
65
65
  "@local/vibe64-core": "0.1.0",
66
66
  "@local/vibe64-execution": "0.1.0",
67
67
  "@local/vibe64-project": "0.1.0",
68
68
  "@local/vibe64-runtime": "0.1.0",
69
69
  "@local/vibe64-terminals": "0.1.0",
70
70
  "@local/vibe64-genesis": "0.1.0",
71
- "@jskit-ai/payments-core": "0.1.1"
71
+ "@jskit-ai/payments-core": "0.1.4"
72
72
  }
73
73
  }
@@ -55,9 +55,9 @@
55
55
  }
56
56
  },
57
57
  "dependencies": {
58
- "@jskit-ai/kernel": "0.1.184",
59
- "@jskit-ai/http-web": "0.1.29",
60
- "@jskit-ai/shell-web": "0.1.188",
58
+ "@jskit-ai/kernel": "0.1.187",
59
+ "@jskit-ai/http-web": "0.1.32",
60
+ "@jskit-ai/shell-web": "0.1.191",
61
61
  "@local/vibe64-core": "0.1.0",
62
62
  "@local/vibe64-genesis": "0.1.0",
63
63
  "@local/vibe64-database-tools": "0.1.0",
@@ -69,8 +69,8 @@
69
69
  }
70
70
  },
71
71
  "dependencies": {
72
- "@jskit-ai/kernel": "0.1.184",
73
- "@jskit-ai/uploads-runtime": "0.1.159",
72
+ "@jskit-ai/kernel": "0.1.187",
73
+ "@jskit-ai/uploads-runtime": "0.1.162",
74
74
  "@local/vibe64-core": "0.1.0",
75
75
  "@local/vibe64-execution": "0.1.0",
76
76
  "@local/vibe64-genesis": "0.1.0",
@@ -613,6 +613,12 @@ function createCodexSessionAgentProvider({
613
613
  async invalidateRuntimes(_context, input = {}) {
614
614
  return controller.invalidateAppServerRuntimes(input);
615
615
  },
616
+ readGoal(context) {
617
+ return controller.readGoal(context.sessionId, { runtime: context.runtime, session: context.session });
618
+ },
619
+ updateGoal(context, input) {
620
+ return controller.updateGoal(context.sessionId, input, { runtime: context.runtime, session: context.session });
621
+ },
616
622
  readPlanUsage(context) {
617
623
  return controller.readPlanUsage(context.sessionId, { runtime: context.runtime, session: context.session });
618
624
  },
@@ -657,6 +657,22 @@ function createSessionAgentManager({
657
657
  }
658
658
  return provider.readPlanUsage({ sessionId, runtime: options.runtime, session: options.session });
659
659
  },
660
+ async readGoal(sessionId, options = {}) {
661
+ const provider = bindSession(sessionId, options);
662
+ const access = await accessFor(provider, sessionId, options);
663
+ if (provider.id !== "codex" || !access.canUse) {
664
+ return { status: "unsupported", goal: null };
665
+ }
666
+ return provider.readGoal({ sessionId, runtime: options.runtime, session: options.session });
667
+ },
668
+ async updateGoal(sessionId, input = {}, options = {}) {
669
+ const provider = bindSession(sessionId, options);
670
+ await requireAccessFor(provider, sessionId, options);
671
+ if (provider.id !== "codex") {
672
+ throw new TypeError("Goal controls require Codex.");
673
+ }
674
+ return provider.updateGoal({ sessionId, runtime: options.runtime, session: options.session }, input);
675
+ },
660
676
  async assistantAccess(sessionId = "", options = {}) {
661
677
  const provider = bindSession(sessionId, options);
662
678
  return accessFor(provider, sessionId, options);