nolo-cli 0.198.0-alpha.3 → 0.199.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 (65) hide show
  1. package/{_executeModel-3D4HLADO.js → _executeModel-KGMFBND7.js} +15 -16
  2. package/{agentDeleteCommand-EXBU3PZJ.js → agentDeleteCommand-ITQN4QLD.js} +15 -15
  3. package/{agentEmailCommands-3T7NAJHR.js → agentEmailCommands-3LDZFOFC.js} +17 -17
  4. package/{agentListCommands-AFR6XDWI.js → agentListCommands-SW3QUAOF.js} +1 -1
  5. package/{agentMachineCommands-JXXDCTG5.js → agentMachineCommands-QH2BUSWC.js} +2 -2
  6. package/{agentRecordCommands-RLHYIRGY.js → agentRecordCommands-NE36A7IH.js} +16 -16
  7. package/{agentRunCommand-7KO6SQPF.js → agentRunCommand-KNNJSEDV.js} +17 -17
  8. package/{agentRuntimeLocal-N7LXMTFO.js → agentRuntimeLocal-FZQTLBN6.js} +1 -1
  9. package/{agentSlice-JFRZAKR4.js → agentSlice-CB25SUJB.js} +1 -1
  10. package/{appDeleteCommands-IVQD7JC4.js → appDeleteCommands-TUCRDFU2.js} +1 -1
  11. package/{appDeployCommands-PXFX5INY.js → appDeployCommands-BQCYEC3R.js} +1 -1
  12. package/{appDeployStatusCommands-PWQEL3ED.js → appDeployStatusCommands-SX26DRSV.js} +1 -1
  13. package/{appGetCommands-GJHFSJMP.js → appGetCommands-CDFTFOOZ.js} +1 -1
  14. package/{appListCommands-ARUY6PBR.js → appListCommands-7ARRUYU3.js} +1 -1
  15. package/{builtinSkillRegistry-7MBUY5EY.js → builtinSkillRegistry-36WIAYXB.js} +2 -3
  16. package/{chunk-X26GHKRS.js → chunk-4BBAP7E4.js} +1 -1
  17. package/{chunk-3Z7KHXVE.js → chunk-4G5YV3EG.js} +19 -9
  18. package/{chunk-SM56M7N7.js → chunk-6OEPWZV7.js} +38 -4
  19. package/{chunk-UL57BAAE.js → chunk-6YJA5FPA.js} +3 -3
  20. package/{chunk-MKDEI64N.js → chunk-74YOBGG6.js} +3 -3
  21. package/{chunk-VYNMQ6HW.js → chunk-76OXA55E.js} +75 -0
  22. package/{chunk-HGS3XV5K.js → chunk-C4RTTV4V.js} +1 -1
  23. package/{chunk-RYPJRIFF.js → chunk-DEOPS4PJ.js} +4 -79
  24. package/{chunk-S5DELBWY.js → chunk-E7B4CR5M.js} +3 -3
  25. package/{chunk-HN3XRWSP.js → chunk-GQ3QPQEP.js} +2 -2
  26. package/{chunk-YQH5IYWZ.js → chunk-IYI5Y74S.js} +7 -7
  27. package/{chunk-7MB72UW6.js → chunk-JNRGTW6S.js} +13 -13
  28. package/{chunk-POEYAIBT.js → chunk-KJZFDQF3.js} +8 -8
  29. package/{chunk-OYZLT2BN.js → chunk-LKZ7FZTI.js} +3 -3
  30. package/{chunk-TXQ5BC57.js → chunk-MQKPELXS.js} +2 -2
  31. package/{chunk-5HAPEKNH.js → chunk-O2H2Z7U4.js} +82 -15
  32. package/{chunk-L577NIDI.js → chunk-R33OLTYJ.js} +1 -1
  33. package/{chunk-MGFRMNK5.js → chunk-RJVYCYLQ.js} +8 -8
  34. package/{chunk-4SEOTTFQ.js → chunk-RMRLWIQS.js} +2 -2
  35. package/{chunk-JW2GK3KC.js → chunk-RRKJTPWB.js} +3 -3
  36. package/{chunk-2WVRUUXO.js → chunk-SYGZQMC2.js} +30 -10
  37. package/{chunk-W7JWTQTJ.js → chunk-TDVJP4KY.js} +1 -1
  38. package/{chunk-INFHX73M.js → chunk-TS2LLPTD.js} +1 -1
  39. package/chunk-TYQAGKPR.js +57 -0
  40. package/{commandRegistry-A4AXQVI6.js → commandRegistry-5IWG5Y44.js} +40 -40
  41. package/{contentThunks-6BAKBO7Q.js → contentThunks-HLK4P4WY.js} +3 -3
  42. package/{createAgentAutomationAction-HJWAZ7RX.js → createAgentAutomationAction-PGEMZSPA.js} +3 -3
  43. package/{createDialogAction-BDI3T4C7.js → createDialogAction-3YFKJAL3.js} +5 -6
  44. package/{createPageAction-P5NL5NIZ.js → createPageAction-3DYXFT6A.js} +3 -3
  45. package/{dialogCommands-HA674SBZ.js → dialogCommands-VPPMDS7O.js} +1 -1
  46. package/{dialogSlice-UZXUHU3F.js → dialogSlice-7MTH65XY.js} +2 -2
  47. package/{docCreateCommands-GIUFPKTR.js → docCreateCommands-RBSXLMXE.js} +1 -1
  48. package/{docDeleteCommands-J5CEAHTI.js → docDeleteCommands-KNDHZJ5P.js} +1 -1
  49. package/{docReadCommands-JNMDIG7M.js → docReadCommands-WOPIYED3.js} +1 -1
  50. package/{docStore-624W4Z63.js → docStore-GUGX22ZK.js} +1 -1
  51. package/{docUpdateCommands-NMC2U3X5.js → docUpdateCommands-4QEUPC27.js} +1 -1
  52. package/{handleSendMessageAction-LTXSYSV6.js → handleSendMessageAction-VNFSQCOL.js} +14 -13
  53. package/index.js +3 -3
  54. package/{localRuntimeAdapter-TXW7C4C6.js → localRuntimeAdapter-55YKDA6C.js} +15 -15
  55. package/{machineCommands-NA7OPUFC.js → machineCommands-PLM7EYGX.js} +16 -16
  56. package/{machineWsRunDispatch-H5BYGTVO.js → machineWsRunDispatch-5GAWU7VZ.js} +16 -16
  57. package/package.json +1 -1
  58. package/{readlineWorkspace-6P3HJ6GO.js → readlineWorkspace-ZQBXJDCB.js} +17 -17
  59. package/{runAgentClientLoop-GSEMKTPY.js → runAgentClientLoop-P56EMBCN.js} +13 -14
  60. package/{settingThunks-GH326IL5.js → settingThunks-MH2OF52M.js} +22 -2
  61. package/{spaceCommands-AC5MPPXS.js → spaceCommands-E7DW3KLI.js} +1 -1
  62. package/{streamAgentChatTurn-6UMDQLPT.js → streamAgentChatTurn-45SHUYWK.js} +17 -17
  63. package/{tools-3GCMXU2R.js → tools-WFX2BG5Y.js} +10 -11
  64. package/{updateDialogTitleAction-SO5P7F64.js → updateDialogTitleAction-3HRLWCWE.js} +3 -3
  65. package/chunk-EUGTFFO6.js +0 -42
@@ -6,7 +6,7 @@ import {
6
6
  buildBuiltinObjectSkillDbKey,
7
7
  buildBuiltinObjectSkillPageContent,
8
8
  buildCodeWorkDiscipline
9
- } from "./chunk-SM56M7N7.js";
9
+ } from "./chunk-6OEPWZV7.js";
10
10
  import {
11
11
  buildSkillDocMarkdown,
12
12
  resolvePageSkillMetadata
@@ -1182,9 +1182,69 @@ function buildAutoReviewSkillContentBySlug(slug) {
1182
1182
  });
1183
1183
  }
1184
1184
 
1185
+ // packages/ai/skills/ubModeSkill.ts
1186
+ var UB_MODE_SKILL_SLUGS = ["ub-mode"];
1187
+ function deterministicId7(prefix, seed) {
1188
+ let h = 2166136261;
1189
+ for (let i = 0; i < seed.length; i++) {
1190
+ h ^= seed.charCodeAt(i);
1191
+ h = h * 16777619 >>> 0;
1192
+ }
1193
+ const suffix = h.toString(36).toUpperCase().padStart(14, "0");
1194
+ return (prefix + suffix).slice(0, 26);
1195
+ }
1196
+ function buildUbModeSkillId(slug) {
1197
+ return deterministicId7("01SK", slug);
1198
+ }
1199
+ function buildUbModeSkillPageKey(userId, slug) {
1200
+ return `page-${userId}-${buildUbModeSkillId(slug)}`;
1201
+ }
1202
+ function buildUbModeSkillConfig(slug) {
1203
+ return {
1204
+ version: "0.1",
1205
+ kind: "skill",
1206
+ id: buildUbModeSkillId(slug),
1207
+ name: "\u4EE3\u7801\u8D28\u91CF\u539F\u5219\uFF08ub-mode \xB7 Nolo \u9002\u914D\u7248\uFF09",
1208
+ triggerMode: "explicit",
1209
+ description: "Nolo \u9002\u914D\u7248\uFF0C\u53C2\u8003 unclebob/ub-mode \u7684\u4EE3\u7801\u8D28\u91CF\u539F\u5219\u3002\u7528\u6237\u663E\u5F0F\u542F\u7528\u540E\uFF0C\u4EE5 TDD\u3001\u6700\u5C0F\u6539\u52A8\u3001\u6839\u56E0\u4FEE\u590D\u3001\u590D\u6742\u5EA6\u4E0E\u91CD\u590D\u6CBB\u7406\u3001\u884C\u4E3A\u6D4B\u8BD5\u6307\u5BFC\u7F16\u7801\uFF1B\u4E0D\u9ED8\u8BA4\u542F\u7528\uFF0C\u4E0D\u6388\u4E88\u5DE5\u5177\u6216\u63D0\u4EA4\u3001\u63A8\u9001\u3001\u5220\u9664\u6743\u9650\u3002\u89E6\u53D1\u8BCD\uFF1Aub-mode\u3001/ub-mode\u3002"
1210
+ };
1211
+ }
1212
+ var BODY2 = [
1213
+ "# ub-mode \xB7 Nolo \u9002\u914D\u7248",
1214
+ "",
1215
+ "## \u6765\u6E90\u4E0E\u9002\u914D\u8FB9\u754C",
1216
+ "\u672C\u8BF4\u660E\u7531 Nolo \u72EC\u7ACB\u7F16\u5199\uFF0C\u539F\u5219\u53C2\u8003 unclebob \u7684 ub-mode \u9879\u76EE\uFF0C\u4E0D\u662F\u4E0A\u6E38\u539F\u6587\u3001\u5B98\u65B9\u7248\u672C\u6216\u5168\u6587\u7FFB\u8BD1\u3002",
1217
+ "\u6765\u6E90\uFF1Ahttps://github.com/unclebob/ub-mode\uFF1B\u53C2\u8003\u539F\u6587\uFF1Ahttps://github.com/unclebob/ub-mode/blob/master/SKILL.md \u3002",
1218
+ "\u9002\u914D\u65F6\u672A\u53D1\u73B0\u660E\u786E\u8BB8\u53EF\u8BC1\u58F0\u660E\uFF1B\u4E0D\u636E\u6B64\u63A8\u5B9A\u83B7\u5F97\u5168\u6587\u518D\u5206\u53D1\u8BB8\u53EF\u3002\u6B64\u5904\u4EC5\u63D0\u4F9B\u7B80\u6D01\u7684\u539F\u5219\u8BF4\u660E\uFF0C\u539F\u6587\u4E0E\u540E\u7EED\u53D8\u52A8\u4EE5\u4E0A\u6E38\u4E3A\u51C6\u3002",
1219
+ "",
1220
+ "## \u542F\u7528\u4E0E\u6743\u9650",
1221
+ "- \u4EC5\u5728\u7528\u6237\u663E\u5F0F\u542F\u7528\u7684\u4F5C\u7528\u57DF\u5185\u5E94\u7528\uFF0C\u4E0D\u9ED8\u8BA4\u542F\u7528\u4E8E\u7528\u6237\u3001\u5BF9\u8BDD\u6216\u9879\u76EE\uFF1B\u6682\u505C\u3001\u5173\u95ED\u6216\u5355\u6B21\u8986\u76D6\u4F18\u5148\u3002\u4E0D\u8981\u4EC5\u56E0\u4EFB\u52A1\u6D89\u53CA\u7F16\u7801\u4FBF\u81EA\u884C\u542F\u7528\u3002",
1222
+ "- \u8FD9\u662F\u4E00\u4EFD\u7F16\u7801\u6307\u5BFC\uFF0C\u4E0D\u6388\u4E88\u4EFB\u4F55\u5DE5\u5177\u6743\u9650\uFF0C\u4E5F\u4E0D\u81EA\u52A8\u52A0\u8F7D\u5176\u4ED6 Skill\u3002\u5E73\u53F0\u66F4\u9AD8\u4F18\u5148\u7EA7\u89C4\u5219\u3001\u7528\u6237\u6388\u6743\u8FB9\u754C\u548C\u9879\u76EE\u95E8\u7981\u4F18\u5148\u3002",
1223
+ "- \u542F\u7528\u4E0D\u7B49\u4E8E\u6388\u6743 commit\u3001push\u3001\u5408\u5E76\u3001\u53D1\u5E03\u6216\u5220\u9664\u6E05\u7406\uFF1B\u8FD9\u4E9B\u64CD\u4F5C\u4ECD\u987B\u6EE1\u8DB3\u5404\u81EA\u7684\u786E\u8BA4\u4E0E\u5BA1\u67E5\u8981\u6C42\u3002\u672A\u63D0\u4EA4\u5DE5\u4F5C\u548C\u4ED6\u4EBA\u8D44\u6E90\u4E0D\u5F97\u81EA\u884C\u6E05\u7406\u3002",
1224
+ "",
1225
+ "## \u7F16\u7801\u539F\u5219",
1226
+ "1. **\u5148\u660E\u786E\u884C\u4E3A\uFF0C\u518D\u505A\u6700\u5C0F\u6539\u52A8**\uFF1A\u786E\u8BA4\u8F93\u5165\u3001\u8F93\u51FA\u3001\u6570\u636E\u7ED3\u6784\u4E0E\u9A8C\u6536\u76EE\u6807\uFF1B\u53EA\u6539\u89E3\u51B3\u5F53\u524D\u95EE\u9898\u5FC5\u9700\u7684\u90E8\u5206\uFF0C\u4E0D\u5939\u5E26\u65E0\u5173\u91CD\u6784\u3002\u76F8\u540C\u51B3\u7B56\u4FDD\u6301\u5355\u4E00\u771F\u503C\u3002",
1227
+ "2. **TDD**\uFF1A\u80FD\u8BDA\u5B9E\u9A8C\u8BC1\u65F6\uFF0C\u5148\u5199\u80FD\u66B4\u9732\u76EE\u6807\u884C\u4E3A\u7F3A\u53E3\u7684\u6D4B\u8BD5\uFF0C\u89C2\u5BDF\u5B83\u56E0\u9884\u671F\u539F\u56E0\u5931\u8D25\uFF0C\u518D\u7528\u6700\u5C0F\u5B9E\u73B0\u4F7F\u5176\u901A\u8FC7\uFF0C\u6700\u540E\u5728\u884C\u4E3A\u53D7\u4FDD\u62A4\u65F6\u91CD\u6784\u3002\u82E5\u65E0\u6CD5\u6267\u884C\u6D4B\u8BD5\u6216\u96BE\u4EE5\u6784\u9020\u6709\u6548\u6D4B\u8BD5\uFF0C\u660E\u786E\u8BF4\u660E\u9650\u5236\uFF0C\u4E0D\u4F2A\u9020\u7EA2\u7EFF\u8BC1\u636E\uFF0C\u4E0D\u5199\u65E0\u4EF7\u503C\u6D4B\u8BD5\u51D1\u6570\u3002",
1228
+ "3. **\u4FEE\u590D\u6839\u56E0**\uFF1A\u5148\u590D\u73B0\u6216\u6536\u96C6\u76F4\u63A5\u8BC1\u636E\uFF0C\u533A\u5206\u75C7\u72B6\u4E0E\u539F\u56E0\u3002\u8FDE\u7EED\u4FEE\u590D\u5931\u8D25\u65F6\u91CD\u65B0\u68C0\u67E5\u5171\u540C\u524D\u63D0\uFF1B\u4E0D\u8981\u7528\u541E\u9519\u6216\u989D\u5916\u5B88\u536B\u63A9\u76D6\u7F3A\u9677\u3002",
1229
+ "4. **\u63A7\u5236\u590D\u6742\u5EA6\u4E0E\u91CD\u590D**\uFF1A\u68C0\u67E5\u5206\u652F\u3001\u5D4C\u5957\u3001\u804C\u8D23\u548C\u91CD\u590D\u7684\u4E1A\u52A1\u51B3\u7B56\uFF1B\u4F18\u5148\u7B80\u5316\u6570\u636E\u6A21\u578B\u4E0E\u8FB9\u754C\uFF0C\u518D\u6309\u8BC1\u636E\u63D0\u53D6\u5171\u4EAB\u903B\u8F91\u3002\u4E0D\u4E3A\u6307\u6807\u62C6\u788E\u6E05\u6670\u4EE3\u7801\uFF0C\u4E0D\u4E3A\u8868\u9762\u76F8\u4F3C\u5236\u9020\u62BD\u8C61\u3002",
1230
+ "5. **\u6D4B\u8BD5\u53EF\u89C2\u5BDF\u884C\u4E3A**\uFF1A\u4ECE\u8C03\u7528\u8005\u5165\u53E3\u68C0\u67E5\u8F93\u51FA\u3001\u72B6\u6001\u4E0E\u526F\u4F5C\u7528\uFF0C\u800C\u4E0D\u662F\u79C1\u6709\u5B9E\u73B0\u6216 mock \u81EA\u8BC1\u3002\u91CD\u6784\u524D\u56FA\u5B9A\u5173\u952E\u884C\u4E3A\uFF0C\u91CD\u6784\u540E\u8FD0\u884C\u76F8\u5173\u68C0\u67E5\uFF0C\u786E\u8BA4\u884C\u4E3A\u672A\u53D8\u3002",
1231
+ "6. **\u7EA6\u675F\u72B6\u6001\u4E0E\u8FB9\u754C**\uFF1A\u5916\u90E8\u6570\u636E\u5728\u5165\u53E3\u6821\u9A8C\uFF0C\u5185\u90E8\u903B\u8F91\u5C3D\u91CF\u4FDD\u6301\u7EAF\u51FD\u6570\uFF1B\u7528\u7C7B\u578B\u8868\u8FBE\u6709\u6548\u72B6\u6001\u3002\u65E0\u5171\u4EAB\u5199\u5165\u9700\u6C42\u7684\u4EFB\u52A1\u9694\u79BB\u72B6\u6001\uFF0C\u6709\u5171\u4EAB\u72B6\u6001\u65F6\u660E\u786E\u5199\u5165\u8005\u4E0E\u6062\u590D/\u5E42\u7B49\u7B56\u7565\u3002",
1232
+ "7. **\u5C0F\u6B65\u4EA4\u4ED8\u4E0E\u8BC1\u636E**\uFF1A\u628A\u6539\u52A8\u62C6\u6210\u53EF\u9A8C\u8BC1\u7684\u5C0F\u5355\u5143\uFF1B\u65E0\u6587\u4EF6\u51B2\u7A81\u6216\u771F\u5B9E\u6570\u636E\u4F9D\u8D56\u7684\u5DE5\u4F5C\u6309\u5E73\u53F0\u89C4\u5219\u5E76\u884C\uFF0C\u4E0D\u628A\u4E0A\u6E38\u7684\u987A\u5E8F\u5EFA\u8BAE\u53D8\u6210\u5168\u5C40\u4E32\u884C\u3002\u6C47\u62A5\u6539\u52A8\u3001\u5B9E\u9645\u68C0\u67E5\u7ED3\u679C\u4E0E\u5C1A\u672A\u9A8C\u8BC1\u7684\u90E8\u5206\u3002",
1233
+ "",
1234
+ "## \u8D28\u91CF\u5DE5\u5177\u4E0E\u7ED3\u679C\u771F\u5B9E\u6027",
1235
+ "- Crapper\uFF08\u590D\u6742\u5EA6\u4E0E\u6D4B\u8BD5\u98CE\u9669\uFF09\u3001Dryer\uFF08\u91CD\u590D\u68C0\u67E5\uFF09\u3001Mutator\uFF08\u53D8\u5F02\u6D4B\u8BD5\uFF09\u53EF\u4F5C\u4E3A\u8F85\u52A9\uFF0C\u4E0D\u662F\u542F\u7528\u524D\u63D0\u3002\u4EC5\u5728\u73AF\u5883\u5DF2\u5B89\u88C5\u3001\u9879\u76EE\u5141\u8BB8\u4E14\u9002\u5408\u5F53\u524D\u4EFB\u52A1\u65F6\u4F7F\u7528\uFF1B\u4E0D\u81EA\u52A8\u5B89\u88C5\u3002",
1236
+ "- \u5DE5\u5177\u672A\u5B89\u88C5\u3001\u68C0\u67E5\u672A\u6267\u884C\u6216\u6267\u884C\u5931\u8D25\u65F6\uFF0C\u5FC5\u987B\u5982\u5B9E\u8BF4\u660E\uFF1B\u4E0D\u53EF\u5BA3\u79F0\u68C0\u67E5\u901A\u8FC7\u3002\u666E\u901A\u6D4B\u8BD5\u901A\u8FC7\u4E5F\u4E0D\u80FD\u5192\u5145\u590D\u6742\u5EA6\u3001\u91CD\u590D\u6216\u53D8\u5F02\u68C0\u67E5\u901A\u8FC7\u3002"
1237
+ ].join("\n");
1238
+ function buildUbModeSkillContentBySlug(slug) {
1239
+ return buildSkillDocMarkdown({
1240
+ body: BODY2,
1241
+ skillConfig: buildUbModeSkillConfig(slug)
1242
+ });
1243
+ }
1244
+
1185
1245
  // packages/ai/skills/worktreeSkill.ts
1186
1246
  var WORKTREE_SKILL_SLUGS = ["worktree-isolation"];
1187
- function deterministicId7(prefix, seed) {
1247
+ function deterministicId8(prefix, seed) {
1188
1248
  let h = 2166136261;
1189
1249
  for (let i = 0; i < seed.length; i++) {
1190
1250
  h ^= seed.charCodeAt(i);
@@ -1197,7 +1257,7 @@ function normalizeSkillSeed6(input) {
1197
1257
  return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1198
1258
  }
1199
1259
  function buildWorktreeSkillId(slug) {
1200
- return deterministicId7("01SK", normalizeSkillSeed6(slug) || slug);
1260
+ return deterministicId8("01SK", normalizeSkillSeed6(slug) || slug);
1201
1261
  }
1202
1262
  function buildWorktreeSkillPageKey(userId, slug) {
1203
1263
  return `page-${userId}-${buildWorktreeSkillId(slug)}`;
@@ -1264,7 +1324,7 @@ function buildWorktreeSkillContentBySlug(slug) {
1264
1324
 
1265
1325
  // packages/ai/skills/secretsManagerSkill.ts
1266
1326
  var SECRETS_MANAGER_SKILL_SLUGS = ["secrets-manager"];
1267
- function deterministicId8(prefix, seed) {
1327
+ function deterministicId9(prefix, seed) {
1268
1328
  let h = 2166136261;
1269
1329
  for (let i = 0; i < seed.length; i++) {
1270
1330
  h ^= seed.charCodeAt(i);
@@ -1277,7 +1337,7 @@ function normalizeSkillSeed7(input) {
1277
1337
  return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1278
1338
  }
1279
1339
  function buildSecretsManagerSkillId(slug) {
1280
- return deterministicId8("01SK", normalizeSkillSeed7(slug) || slug);
1340
+ return deterministicId9("01SK", normalizeSkillSeed7(slug) || slug);
1281
1341
  }
1282
1342
  function buildSecretsManagerSkillPageKey(userId, slug) {
1283
1343
  return `page-${userId}-${buildSecretsManagerSkillId(slug)}`;
@@ -1358,7 +1418,7 @@ function buildSecretsManagerSkillContentBySlug(slug) {
1358
1418
 
1359
1419
  // packages/ai/skills/systematicInvestigationSkill.ts
1360
1420
  var SYSTEMATIC_INVESTIGATION_SKILL_SLUGS = ["systematic-investigation"];
1361
- function deterministicId9(prefix, seed) {
1421
+ function deterministicId10(prefix, seed) {
1362
1422
  let h = 2166136261;
1363
1423
  for (let i = 0; i < seed.length; i++) {
1364
1424
  h ^= seed.charCodeAt(i);
@@ -1371,7 +1431,7 @@ function normalizeSkillSeed8(input) {
1371
1431
  return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1372
1432
  }
1373
1433
  function buildSystematicinvestigationSkillId(slug) {
1374
- return deterministicId9("01SK", normalizeSkillSeed8(slug) || slug);
1434
+ return deterministicId10("01SK", normalizeSkillSeed8(slug) || slug);
1375
1435
  }
1376
1436
  function buildSystematicinvestigationSkillPageKey(userId, slug) {
1377
1437
  return `page-${userId}-${buildSystematicinvestigationSkillId(slug)}`;
@@ -1395,7 +1455,7 @@ function buildSystematicinvestigationSkillContentBySlug(slug) {
1395
1455
 
1396
1456
  // packages/ai/skills/showMeSkill.ts
1397
1457
  var SHOW_ME_SKILL_SLUGS = ["show-me"];
1398
- function deterministicId10(prefix, seed) {
1458
+ function deterministicId11(prefix, seed) {
1399
1459
  let h = 2166136261;
1400
1460
  for (let i = 0; i < seed.length; i++) {
1401
1461
  h ^= seed.charCodeAt(i);
@@ -1408,7 +1468,7 @@ function normalizeSkillSeed9(input) {
1408
1468
  return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1409
1469
  }
1410
1470
  function buildShowmeSkillId(slug) {
1411
- return deterministicId10("01SK", normalizeSkillSeed9(slug) || slug);
1471
+ return deterministicId11("01SK", normalizeSkillSeed9(slug) || slug);
1412
1472
  }
1413
1473
  function buildShowmeSkillPageKey(userId, slug) {
1414
1474
  return `page-${userId}-${buildShowmeSkillId(slug)}`;
@@ -1432,7 +1492,7 @@ function buildShowmeSkillContentBySlug(slug) {
1432
1492
 
1433
1493
  // packages/ai/skills/cavemanSkill.ts
1434
1494
  var CAVEMAN_SKILL_SLUGS = ["caveman"];
1435
- function deterministicId11(prefix, seed) {
1495
+ function deterministicId12(prefix, seed) {
1436
1496
  let h = 2166136261;
1437
1497
  for (let i = 0; i < seed.length; i++) {
1438
1498
  h ^= seed.charCodeAt(i);
@@ -1445,7 +1505,7 @@ function normalizeSkillSeed10(input) {
1445
1505
  return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1446
1506
  }
1447
1507
  function buildCavemanSkillId(slug) {
1448
- return deterministicId11("01SK", normalizeSkillSeed10(slug) || slug);
1508
+ return deterministicId12("01SK", normalizeSkillSeed10(slug) || slug);
1449
1509
  }
1450
1510
  function buildCavemanSkillPageKey(userId, slug) {
1451
1511
  return `page-${userId}-${buildCavemanSkillId(slug)}`;
@@ -1469,7 +1529,7 @@ function buildCavemanSkillContentBySlug(slug) {
1469
1529
 
1470
1530
  // packages/ai/skills/skillCreatorSkill.ts
1471
1531
  var SKILL_CREATOR_SKILL_SLUGS = ["skill-creator"];
1472
- function deterministicId12(prefix, seed) {
1532
+ function deterministicId13(prefix, seed) {
1473
1533
  let h = 2166136261;
1474
1534
  for (let i = 0; i < seed.length; i++) {
1475
1535
  h ^= seed.charCodeAt(i);
@@ -1482,7 +1542,7 @@ function normalizeSkillSeed11(input) {
1482
1542
  return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1483
1543
  }
1484
1544
  function buildSkillCreatorSkillId(slug) {
1485
- return deterministicId12("01SK", normalizeSkillSeed11(slug) || slug);
1545
+ return deterministicId13("01SK", normalizeSkillSeed11(slug) || slug);
1486
1546
  }
1487
1547
  function buildSkillCreatorSkillPageKey(userId, slug) {
1488
1548
  return `page-${userId}-${buildSkillCreatorSkillId(slug)}`;
@@ -1506,7 +1566,7 @@ function buildSkillCreatorSkillContentBySlug(slug) {
1506
1566
 
1507
1567
  // packages/ai/skills/agentProviderSetupSkill.ts
1508
1568
  var AGENT_PROVIDER_SETUP_SKILL_SLUGS = ["agent-provider-setup"];
1509
- function deterministicId13(prefix, seed) {
1569
+ function deterministicId14(prefix, seed) {
1510
1570
  let h = 2166136261;
1511
1571
  for (let i = 0; i < seed.length; i++) {
1512
1572
  h ^= seed.charCodeAt(i);
@@ -1519,7 +1579,7 @@ function normalizeSkillSeed12(input) {
1519
1579
  return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1520
1580
  }
1521
1581
  function buildAgentProviderSetupSkillId(slug) {
1522
- return deterministicId13("01SK", normalizeSkillSeed12(slug) || slug);
1582
+ return deterministicId14("01SK", normalizeSkillSeed12(slug) || slug);
1523
1583
  }
1524
1584
  function buildAgentProviderSetupSkillPageKey(userId, slug) {
1525
1585
  return `page-${userId}-${buildAgentProviderSetupSkillId(slug)}`;
@@ -1684,6 +1744,13 @@ var SOURCES = [
1684
1744
  buildConfig: buildAutoReviewSkillConfig,
1685
1745
  buildContent: buildAutoReviewSkillContentBySlug
1686
1746
  },
1747
+ {
1748
+ slugs: UB_MODE_SKILL_SLUGS,
1749
+ buildSkillId: buildUbModeSkillId,
1750
+ buildPageKey: buildUbModeSkillPageKey,
1751
+ buildConfig: buildUbModeSkillConfig,
1752
+ buildContent: buildUbModeSkillContentBySlug
1753
+ },
1687
1754
  {
1688
1755
  slugs: WORKTREE_SKILL_SLUGS,
1689
1756
  buildSkillId: buildWorktreeSkillId,
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-NBTY7YJF.js";
6
6
  import {
7
7
  resolveCliLocalRuntimeKeyCapability
8
- } from "./chunk-7MB72UW6.js";
8
+ } from "./chunk-JNRGTW6S.js";
9
9
  import {
10
10
  HIGH_RISK_MUTATION_TOOL_NAMES
11
11
  } from "./chunk-NABJEYPJ.js";
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-523DITKR.js";
12
12
  import {
13
13
  runLlm
14
- } from "./chunk-S5DELBWY.js";
14
+ } from "./chunk-E7B4CR5M.js";
15
15
  import {
16
16
  isMediaToolConfirmation
17
17
  } from "./chunk-QYPE3TS3.js";
@@ -11073,7 +11073,7 @@ var messageSlice = createSliceWithThunks({
11073
11073
  runtimeOptions: args.runtimeOptions
11074
11074
  });
11075
11075
  if (agentKeyToUse) {
11076
- const { streamAgentChatTurn } = await import("./agentSlice-JFRZAKR4.js");
11076
+ const { streamAgentChatTurn } = await import("./agentSlice-CB25SUJB.js");
11077
11077
  await dispatch(
11078
11078
  streamAgentChatTurn({
11079
11079
  agentKey: agentKeyToUse,
@@ -13887,7 +13887,7 @@ var deleteDialogThunk = async (payload, thunkApi) => {
13887
13887
  }
13888
13888
  if (isCurrentDialog) {
13889
13889
  await thunkApi.dispatch(resetMsgs());
13890
- const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-UZXUHU3F.js");
13890
+ const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-7MTH65XY.js");
13891
13891
  dispatch(clearPendingAttachments2());
13892
13892
  }
13893
13893
  return { dialogKey, isCurrentDialog, attachmentPlan };
@@ -13895,15 +13895,15 @@ var deleteDialogThunk = async (payload, thunkApi) => {
13895
13895
 
13896
13896
  // packages/chat/dialog/dialogSlice.ts
13897
13897
  var runCreateDialogAction = async (args, thunkApi) => {
13898
- const { createDialogAction } = await import("./createDialogAction-BDI3T4C7.js");
13898
+ const { createDialogAction } = await import("./createDialogAction-3YFKJAL3.js");
13899
13899
  return createDialogAction(args, thunkApi);
13900
13900
  };
13901
13901
  var runCreateAgentAutomationAction = async (args, thunkApi) => {
13902
- const { createAgentAutomationAction } = await import("./createAgentAutomationAction-HJWAZ7RX.js");
13902
+ const { createAgentAutomationAction } = await import("./createAgentAutomationAction-PGEMZSPA.js");
13903
13903
  return createAgentAutomationAction(args, thunkApi);
13904
13904
  };
13905
13905
  var runUpdateDialogTitleAction = async (args, thunkApi) => {
13906
- const { updateDialogTitleAction } = await import("./updateDialogTitleAction-SO5P7F64.js");
13906
+ const { updateDialogTitleAction } = await import("./updateDialogTitleAction-3HRLWCWE.js");
13907
13907
  return updateDialogTitleAction(args, thunkApi);
13908
13908
  };
13909
13909
  var runAddDialogAgentAction = async (args, thunkApi) => {
@@ -13927,7 +13927,7 @@ var runSetDialogExtraReferencesAction = async (args, thunkApi) => {
13927
13927
  return setDialogExtraReferencesAction(args, thunkApi);
13928
13928
  };
13929
13929
  var runHandleSendMessageAction = async (args, thunkApi) => {
13930
- const { handleSendMessageAction } = await import("./handleSendMessageAction-LTXSYSV6.js");
13930
+ const { handleSendMessageAction } = await import("./handleSendMessageAction-VNFSQCOL.js");
13931
13931
  return handleSendMessageAction(args, thunkApi);
13932
13932
  };
13933
13933
  function clearDialogState() {
@@ -13940,7 +13940,7 @@ var createPageAndAddReference = createAsyncThunk(
13940
13940
  async (payload, { dispatch, getState, rejectWithValue }) => {
13941
13941
  const { slateData, jsonData, title, type, fileId, groupId, dialogKey } = payload;
13942
13942
  try {
13943
- const { createDocState } = await import("./docStore-624W4Z63.js");
13943
+ const { createDocState } = await import("./docStore-GUGX22ZK.js");
13944
13944
  const pageKey = await createDocState(
13945
13945
  { slateData, title },
13946
13946
  { dispatch, getState }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  toolRegistry
3
- } from "./chunk-7MB72UW6.js";
3
+ } from "./chunk-JNRGTW6S.js";
4
4
  import {
5
5
  runtime_default
6
- } from "./chunk-MGFRMNK5.js";
6
+ } from "./chunk-RJVYCYLQ.js";
7
7
  import {
8
8
  canonicalizeToolNames
9
9
  } from "./chunk-AKE53VMW.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  addContentToSpace
3
- } from "./chunk-W7JWTQTJ.js";
3
+ } from "./chunk-TDVJP4KY.js";
4
4
  import {
5
5
  format,
6
6
  prepareAndPersistMessage,
7
7
  uiAskChoiceFunc,
8
8
  uiAskChoiceFunctionSchema
9
- } from "./chunk-MGFRMNK5.js";
9
+ } from "./chunk-RJVYCYLQ.js";
10
10
  import {
11
11
  formatISO
12
12
  } from "./chunk-ZRAU6T47.js";
@@ -25,7 +25,7 @@ import {
25
25
  } from "./chunk-PXYBUFDB.js";
26
26
  import {
27
27
  buildBuiltinObjectSkillReference
28
- } from "./chunk-SM56M7N7.js";
28
+ } from "./chunk-6OEPWZV7.js";
29
29
  import {
30
30
  extractCustomId
31
31
  } from "./chunk-M2EJHDJP.js";
@@ -56,11 +56,14 @@ import {
56
56
  } from "./chunk-ATNTHIZI.js";
57
57
  import {
58
58
  inferCaptureIntent
59
- } from "./chunk-INFHX73M.js";
59
+ } from "./chunk-TS2LLPTD.js";
60
+ import {
61
+ resolveUserPromptSkillPatches
62
+ } from "./chunk-TYQAGKPR.js";
60
63
  import {
61
64
  inlineImageUrlsForCustomProvider,
62
65
  prepareTools
63
- } from "./chunk-4SEOTTFQ.js";
66
+ } from "./chunk-RMRLWIQS.js";
64
67
  import {
65
68
  getServerProviderSecret
66
69
  } from "./chunk-HS7MLR74.js";
@@ -82,7 +85,7 @@ import {
82
85
  resolveCliLocalRuntimeKeyCapability,
83
86
  resolveCliLocalSpawnDispatch,
84
87
  resolveStartAgentRunCwd
85
- } from "./chunk-7MB72UW6.js";
88
+ } from "./chunk-JNRGTW6S.js";
86
89
  import {
87
90
  fetchWithTransientRetry,
88
91
  isTransientFetchError
@@ -93,7 +96,7 @@ import {
93
96
  } from "./chunk-5TO2R77F.js";
94
97
  import {
95
98
  resolveAgentRequiredPackIds
96
- } from "./chunk-RYPJRIFF.js";
99
+ } from "./chunk-76OXA55E.js";
97
100
  import {
98
101
  applyBuiltinAgentRuntimeOverride,
99
102
  applyTokenUsageToDayStats,
@@ -102,14 +105,14 @@ import {
102
105
  resolveBuiltinPlatformAgentConfig,
103
106
  runKeyed,
104
107
  validateAskChoiceInput
105
- } from "./chunk-MGFRMNK5.js";
108
+ } from "./chunk-RJVYCYLQ.js";
106
109
  import {
107
110
  BUILTIN_DIALOG_LLM_CHAT_FALLBACK_MODEL,
108
111
  BUILTIN_TITLE_LLM_CONFIG
109
112
  } from "./chunk-523DITKR.js";
110
113
  import {
111
114
  fetchServerSyncedCredential
112
- } from "./chunk-S5DELBWY.js";
115
+ } from "./chunk-E7B4CR5M.js";
113
116
  import {
114
117
  getDefaultCliLocalRuntimeDb
115
118
  } from "./chunk-P64WRQYV.js";
@@ -125,7 +128,7 @@ import {
125
128
  applySystemBuiltinSkillFilter,
126
129
  expandEnabledPacks,
127
130
  resolveEffectiveEnabledPacks
128
- } from "./chunk-SM56M7N7.js";
131
+ } from "./chunk-6OEPWZV7.js";
129
132
  import {
130
133
  DEFAULT_HYBRID_READ_TIMEOUT_MS,
131
134
  Duration_exports,
@@ -169,7 +172,7 @@ import {
169
172
  runExecShellGates,
170
173
  validateConfiguredRootExecutionLease,
171
174
  verifyOwnerRouteAck
172
- } from "./chunk-X26GHKRS.js";
175
+ } from "./chunk-4BBAP7E4.js";
173
176
  import {
174
177
  accumulateGeminiChunks,
175
178
  buildGeminiGenerateContentRequest,
@@ -1104,6 +1107,9 @@ function buildPreparedAgentCacheKey(args) {
1104
1107
  const systemBuiltinSkillsKey = args.systemBuiltinSkills ? JSON.stringify(
1105
1108
  Object.keys(args.systemBuiltinSkills).sort().map((key) => [key, args.systemBuiltinSkills?.[key]])
1106
1109
  ) : "default";
1110
+ const promptSkillsKey = JSON.stringify(
1111
+ Array.isArray(args.enabledPromptSkills) && args.enabledPromptSkills.includes("ub-mode") ? ["ub-mode"] : []
1112
+ );
1107
1113
  const wakeKey = args.wake !== void 0 ? args.wake ? "wake:1" : "wake:0" : "";
1108
1114
  const policyKey = JSON.stringify([
1109
1115
  args.env?.NOLO_LOCAL_WORKSPACE_TOOLSET ?? "",
@@ -1113,7 +1119,7 @@ function buildPreparedAgentCacheKey(args) {
1113
1119
  args.env?.NOLO_LOCAL_ALLOWED_TOOLS ?? "",
1114
1120
  args.env?.NOLO_LOCAL_ALLOW_UNDECLARED_TOOLS ?? ""
1115
1121
  ]);
1116
- return `${policyKey}\0${args.userId}\0${args.agentRef}\0${args.cwd}\0${systemBuiltinSkillsKey}${wakeKey ? `\0${wakeKey}` : ""}`;
1122
+ return `${policyKey}\0${args.userId}\0${args.agentRef}\0${args.cwd}\0${systemBuiltinSkillsKey}\0${promptSkillsKey}${wakeKey ? `\0${wakeKey}` : ""}`;
1117
1123
  }
1118
1124
  function clearCliLocalRuntimePreparedAgentCache() {
1119
1125
  preparedAgentRuntimeCache.clear();
@@ -12836,6 +12842,7 @@ function createCliLocalRuntimeAdapter(deps) {
12836
12842
  credentialBroker,
12837
12843
  loadAgentConfig: async (agentRef) => {
12838
12844
  let systemBuiltinSkills = null;
12845
+ let enabledPromptSkills = [];
12839
12846
  const sharedStore = await getOrCreateSharedStore(deps);
12840
12847
  if (userId) {
12841
12848
  try {
@@ -12843,6 +12850,7 @@ function createCliLocalRuntimeAdapter(deps) {
12843
12850
  createUserKey.settings(userId),
12844
12851
  { remote: false }
12845
12852
  );
12853
+ enabledPromptSkills = settingsRecord && typeof settingsRecord === "object" ? settingsRecord.enabledPromptSkills ?? [] : [];
12846
12854
  systemBuiltinSkills = settingsRecord && typeof settingsRecord === "object" ? settingsRecord.systemBuiltinSkills ?? null : null;
12847
12855
  } catch {
12848
12856
  }
@@ -12852,6 +12860,7 @@ function createCliLocalRuntimeAdapter(deps) {
12852
12860
  agentRef,
12853
12861
  cwd: normalizeRuntimeCacheCwd(workspaceRoot),
12854
12862
  systemBuiltinSkills,
12863
+ enabledPromptSkills,
12855
12864
  wake: hasRunWakeChannel(deps.env),
12856
12865
  env: deps.env
12857
12866
  })}:${dockerRuntimeEnabled ? "docker" : instaboxRuntimeEnabled ? "instabox" : "host"}`;
@@ -12872,7 +12881,18 @@ function createCliLocalRuntimeAdapter(deps) {
12872
12881
  storedAgentConfig ?? fallbackLocalCliAgentConfig,
12873
12882
  deps.env
12874
12883
  );
12875
- const agentConfig = baseAgentConfig ? withRuntimeEnabledPacksAndPrompt(baseAgentConfig) : baseAgentConfig;
12884
+ const packAgentConfig = baseAgentConfig ? withRuntimeEnabledPacksAndPrompt(baseAgentConfig) : baseAgentConfig;
12885
+ const userPromptPatches = resolveUserPromptSkillPatches(
12886
+ packAgentConfig?.rawRecord ?? packAgentConfig,
12887
+ enabledPromptSkills
12888
+ );
12889
+ const agentConfig = packAgentConfig && userPromptPatches.length ? {
12890
+ ...packAgentConfig,
12891
+ prompt: [
12892
+ packAgentConfig.prompt,
12893
+ ...userPromptPatches.filter((patch) => !String(packAgentConfig.prompt ?? "").includes(patch))
12894
+ ].filter(Boolean).join("\n\n")
12895
+ } : packAgentConfig;
12876
12896
  const requestedToolNames = agentConfig ? resolveCliRequestedToolNames(
12877
12897
  agentConfig,
12878
12898
  deps.env,
@@ -7,7 +7,7 @@ import {
7
7
  deleteDialog,
8
8
  runtime_default,
9
9
  toast
10
- } from "./chunk-MGFRMNK5.js";
10
+ } from "./chunk-RJVYCYLQ.js";
11
11
  import {
12
12
  UNCATEGORIZED_ID,
13
13
  addContentAction,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_AGENT_BASE_POLICY,
3
3
  DEFAULT_USER_PREFERENCE_PROFILE
4
- } from "./chunk-VYNMQ6HW.js";
4
+ } from "./chunk-76OXA55E.js";
5
5
 
6
6
  // packages/ai/policy/runtimePolicy.ts
7
7
  var clampLevel = (value, fallback) => {
@@ -0,0 +1,57 @@
1
+ import {
2
+ isAgentSkillDisabled
3
+ } from "./chunk-76OXA55E.js";
4
+ import {
5
+ resolveBuiltinSkillEntry
6
+ } from "./chunk-O2H2Z7U4.js";
7
+
8
+ // packages/ai/skills/userPromptSkills.ts
9
+ var RECOMMENDED_PROMPT_SKILL_SLUGS = ["ub-mode"];
10
+ var ALLOWED_PROMPT_SKILL_SLUGS = new Set(
11
+ RECOMMENDED_PROMPT_SKILL_SLUGS
12
+ );
13
+ function normalizeEnabledPromptSkills(value) {
14
+ if (!Array.isArray(value)) {
15
+ return [];
16
+ }
17
+ const result = [];
18
+ const seen = /* @__PURE__ */ new Set();
19
+ for (const item of value) {
20
+ if (typeof item !== "string") {
21
+ continue;
22
+ }
23
+ const trimmed = item.trim();
24
+ if (ALLOWED_PROMPT_SKILL_SLUGS.has(trimmed) && !seen.has(trimmed)) {
25
+ seen.add(trimmed);
26
+ result.push(trimmed);
27
+ }
28
+ }
29
+ return result;
30
+ }
31
+ function resolveUserPromptSkillPatches(agentConfig, enabledPromptSkills) {
32
+ const normalized = normalizeEnabledPromptSkills(enabledPromptSkills);
33
+ if (normalized.length === 0) {
34
+ return [];
35
+ }
36
+ const effectiveConfig = agentConfig && typeof agentConfig === "object" ? "rawRecord" in agentConfig && agentConfig.rawRecord && typeof agentConfig.rawRecord === "object" ? agentConfig.rawRecord : agentConfig : null;
37
+ const patches = [];
38
+ for (const slug of normalized) {
39
+ if (isAgentSkillDisabled(effectiveConfig, slug)) {
40
+ continue;
41
+ }
42
+ const entry = resolveBuiltinSkillEntry(slug);
43
+ if (!entry) {
44
+ continue;
45
+ }
46
+ const content = entry.content?.trim();
47
+ if (content) {
48
+ patches.push(content);
49
+ }
50
+ }
51
+ return patches;
52
+ }
53
+
54
+ export {
55
+ normalizeEnabledPromptSkills,
56
+ resolveUserPromptSkillPatches
57
+ };