nolo-cli 0.190.0-alpha.1 → 0.190.0

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 (97) hide show
  1. package/{_executeModel-7GFCTOFY.js → _executeModel-YKU7B22N.js} +25 -25
  2. package/{action-HQXK4ZT4.js → action-BHWB4MOK.js} +2 -2
  3. package/{addContentAction-3WAN3OWY.js → addContentAction-BY375D35.js} +3 -3
  4. package/{addDialogAgentAction-WNQBFR5G.js → addDialogAgentAction-HOZYOCWC.js} +2 -2
  5. package/{agentDeleteCommand-USWGJZSW.js → agentDeleteCommand-LTM6MGUZ.js} +26 -26
  6. package/{agentEmailCommands-GAY44EQY.js → agentEmailCommands-U2SU2UKX.js} +27 -27
  7. package/{agentListCommands-CVLCMMJH.js → agentListCommands-UFRIQ4MP.js} +10 -10
  8. package/{agentMachineCommands-L36OJZVK.js → agentMachineCommands-E4IRBC3P.js} +8 -8
  9. package/{agentProviderCommands-XSZUCNIR.js → agentProviderCommands-T6E3JCR6.js} +1 -1
  10. package/{agentRecordCommands-YYWWC4NK.js → agentRecordCommands-HW6YDY5E.js} +26 -26
  11. package/{agentRunCommand-R42JIQMC.js → agentRunCommand-KIWEFELP.js} +27 -27
  12. package/{agentRuntimeLocal-G4KEXO5D.js → agentRuntimeLocal-WRWUTHCL.js} +5 -5
  13. package/{agentSlice-STUDWJJZ.js → agentSlice-UEXQ3TMJ.js} +3 -3
  14. package/{appDeleteCommands-C4VXCFO6.js → appDeleteCommands-AAUOZFMM.js} +9 -9
  15. package/{appDeployCommands-RFSFJY75.js → appDeployCommands-FZYC74TL.js} +9 -9
  16. package/{appDeployStatusCommands-DBT5WQ3X.js → appDeployStatusCommands-6QHBUEE4.js} +9 -9
  17. package/{appGetCommands-UPIBNR2W.js → appGetCommands-6FZADSW2.js} +9 -9
  18. package/{appListCommands-PQA5MSVU.js → appListCommands-G3N4LQRZ.js} +9 -9
  19. package/{authCommand-PIMMUEN5.js → authCommand-RV5MQDWN.js} +2 -2
  20. package/{authCommands-RFLKIPBT.js → authCommands-MZUXPRYJ.js} +2 -2
  21. package/{builtinSkillRegistry-2VN6JG4U.js → builtinSkillRegistry-7MBUY5EY.js} +3 -3
  22. package/{chromeOpsCommands-C46BXHEE.js → chromeOpsCommands-BA6CS4DI.js} +4 -0
  23. package/{chunk-3QFOYFJW.js → chunk-26MN245S.js} +4 -4
  24. package/{chunk-GSX7Z46F.js → chunk-5HAPEKNH.js} +1 -1
  25. package/{chunk-53RSTB7T.js → chunk-5N5FMA7J.js} +1 -1
  26. package/{chunk-ZCGA3Q7V.js → chunk-5XLLUQKC.js} +38 -13
  27. package/{chunk-WBCYL63M.js → chunk-6WZQGT5X.js} +6 -4
  28. package/{chunk-JOOWHDGM.js → chunk-A5BLRE3G.js} +1 -1
  29. package/{chunk-Y2ZDNW2H.js → chunk-B2N5GZBU.js} +2 -2
  30. package/{chunk-7SJG5ZNX.js → chunk-B6EZB6DW.js} +1 -1
  31. package/{chunk-BHVB3ICG.js → chunk-BV4QRWKY.js} +4 -4
  32. package/{chunk-MMOISK6N.js → chunk-BX5ZJVA5.js} +4 -4
  33. package/{chunk-CLGAGPEM.js → chunk-CNMQATUF.js} +1 -1
  34. package/{chunk-5LVGXDSL.js → chunk-CQPXGRMT.js} +2 -2
  35. package/{chunk-RBVR7P3M.js → chunk-CZAX2VJQ.js} +18 -18
  36. package/{chunk-ER4UTWWS.js → chunk-DFF6B7P7.js} +1 -1
  37. package/{chunk-HVV4B6OL.js → chunk-DUNY6XR5.js} +214 -47
  38. package/{chunk-WMHWFFTE.js → chunk-ECX3NKRD.js} +46 -0
  39. package/{chunk-H6FUDBS3.js → chunk-ENBAS3ZV.js} +11 -5
  40. package/{chunk-KOIGM3KU.js → chunk-FMOZ57LN.js} +1 -1
  41. package/{chunk-O2MBTX37.js → chunk-I7QLIRQE.js} +4 -4
  42. package/{chunk-LOQYQUM2.js → chunk-JGJVDP2W.js} +17 -17
  43. package/{chunk-7N6C3IHF.js → chunk-JY2LGGXS.js} +2 -2
  44. package/{chunk-RGTPR57U.js → chunk-K45ORH2X.js} +4 -4
  45. package/{chunk-S4W4GV3B.js → chunk-K6TZSON4.js} +1 -1
  46. package/{chunk-PUMVJXBA.js → chunk-LIVFUMIL.js} +4 -3
  47. package/{chunk-R6AJKHEU.js → chunk-M2WRKZDD.js} +3 -3
  48. package/{chunk-4OTMONZL.js → chunk-N4QQEDCV.js} +9 -9
  49. package/{chunk-UBLITLAZ.js → chunk-NABJEYPJ.js} +1 -0
  50. package/{chunk-I3HWJODB.js → chunk-O6OGJTHX.js} +4 -1
  51. package/{chunk-ZIOYHDYW.js → chunk-RP7UTAUN.js} +2 -2
  52. package/{chunk-PVZ3GB25.js → chunk-RQJZQ377.js} +5 -5
  53. package/{chunk-OXOXPREC.js → chunk-SM56M7N7.js} +1 -1
  54. package/{chunk-PUUH5I4K.js → chunk-TEC5UHQK.js} +1 -1
  55. package/{chunk-IFN7MHWL.js → chunk-UGCQKKXW.js} +1 -1
  56. package/{chunk-RANCLEEC.js → chunk-UYZ4AALN.js} +10 -10
  57. package/{chunk-JAJJUMDC.js → chunk-V3MGT3RF.js} +4 -4
  58. package/{chunk-YUZIPPER.js → chunk-W5CPGAGO.js} +9 -3
  59. package/{chunk-RJ3EYB5G.js → chunk-X3RWBJDQ.js} +1 -1
  60. package/{chunk-6G5V4Y3V.js → chunk-Z6JTIUOG.js} +67 -43
  61. package/{chunk-XRADC4SK.js → chunk-ZBY4LPKJ.js} +11 -11
  62. package/{chunk-PCPQWTXJ.js → chunk-ZQ3EAOY3.js} +1 -1
  63. package/{commandRegistry-3EZUYHCR.js → commandRegistry-CYSQPTJR.js} +54 -54
  64. package/{contentThunks-E4DHXF3M.js → contentThunks-NNN5RO4H.js} +8 -8
  65. package/{createAgentAutomationAction-2P2II7B3.js → createAgentAutomationAction-45NA6I55.js} +8 -8
  66. package/{createDialogAction-MFZGE5EO.js → createDialogAction-PIPWZBHB.js} +10 -10
  67. package/{createPageAction-SBU2YCNR.js → createPageAction-JHKIBRIW.js} +8 -8
  68. package/{dbSlice-2O3YBVPP.js → dbSlice-QAUXABCC.js} +2 -2
  69. package/{dialogCommands-Z35VVKWJ.js → dialogCommands-KCEY4RI3.js} +9 -9
  70. package/{dialogSlice-GKPCUQWM.js → dialogSlice-BFXMIMDD.js} +7 -7
  71. package/{dialogUsageCommand-44XMU6DD.js → dialogUsageCommand-QTG6ILEJ.js} +58 -5
  72. package/{docCreateCommands-I654DRPF.js → docCreateCommands-35H6J2I3.js} +8 -8
  73. package/{docDeleteCommands-CKHY75KZ.js → docDeleteCommands-IIJMKC4W.js} +9 -9
  74. package/{docReadCommands-YOWFZ3XC.js → docReadCommands-N6UI6K3Q.js} +8 -8
  75. package/{docStore-DOZVBVKZ.js → docStore-XPVMFUNP.js} +3 -3
  76. package/{docUpdateCommands-FMUKYCYX.js → docUpdateCommands-75NLQ4BK.js} +8 -8
  77. package/{fetchMessages-QLW7INJJ.js → fetchMessages-HWBVATSE.js} +1 -1
  78. package/{handleSendMessageAction-FY4RBJEA.js → handleSendMessageAction-ZBRKFRQI.js} +15 -15
  79. package/index.js +3 -3
  80. package/{keys-N6HQICY5.js → keys-P4ZDOVJW.js} +11 -1
  81. package/{localDialogRead-55YDVPNU.js → localDialogRead-CT5HGDMC.js} +1 -1
  82. package/{localRuntimeAdapter-X22B3GW3.js → localRuntimeAdapter-7RGZUO2P.js} +24 -24
  83. package/{machineCommands-XEJR6HF3.js → machineCommands-6AGBZDIR.js} +25 -25
  84. package/{machineWsRunDispatch-BYX227T2.js → machineWsRunDispatch-MP5AVWMN.js} +25 -25
  85. package/{memberThunks-VXT36MZP.js → memberThunks-QWAAGQBS.js} +155 -52
  86. package/package.json +1 -1
  87. package/{readlineWorkspace-GXU2KWOK.js → readlineWorkspace-Z7QDLLL3.js} +31 -31
  88. package/{removeDialogAgentAction-PK24DJ2J.js → removeDialogAgentAction-YEPO5AYI.js} +3 -3
  89. package/{runAgentClientLoop-CFIM6MXT.js → runAgentClientLoop-3GJFXSSC.js} +23 -23
  90. package/{setDialogExtraReferencesAction-BN4IBUO6.js → setDialogExtraReferencesAction-EH5GWDAJ.js} +3 -3
  91. package/{setPrimaryDialogAgentAction-JR5SMLZY.js → setPrimaryDialogAgentAction-PNWRK6IY.js} +3 -3
  92. package/{settingThunks-RJZQHL7H.js → settingThunks-7VCWB6P7.js} +2 -2
  93. package/{spaceCommands-BI3TRIAK.js → spaceCommands-YDOM6YMW.js} +8 -8
  94. package/{streamAgentChatTurn-3BS7IAFR.js → streamAgentChatTurn-REDU63PC.js} +25 -25
  95. package/{switchDialogAgentAction-TSIXBNRH.js → switchDialogAgentAction-23BFWJMV.js} +2 -2
  96. package/{tools-PCTUYG54.js → tools-W4PYCFAJ.js} +19 -19
  97. package/{updateDialogTitleAction-ZHFIMEQL.js → updateDialogTitleAction-4FPPW5NQ.js} +8 -8
@@ -1,16 +1,16 @@
1
1
  import {
2
+ addMemberSpace,
2
3
  appendRecoveredMemberships,
4
+ applyFetchSpaceFulfilled,
3
5
  fetchRemoteSpace,
4
6
  fetchRemoteUserSpaceMemberships,
5
- getMemberSpaces,
6
- hydrateMemberSpacesFromLocal,
7
7
  membershipBelongsToUser,
8
8
  selectSpaceRemoteAuth,
9
9
  setMemberSpaces,
10
10
  setMembershipLoading,
11
11
  setMembershipRejected,
12
12
  spaceListsUser
13
- } from "./chunk-LOQYQUM2.js";
13
+ } from "./chunk-JGJVDP2W.js";
14
14
  import {
15
15
  getCurrentSpaceIdRaw,
16
16
  updateCurrentSpaceIfMatch
@@ -25,7 +25,7 @@ import {
25
25
  read,
26
26
  remove,
27
27
  write
28
- } from "./chunk-Y2ZDNW2H.js";
28
+ } from "./chunk-B2N5GZBU.js";
29
29
  import "./chunk-3PVYUPXK.js";
30
30
  import "./chunk-BA2FHPS4.js";
31
31
  import {
@@ -41,7 +41,8 @@ import {
41
41
  createAsyncThunk
42
42
  } from "./chunk-WRCZXJ4N.js";
43
43
  import {
44
- logger
44
+ logger,
45
+ normalizeTimeFields
45
46
  } from "./chunk-6Q7UTJKR.js";
46
47
  import "./chunk-QQ56R7KS.js";
47
48
  import "./chunk-OW765XBU.js";
@@ -62,7 +63,7 @@ import "./chunk-4SN6J65J.js";
62
63
  import "./chunk-CF7PE763.js";
63
64
  import {
64
65
  DB_PREFIX
65
- } from "./chunk-WMHWFFTE.js";
66
+ } from "./chunk-ECX3NKRD.js";
66
67
  import "./chunk-XJWWBO34.js";
67
68
  import "./chunk-I42VC5KR.js";
68
69
  import "./chunk-U6VC4MU4.js";
@@ -111,26 +112,6 @@ var readLocalSpaceData = async (db, spaceId) => {
111
112
  }
112
113
  };
113
114
  var membershipCheckUserId = (membership, activeUserId) => isDeviceLocalSpaceMembership(membership) ? DEVICE_LOCAL_OWNER_ID : activeUserId;
114
- var buildLocalMembershipPreview = async (userId, db, memberships) => {
115
- const preview = await Promise.all(
116
- memberships.map(async (membership) => {
117
- if (isTombstoneRecord(membership)) return null;
118
- const checkUserId = membershipCheckUserId(membership, userId);
119
- if (!membershipBelongsToUser(membership, checkUserId)) return null;
120
- const normalizedSpaceId = normalizeSpaceId(membership.spaceId);
121
- const localSpaceData = await readLocalSpaceData(db, normalizedSpaceId);
122
- if (!localSpaceData || isTombstoneRecord(localSpaceData)) return null;
123
- if (!spaceListsUser(localSpaceData, checkUserId)) return null;
124
- return {
125
- ...membership,
126
- spaceId: normalizedSpaceId
127
- };
128
- })
129
- );
130
- return preview.filter(
131
- (membership) => !!membership
132
- );
133
- };
134
115
  var fetchLocalForUser = async (userId, db) => {
135
116
  try {
136
117
  const memberships = [];
@@ -255,23 +236,12 @@ var fetchUserSpaceMembershipsAction = async (userId, thunkAPI) => {
255
236
  const db = thunkAPI.extra.db;
256
237
  const { token, servers } = selectSpaceRemoteAuth(state);
257
238
  const isLocalActor = isDeviceLocalOwnerId(userId);
258
- const localMembershipsPromise = fetchLocalUnion(userId, db);
259
239
  const remoteResultsPromise = isLocalActor ? Promise.resolve([]) : Promise.all(
260
240
  servers.map(
261
241
  (server) => fetchRemoteUserSpaceMemberships(server, token, userId)
262
242
  )
263
243
  );
264
- const localMemberships = await localMembershipsPromise;
265
- if (getMemberSpaces() === null && localMemberships.length > 0) {
266
- const localPreview = await buildLocalMembershipPreview(
267
- userId,
268
- db,
269
- localMemberships
270
- );
271
- if (localPreview.length > 0) {
272
- hydrateMemberSpacesFromLocal(localPreview);
273
- }
274
- }
244
+ const localMemberships = isLocalActor ? await fetchLocalUnion(userId, db) : [];
275
245
  const remoteResults = await remoteResultsPromise;
276
246
  const successfulRemoteResults = remoteResults.filter((result) => result.ok);
277
247
  const successfulRemoteMemberships = successfulRemoteResults.flatMap(
@@ -287,6 +257,11 @@ var fetchUserSpaceMembershipsAction = async (userId, thunkAPI) => {
287
257
  `${SPACE_MEMBERSHIP_REMOTE_UNAVAILABLE}: unable to refresh memberships from ${servers.join(", ")}`
288
258
  );
289
259
  }
260
+ if (!isLocalActor && !hasRemoteAuthority) {
261
+ throw new Error(
262
+ `${SPACE_MEMBERSHIP_REMOTE_UNAVAILABLE}: no remote authority for ${userId}`
263
+ );
264
+ }
290
265
  const remoteSpaceIds = new Set(
291
266
  successfulRemoteMemberships.map(
292
267
  (membership) => normalizeSpaceId(membership.spaceId)
@@ -326,11 +301,20 @@ var fetchUserSpaceMembershipsAction = async (userId, thunkAPI) => {
326
301
  const checkUserId = membershipCheckUserId(membership, userId);
327
302
  if (!membershipBelongsToUser(membership, checkUserId)) return null;
328
303
  const normalizedSpaceId = normalizeSpaceId(membership.spaceId);
329
- const localSpaceData = await readLocalSpaceData(db, normalizedSpaceId);
330
304
  const isDeviceLocal = membership.deviceLocal || isDeviceLocalSpaceMembership(membership);
305
+ let localSpaceDataLoaded = false;
306
+ let localSpaceDataCache = null;
307
+ const loadLocalSpaceData = async () => {
308
+ if (!localSpaceDataLoaded) {
309
+ localSpaceDataCache = await readLocalSpaceData(db, normalizedSpaceId);
310
+ localSpaceDataLoaded = true;
311
+ }
312
+ return localSpaceDataCache;
313
+ };
331
314
  if (isDeviceLocal) {
332
- if (!localSpaceData || isTombstoneRecord(localSpaceData)) return null;
333
- if (!spaceListsUser(localSpaceData, checkUserId)) {
315
+ const localSpaceData2 = await loadLocalSpaceData();
316
+ if (!localSpaceData2 || isTombstoneRecord(localSpaceData2)) return null;
317
+ if (!spaceListsUser(localSpaceData2, checkUserId)) {
334
318
  return null;
335
319
  }
336
320
  const {
@@ -345,15 +329,16 @@ var fetchUserSpaceMembershipsAction = async (userId, thunkAPI) => {
345
329
  userId: DEVICE_LOCAL_OWNER_ID
346
330
  };
347
331
  }
332
+ if (membership.sourceServer && !membership.requiresRemoteSpaceVerification) {
333
+ const { sourceServer: _ss, ...verifiedMembership } = membership;
334
+ return {
335
+ ...verifiedMembership,
336
+ spaceId: normalizedSpaceId
337
+ };
338
+ }
348
339
  if (membership.sourceServer || membership.requiresRemoteSpaceVerification) {
349
- if (localSpaceData && isTombstoneRecord(localSpaceData)) return null;
350
- if (membership.sourceServer && !membership.requiresRemoteSpaceVerification) {
351
- const { sourceServer: _ss, ...verifiedMembership } = membership;
352
- return {
353
- ...verifiedMembership,
354
- spaceId: normalizedSpaceId
355
- };
356
- }
340
+ const localSpaceData2 = await loadLocalSpaceData();
341
+ if (localSpaceData2 && isTombstoneRecord(localSpaceData2)) return null;
357
342
  try {
358
343
  const remoteSpaceServers = Array.from(
359
344
  new Set(
@@ -385,6 +370,7 @@ var fetchUserSpaceMembershipsAction = async (userId, thunkAPI) => {
385
370
  return null;
386
371
  }
387
372
  }
373
+ const localSpaceData = await loadLocalSpaceData();
388
374
  if (localSpaceData) {
389
375
  return !spaceListsUser(localSpaceData, userId) ? null : {
390
376
  ...membership,
@@ -486,6 +472,88 @@ var fetchUserSpaceMembershipsAction = async (userId, thunkAPI) => {
486
472
  var dbThunkState = (thunkApi) => thunkApi.getState();
487
473
  var dbThunkExtra = (thunkApi) => thunkApi.extra;
488
474
 
475
+ // packages/create/space/member/submitAddSpaceMember.ts
476
+ var ADD_SPACE_MEMBER_TIMEOUT_MS = 1e4;
477
+ var pendingOperations = /* @__PURE__ */ new Map();
478
+ var newOperationId = () => {
479
+ const uuid = globalThis.crypto?.randomUUID;
480
+ if (typeof uuid === "function") return uuid.call(globalThis.crypto);
481
+ return `op-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
482
+ };
483
+ var messageForErrorCode = (code, fallback) => {
484
+ switch (code) {
485
+ case "conflict":
486
+ return "\u8FD9\u6B21\u64CD\u4F5C\u4E0E\u4E4B\u524D\u7684\u63D0\u4EA4\u51B2\u7A81\uFF0C\u8BF7\u5237\u65B0\u7A7A\u95F4\u540E\u91CD\u8BD5";
487
+ case "forbidden":
488
+ return "\u4F60\u6CA1\u6709\u6743\u9650\u7ED9\u8FD9\u4E2A\u7A7A\u95F4\u6DFB\u52A0\u6210\u5458";
489
+ case "not_found":
490
+ return "\u7A7A\u95F4\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5220\u9664";
491
+ case "invalid_input":
492
+ return "\u52A0\u6210\u5458\u53C2\u6570\u4E0D\u5B8C\u6574";
493
+ default:
494
+ return fallback;
495
+ }
496
+ };
497
+ var submitAddSpaceMember = async (options) => {
498
+ const { token, servers } = selectSpaceRemoteAuth(options.state);
499
+ if (!token || servers.length === 0) {
500
+ return {
501
+ ok: false,
502
+ code: "no-server",
503
+ message: "\u6CA1\u6709\u53EF\u7528\u7684\u670D\u52A1\u5668\uFF0C\u6210\u5458\u5173\u7CFB\u672A\u63D0\u4EA4"
504
+ };
505
+ }
506
+ const operationKey = `${options.spaceId}:${options.targetUserId}`;
507
+ const operationId = options.operationId ?? pendingOperations.get(operationKey) ?? newOperationId();
508
+ if (!options.operationId && !pendingOperations.has(operationKey)) {
509
+ pendingOperations.set(operationKey, operationId);
510
+ }
511
+ const timeoutMs = options.timeoutMs ?? ADD_SPACE_MEMBER_TIMEOUT_MS;
512
+ const doFetch = options.fetchImpl ?? fetch;
513
+ const controller = new AbortController();
514
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
515
+ try {
516
+ const response = await doFetch(`${servers[0]}/rpc/addSpaceMember`, {
517
+ method: "POST",
518
+ headers: {
519
+ "Content-Type": "application/json",
520
+ Authorization: `Bearer ${token}`
521
+ },
522
+ body: JSON.stringify({
523
+ spaceId: options.spaceId,
524
+ targetUserId: options.targetUserId,
525
+ operationId,
526
+ ...options.role ? { role: options.role } : null
527
+ }),
528
+ signal: controller.signal
529
+ });
530
+ if (!response.ok) {
531
+ const payload = await response.json().catch(() => null);
532
+ const raw = payload && typeof payload === "object" ? payload : null;
533
+ pendingOperations.delete(operationKey);
534
+ return {
535
+ ok: false,
536
+ code: "rejected",
537
+ message: messageForErrorCode(
538
+ raw?.code,
539
+ raw?.message || "\u670D\u52A1\u7AEF\u62D2\u7EDD\u4E86\u8FD9\u6B21\u52A0\u6210\u5458\u64CD\u4F5C"
540
+ )
541
+ };
542
+ }
543
+ const result = await response.json();
544
+ pendingOperations.delete(operationKey);
545
+ return { ok: true, result };
546
+ } catch (error) {
547
+ return {
548
+ ok: false,
549
+ code: "unconfirmed",
550
+ message: `\u6210\u5458\u5173\u7CFB\u63D0\u4EA4\u7ED3\u679C\u672A\u786E\u8BA4\uFF08${operationId}\uFF09\uFF1A\u7F51\u7EDC\u6216\u670D\u52A1\u7AEF\u672A\u5728\u65F6\u9650\u5185\u54CD\u5E94\uFF0C\u8BF7\u91CD\u8BD5`
551
+ };
552
+ } finally {
553
+ clearTimeout(timer);
554
+ }
555
+ };
556
+
489
557
  // packages/create/space/member/addMemberAction.ts
490
558
  var addMemberAction = async (input, thunkAPI) => {
491
559
  const { spaceId, memberId, role = "member" /* MEMBER */ } = input;
@@ -515,9 +583,6 @@ var addMemberAction = async (input, thunkAPI) => {
515
583
  members: [...spaceData.members, resolvedMemberId],
516
584
  updatedAt: Date.now()
517
585
  };
518
- await dispatch(
519
- write({ data: updatedSpaceData, customKey: spaceKey })
520
- ).unwrap();
521
586
  const now = Date.now();
522
587
  const spaceMemberData = {
523
588
  userId: resolvedMemberId,
@@ -534,6 +599,44 @@ var addMemberAction = async (input, thunkAPI) => {
534
599
  // 添加 type 字段
535
600
  };
536
601
  const spaceMemberKey = createSpaceKey.member(resolvedMemberId, spaceId);
602
+ if (currentUserId && !isDeviceLocalOwnerId(currentUserId)) {
603
+ const submitted = await submitAddSpaceMember({
604
+ spaceId,
605
+ targetUserId: resolvedMemberId,
606
+ role,
607
+ state
608
+ });
609
+ if (!submitted.ok) {
610
+ throw new Error(submitted.message);
611
+ }
612
+ const authoritativeSpace = submitted.result?.space ?? updatedSpaceData;
613
+ applyFetchSpaceFulfilled({ spaceId, spaceData: authoritativeSpace });
614
+ if (db) {
615
+ try {
616
+ await db.put(
617
+ spaceKey,
618
+ normalizeTimeFields({
619
+ ...authoritativeSpace,
620
+ dbKey: spaceKey,
621
+ userId: currentUserId
622
+ })
623
+ );
624
+ } catch (error) {
625
+ logger.warn(
626
+ { error },
627
+ "[addMemberAction] \u672C\u5730\u5E94\u7528\u670D\u52A1\u7AEF\u8FD4\u56DE\u7684\u7A7A\u95F4\u6570\u636E\u5931\u8D25"
628
+ );
629
+ }
630
+ }
631
+ const returnedMembership = submitted.result?.membership;
632
+ if (returnedMembership && returnedMembership.userId === currentUserId) {
633
+ addMemberSpace(returnedMembership);
634
+ }
635
+ return { spaceId, updatedSpaceData: authoritativeSpace };
636
+ }
637
+ await dispatch(
638
+ write({ data: updatedSpaceData, customKey: spaceKey })
639
+ ).unwrap();
537
640
  await dispatch(
538
641
  write({
539
642
  data: spaceMemberData,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nolo-cli",
3
- "version": "0.190.0-alpha.1",
3
+ "version": "0.190.0",
4
4
  "type": "module",
5
5
  "description": "Agent-first terminal workspace for Nolo",
6
6
  "bin": {
@@ -12,7 +12,7 @@ import {
12
12
  normalizeDialogRecord,
13
13
  readDialogSnapshot,
14
14
  sortDialogs
15
- } from "./chunk-JAJJUMDC.js";
15
+ } from "./chunk-V3MGT3RF.js";
16
16
  import {
17
17
  formatQuotaSummary,
18
18
  listFavoriteAgentIdsAcrossServers,
@@ -20,12 +20,12 @@ import {
20
20
  listRemoteAgents,
21
21
  listRemoteAgentsAcrossServers,
22
22
  normalizeListedAgent
23
- } from "./chunk-YUZIPPER.js";
23
+ } from "./chunk-W5CPGAGO.js";
24
24
  import "./chunk-ID4G2MAR.js";
25
25
  import {
26
26
  listUserRecordsFromServers,
27
27
  readLiveDbRecordAfterTombstoneMerge
28
- } from "./chunk-KOIGM3KU.js";
28
+ } from "./chunk-FMOZ57LN.js";
29
29
  import {
30
30
  refreshSubscriptionQuotas
31
31
  } from "./chunk-YGILMZ7N.js";
@@ -102,9 +102,9 @@ import {
102
102
  wrapTextToLines,
103
103
  wrapTranscriptLine,
104
104
  wrapTranscriptLineWithLayout
105
- } from "./chunk-XRADC4SK.js";
105
+ } from "./chunk-ZBY4LPKJ.js";
106
106
  import "./chunk-6QDYSCPW.js";
107
- import "./chunk-5LVGXDSL.js";
107
+ import "./chunk-CQPXGRMT.js";
108
108
  import "./chunk-Y5GCAMGP.js";
109
109
  import {
110
110
  getReadableCliDb
@@ -113,7 +113,7 @@ import {
113
113
  deleteDbRecord,
114
114
  queryUserRecords,
115
115
  readDbRecord
116
- } from "./chunk-WBCYL63M.js";
116
+ } from "./chunk-6WZQGT5X.js";
117
117
  import {
118
118
  RUN_WAKE_CHANNEL_ENV,
119
119
  clearCliLocalRuntimePreparedAgentCache,
@@ -123,12 +123,12 @@ import {
123
123
  formatApprovalRemaining,
124
124
  readTimestamp,
125
125
  registerHostApprovalRenderer
126
- } from "./chunk-ZCGA3Q7V.js";
126
+ } from "./chunk-5XLLUQKC.js";
127
127
  import "./chunk-DYQXB46J.js";
128
128
  import "./chunk-VP3BINY7.js";
129
129
  import "./chunk-R4BMKAR5.js";
130
130
  import "./chunk-LKZPX6YH.js";
131
- import "./chunk-RJ3EYB5G.js";
131
+ import "./chunk-X3RWBJDQ.js";
132
132
  import {
133
133
  NOLO_DEFAULT_AGENT_KEY,
134
134
  resolveCliAgentKeyInput
@@ -139,7 +139,7 @@ import "./chunk-7JWW65DU.js";
139
139
  import {
140
140
  defaultOpenBrowser,
141
141
  saveTokenLogin
142
- } from "./chunk-IFN7MHWL.js";
142
+ } from "./chunk-UGCQKKXW.js";
143
143
  import "./chunk-TY3TIUJK.js";
144
144
  import "./chunk-S73EPYNC.js";
145
145
  import "./chunk-GTP6VNWH.js";
@@ -151,43 +151,43 @@ import "./chunk-INFHX73M.js";
151
151
  import "./chunk-JEXVIMYZ.js";
152
152
  import {
153
153
  prepareTools
154
- } from "./chunk-ZIOYHDYW.js";
154
+ } from "./chunk-RP7UTAUN.js";
155
155
  import "./chunk-HS7MLR74.js";
156
- import "./chunk-6G5V4Y3V.js";
156
+ import "./chunk-Z6JTIUOG.js";
157
157
  import "./chunk-KFHREHUQ.js";
158
- import "./chunk-53RSTB7T.js";
158
+ import "./chunk-5N5FMA7J.js";
159
159
  import "./chunk-OXME3PEE.js";
160
160
  import "./chunk-KSTEXKL6.js";
161
161
  import "./chunk-VF4K2QE6.js";
162
- import "./chunk-LOQYQUM2.js";
163
- import "./chunk-O2MBTX37.js";
162
+ import "./chunk-JGJVDP2W.js";
163
+ import "./chunk-I7QLIRQE.js";
164
164
  import "./chunk-NF64D32W.js";
165
165
  import "./chunk-3L2WKC3W.js";
166
166
  import "./chunk-VYNMQ6HW.js";
167
- import "./chunk-R6AJKHEU.js";
167
+ import "./chunk-M2WRKZDD.js";
168
168
  import "./chunk-MYOH447Z.js";
169
- import "./chunk-ER4UTWWS.js";
169
+ import "./chunk-DFF6B7P7.js";
170
170
  import "./chunk-YIRADHSY.js";
171
171
  import "./chunk-AGIM7IMJ.js";
172
172
  import "./chunk-ZBCBFOWC.js";
173
173
  import "./chunk-VIDPVFP3.js";
174
174
  import "./chunk-63W5N6P3.js";
175
- import "./chunk-H6FUDBS3.js";
176
- import "./chunk-RGTPR57U.js";
175
+ import "./chunk-ENBAS3ZV.js";
176
+ import "./chunk-K45ORH2X.js";
177
177
  import "./chunk-5XBUWM6I.js";
178
178
  import {
179
179
  estimateMessagesTokens,
180
180
  historyTokensBeforeLatestAssistant
181
- } from "./chunk-RBVR7P3M.js";
181
+ } from "./chunk-CZAX2VJQ.js";
182
182
  import "./chunk-TZXPT53C.js";
183
183
  import "./chunk-LEC5ALIN.js";
184
184
  import "./chunk-523DITKR.js";
185
- import "./chunk-PVZ3GB25.js";
185
+ import "./chunk-RQJZQ377.js";
186
186
  import "./chunk-BYXBJQAS.js";
187
187
  import "./chunk-QYPE3TS3.js";
188
- import "./chunk-JOOWHDGM.js";
188
+ import "./chunk-A5BLRE3G.js";
189
189
  import "./chunk-4JH2UMJR.js";
190
- import "./chunk-7SJG5ZNX.js";
190
+ import "./chunk-B6EZB6DW.js";
191
191
  import "./chunk-UAD2WT54.js";
192
192
  import "./chunk-5RGU3J7P.js";
193
193
  import "./chunk-ZRAU6T47.js";
@@ -200,9 +200,9 @@ import "./chunk-5ZMIIR23.js";
200
200
  import "./chunk-CVMMWN6P.js";
201
201
  import "./chunk-P64WRQYV.js";
202
202
  import "./chunk-GLKOYSRU.js";
203
- import "./chunk-CLGAGPEM.js";
203
+ import "./chunk-CNMQATUF.js";
204
204
  import "./chunk-32ZKZET7.js";
205
- import "./chunk-Y2ZDNW2H.js";
205
+ import "./chunk-B2N5GZBU.js";
206
206
  import "./chunk-3PVYUPXK.js";
207
207
  import "./chunk-BA2FHPS4.js";
208
208
  import "./chunk-LBXUNNDS.js";
@@ -219,10 +219,10 @@ import {
219
219
  buildSkillDiscoveryContextBlock,
220
220
  buildSkillDiscoveryContextLayer
221
221
  } from "./chunk-7KWPNGVJ.js";
222
- import "./chunk-GSX7Z46F.js";
222
+ import "./chunk-5HAPEKNH.js";
223
223
  import {
224
224
  expandEnabledPacks
225
- } from "./chunk-OXOXPREC.js";
225
+ } from "./chunk-SM56M7N7.js";
226
226
  import "./chunk-EUGTFFO6.js";
227
227
  import "./chunk-AETZ7AD6.js";
228
228
  import "./chunk-Y6ORVLSS.js";
@@ -233,7 +233,7 @@ import {
233
233
  formatToolOverflowMarker,
234
234
  getProcessRegistry,
235
235
  readCommandActionGatePayload
236
- } from "./chunk-HVV4B6OL.js";
236
+ } from "./chunk-DUNY6XR5.js";
237
237
  import "./chunk-ZNFJWEN4.js";
238
238
  import "./chunk-IIX6VWLW.js";
239
239
  import "./chunk-NVOYW6H4.js";
@@ -257,10 +257,10 @@ import {
257
257
  buildRuntimeGuidanceBlocks,
258
258
  resolveResponseGuidelines,
259
259
  resolveToolGuidedSections
260
- } from "./chunk-I3HWJODB.js";
260
+ } from "./chunk-O6OGJTHX.js";
261
261
  import "./chunk-OHRDHS4N.js";
262
262
  import "./chunk-E2BESSAW.js";
263
- import "./chunk-UBLITLAZ.js";
263
+ import "./chunk-NABJEYPJ.js";
264
264
  import {
265
265
  isQuotaExhaustedError
266
266
  } from "./chunk-JLR5NWP2.js";
@@ -270,7 +270,7 @@ import "./chunk-2MBTWINN.js";
270
270
  import {
271
271
  extractReferenceKeysFromMessage,
272
272
  normalizeUsage
273
- } from "./chunk-S4W4GV3B.js";
273
+ } from "./chunk-K6TZSON4.js";
274
274
  import "./chunk-5ZUL4CUO.js";
275
275
  import {
276
276
  DEFAULT_CONTEXT_WINDOW,
@@ -403,7 +403,7 @@ import {
403
403
  setCliLocale,
404
404
  t
405
405
  } from "./chunk-UNOILAZP.js";
406
- import "./chunk-WMHWFFTE.js";
406
+ import "./chunk-ECX3NKRD.js";
407
407
  import "./chunk-XJWWBO34.js";
408
408
  import "./chunk-I42VC5KR.js";
409
409
  import "./chunk-U6VC4MU4.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cleanupCliSessionForDialog
3
- } from "./chunk-JOOWHDGM.js";
3
+ } from "./chunk-A5BLRE3G.js";
4
4
  import {
5
5
  getPrimaryDialogAgentId,
6
6
  removeDialogAgentId
@@ -17,7 +17,7 @@ import "./chunk-32ZKZET7.js";
17
17
  import {
18
18
  patch,
19
19
  selectById
20
- } from "./chunk-Y2ZDNW2H.js";
20
+ } from "./chunk-B2N5GZBU.js";
21
21
  import "./chunk-3PVYUPXK.js";
22
22
  import "./chunk-BA2FHPS4.js";
23
23
  import "./chunk-LBXUNNDS.js";
@@ -37,7 +37,7 @@ import "./chunk-KUG52IAP.js";
37
37
  import "./chunk-LCBAMY2M.js";
38
38
  import "./chunk-4SN6J65J.js";
39
39
  import "./chunk-CF7PE763.js";
40
- import "./chunk-WMHWFFTE.js";
40
+ import "./chunk-ECX3NKRD.js";
41
41
  import "./chunk-XJWWBO34.js";
42
42
  import "./chunk-I42VC5KR.js";
43
43
  import "./chunk-U6VC4MU4.js";
@@ -2,64 +2,64 @@ import {
2
2
  fetchAgentContexts,
3
3
  responsesJsonToChatCompletions,
4
4
  updateAgentTokens
5
- } from "./chunk-7N6C3IHF.js";
5
+ } from "./chunk-JY2LGGXS.js";
6
6
  import {
7
7
  generateRequestBody,
8
8
  performFetchRequest,
9
9
  sanitizeOutboundBody,
10
10
  stripModelToolArgs
11
- } from "./chunk-MMOISK6N.js";
11
+ } from "./chunk-BX5ZJVA5.js";
12
12
  import "./chunk-HS7MLR74.js";
13
13
  import {
14
14
  findToolExecutor
15
- } from "./chunk-6G5V4Y3V.js";
15
+ } from "./chunk-Z6JTIUOG.js";
16
16
  import "./chunk-KFHREHUQ.js";
17
- import "./chunk-53RSTB7T.js";
17
+ import "./chunk-5N5FMA7J.js";
18
18
  import "./chunk-OXME3PEE.js";
19
19
  import "./chunk-KSTEXKL6.js";
20
20
  import "./chunk-VF4K2QE6.js";
21
- import "./chunk-LOQYQUM2.js";
21
+ import "./chunk-JGJVDP2W.js";
22
22
  import {
23
23
  mergeReferences
24
- } from "./chunk-3QFOYFJW.js";
24
+ } from "./chunk-26MN245S.js";
25
25
  import {
26
26
  getToolResultErrorData
27
- } from "./chunk-O2MBTX37.js";
27
+ } from "./chunk-I7QLIRQE.js";
28
28
  import "./chunk-NF64D32W.js";
29
29
  import "./chunk-3L2WKC3W.js";
30
30
  import "./chunk-VYNMQ6HW.js";
31
- import "./chunk-R6AJKHEU.js";
31
+ import "./chunk-M2WRKZDD.js";
32
32
  import "./chunk-MYOH447Z.js";
33
- import "./chunk-ER4UTWWS.js";
33
+ import "./chunk-DFF6B7P7.js";
34
34
  import "./chunk-YIRADHSY.js";
35
35
  import "./chunk-AGIM7IMJ.js";
36
36
  import "./chunk-63W5N6P3.js";
37
- import "./chunk-H6FUDBS3.js";
38
- import "./chunk-RGTPR57U.js";
37
+ import "./chunk-ENBAS3ZV.js";
38
+ import "./chunk-K45ORH2X.js";
39
39
  import "./chunk-5XBUWM6I.js";
40
- import "./chunk-RBVR7P3M.js";
40
+ import "./chunk-CZAX2VJQ.js";
41
41
  import "./chunk-TZXPT53C.js";
42
42
  import "./chunk-LEC5ALIN.js";
43
43
  import "./chunk-523DITKR.js";
44
- import "./chunk-PVZ3GB25.js";
44
+ import "./chunk-RQJZQ377.js";
45
45
  import "./chunk-BYXBJQAS.js";
46
46
  import "./chunk-QYPE3TS3.js";
47
- import "./chunk-JOOWHDGM.js";
47
+ import "./chunk-A5BLRE3G.js";
48
48
  import "./chunk-4JH2UMJR.js";
49
- import "./chunk-7SJG5ZNX.js";
49
+ import "./chunk-B6EZB6DW.js";
50
50
  import "./chunk-UAD2WT54.js";
51
51
  import "./chunk-5RGU3J7P.js";
52
52
  import "./chunk-ZRAU6T47.js";
53
53
  import "./chunk-4LCOCOR5.js";
54
54
  import "./chunk-OWYYDMGJ.js";
55
55
  import "./chunk-YDH3FDFQ.js";
56
- import "./chunk-CLGAGPEM.js";
56
+ import "./chunk-CNMQATUF.js";
57
57
  import {
58
58
  selectCurrentServer
59
59
  } from "./chunk-32ZKZET7.js";
60
60
  import {
61
61
  read
62
- } from "./chunk-Y2ZDNW2H.js";
62
+ } from "./chunk-B2N5GZBU.js";
63
63
  import "./chunk-3PVYUPXK.js";
64
64
  import "./chunk-BA2FHPS4.js";
65
65
  import "./chunk-LBXUNNDS.js";
@@ -74,24 +74,24 @@ import {
74
74
  } from "./chunk-PXYBUFDB.js";
75
75
  import "./chunk-ZSO5B6SW.js";
76
76
  import "./chunk-D2MDMY2M.js";
77
- import "./chunk-GSX7Z46F.js";
78
- import "./chunk-OXOXPREC.js";
77
+ import "./chunk-5HAPEKNH.js";
78
+ import "./chunk-SM56M7N7.js";
79
79
  import "./chunk-EUGTFFO6.js";
80
80
  import "./chunk-AETZ7AD6.js";
81
81
  import "./chunk-Y6ORVLSS.js";
82
82
  import "./chunk-KHCLMKZZ.js";
83
- import "./chunk-I3HWJODB.js";
83
+ import "./chunk-O6OGJTHX.js";
84
84
  import {
85
85
  convertMessagesToResponsesInput
86
86
  } from "./chunk-OHRDHS4N.js";
87
87
  import "./chunk-E2BESSAW.js";
88
- import "./chunk-UBLITLAZ.js";
88
+ import "./chunk-NABJEYPJ.js";
89
89
  import "./chunk-JLR5NWP2.js";
90
90
  import {
91
91
  resolveAgentCallPlan,
92
92
  resolveClientWire
93
93
  } from "./chunk-WFUIXNKC.js";
94
- import "./chunk-S4W4GV3B.js";
94
+ import "./chunk-K6TZSON4.js";
95
95
  import "./chunk-5ZUL4CUO.js";
96
96
  import "./chunk-JIFYXQRD.js";
97
97
  import "./chunk-H57T64RA.js";
@@ -128,7 +128,7 @@ import {
128
128
  import "./chunk-LCBAMY2M.js";
129
129
  import "./chunk-4SN6J65J.js";
130
130
  import "./chunk-CF7PE763.js";
131
- import "./chunk-WMHWFFTE.js";
131
+ import "./chunk-ECX3NKRD.js";
132
132
  import "./chunk-XJWWBO34.js";
133
133
  import "./chunk-I42VC5KR.js";
134
134
  import "./chunk-U6VC4MU4.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  setDialogExtraReferencesAction
3
- } from "./chunk-ER4UTWWS.js";
3
+ } from "./chunk-DFF6B7P7.js";
4
4
  import "./chunk-ZRAU6T47.js";
5
5
  import "./chunk-4LCOCOR5.js";
6
6
  import "./chunk-OWYYDMGJ.js";
7
7
  import "./chunk-YDH3FDFQ.js";
8
- import "./chunk-Y2ZDNW2H.js";
8
+ import "./chunk-B2N5GZBU.js";
9
9
  import "./chunk-3PVYUPXK.js";
10
10
  import "./chunk-BA2FHPS4.js";
11
11
  import "./chunk-LBXUNNDS.js";
@@ -24,7 +24,7 @@ import "./chunk-KUG52IAP.js";
24
24
  import "./chunk-LCBAMY2M.js";
25
25
  import "./chunk-4SN6J65J.js";
26
26
  import "./chunk-CF7PE763.js";
27
- import "./chunk-WMHWFFTE.js";
27
+ import "./chunk-ECX3NKRD.js";
28
28
  import "./chunk-XJWWBO34.js";
29
29
  import "./chunk-I42VC5KR.js";
30
30
  import "./chunk-U6VC4MU4.js";