nolo-cli 0.157.0-alpha.1 → 0.159.0-alpha.1

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 (143) hide show
  1. package/{_executeModel-5WS2PA62.js → _executeModel-JISIM4PS.js} +41 -41
  2. package/{accountResolver-7RYB4D2P.js → accountResolver-55EDKEIK.js} +1 -1
  3. package/{action-ZJYUBXFC.js → action-GPPJC5TI.js} +4 -4
  4. package/{addContentAction-TVHB4526.js → addContentAction-BI6RDRTQ.js} +7 -7
  5. package/{addDialogAgentAction-FDPBU6K6.js → addDialogAgentAction-4RJYUSIK.js} +6 -6
  6. package/{agentDeleteCommand-Q6M4F3U6.js → agentDeleteCommand-2NMZDFL5.js} +54 -54
  7. package/{agentEmailCommands-FNH6FEHS.js → agentEmailCommands-VQ2QGKL4.js} +56 -56
  8. package/{agentListCommands-JUNMFS6E.js → agentListCommands-3CJ4GF6C.js} +21 -21
  9. package/{agentMachineCommands-VNLDEKNT.js → agentMachineCommands-BMOEPV5C.js} +20 -19
  10. package/{agentProviderCommands-X2HQE6HY.js → agentProviderCommands-CUBOAVPB.js} +2 -2
  11. package/{agentRecordCommands-47XXRVPI.js → agentRecordCommands-XRB7BLWV.js} +54 -54
  12. package/{agentRunCommand-QEXFJUXQ.js → agentRunCommand-VKCTAW55.js} +56 -55
  13. package/{agentRunControl-2C5GM3BW.js → agentRunControl-PPYWJRIJ.js} +4 -4
  14. package/{agentRuntimeLocal-O5GDAFTN.js → agentRuntimeLocal-7JDS3OAL.js} +14 -14
  15. package/{agentSlice-E3XS5FTQ.js → agentSlice-ST6QQ5FD.js} +7 -7
  16. package/{appDeleteCommands-C2J5RQ3I.js → appDeleteCommands-UVWHW4TJ.js} +19 -19
  17. package/{appDeployCommands-3YRK7PSU.js → appDeployCommands-67JPR4JU.js} +19 -19
  18. package/{appDeployStatusCommands-FPAX7MOK.js → appDeployStatusCommands-UTC6IR5V.js} +19 -19
  19. package/{appGetCommands-XAC2V766.js → appGetCommands-KLLIGWNC.js} +19 -19
  20. package/{appListCommands-ZJL2W5O7.js → appListCommands-AZKNWJUR.js} +19 -19
  21. package/{authCommand-J3XILHWW.js → authCommand-MSINEFHH.js} +12 -292
  22. package/{authCommands-77CHYBGF.js → authCommands-AMNIAKEG.js} +2 -2
  23. package/{builtinSkillRegistry-A6VSPJEJ.js → builtinSkillRegistry-H3AY27TR.js} +1 -1
  24. package/{chromeCommands-OBBNJCLS.js → chromeCommands-IY4NVSXZ.js} +17 -10
  25. package/{chunk-SW4S4XYB.js → chunk-2AB2HA4M.js} +84 -34
  26. package/{chunk-Z6KQDSZW.js → chunk-2SGAI64X.js} +2 -2
  27. package/{chunk-C5VPAHIU.js → chunk-32ZKZET7.js} +1 -1
  28. package/{chunk-XPWGOTBQ.js → chunk-3L2WKC3W.js} +1 -8
  29. package/{chunk-MM3662RS.js → chunk-42W7LKBM.js} +1 -1
  30. package/{chunk-FPWT3RH2.js → chunk-4CYTNZG3.js} +14 -14
  31. package/{chunk-L6EQV5OC.js → chunk-4JOZECCA.js} +3 -3
  32. package/{chunk-YBNHPX4S.js → chunk-4RJJDA57.js} +1 -1
  33. package/{chunk-B2EGWZJG.js → chunk-5MPS5OOY.js} +1 -1
  34. package/{chunk-TRW43TSC.js → chunk-6EQD4AQL.js} +41 -1
  35. package/{chunk-UUPR3TD7.js → chunk-7RF4O6AT.js} +1 -3
  36. package/{chunk-ZD2BLOY6.js → chunk-B5MSFO6R.js} +3 -3
  37. package/{chunk-2GGXHQIW.js → chunk-BLVSFYQ3.js} +4 -2
  38. package/{chunk-UTIMX333.js → chunk-C3WXTFRP.js} +1 -1
  39. package/{chunk-ROPSATAB.js → chunk-CON6SI7N.js} +1 -1
  40. package/{chunk-4Z245KOA.js → chunk-DC3SZCRR.js} +6 -2
  41. package/{chunk-X5SUT4CN.js → chunk-DD7BZWJ6.js} +6 -6
  42. package/{chunk-ANJTRG52.js → chunk-DFWLD7WU.js} +1 -38
  43. package/{chunk-PSJWPSKS.js → chunk-EWO77ZGF.js} +9 -43
  44. package/{chunk-DW7MGLMG.js → chunk-FUNTOSV3.js} +26 -22
  45. package/{chunk-MVJVF4ED.js → chunk-FVZVJA54.js} +7 -6
  46. package/{chunk-ZWG3C7VI.js → chunk-GB552UJS.js} +36 -1
  47. package/{chunk-EJU23ST5.js → chunk-GJNYJH7O.js} +682 -639
  48. package/{chunk-6MJNEXUU.js → chunk-HGDKT2D6.js} +4 -0
  49. package/{chunk-QDA4Y5O6.js → chunk-HXSN43Y5.js} +21 -17
  50. package/{chunk-7GC3EKUG.js → chunk-IE7G4BF5.js} +3 -3
  51. package/{chunk-T6CBQ6BN.js → chunk-INFHX73M.js} +1 -1
  52. package/{chunk-CE7PIHQD.js → chunk-IRTOYSA2.js} +3 -3
  53. package/{chunk-PEO24UB5.js → chunk-IULXURBL.js} +39 -12
  54. package/{chunk-WZ6OU4NX.js → chunk-J2ATF74A.js} +2 -2
  55. package/{chunk-SKPPKHD3.js → chunk-J4S44CSW.js} +2 -2
  56. package/{chunk-KOB75UNU.js → chunk-JKXXZUO4.js} +18 -2
  57. package/{chunk-K43ZF2C3.js → chunk-JPPQ3GUO.js} +1 -1
  58. package/{chunk-RUNKPFM5.js → chunk-JPSTJHGJ.js} +12 -8
  59. package/{chunk-I2ZMGXXF.js → chunk-KFHREHUQ.js} +1 -1
  60. package/{chunk-3C2QLERX.js → chunk-KMDDG73K.js} +1 -1
  61. package/{chunk-TZTWMGE3.js → chunk-M2P3OGXZ.js} +3 -3
  62. package/{chunk-IPAW7XLD.js → chunk-MFVOJ6KF.js} +2 -2
  63. package/{chunk-2MTE2PEH.js → chunk-MGSNS22D.js} +1 -1
  64. package/{chunk-FDT27L7S.js → chunk-MJKKEGF5.js} +8 -6
  65. package/{chunk-H4KACZMG.js → chunk-MNRZCEYU.js} +263 -128
  66. package/{chunk-CBHGZRCE.js → chunk-MYOH447Z.js} +1 -1
  67. package/{chunk-6MPAEODB.js → chunk-NDZOXXIM.js} +17 -3
  68. package/{chunk-VAZHH6FO.js → chunk-NJTXRGCJ.js} +18 -12
  69. package/{chunk-G47IPDOK.js → chunk-NUE735UT.js} +1 -1
  70. package/{chunk-HKT6QXP3.js → chunk-O4KVUI4W.js} +2 -2
  71. package/{chunk-36OMEXXR.js → chunk-OON4OBWI.js} +1 -1
  72. package/{chunk-7A4LJCDR.js → chunk-OVQFMCVI.js} +4 -4
  73. package/{chunk-SUKSWFLP.js → chunk-PIG2IUVZ.js} +1 -1
  74. package/{chunk-OH2M7WEU.js → chunk-PIYYH2LE.js} +3 -3
  75. package/{chunk-EM3YOZJ4.js → chunk-PKC7D6SX.js} +3 -3
  76. package/{chunk-SEJ5OS6F.js → chunk-PXYBUFDB.js} +4 -0
  77. package/{chunk-TYND6RDQ.js → chunk-QI2WVWXV.js} +73 -2
  78. package/{chunk-IYBIRCQV.js → chunk-QOYJE6NX.js} +1 -1
  79. package/{chunk-TNIX77YM.js → chunk-R5GO3YZP.js} +34 -1
  80. package/{chunk-XFKZ3MCV.js → chunk-R6ABE4UC.js} +223 -67
  81. package/{chunk-KX6LPG7W.js → chunk-RE5I35J7.js} +2 -2
  82. package/{chunk-VSOWPETY.js → chunk-RGYDJ352.js} +7 -7
  83. package/{chunk-D4OWHT5Y.js → chunk-SPKLALBU.js} +2 -2
  84. package/{chunk-JGRPBIZZ.js → chunk-SQX235S2.js} +1 -1
  85. package/{chunk-6TF64IF2.js → chunk-U6TTTB6V.js} +16 -2
  86. package/{chunk-3XZKV7QQ.js → chunk-US6MKPE7.js} +1 -1
  87. package/{chunk-I2RMFLLH.js → chunk-V7PCFWX3.js} +1 -1
  88. package/{chunk-HXHSTRGH.js → chunk-VYNMQ6HW.js} +0 -27
  89. package/{chunk-7BSQK2UC.js → chunk-WRCZXJ4N.js} +2 -2
  90. package/{chunk-ZEHTARJA.js → chunk-XEF4HW56.js} +42 -96
  91. package/chunk-Y5GCAMGP.js +9 -0
  92. package/{chunk-7KYVUFDG.js → chunk-YNCJYU4X.js} +2 -264
  93. package/{chunk-SCJD2PNK.js → chunk-YPG7TUQD.js} +3 -3
  94. package/{chunk-TJ2VPCBE.js → chunk-ZIGIN5IX.js} +2 -2
  95. package/{chunk-YANF2RR4.js → chunk-ZPKUJROL.js} +1 -1
  96. package/{chunk-HP6O6LTV.js → chunk-ZVQHBIWV.js} +6 -6
  97. package/{commandRegistry-OUBQIF62.js → commandRegistry-ROBNQFWA.js} +79 -87
  98. package/{contentThunks-B3FRQGP7.js → contentThunks-EWOJGG2I.js} +17 -16
  99. package/{createAgentAutomationAction-T2YFJ6MY.js → createAgentAutomationAction-I43ICGXU.js} +17 -16
  100. package/{createDialogAction-2NFGFBXW.js → createDialogAction-IIAHRXND.js} +18 -17
  101. package/{createPageAction-LDAVZDN7.js → createPageAction-OVK7PG4L.js} +17 -16
  102. package/{dbSlice-5QGKMQLO.js → dbSlice-DC2J53RC.js} +6 -6
  103. package/{deleteFile-EW6QNRRT.js → deleteFile-KYWEMNFX.js} +4 -4
  104. package/{dialogCommands-ZLBEAQHE.js → dialogCommands-K4OVKDYD.js} +22 -21
  105. package/{dialogSlice-64S3J6CP.js → dialogSlice-U22CFPRN.js} +16 -15
  106. package/{docCreateCommands-XOG5BBFQ.js → docCreateCommands-GI377ZFI.js} +17 -17
  107. package/{docDeleteCommands-NCW3BBRX.js → docDeleteCommands-NBQNTVHB.js} +18 -18
  108. package/{docReadCommands-OT7X44Y3.js → docReadCommands-6SKEW6AO.js} +17 -17
  109. package/{docStore-NIP7OO4I.js → docStore-SS2QUBG6.js} +7 -7
  110. package/{docUpdateCommands-JW7OWW2J.js → docUpdateCommands-NJ7JD6VA.js} +17 -17
  111. package/{getPricing-TX35D7PI.js → getPricing-XQ3N3RBP.js} +2 -2
  112. package/{handleSendMessageAction-TOKA7ED7.js → handleSendMessageAction-YVPRHPQR.js} +30 -29
  113. package/index.js +7 -7
  114. package/{localRuntimeAdapter-EQM6LFYC.js → localRuntimeAdapter-CC7ZPJRV.js} +54 -52
  115. package/{machineCommands-WJ7FZ67T.js → machineCommands-XEWIUHTY.js} +58 -56
  116. package/{machineWsRunDispatch-BQT4DEA2.js → machineWsRunDispatch-JYEWCXGP.js} +53 -53
  117. package/{memberThunks-KRV5YXOB.js → memberThunks-2DWKLE6W.js} +7 -7
  118. package/package.json +1 -1
  119. package/{profileConfig-ZGOFORWV.js → profileConfig-KN3N2BLF.js} +7 -1
  120. package/{providerPresetApply-CRZFMQD5.js → providerPresetApply-PKUOHQJT.js} +5 -5
  121. package/{providerRegistry-7IS43D3X.js → providerRegistry-HNQLIFN2.js} +5 -5
  122. package/{read-5KAZHHDM.js → read-L7QEJETH.js} +4 -4
  123. package/{readDocTool-5QO34OSX.js → readDocTool-QELXV2GW.js} +1 -1
  124. package/{readlineWorkspace-JHJSU5DS.js → readlineWorkspace-7MZPTN5U.js} +330 -117
  125. package/{removeDialogAgentAction-6X63HMI3.js → removeDialogAgentAction-376XSUP2.js} +8 -8
  126. package/{runAgentClientLoop-5QIGEALK.js → runAgentClientLoop-MLEVVWUH.js} +45 -40
  127. package/{runtimeDoctorCommands-56NWKNON.js → runtimeDoctorCommands-HEN5IPIH.js} +4 -4
  128. package/{secretCommands-ZXZRLR3R.js → secretCommands-DNY56NSU.js} +11 -1
  129. package/{setDialogExtraReferencesAction-4MAYKKYW.js → setDialogExtraReferencesAction-QBDSH63D.js} +7 -7
  130. package/{setPrimaryDialogAgentAction-EGBAMREH.js → setPrimaryDialogAgentAction-537QFGW3.js} +8 -8
  131. package/settingThunks-4Z43ZSAT.js +923 -0
  132. package/{spaceCommands-ZWDPTURU.js → spaceCommands-UM3ZQKJU.js} +17 -17
  133. package/{streamAgentChatTurn-456DWXNY.js → streamAgentChatTurn-J7HYND6V.js} +48 -48
  134. package/{switchDialogAgentAction-YBKTD6DO.js → switchDialogAgentAction-CSO6AKRL.js} +6 -6
  135. package/{tableCommands-U3QDY4L6.js → tableCommands-LBH3QPPO.js} +1 -1
  136. package/{toolApiClient-7WSJJJBV.js → toolApiClient-HGNO53TC.js} +2 -2
  137. package/{tools-IWNXKK4Y.js → tools-3CEH74XY.js} +34 -33
  138. package/{tuiSummaryLlmCaller-KLK6K3Q3.js → tuiSummaryLlmCaller-VSNIIH63.js} +6 -6
  139. package/{updateCommands-NQXAGFM7.js → updateCommands-LXZLG44Y.js} +2 -2
  140. package/{updateDialogTitleAction-SX53FZWO.js → updateDialogTitleAction-C557RTYG.js} +17 -16
  141. package/{workloadLifecycle-36DXRZKU.js → workloadLifecycle-6O6PMISX.js} +2 -2
  142. package/chunk-W4S6OTSC.js +0 -35
  143. package/settingThunks-FTDRZNSJ.js +0 -1371
@@ -2,7 +2,7 @@ import {
2
2
  deleteDialog,
3
3
  runtime_default,
4
4
  toast
5
- } from "./chunk-H4KACZMG.js";
5
+ } from "./chunk-MNRZCEYU.js";
6
6
  import {
7
7
  getCurrentSpaceId,
8
8
  getCurrentSpaceIdRaw,
@@ -19,7 +19,7 @@ import {
19
19
  addContentAction,
20
20
  checkSpaceMembership,
21
21
  localSpaceAuthorityPatchStamp
22
- } from "./chunk-TZTWMGE3.js";
22
+ } from "./chunk-M2P3OGXZ.js";
23
23
  import {
24
24
  createSpaceKey,
25
25
  normalizeSpaceId
@@ -32,7 +32,7 @@ import {
32
32
  uploadFileAction,
33
33
  upsertSSREntity,
34
34
  write
35
- } from "./chunk-HP6O6LTV.js";
35
+ } from "./chunk-ZVQHBIWV.js";
36
36
  import {
37
37
  resolveFileCategory
38
38
  } from "./chunk-3PVYUPXK.js";
@@ -43,16 +43,19 @@ import {
43
43
  resolveReplicationServers,
44
44
  scheduleDeleteReplication,
45
45
  scheduleWriteReplication
46
- } from "./chunk-Z6KQDSZW.js";
46
+ } from "./chunk-2SGAI64X.js";
47
47
  import {
48
48
  createAsyncThunk
49
- } from "./chunk-7BSQK2UC.js";
49
+ } from "./chunk-WRCZXJ4N.js";
50
+ import {
51
+ getIsDesktopApp
52
+ } from "./chunk-6Q7UTJKR.js";
50
53
  import {
51
54
  createClientLogger
52
55
  } from "./chunk-QQ56R7KS.js";
53
56
  import {
54
57
  selectIdentityUserId
55
- } from "./chunk-SEJ5OS6F.js";
58
+ } from "./chunk-PXYBUFDB.js";
56
59
  import {
57
60
  buildTombstoneRecord
58
61
  } from "./chunk-D2MDMY2M.js";
@@ -4509,6 +4512,7 @@ var fetchTableRowsFromServer = async (server, tenantId, tableId, headers, fetchI
4509
4512
  const res = await fetchImpl(`${server}/rpc/listTableRows`, {
4510
4513
  method: "POST",
4511
4514
  headers,
4515
+ credentials: "include",
4512
4516
  body: JSON.stringify({
4513
4517
  tenantId,
4514
4518
  tableId,
@@ -4619,12 +4623,14 @@ var fetchAndCacheTableRows = async ({
4619
4623
  const headers = {
4620
4624
  "Content-Type": "application/json"
4621
4625
  };
4622
- if (token) {
4623
- headers.Authorization = `Bearer ${token}`;
4626
+ if (typeof token === "string" && token.trim()) {
4627
+ headers.Authorization = `Bearer ${token.trim()}`;
4624
4628
  }
4629
+ const isWebBrowser = typeof window !== "undefined" && !getIsDesktopApp();
4630
+ const serversToQuery = isWebBrowser && remoteServers.length > 0 ? [remoteServers[0]] : remoteServers;
4625
4631
  const localRows = await loadLocalTableRows(db, tenantId, tableId);
4626
4632
  const remoteResults = await Promise.allSettled(
4627
- remoteServers.map(
4633
+ serversToQuery.map(
4628
4634
  (server) => fetchTableRowsFromServer(server, tenantId, tableId, headers, fetchImpl)
4629
4635
  )
4630
4636
  );
@@ -4637,7 +4643,7 @@ var fetchAndCacheTableRows = async ({
4637
4643
  );
4638
4644
  throw new Error(firstFailure?.reason?.message || "\u52A0\u8F7D\u8868\u884C\u5931\u8D25");
4639
4645
  }
4640
- const allRemoteSnapshotsComplete = remoteServers.length > 0 && remoteResults.length === remoteServers.length && fulfilledRemoteSnapshots.length === remoteServers.length && fulfilledRemoteSnapshots.every((snapshot) => snapshot.complete);
4646
+ const allRemoteSnapshotsComplete = serversToQuery.length > 0 && remoteResults.length === serversToQuery.length && fulfilledRemoteSnapshots.length === serversToQuery.length && fulfilledRemoteSnapshots.every((snapshot) => snapshot.complete);
4641
4647
  const localRowsByKey = new Map(
4642
4648
  localRows.filter((row) => typeof row?.dbKey === "string" && row.dbKey.length > 0).map((row) => [row.dbKey, row])
4643
4649
  );
@@ -5822,11 +5828,11 @@ var ENTITY_DELETE_STRATEGIES = {
5822
5828
  await dispatch(deleteTable({ dbKey: key })).unwrap();
5823
5829
  },
5824
5830
  file: async (key, { thunkAPI }) => {
5825
- const { deleteFileAction } = await import("./deleteFile-EW6QNRRT.js");
5831
+ const { deleteFileAction } = await import("./deleteFile-KYWEMNFX.js");
5826
5832
  await deleteFileAction(key, thunkAPI);
5827
5833
  },
5828
5834
  image: async (key, { thunkAPI }) => {
5829
- const { deleteFileAction } = await import("./deleteFile-EW6QNRRT.js");
5835
+ const { deleteFileAction } = await import("./deleteFile-KYWEMNFX.js");
5830
5836
  await deleteFileAction(key, thunkAPI);
5831
5837
  },
5832
5838
  agent: async (key, { dispatch, userId, sourceServerOrigin }) => {
@@ -2,7 +2,7 @@ import {
2
2
  deleteDbRecord,
3
3
  queryUserRecords,
4
4
  readDbRecord
5
- } from "./chunk-HKT6QXP3.js";
5
+ } from "./chunk-O4KVUI4W.js";
6
6
  import {
7
7
  mergeAndDedupUserData
8
8
  } from "./chunk-OXME3PEE.js";
@@ -3,7 +3,7 @@ import {
3
3
  classifyAgentApiKeyRef,
4
4
  formatUnsupportedAgentApiKeyRefMessage,
5
5
  shouldReadAgentKeyRemotely
6
- } from "./chunk-UUPR3TD7.js";
6
+ } from "./chunk-7RF4O6AT.js";
7
7
  import {
8
8
  resolveCliAgentKeyInput
9
9
  } from "./chunk-NBTY7YJF.js";
@@ -556,7 +556,7 @@ async function buildCreatedAgentRecord(args) {
556
556
  const resolvedAgentInput = resolveCliAgentKeyInput(args.parsed.agentInput);
557
557
  const agentKey = resolvedAgentInput.startsWith("agent-") ? resolvedAgentInput : createAgentKey.private(userId || "local", resolvedAgentInput);
558
558
  if (args.parsed.presetId) {
559
- const { resolveProviderPresetFields } = await import("./providerPresetApply-CRZFMQD5.js");
559
+ const { resolveProviderPresetFields } = await import("./providerPresetApply-PKUOHQJT.js");
560
560
  const fields = resolveProviderPresetFields(args.parsed.presetId);
561
561
  if (fields.kind === "manual") {
562
562
  throw new Error(
@@ -37,7 +37,7 @@ import {
37
37
  getProfileTokens,
38
38
  loadProfileConfig,
39
39
  saveDefaultProfile
40
- } from "./chunk-TNIX77YM.js";
40
+ } from "./chunk-R5GO3YZP.js";
41
41
 
42
42
  // packages/cli/authCommands.ts
43
43
  import { createInterface } from "node:readline/promises";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  addContentToSpace
3
- } from "./chunk-VAZHH6FO.js";
3
+ } from "./chunk-NJTXRGCJ.js";
4
4
  import {
5
5
  format,
6
6
  prepareAndPersistMessage,
7
7
  uiAskChoiceFunc,
8
8
  uiAskChoiceFunctionSchema
9
- } from "./chunk-H4KACZMG.js";
9
+ } from "./chunk-MNRZCEYU.js";
10
10
  import {
11
11
  formatISO
12
12
  } from "./chunk-ZRAU6T47.js";
@@ -16,13 +16,13 @@ import {
16
16
  removeCachedEntity,
17
17
  upsertSSREntity,
18
18
  write
19
- } from "./chunk-HP6O6LTV.js";
19
+ } from "./chunk-ZVQHBIWV.js";
20
20
  import {
21
21
  isDevelopment
22
22
  } from "./chunk-6Q7UTJKR.js";
23
23
  import {
24
24
  selectIdentityUserId
25
- } from "./chunk-SEJ5OS6F.js";
25
+ } from "./chunk-PXYBUFDB.js";
26
26
  import {
27
27
  buildBuiltinObjectSkillReference
28
28
  } from "./chunk-JZX2XLKC.js";
@@ -4,7 +4,7 @@ import {
4
4
  resolvePlatformHostedCredentialProvider,
5
5
  resolvePlatformProxyChatGatewayEndpoint,
6
6
  resolvePlatformResponsesEndpoint
7
- } from "./chunk-I2RMFLLH.js";
7
+ } from "./chunk-V7PCFWX3.js";
8
8
  import {
9
9
  CLI_PROVIDER_VALUES
10
10
  } from "./chunk-5BHQICF2.js";
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  patch,
9
9
  readAndWait
10
- } from "./chunk-HP6O6LTV.js";
10
+ } from "./chunk-ZVQHBIWV.js";
11
11
  import {
12
12
  toErrorMessage
13
13
  } from "./chunk-HNMXYYJR.js";
@@ -333,7 +333,7 @@ async function saveDocState(arg, { dispatch, getState }) {
333
333
  ).unwrap();
334
334
  if (dbSpaceId) {
335
335
  try {
336
- const { updateContentTitle } = await import("./contentThunks-B3FRQGP7.js");
336
+ const { updateContentTitle } = await import("./contentThunks-EWOJGG2I.js");
337
337
  await dispatch(
338
338
  updateContentTitle({
339
339
  spaceId: dbSpaceId,
@@ -372,7 +372,7 @@ async function saveDocState(arg, { dispatch, getState }) {
372
372
  }
373
373
  }
374
374
  async function createDocState(args, thunkApi) {
375
- const { createPageAction } = await import("./createPageAction-LDAVZDN7.js");
375
+ const { createPageAction } = await import("./createPageAction-OVK7PG4L.js");
376
376
  return createPageAction(args, thunkApi);
377
377
  }
378
378
  function subscribe(listener) {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  listUserRecordsFromServers,
3
3
  readLiveDbRecordAfterTombstoneMerge
4
- } from "./chunk-G47IPDOK.js";
4
+ } from "./chunk-NUE735UT.js";
5
5
  import {
6
6
  agentRecordHasConfiguredCredential
7
- } from "./chunk-HKT6QXP3.js";
7
+ } from "./chunk-O4KVUI4W.js";
8
8
  import {
9
9
  deriveCredentialGroup
10
- } from "./chunk-KX6LPG7W.js";
10
+ } from "./chunk-RE5I35J7.js";
11
11
  import {
12
12
  isTombstoneRecord
13
13
  } from "./chunk-D2MDMY2M.js";
@@ -13,6 +13,9 @@ function getSessionSnapshotForState(state) {
13
13
  }
14
14
  return getBoundSessionSnapshot();
15
15
  }
16
+ function getSessionGenerationForState(state) {
17
+ return getSessionSnapshotForState(state)?.sessionGeneration;
18
+ }
16
19
 
17
20
  // packages/identity/selectors.local.ts
18
21
  var LOCAL_USER_ID = (typeof process !== "undefined" ? process.env?.NOLO_LOCAL_USER_ID : void 0) || (typeof process !== "undefined" ? process.env?.NOLO_USER_ID : void 0) || "local";
@@ -42,6 +45,7 @@ var selectIdentityUserBalance = (state) => void 0;
42
45
 
43
46
  export {
44
47
  getSessionSnapshotForState,
48
+ getSessionGenerationForState,
45
49
  selectIdentityUserId,
46
50
  selectIdentityToken,
47
51
  selectIdentityUser,
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-PSCNXBYA.js";
16
16
  import {
17
17
  getModelConfig
18
- } from "./chunk-TRW43TSC.js";
18
+ } from "./chunk-6EQD4AQL.js";
19
19
  import {
20
20
  asTrimmedString
21
21
  } from "./chunk-3EUW3WEO.js";
@@ -95,6 +95,13 @@ var DELETE_SAFETY_RED_LINE = [
95
95
  "\u552F\u4E00\u4F8B\u5916\xB7\u53EF\u9A8C\u8BC1\u6062\u590D\u7684\u4EFB\u52A1\u6E05\u7406\uFF1A\u672C\u6B21\u4EFB\u52A1\u4EB2\u81EA\u521B\u5EFA/\u542F\u52A8\u3001\u4E14\u6E05\u7406\u524D\u5DF2\u7528\u5B9E\u9645\u547D\u4EE4\u9010\u9879\u9A8C\u8BC1\u300C\u8981\u5220\u7684\u5168\u90E8\u5185\u5BB9\u53E6\u6709\u5B8C\u6574\u526F\u672C\u3001\u5220\u4E86\u53EF\u65E0\u635F\u6062\u590D\u300D\u7684\u8D44\u6E90\uFF0C\u53EF\u514D\u4E8B\u524D\u6E05\u5355\u4E0E\u786E\u8BA4\uFF0C\u6E05\u7406\u540E\u5728\u6C47\u62A5\u4E2D\u9010\u9879\u5217\u660E\uFF1B\u7CBE\u786E\u5B9A\u4F4D\u4ECD\u5FC5\u987B\u3002\u4EC5\u9650\uFF1A\u2460 \u5DF2\u5B8C\u6574\u5408\u5165\u4FDD\u7559\u7684\u96C6\u6210\u5206\u652F\uFF08git merge-base --is-ancestor \u9A8C\u8BC1\uFF09\u7684\u672C\u5730\u5206\u652F\u4E0E worktree\uFF0C\u4E14\u9664 a)\u3001b) \u4E24\u7C7B\u5916\uFF0C`git status --porcelain --ignored` \u8F93\u51FA\u5FC5\u987B\u4E3A\u7A7A\uFF1Aa) `!! node_modules/`\u2014\u2014\u987B\u5148\u7528 find \u6838\u5B9E\u5176\u4E2D\u53EA\u6709\u6307\u5411\u672C worktree \u5185\u7684\u5DE5\u4F5C\u533A\u5305\u7B26\u53F7\u94FE\u63A5\u3001\u4EE5\u53CA\u53EA\u88C5\u8FD9\u7C7B\u94FE\u63A5\u7684 scope \u5BB9\u5668\u76EE\u5F55\uFF0C\u65E0\u4EFB\u4F55\u666E\u901A\u6587\u4EF6\u6216\u5176\u4ED6\u7C7B\u578B\u6761\u76EE\uFF0C\u94FE\u63A5\u65E0\u6CD5\u89E3\u6790\u5373\u4E0D\u901A\u8FC7\uFF1Bb) \u88AB\u5FFD\u7565\u7684**\u53EF\u518D\u751F\u6784\u5EFA\u4EA7\u7269**\uFF08\u5982 `*.tsbuildinfo`\u3001\u6784\u5EFA/\u7F16\u8BD1\u7F13\u5B58\uFF09\u2014\u2014\u987B\u9010\u9879\u5217\u51FA\u8DEF\u5F84\uFF0C\u5E76\u7ED9\u51FA\u80FD\u91CD\u65B0\u751F\u6210\u5B83\u7684**\u4ED3\u5E93\u5185\u65E2\u6709\u547D\u4EE4**\uFF08\u5F53\u6B21\u5B9E\u9645\u6267\u884C\u901A\u8FC7\uFF1B\u6307\u4E0D\u51FA\u547D\u4EE4\u6216\u8DD1\u4E0D\u901A\u7684\u4E00\u5F8B\u4E0D\u653E\u884C\uFF09\uFF0C\u786E\u8BA4\u53EF\u7531\u8BE5\u547D\u4EE4\u65E0\u635F\u518D\u751F\u3001\u4E0D\u542B\u552F\u4E00\u7ED3\u679C\u6216\u7528\u6237\u6570\u636E\u3001\u4E14\u4E0D\u662F\u624B\u5DE5\u6539\u52A8\u8FC7\u7684\u4EA7\u7269\uFF1B\u4E0B\u5217\u4E00\u5F8B\u4E0D\u5C5E\u6B64\u7C7B\uFF1A`.env*` \u7B49\u51ED\u8BC1\u3001`data/`\u3001`nolo/`\u3001`.nolo/`\u3001\u4EFB\u4F55\u6570\u636E\u5E93/LevelDB/WAL/\u5BA1\u8BA1/\u65E5\u5FD7/\u62A5\u544A/\u5BFC\u51FA\u76EE\u5F55\u3001`artifacts/`\u3001\u624B\u5DE5\u6539\u52A8\u8FC7\u7684 `dist/`\u3001`public/` \u4E0B\u7684\u4EA7\u7269\u76EE\u5F55\uFF1B\u300C\u5DF2\u88AB gitignore\u300D\u300C\u662F\u6784\u5EFA\u4EA7\u7269\u300D\u300C\u53EF\u91CD\u65B0\u6784\u5EFA\u300D\u7B49\u672A\u7ECF\u547D\u4EE4\u6838\u5B9E\u7684\u8BF4\u6CD5\u4E0D\u6784\u6210\u653E\u884C\u7406\u7531\u3002\u6CE8\u610F `git worktree remove` \u4E0D\u4F1A\u56E0 ignored \u5185\u5BB9\u800C\u62D2\u7EDD\uFF08\u4F1A\u8FDE\u5176\u4E00\u5E76\u5220\u9664\uFF09\uFF0C\u672C\u4F8B\u5916\u6CA1\u6709\u673A\u68B0\u515C\u5E95\uFF0C\u4E0A\u8FF0\u9010\u9879\u6838\u5B9E\u662F\u552F\u4E00\u9632\u7EBF\uFF1B\u53EA\u7528\u4E0D\u5E26 --force \u7684 git worktree remove \u4E0E git branch -d\uFF0C\u7981\u6B62 -D\u3001--force\u3001rm -rf \u66FF\u4EE3\uFF1B\u2461 \u672C\u6B21\u521B\u5EFA\u3001\u5185\u5BB9\u53EA\u662F\u53EF\u518D\u751F\u4E2D\u95F4\u4EA7\u7269\uFF08\u65E5\u5FD7\u3001\u63A2\u9488\u811A\u672C\u3001\u622A\u56FE\u3001\u6784\u5EFA\u7F13\u5B58\uFF09\u7684 /tmp \u6587\u4EF6\uFF0C\u542B\u552F\u4E00\u7ED3\u679C\u6216\u7528\u6237\u6570\u636E\u7684\u4E0D\u7B97\uFF1B\u2462 \u672C\u6B21\u542F\u52A8\u3001\u6309\u5F53\u6B21\u8BB0\u5F55\u7684 PID \u6838\u5B9E\u8EAB\u4EFD\u3001\u7EC8\u6B62\u4E0D\u4E22\u672A\u4FDD\u5B58\u72B6\u6001\u7684\u540E\u53F0\u8FDB\u7A0B\u3002\u201C\u6709\u5907\u4EFD\u201D\u201C\u5728 /tmp\u201D\u201C\u5DF2\u5408\u5E76\u201D\u7B49\u672A\u7ECF\u547D\u4EE4\u6838\u5B9E\u7684\u5224\u65AD\u4E0D\u6784\u6210\u9A8C\u8BC1\uFF1B\u4EFB\u4E00\u9879\u65E0\u6CD5\u9A8C\u8BC1\uFF0C\u4E00\u5F8B\u56DE\u5230\u4E0A\u9762\u7684\u786E\u8BA4\u6D41\u7A0B\u3002\u7528\u6237\u6570\u636E\u3001\u8FDC\u7AEF/\u5E73\u53F0\u5185\u5BB9\u3001\u4ED6\u4EBA\u6216\u65E2\u6709\u7684\u6587\u4EF6\u3001\u5206\u652F\u3001stash \u6C38\u8FDC\u4E0D\u9002\u7528\u6B64\u4F8B\u5916\u3002"
96
96
  ].join("\n");
97
97
 
98
+ // packages/agent-runtime/credentialHygiene.ts
99
+ var CREDENTIAL_HYGIENE_RULE = `--- \u51ED\u636E\u7EAA\u5F8B ---
100
+ - \u9700\u8981\u4EFB\u4F55\u51ED\u636E / API key \u65F6\uFF1A\u5148 \`nolo secret list --json\` \u770B\u5DF2\u6709\u6761\u76EE\uFF08\u53EA\u51FA\u540D\u5B57\u4E0E\u5F62\u6001\uFF0C\u4E0D\u542B\u503C\uFF09\uFF0C\u518D\u7528 \`nolo secret run --with <name> -- <cmd>\` \u6CE8\u5165\u73AF\u5883\u53D8\u91CF\u6267\u884C\uFF1B\u4E0D\u8981\u5728\u547D\u4EE4\u884C\u91CC\u62FC\u63A5\u5BC6\u94A5\u503C\u3002
101
+ - \u65B0\u589E\u51ED\u636E\uFF1A\u8BF7\u7528\u6237\u672C\u4EBA\u6267\u884C \`nolo secret set <name> <value>\`\uFF08\u503C\u4E0D\u8981\u7ECF\u8FC7 agent \u7684\u547D\u4EE4\u884C\u6216\u56DE\u590D\uFF09\uFF0C\u4E4B\u540E\u7167\u5E38\u7528 \`run --with\` \u4F7F\u7528\u3002
102
+ - \u7981\u6B62\u628A\u5BC6\u94A5\u5199\u8FDB\u6587\u4EF6\uFF08\u542B \`~/.config/*.env\`\uFF09\u3001\u7981\u6B62\u5728\u53C2\u6570\u6216\u56DE\u590D\u91CC\u56DE\u663E\uFF1B\`nolo secret get\` \u4E0E\u76F4\u63A5\u8BFB\u53D6 \`$NOLO_HOME/credentials/secrets.json\` \u5747\u4EC5\u4F9B\u4EBA\u5DE5\u8C03\u8BD5\uFF0CAgent \u4E0D\u5F97\u8BFB\u53D6\u3002
103
+ - \u7528\u6237\u628A\u5BC6\u94A5\u76F4\u63A5\u8D34\u8FDB\u5BF9\u8BDD\u65F6\uFF1A\u7167\u5E38\u4F7F\u7528\uFF0C\u4F46\u63D0\u9192\u4E8B\u540E\u8F6E\u6362\uFF0C\u5E76\u63D0\u793A\u7528\u6237\u628A\u5B83\u8FC1\u8FDB \`nolo secret\`\u3002`;
104
+
98
105
  // packages/agent-runtime/parallelDispatchDefault.ts
99
106
  var PARALLEL_DISPATCH_DEFAULT_RULE = [
100
107
  "\u3010\u5E76\u884C\u662F\u9ED8\u8BA4 \xB7 \u6D3E\u53D1\u7EAA\u5F8B\u3011",
@@ -105,6 +112,17 @@ var PARALLEL_DISPATCH_DEFAULT_RULE = [
105
112
  "\u6D3E\u53D1\u65F6\u5728\u56DE\u590D\u91CC\u5199\u51FA\u300C\u5E76\u53D1\u7EC4 / \u4E32\u884C\u7406\u7531\u300D\uFF0C\u8BA9\u7528\u6237\u4E00\u773C\u770B\u51FA\u54EA\u6761\u7EBF\u88AB\u4E32\u884C\u5316\u3001\u4F9D\u636E\u662F\u4EC0\u4E48\u3002"
106
113
  ].join("\n");
107
114
 
115
+ // packages/agent-runtime/dispatchBackendPolicy.ts
116
+ var DISPATCH_BACKEND_POLICY = [
117
+ "\u3010\u6D3E\u53D1\u843D\u70B9 \xB7 \u6267\u884C\u540E\u7AEF\u3011",
118
+ "\u6D3E\u53D1\u5B50 run \u5148\u770B**\u80FD\u529B\u6761\u4EF6**\uFF0C\u522B\u4E00\u5F8B\u52A0 `local`\uFF1A",
119
+ '\u2460 \u6709\u5BBF\u4E3B\u6267\u884C\u5668\uFF08CLI / desktop\uFF09\u4E14\u8981\u6309\u7ED9\u5B9A `cwd` \u6539\u6307\u5B9A worktree / \u76EE\u5F55 \u2192 `runtimeKey: "local"` + `allowHostWrites: true`\uFF08\u7F3A\u4E00\u5373\u62D2\uFF09\u3002',
120
+ "\u2461 \u8981\u8BBF\u95EE\u7EBF\u4E0A\u670D\u52A1\u5668\u6216\u5BBF\u4E3B\u51ED\u636E \u2192 \u9009**\u6709\u8BE5\u80FD\u529B**\u7684\u6267\u884C\u9762\uFF1A\u6709\u5BBF\u4E3B\u6267\u884C\u5668\u65F6\u7528 `local`\uFF0C\u6CA1\u6709\u65F6\u7528\u5DF2\u8FDE\u63A5\u7684\u673A\u5668 `machine:<machineId>`\u3002",
121
+ "\u670D\u52A1\u7AEF\u7684 run \u6CA1\u6709\u5BBF\u4E3B\u6267\u884C\u5668\uFF0C\u5151\u73B0\u4E0D\u4E86\u8C03\u7528\u65B9\u7684\u672C\u5730 `cwd`\uFF1A`local` \u7ED5\u4E0D\u8FC7\u53BB\uFF08`local_target_unsupported`\uFF09\uFF0C\u8981\u4E48\u8D70 `machine:<machineId>`\uFF0C\u8981\u4E48\u7701\u7565\u843D\u70B9\u3002",
122
+ "\u6C99\u76D2\u7684\u7A33\u5B9A\u8FB9\u754C\uFF1A\u4E0D\u5151\u73B0\u5BBF\u4E3B\u7EDD\u5BF9 `cwd`\u3001\u4E0D\u81EA\u52A8\u7EE7\u627F\u5BBF\u4E3B\u51ED\u636E\uFF1B\u5DE5\u5177\u4E0E\u7F51\u7EDC\u80FD\u529B\u4EE5\u5C31\u7EEA\u73AF\u5883\u4E3A\u51C6\u3002",
123
+ "\u300C\u5199\u578B\u6D3E\u53D1\u9ED8\u8BA4\u843D docker \u6C99\u76D2\u300D\u53EA\u5C5E\u4E8E CLI \u672C\u5730\u6D3E\u53D1\u901A\u9053\u8FD9\u4E00\u8303\u56F4\uFF1B\u4E0D\u5E26\u5BBF\u4E3B\u72B6\u6001\u4E0E\u5BBF\u4E3B\u51ED\u636E\u7684\u72EC\u7ACB\u4EE3\u7801\u6539\u52A8 + \u8DD1\u6D4B\u8BD5\uFF0C\u6C99\u76D2\u4ECD\u662F\u9996\u9009\uFF08\u9694\u79BB\u662F\u4FDD\u9669\uFF0C\u4E0D\u662F\u8D1F\u62C5\uFF09\u3002"
124
+ ].join("\n");
125
+
108
126
  // packages/agent-runtime/platformRiskControl.ts
109
127
  var PLATFORM_RISK_CONTROL_RULE = [
110
128
  "\u3010\u5E73\u53F0\u98CE\u63A7\u7EAA\u5F8B \xB7 \u7B2C\u4E09\u65B9\u7AD9\u70B9\u81EA\u52A8\u5316\u3011",
@@ -649,6 +667,55 @@ function detectDispatchIntentFromMessages(messages) {
649
667
  return false;
650
668
  }
651
669
 
670
+ // packages/agent-runtime/responseGuidelines.ts
671
+ var RESPONSE_BEHAVIOR_GUIDELINES = `--- \u56DE\u590D\u884C\u4E3A\u51C6\u5219\uFF08\u8DE8\u7AEF\u901A\u7528\uFF09 ---
672
+ \u4EE5\u4E0B\u662F\u6240\u6709\u56DE\u590D\u5171\u4EAB\u7684\u884C\u4E3A\u57FA\u7EBF\uFF0C\u4E0E\u5F53\u524D\u89C6\u53E3\u3001\u6392\u7248\u65E0\u5173\uFF1A
673
+ - **\u4FE1\u606F\u4F18\u5148\u7EA7**\uFF1A\u5148\u7ED9\u5F53\u524D\u6700\u6709\u7528\u7684\u4FE1\u606F\u2014\u2014\u7ED3\u8BBA\u3001\u7ED3\u679C\u3001\u72B6\u6001\u6216\u4E0B\u4E00\u6B65\u52A8\u4F5C\uFF08\u4E0B\u4E00\u6B65\u52A8\u4F5C\u53EA\u5728\u95EE\u9898\u672C\u8EAB\u6D89\u53CA\u884C\u52A8\u65F6\u624D\u7ED9\uFF0C\u89C1\u300C\u884C\u52A8\u4E0E\u63D0\u9192\u300D\uFF09\uFF0C\u6309\u4EFB\u52A1\u7C7B\u578B\u9009\u5176\u4E00\uFF1B\u4E0D\u7528\u5BD2\u6684\u3001\u94FA\u57AB\u6216\u300C\u8BA9\u6211\u5206\u6790\u4E00\u4E0B\u300D\u5F00\u573A\u3002
674
+ - **\u4E3B\u52A8\u9884\u5224**\uFF1A\u5728\u4E0A\u4E0B\u6587\u91CC\u80FD\u9884\u5224\u5230\u7684\u4E0B\u4E00\u6B65\u3001\u98CE\u9669\u6216\u7701\u4E8B\u505A\u6CD5\uFF0C\u4E3B\u52A8\u7528\u4E00\u53E5\u8BDD\u8BF4\u51FA\uFF08\u5305\u62EC\u65F6\u95F4\u3001\u8FDB\u5EA6\u3001\u72B6\u6001\u63D0\u9192\uFF09\uFF1B\u9884\u5224\u662F\u63D0\u8BAE\u800C\u975E\u51B3\u5B9A\uFF0C\u4E0D\u5FC5\u7B49\u7528\u6237\u95EE\u3002\u4E0A\u6587\u300C\u4E0D\u7528\u5BD2\u6684\u300D\u53CD\u7684\u662F\u7A7A\u8BDD\uFF0C\u4E0D\u662F\u8FD9\u7C7B\u6709\u4FE1\u606F\u91CF\u7684\u4E3B\u52A8\u63D0\u9192\u3002\u4EC5\u5728\u63D0\u9192\u4E0E\u5F53\u524D\u95EE\u9898\u76F4\u63A5\u76F8\u5173\u3001\u4E14\u80FD\u6539\u53D8\u7528\u6237\u773C\u4E0B\u7684\u5224\u65AD\u6216\u64CD\u4F5C\u65F6\u8865\u5145\uFF1B\u6CA1\u6709\u5177\u4F53\u4F9D\u636E\u7684\u901A\u7528\u5EFA\u8BAE\u4E0D\u9644\u9001\u3002
675
+ - **\u4F4E\u8D1F\u8377\u8868\u8FBE**\uFF1A\u4E00\u53E5\u4E00\u4E8B\uFF0C\u4E3B\u8BED\u660E\u786E\u3001\u7528\u5177\u4F53\u52A8\u8BCD\uFF0C\u540C\u4E00\u6982\u5FF5\u59CB\u7EC8\u7528\u540C\u4E00\u672F\u8BED\uFF1B\u5220\u53BB\u5957\u8BDD\u4E0E\u5D4C\u5957\u4ECE\u53E5\uFF0C\u4F46\u4E0D\u5220\u524D\u63D0\u3001\u98CE\u9669\u4E0E\u4E0D\u786E\u5B9A\u6027\u2014\u2014\u8BA9\u7528\u6237\u80FD\u5FEB\u901F\u6838\u67E5\u548C\u51B3\u7B56\uFF0C\u800C\u4E0D\u662F\u4FE1\u606F\u53D8\u5C11\u3002\u9700\u8981\u5C55\u5F00\u65F6\u6309\u4E3B\u9898\u5206\u6210\u77ED\u6BB5\u843D\uFF0C\u6BB5\u843D\u4E4B\u95F4\u7559\u7A7A\u884C\uFF1B\u8FDE\u7EED\u64CD\u4F5C\u7528\u6709\u5E8F\u5217\u8868\uFF1B\u6B64\u8981\u6C42\u4E0D\u4F9D\u8D56\u89C6\u53E3\u3002
676
+ - **\u4EFB\u52A1\u8FDE\u7EED\u6027**\uFF1A\u591A\u6B65\u9AA4\u4EFB\u52A1\u4FDD\u6301\u5F53\u524D\u72B6\u6001\u4E0E\u4E0B\u4E00\u6B65\u53EF\u89C1\uFF1B\u4EC5\u5728\u72B6\u6001\u53D8\u5316\u3001\u4ECE\u4E2D\u65AD/\u540E\u53F0\u4EFB\u52A1\u6062\u590D\u6216\u4E0A\u4E0B\u6587\u53EF\u80FD\u4E22\u5931\u65F6\u91CD\u8FF0\u8FDB\u5EA6\uFF0C\u4E0D\u673A\u68B0\u91CD\u590D\u3002
677
+ - **\u4E13\u6CE8\u4E3B\u7EBF\uFF08\u6C9F\u901A\u7126\u70B9\uFF0C\u975E\u8C03\u5EA6\uFF09**\uFF1A\u53D1\u73B0\u6B21\u8981\u95EE\u9898\u4E0D\u5207\u6362\u4E3B\u7EBF\uFF0C\u9664\u975E\u5B83\u963B\u585E\u6B63\u786E\u6027\u3001\u5B89\u5168\u6027\u6216\u5F53\u524D\u4EFB\u52A1\u672C\u8EAB\uFF1B\u503C\u5F97\u5904\u7406\u7684\u6B21\u8981\u9879\uFF0C\u5728\u4E3B\u7EBF\u5B8C\u6210\u540E\u7B80\u77ED\u6307\u51FA\u3002\u672C\u6761\u53EA\u7EA6\u675F**\u56DE\u590D\u7684\u53D9\u8FF0\u7126\u70B9**\uFF08\u5148\u8BB2\u4E3B\u7EBF\u3001\u65C1\u652F\u9760\u540E\uFF09\uFF0C\u4E0D\u662F\u6267\u884C\u8C03\u5EA6\uFF1A\u5B83\u4E0D\u8981\u6C42\u628A\u53EF\u72EC\u7ACB\u5E76\u884C\u7684\u65E0\u4F9D\u8D56\u5DE5\u4F5C\u4E32\u884C\u5316\uFF0C\u4E5F\u4E0D\u7981\u6B62\u5728\u4E3B\u7EBF\u672A\u5B8C\u6210\u65F6\u5E76\u53D1\u63A8\u8FDB\u5176\u5B83\u4EFB\u52A1\uFF08\u5982\u53E6\u4E00 worktree \u7684\u72EC\u7ACB\u6539\u52A8\uFF09\uFF1B\u51E1\u662F\u6587\u4EF6/\u6570\u636E/\u63A5\u53E3\u65E0\u4EA4\u96C6\u7684\u72EC\u7ACB\u6388\u6743\u5DE5\u4F5C\uFF0C\u9ED8\u8BA4\u5E76\u884C\uFF0C\u53EA\u5728\u6C47\u62A5\u65F6\u6309\u4E3B\u7EBF\u4F18\u5148\u7EC4\u7EC7\u3002
678
+ - **\u9519\u8BEF\u4E8B\u5B9E\u5316**\uFF1A\u51FA\u9519\u65F6\u76F4\u63A5\u8BF4\u660E\u53D1\u751F\u4E86\u4EC0\u4E48\u3001\u5DF2\u77E5\u539F\u56E0\u6216\u4ECD\u4E0D\u786E\u5B9A\u4E4B\u5904\u3001\u5F53\u524D\u5F71\u54CD\u4E0E\u4E0B\u4E00\u6B65\uFF08\u540C\u300C\u884C\u52A8\u4E0E\u63D0\u9192\u300D\uFF1A\u4EC5\u5F53\u95EE\u9898\u6D89\u53CA\u884C\u52A8\u65F6\u624D\u7ED9\uFF09\uFF1B\u4E0D\u7528\u65E0\u4FE1\u606F\u91CF\u7684\u60C5\u7EEA\u5316\u63AA\u8F9E\uFF0C\u4E5F\u4E0D\u628A\u4E0D\u786E\u5B9A\u6027\u5305\u88C5\u6210\u7ED3\u8BBA\u3002
679
+ - **\u7406\u89E3\u5931\u8D25\u6062\u590D**\uFF1A\u7528\u6237\u8868\u793A\u6CA1\u61C2\u3001\u6CA1\u8DDF\u4E0A\u6216\u8981\u6C42\u6362\u79CD\u8BF4\u6CD5\u65F6\uFF0C\u56DE\u9000\u5230\u6700\u53EF\u80FD\u7F3A\u5931\u7684\u524D\u63D0\u91CD\u65B0\u89E3\u91CA\uFF0C\u800C\u4E0D\u662F\u53EA\u7F29\u77ED\u6216\u91CD\u590D\u4E0A\u4E00\u6761\uFF1B\u4F18\u5148\u590D\u7528\u5BF9\u8BDD\u4E0E\u9879\u76EE\u8D44\u6599\u4E2D\u5DF2\u5EFA\u7ACB\u7684\u672F\u8BED\uFF0C\u672F\u8BED\u672C\u8EAB\u53EF\u80FD\u9020\u6210\u56F0\u60D1\u65F6\u5148\u7B80\u77ED\u5B9A\u4E49\u3002
680
+ - **\u672F\u8BED\u5C31\u5730\u89E3\u91CA**\uFF1A\u53EA\u89E3\u91CA\u7528\u6237\u53EF\u80FD\u4E0D\u719F\u3001\u4E14\u65E0\u6CD5\u4ECE\u4E0A\u4E0B\u6587\u63A8\u65AD\u7684\u4E13\u4E1A\u672F\u8BED\u6216\u5E73\u53F0\u6982\u5FF5\uFF0C\u9996\u6B21\u51FA\u73B0\u65F6\u5C31\u5730\u8865\u4E00\u53E5\u65E5\u5E38\u8BDD\u8BF4\u660E\u5B83\u662F\u4EC0\u4E48\u3001\u5F71\u54CD\u4EC0\u4E48\uFF1B\u7528\u6237\u672C\u8F6E\u5DF2\u8868\u73B0\u51FA\u7406\u89E3\u7684\u8BCD\u4E0D\u91CD\u590D\u89E3\u91CA\uFF0C\u9879\u76EE\u8D44\u6599\u5DF2\u6709\u5B9A\u4E49\u65F6\u4F18\u5148\u6CBF\u7528\u8BE5\u5B9A\u4E49\u3001\u4F46\u4E0D\u80FD\u4EC5\u56E0\u8D44\u6599\u5B9A\u4E49\u8FC7\u5C31\u5047\u5B9A\u7528\u6237\u5DF2\u7406\u89E3\u3002\u901A\u5E38\u4F18\u5148\u89E3\u91CA\u4E00\u4E24\u4E2A\u6700\u5F71\u54CD\u5F53\u524D\u5224\u65AD\u7684\u672F\u8BED\uFF0C\u5B8C\u6210\u5F53\u524D\u95EE\u9898\u6240\u5FC5\u9700\u7684\u6982\u5FF5\u4E0D\u53D7\u6570\u91CF\u9650\u5236\uFF1B\u4F46\u7528\u6237\u8868\u793A\u6CA1\u61C2\u3001\u6CA1\u8DDF\u4E0A\u3001\u8981\u6C42\u6362\u79CD\u8BF4\u6CD5\u65F6\u91CD\u8BB2\u8BE5\u672F\u8BED\u4E0D\u53D7\u672C\u6761\u9650\u5236\uFF08\u89C1\u300C\u7406\u89E3\u5931\u8D25\u6062\u590D\u300D\u7684\u5168\u90E8\u89E6\u53D1\u6761\u4EF6\uFF09\uFF1B\u975E\u5F53\u524D\u95EE\u9898\u5FC5\u9700\u7684\u672F\u8BED\u4E0D\u5C55\u5F00\uFF0C\u5FC5\u8981\u65F6\u518D\u8865\uFF0C\u4F46\u4E0D\u5F97\u4E3A\u63A7\u5236\u89E3\u91CA\u6570\u91CF\u800C\u7701\u7565\u7406\u89E3\u7ED3\u8BBA\u3001\u6838\u67E5\u53E3\u5F84\u6216\u6267\u884C\u6B65\u9AA4\u6240\u5FC5\u9700\u7684\u8BF4\u660E\u3002
681
+ - **\u4E8B\u5B9E\u4E0D\u7FFB\u8BD1**\uFF1A\u62A5\u9519\u539F\u6587\u3001\u6807\u8BC6\u7B26\u3001\u6587\u4EF6\u8DEF\u5F84\u3001\u547D\u4EE4\u4E0E\u53C2\u6570\u3001\u5B57\u6BB5\u540D\u3001\u6570\u503C\u4FDD\u6301\u539F\u6837\uFF1A\u5355\u884C\u7684\u7528\u884C\u5185\u53CD\u5F15\u53F7\uFF0C\u591A\u884C\u62A5\u9519\u6216\u547D\u4EE4\u8F93\u51FA\u7528\u56F4\u680F\u4EE3\u7801\u5757\u5E76\u6807\u660E\u8BED\u8A00\uFF1B\u98CE\u9669\u4E0E\u4E0D\u786E\u5B9A\u6027\u4FDD\u6301\u4E0E\u8BC1\u636E\u76F8\u7B26\u7684\u5224\u65AD\u5F3A\u5EA6\uFF08\u5B9E\u6D4B\u3001\u63A8\u6D4B\u3001\u672A\u77E5\u5206\u5F00\u8BF4\uFF09\uFF0C\u4E0D\u6DE1\u5316\u3001\u4E0D\u7701\u7565\u2014\u2014\u767D\u8BDD\u53EA\u7528\u6765\u89E3\u91CA\uFF0C\u4E0D\u7528\u6765\u66FF\u4EE3\u53EF\u6267\u884C\u4E8B\u5B9E\uFF0C\u4E5F\u4E0D\u7528\u6765\u7A00\u91CA\u98CE\u9669\u3002
682
+ - **\u7BC7\u5E45\u4E0E\u5B8C\u6574\u6027**\uFF1A\u56DE\u7B54\u7684\u7BC7\u5E45\u5339\u914D\u63D0\u95EE\u89C4\u6A21\u2014\u2014\u4E00\u53E5\u8BDD\u80FD\u7B54\u7684\u5C31\u76F4\u63A5\u7B54\u5B8C\uFF0C\u4E0D\u9ED8\u8BA4\u4EA4\u4ED8\u5206\u8282\u3001\u52A0\u6807\u9898\u3001\u5217\u8BC1\u636E\u6E05\u5355\u7684\u5DE5\u7A0B\u62A5\u544A\uFF1B\u7528\u6237\u8981\u65B9\u6848\u3001\u6392\u67E5\u6216\u5BF9\u6BD4\u65F6\u518D\u5C55\u5F00\u3002\u7BC7\u5E45\u53EF\u4EE5\u77ED\uFF0C\u4F46\u4E0D\u7701\u652F\u6491\u7ED3\u8BBA\u7684\u524D\u63D0\u3001\u8BC1\u636E\u4E0E\u98CE\u9669\uFF08\u300C\u4E3B\u52A8\u9884\u5224\u300D\u8BB8\u53EF\u7684\u90A3\u4E00\u53E5\u63D0\u9192\u4E0D\u53D7\u672C\u6761\u7BC7\u5E45\u9ED8\u8BA4\u7EA6\u675F\uFF09\u3002
683
+ - **\u884C\u52A8\u4E0E\u63D0\u9192**\uFF1A\u95EE\u9898\u6D89\u53CA\u884C\u52A8\u65F6\u624D\u7ED9\u4E0B\u4E00\u6B65\uFF0C\u4E0D\u989D\u5916\u9644\u9001\u4E0E\u672C\u9898\u65E0\u5173\u7684\u884C\u52A8\u6E05\u5355\uFF1B\u4EFB\u52A1\u672C\u8EAB\u9700\u8981\u591A\u6B65\u64CD\u4F5C\u3001\u6392\u67E5\u6216\u6267\u884C\u65B9\u6848\u65F6\uFF0C\u4FDD\u7559\u5B8C\u6210\u4EFB\u52A1\u6240\u9700\u7684\u6B65\u9AA4\uFF1B\u300C\u4E3B\u52A8\u9884\u5224\u300D\u8BB8\u53EF\u7684\u90A3\u4E00\u53E5\u63D0\u9192\u4E0D\u53D7\u300C\u4E0D\u989D\u5916\u9644\u9001\u300D\u9650\u5236\u3002
684
+ - **\u6392\u7248\u4F18\u5148\u7EA7**\uFF1A\u51B3\u5B9A\u8981\u4E0D\u8981\u5206\u8282\u3001\u52A0\u6807\u9898\u6216\u753B\u56FE\u65F6\uFF0C\u666E\u901A\u95EE\u7B54\u4E0D\u56E0\u89C6\u53E3\u5BBD\u7A84\u5C31\u5957\u5206\u8282\u62A5\u544A\uFF1B\u5BBF\u4E3B\u63D0\u4F9B\u4E86\u89C6\u53E3\u6392\u7248\u6307\u5F15\u65F6\uFF0C\u4EE5\u8BE5\u6307\u5F15\u4E3A\u51C6\u3002\u672C prompt \u672A\u542B\u89C6\u53E3\u6392\u7248\u6307\u5F15\u65F6\uFF0C\u53EA\u9075\u5B88\u672C\u884C\u4E3A\u57FA\u7EBF\uFF0C\u4E0D\u81EA\u884C\u8865\u6392\u7248\u89C4\u5219\u3002
685
+ - **\u5BF9\u8BDD\u4F53\uFF0C\u4E0D\u662F\u6587\u6863\u4F53**\uFF1A\u7528\u666E\u901A\u5BF9\u8BDD\u53E5\u5B50\u53D9\u8FF0\uFF0C\u4E0D\u8981\u7528\u300C\u5DF2\u786E\u8BA4\uFF0F\u63A8\u6D4B\uFF0F\u5B9E\u6D4B\u8BC1\u636E\uFF0F\u9A8C\u6536\u95ED\u73AF\u300D\u8FD9\u7C7B\u72B6\u6001\u6807\u7B7E\u7ED9\u6BCF\u53E5\u5206\u7C7B\uFF0C\u4E5F\u4E0D\u7528\u62A5\u544A\u9AA8\u67B6\uFF08\u80CC\u666F\uFF0F\u5206\u6790\uFF0F\u5EFA\u8BAE\uFF0F\u7ED3\u8BBA\uFF09\u7EC4\u7EC7\u56DE\u590D\uFF1B\u4F46\u9700\u8981\u8BF4\u6E05\u54EA\u4E9B\u662F\u5B9E\u6D4B\u3001\u54EA\u4E9B\u662F\u63A8\u6D4B\u65F6\uFF0C\u7528\u4E00\u53E5\u65E5\u5E38\u8BDD\u70B9\u660E\u5224\u65AD\u5F3A\u5EA6\uFF08\u89C1\u300C\u9519\u8BEF\u4E8B\u5B9E\u5316\u300D\u300C\u4E8B\u5B9E\u4E0D\u7FFB\u8BD1\u300D\uFF09\uFF0C\u4E0D\u5F97\u4E3A\u56DE\u907F\u6807\u7B7E\u800C\u628A\u63A8\u6D4B\u5199\u6210\u7ED3\u8BBA\u3002\u5217\u8868\u4E0E\u8868\u683C\u7167\u5E38\u53EF\u7528\uFF1B\u4EFB\u52A1\u672C\u8EAB\u8981\u6C42\u4EA4\u4ED8\u6587\u6863\u3001\u62A5\u544A\u6216\u56FA\u5B9A\u683C\u5F0F\u65F6\uFF08\u5199\u6587\u4EF6\u3001\u751F\u6210\u6587\u6863\u3001\u8BC4\u5BA1\u62A5\u544A\uFF09\uFF0C\u6309\u4EA4\u4ED8\u683C\u5F0F\u7EC4\u7EC7\uFF0C\u672C\u6761\u53EA\u7BA1\u5BF9\u8BDD\u91CC\u7684\u53E3\u5934\u56DE\u590D\u3002
686
+ - **\u7528\u6237\u5F53\u8F6E\u8868\u8FF0\u4F18\u5148**\uFF1A\u7528\u6237\u672C\u8F6E\u660E\u786E\u8BF4\u7684\u98CE\u683C\u3001\u957F\u5EA6\u3001\u63AA\u8F9E\u8981\u6C42\uFF0C\u4F18\u5148\u4E8E\u672C\u51C6\u5219\u4E2D\u5173\u4E8E\u98CE\u683C\u3001\u7BC7\u5E45\u4E0E\u7ED3\u6784\u7684\u9ED8\u8BA4\u8BBE\u5B9A\uFF08\u4E0D\u4F18\u5148\u4E8E\u300C\u9519\u8BEF\u4E8B\u5B9E\u5316\u300D\u300C\u4E8B\u5B9E\u4E0D\u7FFB\u8BD1\u300D\u8FD9\u7C7B\u6B63\u786E\u6027\u4E0E\u5B89\u5168\u7EA6\u675F\uFF09\uFF1B\u4F46\u4E8B\u5B9E\u4E0D\u7FFB\u8BD1\u3001\u524D\u63D0\u4E0D\u7701\u7565\u3001\u8BC1\u636E\u4E0D\u7701\u7565\u3001\u98CE\u9669\u4E0D\u7701\u7565\u4E0D\u56E0\u957F\u5EA6\u8981\u6C42\u6216\u63AA\u8F9E\u8981\u6C42\u8C41\u514D\u3002`;
687
+ var buildResponsePresentationGuidelines = (isMobile) => {
688
+ if (isMobile) {
689
+ return `--- \u54CD\u5E94\u5C55\u793A\u6307\u5357\uFF08\u7A84\u5C4F / TUI / \u79FB\u52A8\u7AEF\uFF09 ---
690
+ \uFF08\u4EE5\u4E0B\u6392\u7248\u5EFA\u8BAE\u5728\u300C\u7BC7\u5E45\u4E0E\u5B8C\u6574\u6027\u300D\u300C\u884C\u52A8\u4E0E\u63D0\u9192\u300D\u300C\u6392\u7248\u4F18\u5148\u7EA7\u300D\u7684\u8FB9\u754C\u5185\u6267\u884C\u3002\uFF09
691
+ \u5F53\u524D\u5904\u4E8E\u7A84\u5C4F\u6216\u7EC8\u7AEF\u89C6\u56FE\uFF0C\u91C7\u7528\u7D27\u51D1\u3001\u9AD8\u626B\u63CF\u7387\u6392\u7248\uFF1A\u7ED3\u8BBA/\u5173\u952E\u72B6\u6001\u7F6E\u9876\uFF0C\u77ED\u6BB5\u843D\uFF082-4 \u53E5\uFF09\u5E76\u4FDD\u6301\u7A7A\u884C\uFF0C\u62D2\u7EDD\u6587\u5B57\u5899\u3002
692
+ - \u5217\u8868\u9879\u7528\u300C- **\u6838\u5FC3\u8BCD**\uFF1A\u8BF4\u660E\u300D\uFF1B\u5D4C\u5957\u6700\u591A 2 \u5C42\uFF0C\u5B50\u5217\u8868\u7F29\u8FDB 2 \u7A7A\u683C\uFF1B\u5E76\u5217\u7528\u65E0\u5E8F\u5217\u8868\uFF0C\u6B65\u9AA4\u7528\u6709\u5E8F\u5217\u8868\u3002
693
+ - **\u8868\u683C\u964D\u7EA7**\uFF1A\u4E25\u7981\u4F7F\u7528 \u22654 \u5217\u7684\u5927\u5BBD\u8868\uFF08\u7A84\u5C4F/\u7EC8\u7AEF\u6298\u884C\u4E25\u91CD\u9519\u4F4D\uFF09\uFF0C\u6539\u7528\u952E\u503C\u6E05\u5355\u6216\u7EB5\u5411\u5361\u7247\u3002
694
+ - **\u56FE\u8868\u8868\u8FBE**\uFF1A\u6D41\u7A0B\u3001\u65F6\u5E8F\u3001\u72B6\u6001\u8FC1\u79FB\u3001\u7C7B/\u5B9E\u4F53\u5173\u7CFB\u7B49\u7ED3\u6784\u5316\u5185\u5BB9\u7528 \`\`\`mermaid \u4EE3\u7801\u5757\uFF08\u652F\u6301\u7684\u5BA2\u6237\u7AEF\u4F1A\u6E32\u67D3\u4E3A\u56FE\uFF09\uFF0C\u4E0D\u8981\u7528 ASCII \u624B\u7ED8\u6216\u957F\u6BB5\u6587\u5B57\u786C\u63CF\u8FF0\uFF1B\u56FE\u7528\u6765\u66FF\u4EE3\u6587\u5B57\uFF0C\u753B\u4E86\u56FE\u5C31\u5220\u6389\u91CD\u590D\u63CF\u8FF0\uFF1B\u4E00\u6B65\u6D41\u7A0B\u4E0D\u5FC5\u753B\u56FE\u3002
695
+ - \u514B\u5236\u5206\u5272\u7EBF\uFF08\u4EC5\u5927\u4E3B\u9898\u5207\u6362\u6216\u7ED3\u8BBA\u524D\uFF0C\u524D\u540E\u7559\u7A7A\u884C\uFF09\uFF1B\u8DEF\u5F84\u3001\u547D\u4EE4\u4E0E\u53C2\u6570\u7528\u53CD\u5F15\u53F7 \` \` \u5305\u88F9\uFF1B\u4EE3\u7801\u5757\u6807\u660E\u8BED\u8A00\u4E14\u907F\u514D\u6A2A\u5411\u8D85\u957F\u884C\uFF1B\u514B\u5236 Emoji\u3002`;
696
+ }
697
+ return `--- \u54CD\u5E94\u5C55\u793A\u6307\u5357\uFF08\u5BBD\u5C4F / \u684C\u9762\u7AEF\uFF09 ---
698
+ \uFF08\u4EE5\u4E0B\u6392\u7248\u5EFA\u8BAE\u5728\u300C\u7BC7\u5E45\u4E0E\u5B8C\u6574\u6027\u300D\u300C\u884C\u52A8\u4E0E\u63D0\u9192\u300D\u300C\u6392\u7248\u4F18\u5148\u7EA7\u300D\u7684\u8FB9\u754C\u5185\u6267\u884C\u3002\uFF09
699
+ \u5F53\u524D\u5904\u4E8E\u5927\u5C4F\u89C6\u56FE\uFF1A\u5185\u5BB9\u786E\u5B9E\u5305\u542B\u591A\u4E2A\u6A21\u5757\u65F6\u624D\u7528\u4E8C\u7EA7/\u4E09\u7EA7\u6807\u9898\u5212\u5206\u3001\u5448\u73B0\u5168\u666F\u7ED3\u6784\uFF0C\u666E\u901A\u95EE\u7B54\u4E0D\u5F3A\u884C\u52A0\u6807\u9898\uFF1B\u8981\u70B9\u5C42\u6B21\u6E05\u6670\uFF0C\u6BB5\u843D 2-4 \u53E5\u5E76\u7559\u7A7A\u884C\uFF0C\u76F4\u5954\u4E3B\u9898\u3002
700
+ - \u5217\u8868\u9879\u7528\u300C- **\u6838\u5FC3\u8BCD**\uFF1A\u8BF4\u660E\u300D\uFF1B\u5D4C\u5957\u6700\u591A 2 \u5C42\uFF0C\u5B50\u5217\u8868\u7F29\u8FDB 2 \u7A7A\u683C\uFF1B\u5E76\u5217\u7528\u65E0\u5E8F\u5217\u8868\uFF0C\u6B65\u9AA4\u7528\u6709\u5E8F\u5217\u8868\u3002
701
+ - **\u8868\u683C\u4E0E\u5BF9\u6BD4**\uFF1A\u5BBD\u5C4F\u4E0B\u53EF\u9002\u5EA6\u4F7F\u7528 Markdown \u591A\u5217\u8868\u683C\u505A\u65B9\u6848\u5BF9\u6BD4\u3001\u53C2\u6570\u6C47\u603B\u6216\u77E9\u9635\u5206\u6790\u3002
702
+ - **\u56FE\u8868\u8868\u8FBE**\uFF1A\u6D41\u7A0B\u3001\u65F6\u5E8F\u3001\u72B6\u6001\u8FC1\u79FB\u3001\u7C7B/\u5B9E\u4F53\u5173\u7CFB\u7B49\u7ED3\u6784\u5316\u5185\u5BB9\u7528 \`\`\`mermaid \u4EE3\u7801\u5757\uFF08\u652F\u6301\u7684\u5BA2\u6237\u7AEF\u4F1A\u6E32\u67D3\u4E3A\u56FE\uFF09\uFF0C\u6BD4\u957F\u6BB5\u6587\u5B57\u66F4\u6E05\u695A\uFF1B\u56FE\u7528\u6765\u66FF\u4EE3\u6587\u5B57\uFF0C\u753B\u4E86\u56FE\u5C31\u5220\u6389\u91CD\u590D\u63CF\u8FF0\uFF1B\u7B80\u5355\u5185\u5BB9\u4E0D\u5FC5\u753B\u56FE\u3002
703
+ - **\u4EA4\u4E92\u5236\u54C1**\uFF1A\u53EA\u6709\u5F53\u7ED3\u6784\u5FC5\u987B\u9760\u4EA4\u4E92\u624D\u80FD\u7406\u89E3\uFF08\u8C03\u53C2\u3001\u5206\u6B65\u6F14\u793A\u3001\u591A\u7EF4\u5BF9\u6BD4\uFF09\uFF0C\u4E14\u7528\u6237\u8981\u6C42\u6216\u5B83\u662F\u51B3\u7B56\u5173\u952E\u65F6\uFF0C\u624D\u6309 show-me skill \u4EA4\u4ED8\u4E00\u6B21\u6027\u5236\u54C1\uFF1B\u5176\u4F59\u60C5\u51B5\u7528\u6587\u5B57\u6216\u56FE\u3002
704
+ - \u53EF\u5C55\u793A\u66F4\u5B8C\u6574\u7684\u4EE3\u7801\u4E0A\u4E0B\u6587\u4E0E\u591A\u6B65\u6267\u884C\u793A\u4F8B\uFF1B\u8DEF\u5F84\u3001\u547D\u4EE4\u4E0E\u53C2\u6570\u7528\u53CD\u5F15\u53F7 \` \` \u5305\u88F9\uFF0C\u4EE3\u7801\u5757\u6807\u660E\u8BED\u8A00\uFF1B\u514B\u5236\u5206\u5272\u7EBF\u4E0E Emoji\u3002`;
705
+ };
706
+ var resolveResponseGuidelines = (viewport) => ({
707
+ behavior: RESPONSE_BEHAVIOR_GUIDELINES,
708
+ presentation: viewport === "wide" ? buildResponsePresentationGuidelines(false) : viewport === "narrow" ? buildResponsePresentationGuidelines(true) : ""
709
+ });
710
+ var buildResponseGuidelines = (isMobile) => {
711
+ const { behavior, presentation } = resolveResponseGuidelines(
712
+ isMobile ? "narrow" : "wide"
713
+ );
714
+ return `${behavior}
715
+
716
+ ${presentation}`;
717
+ };
718
+
652
719
  // packages/ai/agent/contextCompiler.ts
653
720
  function createHash(_algo) {
654
721
  let buf = "";
@@ -718,7 +785,9 @@ export {
718
785
  compileContextLayers,
719
786
  buildIdentityBlock,
720
787
  DELETE_SAFETY_RED_LINE,
788
+ CREDENTIAL_HYGIENE_RULE,
721
789
  PARALLEL_DISPATCH_DEFAULT_RULE,
790
+ DISPATCH_BACKEND_POLICY,
722
791
  PLATFORM_RISK_CONTROL_RULE,
723
792
  isGptProModel,
724
793
  shouldBlockForGptPro,
@@ -727,5 +796,7 @@ export {
727
796
  TOOL_GUIDED_SECTION_ORDER,
728
797
  resolveToolGuidedSections,
729
798
  detectDispatchIntent,
730
- detectDispatchIntentFromMessages
799
+ detectDispatchIntentFromMessages,
800
+ resolveResponseGuidelines,
801
+ buildResponseGuidelines
731
802
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  findModelConfig,
3
3
  getProviderByModelName
4
- } from "./chunk-TRW43TSC.js";
4
+ } from "./chunk-6EQD4AQL.js";
5
5
  import {
6
6
  asOptionalTrimmedString
7
7
  } from "./chunk-G3SUCT4W.js";
@@ -34,6 +34,10 @@ function canonicalizeNoloServerUrl(value) {
34
34
  }
35
35
 
36
36
  // packages/cli/client/profileConfig.ts
37
+ var PERMISSION_GRANT_KINDS = ["local", "remote"];
38
+ function permissionGrantList(grants) {
39
+ return PERMISSION_GRANT_KINDS.filter((kind) => grants?.[kind] === true);
40
+ }
37
41
  var normalizeProfileServerUrl = canonicalizeNoloServerUrl;
38
42
  function isProtectedHomeProfileWrite(path) {
39
43
  if (process.env.NODE_ENV !== "test") return false;
@@ -129,7 +133,11 @@ function buildEnvFromProfile(config) {
129
133
  ...getProfileTokens(config)[0] ? { AUTH_TOKEN: getProfileTokens(config)[0] } : {},
130
134
  ...profile.agentKey ? { NOLO_AGENT: profile.agentKey } : {},
131
135
  ...profile.agentName ? { NOLO_AGENT_NAME: profile.agentName } : {},
132
- ...profile.locale ? { NOLO_LANG: profile.locale } : {}
136
+ ...profile.locale ? { NOLO_LANG: profile.locale } : {},
137
+ ...(() => {
138
+ const granted = permissionGrantList(profile.permissionGrants);
139
+ return granted.length > 0 ? { NOLO_PERMISSION_GRANTS: granted.join(",") } : {};
140
+ })()
133
141
  };
134
142
  }
135
143
  function buildCliRuntimeEnv(processEnv, config) {
@@ -164,6 +172,28 @@ function saveProfileLocale(locale, path = getDefaultProfileConfigPath()) {
164
172
  `, "utf8");
165
173
  return config;
166
174
  }
175
+ function saveProfilePermissionGrant(kind, value, path = getDefaultProfileConfigPath()) {
176
+ if (isProtectedHomeProfileWrite(path)) return null;
177
+ const config = loadProfileConfig(path);
178
+ if (!config) return null;
179
+ const profile = config.profiles[config.currentProfile];
180
+ if (!profile) return null;
181
+ const grants = { ...profile.permissionGrants ?? {} };
182
+ if (value === true) {
183
+ grants[kind] = true;
184
+ } else {
185
+ delete grants[kind];
186
+ }
187
+ if (permissionGrantList(grants).length > 0) {
188
+ profile.permissionGrants = grants;
189
+ } else {
190
+ delete profile.permissionGrants;
191
+ }
192
+ mkdirSync(dirname(path), { recursive: true });
193
+ writeFileSync(path, `${JSON.stringify(config, null, 2)}
194
+ `, "utf8");
195
+ return config;
196
+ }
167
197
  function getAgentSelectionAuditPath(configPath = getDefaultProfileConfigPath()) {
168
198
  return join(dirname(configPath), "agent-selection.log");
169
199
  }
@@ -308,6 +338,8 @@ function saveProfileOAuthSync(provider, sync, path = getDefaultProfileConfigPath
308
338
  }
309
339
 
310
340
  export {
341
+ PERMISSION_GRANT_KINDS,
342
+ permissionGrantList,
311
343
  normalizeProfileServerUrl,
312
344
  isProtectedHomeProfileWrite,
313
345
  getDefaultProfileConfigPath,
@@ -320,6 +352,7 @@ export {
320
352
  buildCliRuntimeEnv,
321
353
  getCurrentProfile,
322
354
  saveProfileLocale,
355
+ saveProfilePermissionGrant,
323
356
  getAgentSelectionAuditPath,
324
357
  redactArgvSecrets,
325
358
  appendAgentSelectionAudit,