hiwork-core 0.0.22 → 0.0.24

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.
package/lib/client.js CHANGED
@@ -812,7 +812,7 @@ function LogoutIcon() {
812
812
  viewBox: "0 0 16 16",
813
813
  fill: "none",
814
814
  stroke: "currentColor",
815
- strokeWidth: 1.3,
815
+ strokeWidth: 1.25,
816
816
  strokeLinecap: "round",
817
817
  strokeLinejoin: "round",
818
818
  "aria-hidden": "true",
@@ -2764,8 +2764,8 @@ var DEFAULT_NEW_SESSION_LABEL = "\u65B0\u4F1A\u8BDD";
2764
2764
  var STYLE_ELEMENT_ID = "hiwork-feature-center-styles";
2765
2765
  var TOOLTIP_DELAY_MS = 500;
2766
2766
  var TOOLTIP_GAP_PX = 8;
2767
- var DEFAULT_NEW_SESSION_ICON = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M8 3.4v9.2M3.4 8h9.2" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg>';
2768
- var DEFAULT_FEATURE_ICON = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><rect x="2.75" y="2.75" width="10.5" height="10.5" rx="3" stroke="currentColor" stroke-width="1.5"/><circle cx="8" cy="8" r="1.4" fill="currentColor"/></svg>';
2767
+ var DEFAULT_NEW_SESSION_ICON = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.00003 0.3237C3.76075 0.3237 0.32373 3.76072 0.32373 8C0.32373 9.17603 0.589121 10.2922 1.0632 11.2901L1.35291 11.8989L2.5705 11.3205L2.28079 10.7117C1.89079 9.89074 1.67301 8.97167 1.67301 8C1.67301 4.50546 4.50549 1.67298 8.00003 1.67298C11.4946 1.67298 14.3271 4.50546 14.3271 8C14.3271 11.4945 11.4946 14.327 8.00003 14.327C7.28473 14.327 6.76077 14.277 6.29621 14.1487C5.83857 14.0224 5.40441 13.8109 4.88514 13.4488C4.12569 12.919 3.03778 12.7316 2.141 13.2978L2.12682 13.307L2.11264 13.3171L1.34886 13.854L1.79659 15.188L2.86122 14.4384C3.19068 14.2305 3.68325 14.2542 4.11326 14.5539C4.72789 14.9826 5.30042 15.2724 5.93762 15.4484C6.56803 15.6224 7.22776 15.6763 8.00003 15.6763C12.2393 15.6763 15.6763 12.2393 15.6763 8C15.6763 3.76072 12.2393 0.3237 8.00003 0.3237ZM7.32033 4.82535V7.32536H4.82538V8.67464H7.32033V11.1747H8.6696V8.67464H11.1747V7.32536H8.6696V4.82535H7.32033Z" fill="currentColor"></path></svg>';
2768
+ var DEFAULT_FEATURE_ICON = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.84457 5.06199C11.6605 4.93876 14.7962 6.14848 14.8484 7.76397C14.8875 8.97461 13.1838 10.0696 10.7215 10.5942" stroke="currentColor" stroke-width="1.2"></path><path d="M5.12742 8.07731C5.00419 4.26138 6.21391 1.12568 7.8294 1.07351C9.04004 1.03441 10.135 2.73808 10.6596 5.20037" stroke="currentColor" stroke-width="1.2"></path><path d="M8.02457 10.6802C4.20865 10.8034 1.07294 9.5937 1.02077 7.97821C0.981678 6.76758 2.68535 5.67262 5.14763 5.14798" stroke="currentColor" stroke-width="1.2"></path><path d="M10.7476 7.89535C10.8708 11.7113 9.66109 14.847 8.0456 14.8991C6.83496 14.9382 5.74 13.2346 5.21536 10.7723" stroke="currentColor" stroke-width="1.2"></path></svg>';
2769
2769
  var SESSION_ROW_SELECTOR = [
2770
2770
  '[class*="sessionRow"]',
2771
2771
  '[class*="projectRow"]',
@@ -3827,6 +3827,7 @@ var ManagedWorkbenchStore = class {
3827
3827
 
3828
3828
  // src/client/pms-todo.ts
3829
3829
  var PMS_TODO_CHANNEL = "/hiwork-pms-todo";
3830
+ var PMS_TODO_STATUS_REASONS = ["no-assignment", "gateway-signed-out", "unavailable"];
3830
3831
  var PmsTodoRpcError = class extends Error {
3831
3832
  constructor(code, message) {
3832
3833
  super(message);
@@ -3894,11 +3895,15 @@ function toStatus(value) {
3894
3895
  if (!isRecord3(value)) throw new PmsTodoRpcError(INTERNAL_CODE, INVALID_RESPONSE_MESSAGE4);
3895
3896
  const username = text5(value["username"]);
3896
3897
  const expiresAt = text5(value["expiresAt"]);
3898
+ const userId = value["userId"];
3899
+ const reason = value["reason"];
3897
3900
  return {
3898
3901
  configured: value["configured"] === true,
3899
3902
  loggedIn: value["loggedIn"] === true,
3900
3903
  ...username === void 0 ? {} : { username },
3901
- ...expiresAt === void 0 ? {} : { expiresAt }
3904
+ ...expiresAt === void 0 ? {} : { expiresAt },
3905
+ ...isInteger(userId) ? { userId } : {},
3906
+ ...typeof reason === "string" && PMS_TODO_STATUS_REASONS.includes(reason) ? { reason } : {}
3902
3907
  };
3903
3908
  }
3904
3909
  function toToday(value) {
@@ -4005,7 +4010,7 @@ var PmsTodoStore = class {
4005
4010
  /**
4006
4011
  * 在飞请求**连同它所属的世代与端点**一起记账。
4007
4012
  *
4008
- * 世代:`clear()`(登出 / 换账号)之后,账上那条是**上一个人**发起的,它的待办属于上一个人
4013
+ * 世代:`clear()`(换账号)之后,账上那条是**上一个人**发起的,它的待办属于上一个人
4009
4014
  * ——复用它等于让新账号看到上一个人的待办。端点:`today` 与 `statistics` 的返回值形状不同,
4010
4015
  * 只有同一个端点的并发调用才允许合并。
4011
4016
  */
@@ -4018,8 +4023,9 @@ var PmsTodoStore = class {
4018
4023
  * 本地镜像(同步)。从没同步过返回 `undefined`。
4019
4024
  *
4020
4025
  * ⚠️ 本方法有一次**惰性探测**:镜像还空着且从没探过时,它顺手发起一次 `status` 端点调用
4021
- * (结果到达后写镜像 + 通知订阅者)。理由——渲染是同步的,而「配没配凭据」只有主机知道;
4022
- * 没有这一步,`status` 端点就永远没有调用方,界面也只能靠一次失败的 `today()` 去反推。
4026
+ * (结果到达后写镜像 + 通知订阅者)。理由——渲染是同步的,而「网关里有没有 pms 分配、手上
4027
+ * 有没有令牌」只有主机知道;没有这一步,`status` 端点就永远没有调用方,界面也只能靠一次
4028
+ * 失败的 `today()` 去反推(而且那反推出来的原因往往正好是错的)。
4023
4029
  * 因此调用方看到 `undefined` **不是**「未配置」,而是「还不知道」:必须订阅。
4024
4030
  */
4025
4031
  status() {
@@ -4040,22 +4046,6 @@ var PmsTodoStore = class {
4040
4046
  const { value, generation } = await this.call("status", "status", {}, toStatus, signal);
4041
4047
  return this.adopt(value, generation);
4042
4048
  }
4043
- /**
4044
- * 登录(凭据交给 Host;**本层不留存密码、不写任何缓存**)。
4045
- *
4046
- * 成功时把返回的状态写进镜像——登录是「身份刚变过」,镜像必须跟着变。
4047
- */
4048
- async login(input) {
4049
- const payload = { username: input.username, password: input.password };
4050
- if (input.remember !== void 0) payload["remember"] = input.remember;
4051
- const { value, generation } = await this.call("login", "login", payload, toStatus);
4052
- return this.adopt(value, generation);
4053
- }
4054
- /** 登出(Host 侧清凭据);返回登出后的状态并写镜像。 */
4055
- async logout() {
4056
- const { value, generation } = await this.call("logout", "logout", {}, toStatus);
4057
- return this.adopt(value, generation);
4058
- }
4059
4049
  /**
4060
4050
  * 今日待办。
4061
4051
  *
@@ -4084,7 +4074,7 @@ var PmsTodoStore = class {
4084
4074
  /**
4085
4075
  * **我的未完成项目任务**(spec §3 D7):`myTasks` 端点的取数。
4086
4076
  *
4087
- * 入参是**空对象**,没有 `userId`——「谁的任务」由 Host 从凭据记录里取(客户端连自己的
4077
+ * 入参是**空对象**,没有 `userId`——「谁的任务」由 Host 从 mint 响应里取(客户端连自己的
4088
4078
  * PMS userId 都拿不到,这是 §3 D6 形状的一部分)。
4089
4079
  *
4090
4080
  * 与 `today` 同款:**不做本地缓存**(返回刚拉到的那一份),但**并发调用合并**(同一时刻问两遍
@@ -4117,7 +4107,8 @@ var PmsTodoStore = class {
4117
4107
  };
4118
4108
  }
4119
4109
  /**
4120
- * 清空镜像(登出 / 换账号:状态是**按人**的,留着会串号),并**作废在飞的请求**。
4110
+ * 清空镜像(换账号:状态是**按人**的——分配是按人下发的、令牌是按人换的,留着会串号),
4111
+ * 并**作废在飞的请求**。
4121
4112
  *
4122
4113
  * 只清镜像是不够的:清空那一刻正有一次拉取在飞时,那次拉取是**上一个人**发起的。所以世代
4123
4114
  * +1:那之后的调用者一律不复用旧世代的那条,自己重新发一次 RPC。用世代号而**不是**把
@@ -4316,14 +4307,14 @@ function installFeatureCenter(ctx, managedMcp, managedSkills, managedWorkbench,
4316
4307
  },
4317
4308
  // PMS 个人待办面:工作台域(hiwork-workbench)按这个成员判断「有没有这个能力」,老 core 上
4318
4309
  // 它是 undefined,右栏 tab 降级成「请升级 HiWork 客户端」(spec §6 的降级矩阵第一行)。
4319
- // 七项与 spec §4.3 逐字对应;核心**只发端点调用**——凭据与 token 全在 Host(§3 D6)。
4320
- // `setStatus` 在面里折成 void(§4.3 冻结的形状),仓库返回值留给诊断与测试。
4321
- // `myTasks` / `completeTask` 是 §3 D7 追加的两项,**在面里也是可选成员**(旧 core 只有前七项,
4310
+ // 六项与 spec §4.4 逐字对应;核心**只发端点调用**——零输入登录(网关断言 → PMS 换令牌)
4311
+ // 整段在 Host 半边,客户端连断言都看不到(§3 D1 / D6)。
4312
+ // `setStatus` 在面里折成 void(§4.4 冻结的形状),仓库返回值留给诊断与测试。
4313
+ // `myTasks` / `completeTask` 是 §3 D7 追加的两项,**在面里也是可选成员**(旧 core 只有前六项,
4322
4314
  // 消费方按 `face.pmsTodo.myTasks !== undefined` 判断,见 src/client/pms-todo.ts 的版本闸口)。
4315
+ // 没有 `login` / `logout`(spec §3 D3 随账号密码通道一起删除):本面不许再长出任何凭据入口。
4323
4316
  pmsTodo: {
4324
4317
  status: () => pmsTodo.status(),
4325
- login: async (input) => await pmsTodo.login(input),
4326
- logout: async () => await pmsTodo.logout(),
4327
4318
  today: async (signal) => await pmsTodo.today(signal),
4328
4319
  statistics: async (signal) => await pmsTodo.statistics(signal),
4329
4320
  setStatus: async (input) => {