@workflow-code/cli 0.2.4-20261012003.codex-cli-web → 0.2.4-20261012004.codex-studio-integration

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.
@@ -163,6 +163,7 @@ async function clearCliAuthConfig(env = process.env) {
163
163
  }
164
164
 
165
165
  export {
166
+ createEmptyWorkflowAuthConfig,
166
167
  normalizeWorkflowAuthConfig,
167
168
  isWorkflowAuthConfigLoggedIn,
168
169
  isWorkflowAuthExpiringSoon,
package/dist/index.js CHANGED
@@ -24,16 +24,16 @@ async function main(argv = process.argv.slice(2)) {
24
24
  const prepared = prepareCliInvocation(argv);
25
25
  argv = prepared.argv;
26
26
  if (argv[0] === "web") {
27
- const webCli = await import("./web-YUMRIE22.js");
27
+ const webCli = await import("./web-OMVO2EGT.js");
28
28
  return webCli.main(argv.slice(1));
29
29
  }
30
30
  if (argv[0] === "workspace") {
31
- const workspaceCli = await import("./workspace-V3UXVFK6.js");
31
+ const workspaceCli = await import("./workspace-OKFR57T6.js");
32
32
  await workspaceCli.main(argv.slice(1), { localeInitialized: true });
33
33
  return typeof process.exitCode === "number" ? process.exitCode : 0;
34
34
  }
35
35
  if (argv[0] === "mcp") {
36
- const mcpCli = await import("./mcp-LQ2IV6VA.js");
36
+ const mcpCli = await import("./mcp-UQTMW3LK.js");
37
37
  return mcpCli.main(argv.slice(1));
38
38
  }
39
39
  if (argv.length === 0 || argv[0] === "help" || argv[0] === "--help" || argv[0] === "-h") {
@@ -7,7 +7,7 @@ import {
7
7
  normalizeWorkflowAuthConfig,
8
8
  readCliAuthConfigSync,
9
9
  resolveWorkflowDesktopConfigFilePath
10
- } from "./chunk-PGM3IPWA.js";
10
+ } from "./chunk-SGVXPYCT.js";
11
11
  import {
12
12
  assertWorkflowUuid
13
13
  } from "./chunk-P6K3NB5S.js";
@@ -12720,6 +12720,7 @@
12720
12720
  Loop: "\u5FAA\u73AF",
12721
12721
  "Loop end": "\u5FAA\u73AF\u7ED3\u675F",
12722
12722
  "Managed by server": "\u7531\u670D\u52A1\u5668\u7BA1\u7406",
12723
+ "Manage this account through Studio.": "\u8BF7\u5728 Studio \u4E2D\u7BA1\u7406\u6B64\u8D26\u53F7\u3002",
12723
12724
  Merge: "\u6C47\u5408",
12724
12725
  Message: "\u6D88\u606F",
12725
12726
  Monthly: "\u6BCF\u6708",
@@ -15144,8 +15145,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
15144
15145
 
15145
15146
  // src/web/ui/account.ts
15146
15147
  var AccountPanel = class {
15147
- constructor(menu2, request2) {
15148
+ constructor(menu2, request2, openHostAccount) {
15148
15149
  this.request = request2;
15150
+ this.openHostAccount = openHostAccount;
15149
15151
  this.button.id = "web-account";
15150
15152
  this.button.className = "web-account";
15151
15153
  this.button.type = "button";
@@ -15217,6 +15219,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
15217
15219
  });
15218
15220
  }
15219
15221
  request;
15222
+ openHostAccount;
15220
15223
  button = document.createElement("button");
15221
15224
  dialog = document.createElement("dialog");
15222
15225
  state;
@@ -15226,6 +15229,10 @@ Please report this to https://github.com/markedjs/marked.`, e) {
15226
15229
  return this.dialog.querySelector(selector);
15227
15230
  }
15228
15231
  open() {
15232
+ if (this.openHostAccount) {
15233
+ this.openHostAccount();
15234
+ return;
15235
+ }
15229
15236
  this.render();
15230
15237
  if (!this.dialog.open) {
15231
15238
  this.dialog.showModal();
@@ -15805,7 +15812,8 @@ ${state2.user?.avatarUrl ?? ""}`;
15805
15812
  };
15806
15813
  let accountPanel;
15807
15814
  queueMicrotask(() => {
15808
- accountPanel = new AccountPanel(document.querySelector("#project-menu"), request2);
15815
+ const openHostAccount = document.body.dataset.accountHost === "true" ? () => window.parent.postMessage({ type: "workflow-account", version: 1 }, "*") : void 0;
15816
+ accountPanel = new AccountPanel(document.querySelector("#project-menu"), request2, openHostAccount);
15809
15817
  });
15810
15818
  return {
15811
15819
  postMessage: async (message) => {
@@ -12720,6 +12720,7 @@
12720
12720
  Loop: "\u5FAA\u73AF",
12721
12721
  "Loop end": "\u5FAA\u73AF\u7ED3\u675F",
12722
12722
  "Managed by server": "\u7531\u670D\u52A1\u5668\u7BA1\u7406",
12723
+ "Manage this account through Studio.": "\u8BF7\u5728 Studio \u4E2D\u7BA1\u7406\u6B64\u8D26\u53F7\u3002",
12723
12724
  Merge: "\u6C47\u5408",
12724
12725
  Message: "\u6D88\u606F",
12725
12726
  Monthly: "\u6BCF\u6708",
@@ -16837,8 +16838,9 @@ ${JSON.stringify(output.details, null, 2)}` : "");
16837
16838
 
16838
16839
  // src/web/ui/account.ts
16839
16840
  var AccountPanel = class {
16840
- constructor(menu, request) {
16841
+ constructor(menu, request, openHostAccount) {
16841
16842
  this.request = request;
16843
+ this.openHostAccount = openHostAccount;
16842
16844
  this.button.id = "web-account";
16843
16845
  this.button.className = "web-account";
16844
16846
  this.button.type = "button";
@@ -16910,6 +16912,7 @@ ${JSON.stringify(output.details, null, 2)}` : "");
16910
16912
  });
16911
16913
  }
16912
16914
  request;
16915
+ openHostAccount;
16913
16916
  button = document.createElement("button");
16914
16917
  dialog = document.createElement("dialog");
16915
16918
  state;
@@ -16919,6 +16922,10 @@ ${JSON.stringify(output.details, null, 2)}` : "");
16919
16922
  return this.dialog.querySelector(selector);
16920
16923
  }
16921
16924
  open() {
16925
+ if (this.openHostAccount) {
16926
+ this.openHostAccount();
16927
+ return;
16928
+ }
16922
16929
  this.render();
16923
16930
  if (!this.dialog.open) {
16924
16931
  this.dialog.showModal();
@@ -17498,7 +17505,8 @@ ${state.user?.avatarUrl ?? ""}`;
17498
17505
  };
17499
17506
  let accountPanel;
17500
17507
  queueMicrotask(() => {
17501
- accountPanel = new AccountPanel(document.querySelector("#project-menu"), request);
17508
+ const openHostAccount = document.body.dataset.accountHost === "true" ? () => window.parent.postMessage({ type: "workflow-account", version: 1 }, "*") : void 0;
17509
+ accountPanel = new AccountPanel(document.querySelector("#project-menu"), request, openHostAccount);
17502
17510
  });
17503
17511
  return {
17504
17512
  postMessage: async (message) => {
@@ -16249,6 +16249,7 @@
16249
16249
  Loop: "\u5FAA\u73AF",
16250
16250
  "Loop end": "\u5FAA\u73AF\u7ED3\u675F",
16251
16251
  "Managed by server": "\u7531\u670D\u52A1\u5668\u7BA1\u7406",
16252
+ "Manage this account through Studio.": "\u8BF7\u5728 Studio \u4E2D\u7BA1\u7406\u6B64\u8D26\u53F7\u3002",
16252
16253
  Merge: "\u6C47\u5408",
16253
16254
  Message: "\u6D88\u606F",
16254
16255
  Monthly: "\u6BCF\u6708",
@@ -18688,8 +18689,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
18688
18689
 
18689
18690
  // src/web/ui/account.ts
18690
18691
  var AccountPanel = class {
18691
- constructor(menu2, request) {
18692
+ constructor(menu2, request, openHostAccount) {
18692
18693
  this.request = request;
18694
+ this.openHostAccount = openHostAccount;
18693
18695
  this.button.id = "web-account";
18694
18696
  this.button.className = "web-account";
18695
18697
  this.button.type = "button";
@@ -18761,6 +18763,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
18761
18763
  });
18762
18764
  }
18763
18765
  request;
18766
+ openHostAccount;
18764
18767
  button = document.createElement("button");
18765
18768
  dialog = document.createElement("dialog");
18766
18769
  state;
@@ -18770,6 +18773,10 @@ Please report this to https://github.com/markedjs/marked.`, e) {
18770
18773
  return this.dialog.querySelector(selector);
18771
18774
  }
18772
18775
  open() {
18776
+ if (this.openHostAccount) {
18777
+ this.openHostAccount();
18778
+ return;
18779
+ }
18773
18780
  this.render();
18774
18781
  if (!this.dialog.open) {
18775
18782
  this.dialog.showModal();
@@ -19349,7 +19356,8 @@ ${state2.user?.avatarUrl ?? ""}`;
19349
19356
  };
19350
19357
  let accountPanel;
19351
19358
  queueMicrotask(() => {
19352
- accountPanel = new AccountPanel(document.querySelector("#project-menu"), request);
19359
+ const openHostAccount = document.body.dataset.accountHost === "true" ? () => window.parent.postMessage({ type: "workflow-account", version: 1 }, "*") : void 0;
19360
+ accountPanel = new AccountPanel(document.querySelector("#project-menu"), request, openHostAccount);
19353
19361
  });
19354
19362
  return {
19355
19363
  postMessage: async (message) => {
@@ -24,9 +24,10 @@ import "./chunk-J2JMC4MZ.js";
24
24
  import "./chunk-MNY562W5.js";
25
25
  import {
26
26
  clearCliAuthConfig,
27
+ createEmptyWorkflowAuthConfig,
27
28
  readCliAuthConfig,
28
29
  writeCliAuthConfig
29
- } from "./chunk-PGM3IPWA.js";
30
+ } from "./chunk-SGVXPYCT.js";
30
31
  import {
31
32
  isWorkflowProjectDataStorageLocationAllowed,
32
33
  readWorkflowProjectInfo,
@@ -176,6 +177,7 @@ var messages_zh_cn_default = {
176
177
  Loop: "\u5FAA\u73AF",
177
178
  "Loop end": "\u5FAA\u73AF\u7ED3\u675F",
178
179
  "Managed by server": "\u7531\u670D\u52A1\u5668\u7BA1\u7406",
180
+ "Manage this account through Studio.": "\u8BF7\u5728 Studio \u4E2D\u7BA1\u7406\u6B64\u8D26\u53F7\u3002",
179
181
  Merge: "\u6C47\u5408",
180
182
  Message: "\u6D88\u606F",
181
183
  Monthly: "\u6BCF\u6708",
@@ -2728,7 +2730,7 @@ async function startWebServer(options) {
2728
2730
  let login;
2729
2731
  let passwordLogin = false;
2730
2732
  let hostConnection = options.host?.connection;
2731
- let hostManaged = !!hostConnection;
2733
+ let hostManaged = options.host !== void 0;
2732
2734
  let authEpoch = 0;
2733
2735
  let authenticationInitialized = false;
2734
2736
  let authCheck;
@@ -2891,7 +2893,7 @@ async function startWebServer(options) {
2891
2893
  return;
2892
2894
  }
2893
2895
  const readingEpoch = authEpoch;
2894
- const config = await readCliAuthConfig();
2896
+ const config = hostManaged ? createEmptyWorkflowAuthConfig() : await readCliAuthConfig();
2895
2897
  if (readingEpoch !== authEpoch) {
2896
2898
  return;
2897
2899
  }
@@ -3220,6 +3222,9 @@ ${token}`;
3220
3222
  break;
3221
3223
  }
3222
3224
  case "login": {
3225
+ if (hostManaged) {
3226
+ throw new Error(t("Manage this account through Studio."));
3227
+ }
3223
3228
  if (!options.host && process.env.WORKFLOW_SERVER_ADMIN_KEY !== void 0) {
3224
3229
  throw new Error("This session is supplied by the host. Sign in through the host.");
3225
3230
  }
@@ -3275,15 +3280,19 @@ ${token}`;
3275
3280
  case "verify":
3276
3281
  await refreshAuth(true);
3277
3282
  break;
3278
- case "logout":
3283
+ case "logout": {
3284
+ if (hostManaged) {
3285
+ throw new Error(t("Manage this account through Studio."));
3286
+ }
3279
3287
  signedOut = true;
3280
3288
  login?.kill();
3281
- if (!hostManaged && process.env.WORKFLOW_SERVER_ADMIN_KEY === void 0) {
3289
+ if (process.env.WORKFLOW_SERVER_ADMIN_KEY === void 0) {
3282
3290
  await clearCliAuthConfig();
3283
3291
  }
3284
3292
  authIdentity = "signed-out";
3285
3293
  await refreshAuth();
3286
3294
  break;
3295
+ }
3287
3296
  default:
3288
3297
  throw new Error(`Unsupported action: ${message.type}`);
3289
3298
  }
@@ -3391,7 +3400,7 @@ ${token}`;
3391
3400
  const ancestors = options.host ? "'self' vscode-webview: vscode-file: https://*.vscode-cdn.net https://*.vscode-webview.net http://127.0.0.1:* http://localhost:*" : "'self' vscode-webview:";
3392
3401
  response.writeHead(200, { "Content-Type": "text/html; charset=utf-8", "Cache-Control": "no-store", "Content-Security-Policy": `default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https: http:; font-src 'self'; connect-src 'self'; media-src 'self' blob:; frame-src 'self'; object-src 'none'; base-uri 'none'; frame-ancestors ${ancestors}; form-action 'self'` });
3393
3402
  const ui = isKanban ? "kanban-workspace" : isWorkflow ? "workflow-workspace" : "workflow-ui";
3394
- response.end(`<!doctype html><html lang="${locale()}" data-theme="${options.theme ?? "auto"}"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="workflow-project" content="${key}"><title>Workflow</title><link rel="stylesheet" href="/assets/codicons/codicon.css"><link rel="stylesheet" href="/assets/${ui}.css"><link rel="stylesheet" href="/assets/theme.css"></head><body data-surface="${options.host?.surface ?? "editor"}"><div id="app"></div><script src="/assets/${ui}.js" defer></script></body></html>`);
3403
+ response.end(`<!doctype html><html lang="${locale()}" data-theme="${options.theme ?? "auto"}"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="workflow-project" content="${key}"><title>Workflow</title><link rel="stylesheet" href="/assets/codicons/codicon.css"><link rel="stylesheet" href="/assets/${ui}.css"><link rel="stylesheet" href="/assets/theme.css"></head><body data-surface="${options.host?.surface ?? "editor"}" data-account-host="${hostManaged}"><div id="app"></div><script src="/assets/${ui}.js" defer></script></body></html>`);
3395
3404
  return;
3396
3405
  }
3397
3406
  const assets = { "/assets/workflow-ui.js": "application/javascript", "/assets/workflow-ui.css": "text/css", "/assets/theme.css": "text/css", "/assets/codicons/codicon.css": "text/css", "/assets/codicons/codicon.ttf": "font/ttf" };
@@ -3604,7 +3613,7 @@ async function main(argv) {
3604
3613
  };
3605
3614
  process.once("SIGINT", close);
3606
3615
  process.once("SIGTERM", close);
3607
- console.log(options.json ? JSON.stringify({ type: "ready", protocolVersion: 1, hostProtocolVersion: 1, traceProtocolVersion: 1, assistantProtocolVersion: host?.assistant ? ASSISTANT_PROTOCOL_VERSION : void 0, url: app.url, project: { id: app.project.id, name: app.project.name, projectType: app.project.projectType }, runtime: app.project.runtime }) : `Workflow Web: ${app.url}`);
3616
+ console.log(options.json ? JSON.stringify({ type: "ready", protocolVersion: 1, hostProtocolVersion: 1, accountProtocolVersion: 1, traceProtocolVersion: 1, assistantProtocolVersion: host?.assistant ? ASSISTANT_PROTOCOL_VERSION : void 0, url: app.url, project: { id: app.project.id, name: app.project.name, projectType: app.project.projectType }, runtime: app.project.runtime }) : `Workflow Web: ${app.url}`);
3608
3617
  if (lines) {
3609
3618
  void (async () => {
3610
3619
  try {
@@ -14,7 +14,7 @@ import {
14
14
  readCliAuthConfig,
15
15
  readCliAuthConfigSync,
16
16
  writeCliAuthConfig
17
- } from "./chunk-PGM3IPWA.js";
17
+ } from "./chunk-SGVXPYCT.js";
18
18
  import {
19
19
  isWorkflowUuid,
20
20
  readWorkflowProjectInfo,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow-code/cli",
3
- "version": "0.2.4-20261012003.codex-cli-web",
3
+ "version": "0.2.4-20261012004.codex-studio-integration",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "workflow-code": "./dist/index.js"
@@ -36,17 +36,17 @@
36
36
  "typescript": "^6.0.3",
37
37
  "vitest": "^4.1.7",
38
38
  "workflow-code": "0.2.4-20260929001",
39
- "@workflow-code/auth-config": "0.1.0",
40
39
  "@workflow-code/execution-targets": "0.1.0",
41
40
  "@workflow-code/i18n": "0.1.0",
42
41
  "@workflow-code/kanban-project": "0.1.0",
43
42
  "@workflow-code/openai-responses": "0.1.0",
44
43
  "@workflow-code/project-dependencies": "0.1.0",
45
- "@workflow-code/project-upload": "0.1.0",
46
44
  "@workflow-code/project-info": "0.1.0",
47
45
  "@workflow-code/runtime-compatibility": "0.1.0",
46
+ "@workflow-code/project-upload": "0.1.0",
47
+ "@workflow-code/workflow-mcp": "0.1.0",
48
48
  "@workflow-code/workflow-ids": "0.1.0",
49
- "@workflow-code/workflow-mcp": "0.1.0"
49
+ "@workflow-code/auth-config": "0.1.0"
50
50
  },
51
51
  "scripts": {
52
52
  "bootstrap": "node scripts/bootstrap.mjs",