@kaitranntt/ccs 7.50.0-dev.1 → 7.50.0-dev.10

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 (208) hide show
  1. package/README.md +65 -4
  2. package/config/base-iflow.settings.json +4 -4
  3. package/dist/api/services/profile-writer.d.ts +1 -1
  4. package/dist/api/services/profile-writer.d.ts.map +1 -1
  5. package/dist/api/services/profile-writer.js +18 -5
  6. package/dist/api/services/profile-writer.js.map +1 -1
  7. package/dist/auth/account-context.d.ts +11 -0
  8. package/dist/auth/account-context.d.ts.map +1 -1
  9. package/dist/auth/account-context.js +42 -8
  10. package/dist/auth/account-context.js.map +1 -1
  11. package/dist/auth/auth-commands.d.ts.map +1 -1
  12. package/dist/auth/auth-commands.js +9 -0
  13. package/dist/auth/auth-commands.js.map +1 -1
  14. package/dist/auth/commands/create-command-env.d.ts +3 -0
  15. package/dist/auth/commands/create-command-env.d.ts.map +1 -0
  16. package/dist/auth/commands/create-command-env.js +55 -0
  17. package/dist/auth/commands/create-command-env.js.map +1 -0
  18. package/dist/auth/commands/create-command.d.ts.map +1 -1
  19. package/dist/auth/commands/create-command.js +136 -30
  20. package/dist/auth/commands/create-command.js.map +1 -1
  21. package/dist/auth/commands/list-command.d.ts.map +1 -1
  22. package/dist/auth/commands/list-command.js +5 -1
  23. package/dist/auth/commands/list-command.js.map +1 -1
  24. package/dist/auth/commands/show-command.d.ts.map +1 -1
  25. package/dist/auth/commands/show-command.js +1 -0
  26. package/dist/auth/commands/show-command.js.map +1 -1
  27. package/dist/auth/commands/types.d.ts +3 -0
  28. package/dist/auth/commands/types.d.ts.map +1 -1
  29. package/dist/auth/commands/types.js +24 -0
  30. package/dist/auth/commands/types.js.map +1 -1
  31. package/dist/auth/profile-detector.d.ts.map +1 -1
  32. package/dist/auth/profile-detector.js +1 -0
  33. package/dist/auth/profile-detector.js.map +1 -1
  34. package/dist/auth/profile-registry.d.ts +2 -0
  35. package/dist/auth/profile-registry.d.ts.map +1 -1
  36. package/dist/auth/profile-registry.js +45 -7
  37. package/dist/auth/profile-registry.js.map +1 -1
  38. package/dist/ccs.js +46 -8
  39. package/dist/ccs.js.map +1 -1
  40. package/dist/cliproxy/account-safety.d.ts.map +1 -1
  41. package/dist/cliproxy/account-safety.js +4 -0
  42. package/dist/cliproxy/account-safety.js.map +1 -1
  43. package/dist/cliproxy/antigravity-responsibility.d.ts +36 -0
  44. package/dist/cliproxy/antigravity-responsibility.d.ts.map +1 -0
  45. package/dist/cliproxy/antigravity-responsibility.js +171 -0
  46. package/dist/cliproxy/antigravity-responsibility.js.map +1 -0
  47. package/dist/cliproxy/auth/auth-types.d.ts +2 -0
  48. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
  49. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  50. package/dist/cliproxy/auth/oauth-handler.js +18 -0
  51. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  52. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  53. package/dist/cliproxy/config/env-builder.js +57 -0
  54. package/dist/cliproxy/config/env-builder.js.map +1 -1
  55. package/dist/cliproxy/config/generator.d.ts +2 -1
  56. package/dist/cliproxy/config/generator.d.ts.map +1 -1
  57. package/dist/cliproxy/config/generator.js +18 -8
  58. package/dist/cliproxy/config/generator.js.map +1 -1
  59. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  60. package/dist/cliproxy/executor/index.js +30 -0
  61. package/dist/cliproxy/executor/index.js.map +1 -1
  62. package/dist/commands/help-command.d.ts.map +1 -1
  63. package/dist/commands/help-command.js +11 -1
  64. package/dist/commands/help-command.js.map +1 -1
  65. package/dist/config/migration-manager.d.ts.map +1 -1
  66. package/dist/config/migration-manager.js +19 -0
  67. package/dist/config/migration-manager.js.map +1 -1
  68. package/dist/config/unified-config-loader.d.ts +11 -1
  69. package/dist/config/unified-config-loader.d.ts.map +1 -1
  70. package/dist/config/unified-config-loader.js +127 -59
  71. package/dist/config/unified-config-loader.js.map +1 -1
  72. package/dist/config/unified-config-types.d.ts +16 -0
  73. package/dist/config/unified-config-types.d.ts.map +1 -1
  74. package/dist/config/unified-config-types.js +8 -1
  75. package/dist/config/unified-config-types.js.map +1 -1
  76. package/dist/management/instance-manager.d.ts +1 -0
  77. package/dist/management/instance-manager.d.ts.map +1 -1
  78. package/dist/management/instance-manager.js +14 -8
  79. package/dist/management/instance-manager.js.map +1 -1
  80. package/dist/management/profile-context-sync-lock.d.ts +14 -0
  81. package/dist/management/profile-context-sync-lock.d.ts.map +1 -0
  82. package/dist/management/profile-context-sync-lock.js +174 -0
  83. package/dist/management/profile-context-sync-lock.js.map +1 -0
  84. package/dist/management/shared-manager.d.ts +18 -0
  85. package/dist/management/shared-manager.d.ts.map +1 -1
  86. package/dist/management/shared-manager.js +145 -6
  87. package/dist/management/shared-manager.js.map +1 -1
  88. package/dist/targets/droid-adapter.d.ts +1 -1
  89. package/dist/targets/droid-adapter.d.ts.map +1 -1
  90. package/dist/targets/droid-adapter.js +16 -4
  91. package/dist/targets/droid-adapter.js.map +1 -1
  92. package/dist/targets/droid-config-manager.d.ts +9 -1
  93. package/dist/targets/droid-config-manager.d.ts.map +1 -1
  94. package/dist/targets/droid-config-manager.js +131 -3
  95. package/dist/targets/droid-config-manager.js.map +1 -1
  96. package/dist/targets/droid-provider.d.ts +40 -0
  97. package/dist/targets/droid-provider.d.ts.map +1 -0
  98. package/dist/targets/droid-provider.js +140 -0
  99. package/dist/targets/droid-provider.js.map +1 -0
  100. package/dist/targets/droid-reasoning-runtime.d.ts +14 -0
  101. package/dist/targets/droid-reasoning-runtime.d.ts.map +1 -0
  102. package/dist/targets/droid-reasoning-runtime.js +42 -0
  103. package/dist/targets/droid-reasoning-runtime.js.map +1 -0
  104. package/dist/targets/index.d.ts +2 -0
  105. package/dist/targets/index.d.ts.map +1 -1
  106. package/dist/targets/index.js +4 -1
  107. package/dist/targets/index.js.map +1 -1
  108. package/dist/targets/target-adapter.d.ts +6 -0
  109. package/dist/targets/target-adapter.d.ts.map +1 -1
  110. package/dist/types/config.d.ts +2 -0
  111. package/dist/types/config.d.ts.map +1 -1
  112. package/dist/types/config.js.map +1 -1
  113. package/dist/ui/assets/accounts-y2u0CVK8.js +1 -0
  114. package/dist/ui/assets/{alert-dialog-DmrIcJav.js → alert-dialog-CetY4Iww.js} +1 -1
  115. package/dist/ui/assets/api-5q1FT1uL.js +1 -0
  116. package/dist/ui/assets/auth-section-CaQeee-F.js +1 -0
  117. package/dist/ui/assets/{backups-section-jwtuA5Ay.js → backups-section-hF88BjYJ.js} +1 -1
  118. package/dist/ui/assets/{checkbox-CNqHZx7Z.js → checkbox-Dhm5Fzkb.js} +1 -1
  119. package/dist/ui/assets/cliproxy-BeYNWmY_.js +3 -0
  120. package/dist/ui/assets/{cliproxy-control-panel--WUVyBIk.js → cliproxy-control-panel-CJELeI80.js} +1 -1
  121. package/dist/ui/assets/{confirm-dialog-CQNxkz9X.js → confirm-dialog-Dn3SrwNV.js} +1 -1
  122. package/dist/ui/assets/{copilot-DLxxmnsW.js → copilot-vwT-4_V4.js} +1 -1
  123. package/dist/ui/assets/{cursor-YRIza7sP.js → cursor-CN3lIX63.js} +1 -1
  124. package/dist/ui/assets/droid-DBP2yCY7.js +2 -0
  125. package/dist/ui/assets/globalenv-section-DNKAJasL.js +1 -0
  126. package/dist/ui/assets/{health-BWPd6F4h.js → health-C7tNiLzc.js} +1 -1
  127. package/dist/ui/assets/icons-DrewC9c3.js +1 -0
  128. package/dist/ui/assets/index-C8-ef-r7.js +1 -0
  129. package/dist/ui/assets/{index-D244tv89.js → index-MGh88HoC.js} +1 -1
  130. package/dist/ui/assets/{index-BlldLmNl.js → index-QBUSDLTx.js} +1 -1
  131. package/dist/ui/assets/index-k-HuyjpO.js +47 -0
  132. package/dist/ui/assets/index-s-oTl3hW.css +1 -0
  133. package/dist/ui/assets/index-uYnNU6Ut.js +1 -0
  134. package/dist/ui/assets/proxy-status-widget-CIm5vKY7.js +1 -0
  135. package/dist/ui/assets/{radix-ui-DIWAxjEp.js → radix-ui-C1Gpgz6I.js} +1 -1
  136. package/dist/ui/assets/{separator-OcJLDgYQ.js → separator-BLVyAGAm.js} +1 -1
  137. package/dist/ui/assets/shared-CHH09ZNi.js +8 -0
  138. package/dist/ui/assets/{switch-s8pp-m8L.js → switch-CwLyB4JK.js} +1 -1
  139. package/dist/ui/assets/{tanstack-Hn82hibe.js → tanstack-DDJIhNJd.js} +1 -1
  140. package/dist/ui/assets/{updates-BQRhDVbP.js → updates-VlxL3aum.js} +1 -1
  141. package/dist/ui/index.html +5 -5
  142. package/dist/web-server/model-pricing.d.ts.map +1 -1
  143. package/dist/web-server/model-pricing.js +114 -22
  144. package/dist/web-server/model-pricing.js.map +1 -1
  145. package/dist/web-server/routes/account-route-helpers.d.ts +20 -0
  146. package/dist/web-server/routes/account-route-helpers.d.ts.map +1 -0
  147. package/dist/web-server/routes/account-route-helpers.js +34 -0
  148. package/dist/web-server/routes/account-route-helpers.js.map +1 -0
  149. package/dist/web-server/routes/account-routes.d.ts.map +1 -1
  150. package/dist/web-server/routes/account-routes.js +160 -27
  151. package/dist/web-server/routes/account-routes.js.map +1 -1
  152. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
  153. package/dist/web-server/routes/cliproxy-auth-routes.js +58 -24
  154. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
  155. package/dist/web-server/routes/config-routes.d.ts.map +1 -1
  156. package/dist/web-server/routes/config-routes.js +73 -0
  157. package/dist/web-server/routes/config-routes.js.map +1 -1
  158. package/dist/web-server/routes/droid-routes.d.ts +3 -0
  159. package/dist/web-server/routes/droid-routes.d.ts.map +1 -0
  160. package/dist/web-server/routes/droid-routes.js +61 -0
  161. package/dist/web-server/routes/droid-routes.js.map +1 -0
  162. package/dist/web-server/routes/index.d.ts.map +1 -1
  163. package/dist/web-server/routes/index.js +3 -0
  164. package/dist/web-server/routes/index.js.map +1 -1
  165. package/dist/web-server/routes/profile-routes.d.ts.map +1 -1
  166. package/dist/web-server/routes/profile-routes.js +29 -3
  167. package/dist/web-server/routes/profile-routes.js.map +1 -1
  168. package/dist/web-server/routes/route-helpers.d.ts +2 -1
  169. package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
  170. package/dist/web-server/routes/route-helpers.js +20 -1
  171. package/dist/web-server/routes/route-helpers.js.map +1 -1
  172. package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
  173. package/dist/web-server/routes/settings-routes.js +110 -12
  174. package/dist/web-server/routes/settings-routes.js.map +1 -1
  175. package/dist/web-server/services/compatible-cli-docs-registry.d.ts +23 -0
  176. package/dist/web-server/services/compatible-cli-docs-registry.d.ts.map +1 -0
  177. package/dist/web-server/services/compatible-cli-docs-registry.js +81 -0
  178. package/dist/web-server/services/compatible-cli-docs-registry.js.map +1 -0
  179. package/dist/web-server/services/compatible-cli-json-file-service.d.ts +41 -0
  180. package/dist/web-server/services/compatible-cli-json-file-service.d.ts.map +1 -0
  181. package/dist/web-server/services/compatible-cli-json-file-service.js +205 -0
  182. package/dist/web-server/services/compatible-cli-json-file-service.js.map +1 -0
  183. package/dist/web-server/services/compatible-cli-types.d.ts +82 -0
  184. package/dist/web-server/services/compatible-cli-types.d.ts.map +1 -0
  185. package/dist/web-server/services/compatible-cli-types.js +3 -0
  186. package/dist/web-server/services/compatible-cli-types.js.map +1 -0
  187. package/dist/web-server/services/droid-dashboard-service.d.ts +29 -0
  188. package/dist/web-server/services/droid-dashboard-service.d.ts.map +1 -0
  189. package/dist/web-server/services/droid-dashboard-service.js +238 -0
  190. package/dist/web-server/services/droid-dashboard-service.js.map +1 -0
  191. package/dist/web-server/shared-routes.d.ts.map +1 -1
  192. package/dist/web-server/shared-routes.js +350 -52
  193. package/dist/web-server/shared-routes.js.map +1 -1
  194. package/lib/hooks/websearch-transformer.cjs +78 -52
  195. package/package.json +4 -2
  196. package/scripts/maintainability-check.js +163 -0
  197. package/dist/ui/assets/accounts-BKK-Lc16.js +0 -1
  198. package/dist/ui/assets/api-DzTwRtww.js +0 -1
  199. package/dist/ui/assets/auth-section-CP_2r8oJ.js +0 -1
  200. package/dist/ui/assets/cliproxy-CtO9BwgG.js +0 -3
  201. package/dist/ui/assets/globalenv-section-vUSIK5rf.js +0 -1
  202. package/dist/ui/assets/icons-Dk2sL3Mr.js +0 -1
  203. package/dist/ui/assets/index-B9dJZNls.js +0 -1
  204. package/dist/ui/assets/index-BZdHAol5.js +0 -1
  205. package/dist/ui/assets/index-DEDy1J8t.css +0 -1
  206. package/dist/ui/assets/index-PWMOllOf.js +0 -47
  207. package/dist/ui/assets/proxy-status-widget-MlyNgoPh.js +0 -1
  208. package/dist/ui/assets/shared-LxAdbm4g.js +0 -1
@@ -32,9 +32,16 @@ exports.sharedRoutes = void 0;
32
32
  const express_1 = require("express");
33
33
  const fs = __importStar(require("fs"));
34
34
  const path = __importStar(require("path"));
35
+ const yaml = __importStar(require("js-yaml"));
35
36
  const config_manager_1 = require("../utils/config-manager");
36
37
  const claude_config_path_1 = require("../utils/claude-config-path");
37
38
  exports.sharedRoutes = (0, express_1.Router)();
39
+ const MAX_DIRECTORY_TRAVERSAL_DEPTH = 10;
40
+ const MAX_DESCRIPTION_LENGTH = 140;
41
+ const MAX_MARKDOWN_FILE_BYTES = 1024 * 1024; // 1 MiB
42
+ const MAX_CONTENT_FILE_BYTES = 2 * 1024 * 1024; // 2 MiB
43
+ const SHARED_ITEMS_CACHE_TTL_MS = 1000;
44
+ const sharedItemsCache = new Map();
38
45
  /**
39
46
  * GET /api/shared/commands
40
47
  */
@@ -56,6 +63,35 @@ exports.sharedRoutes.get('/agents', (_req, res) => {
56
63
  const items = getSharedItems('agents');
57
64
  res.json({ items });
58
65
  });
66
+ /**
67
+ * GET /api/shared/content?type=commands|skills|agents&path=<item-path>
68
+ */
69
+ exports.sharedRoutes.get('/content', (req, res) => {
70
+ const typeParam = req.query.type;
71
+ const itemPathParam = req.query.path;
72
+ if (!isSharedCollectionType(typeParam)) {
73
+ res.status(400).json({ error: 'Invalid or missing type parameter' });
74
+ return;
75
+ }
76
+ if (typeof itemPathParam !== 'string' || itemPathParam.trim().length === 0) {
77
+ res.status(400).json({ error: 'Invalid or missing path parameter' });
78
+ return;
79
+ }
80
+ const ccsDir = (0, config_manager_1.getCcsDir)();
81
+ const sharedDir = path.join(ccsDir, 'shared', typeParam);
82
+ if (!fs.existsSync(sharedDir)) {
83
+ res.status(404).json({ error: 'Shared directory not found' });
84
+ return;
85
+ }
86
+ const sharedDirRoot = safeRealPath(sharedDir) ?? path.resolve(sharedDir);
87
+ const allowedRoots = resolveAllowedRoots(typeParam, ccsDir, sharedDirRoot);
88
+ const contentResult = getSharedItemContent(typeParam, itemPathParam, allowedRoots);
89
+ if (!contentResult) {
90
+ res.status(404).json({ error: 'Shared content not found' });
91
+ return;
92
+ }
93
+ res.json(contentResult);
94
+ });
59
95
  /**
60
96
  * GET /api/shared/summary
61
97
  */
@@ -71,15 +107,14 @@ exports.sharedRoutes.get('/summary', (_req, res) => {
71
107
  symlinkStatus: checkSymlinkStatus(),
72
108
  });
73
109
  });
74
- function getSharedItems(type) {
75
- const ccsDir = (0, config_manager_1.getCcsDir)();
76
- const sharedDir = path.join(ccsDir, 'shared', type);
77
- if (!fs.existsSync(sharedDir)) {
78
- return [];
110
+ function isSharedCollectionType(value) {
111
+ return value === 'commands' || value === 'skills' || value === 'agents';
112
+ }
113
+ function resolveAllowedRoots(type, ccsDir, sharedDirRoot) {
114
+ if (type === 'commands') {
115
+ return new Set([sharedDirRoot]);
79
116
  }
80
- const items = [];
81
- const sharedDirRoot = safeRealPath(sharedDir) ?? path.resolve(sharedDir);
82
- const allowedSkillAgentRoots = new Set([
117
+ return new Set([
83
118
  sharedDirRoot,
84
119
  ...[
85
120
  path.join((0, claude_config_path_1.getClaudeConfigDir)(), type),
@@ -89,53 +124,46 @@ function getSharedItems(type) {
89
124
  .map((dirPath) => safeRealPath(dirPath))
90
125
  .filter((dirPath) => typeof dirPath === 'string'),
91
126
  ]);
127
+ }
128
+ function getSharedItems(type) {
129
+ const ccsDir = (0, config_manager_1.getCcsDir)();
130
+ const sharedDir = path.join(ccsDir, 'shared', type);
131
+ const now = Date.now();
132
+ if (!fs.existsSync(sharedDir)) {
133
+ sharedItemsCache.delete(type);
134
+ return [];
135
+ }
136
+ const cached = sharedItemsCache.get(type);
137
+ if (cached && cached.sharedDir === sharedDir && cached.expiresAt > now) {
138
+ return cached.items;
139
+ }
140
+ const items = [];
141
+ const sharedDirRoot = safeRealPath(sharedDir) ?? path.resolve(sharedDir);
142
+ const allowedRoots = resolveAllowedRoots(type, ccsDir, sharedDirRoot);
143
+ if (type === 'commands') {
144
+ const commandItems = getCommandItems(sharedDir, allowedRoots);
145
+ sharedItemsCache.set(type, {
146
+ items: commandItems,
147
+ sharedDir,
148
+ expiresAt: now + SHARED_ITEMS_CACHE_TTL_MS,
149
+ });
150
+ return commandItems;
151
+ }
92
152
  try {
93
153
  const entries = fs.readdirSync(sharedDir, { withFileTypes: true });
94
154
  for (const entry of entries) {
95
155
  try {
96
156
  const entryPath = path.join(sharedDir, entry.name);
97
- if (type === 'commands') {
98
- if (!entry.name.endsWith('.md')) {
99
- continue;
100
- }
101
- if (!entry.isFile() && !entry.isSymbolicLink()) {
102
- continue;
103
- }
104
- const commandPath = safeRealPath(entryPath);
105
- if (!commandPath || !isPathWithin(commandPath, sharedDirRoot)) {
106
- continue;
107
- }
108
- const description = readMarkdownDescription(commandPath, sharedDirRoot);
109
- if (!description) {
110
- continue;
111
- }
112
- items.push({
113
- name: entry.name.replace('.md', ''),
114
- description,
115
- path: entryPath,
116
- type: 'command',
117
- });
118
- continue;
119
- }
120
- // Skills/agents are directory-based and may be symlinked directories.
121
- if (!entry.isDirectory() && !entry.isSymbolicLink()) {
122
- continue;
123
- }
124
- const entryRoot = safeRealPath(entryPath);
125
- if (!entryRoot || !isPathWithinAny(entryRoot, allowedSkillAgentRoots)) {
157
+ const resolvedEntryPath = safeRealPath(entryPath);
158
+ if (!resolvedEntryPath || !isPathWithinAny(resolvedEntryPath, allowedRoots)) {
126
159
  continue;
127
160
  }
128
- const markdownFile = type === 'skills' ? 'SKILL.md' : 'prompt.md';
129
- const description = readMarkdownDescription(path.join(entryRoot, markdownFile), entryRoot);
130
- if (!description) {
161
+ const stats = fs.statSync(resolvedEntryPath);
162
+ const item = getSkillOrAgentItem(type, entry, entryPath, resolvedEntryPath, allowedRoots, stats);
163
+ if (!item) {
131
164
  continue;
132
165
  }
133
- items.push({
134
- name: entry.name,
135
- description,
136
- path: entryPath,
137
- type: type === 'skills' ? 'skill' : 'agent',
138
- });
166
+ items.push(item);
139
167
  }
140
168
  catch {
141
169
  // Fail soft per entry so one bad item does not hide valid results.
@@ -145,29 +173,212 @@ function getSharedItems(type) {
145
173
  catch {
146
174
  // Directory read failed
147
175
  }
176
+ const sortedItems = items.sort((a, b) => a.name.localeCompare(b.name));
177
+ sharedItemsCache.set(type, {
178
+ items: sortedItems,
179
+ sharedDir,
180
+ expiresAt: now + SHARED_ITEMS_CACHE_TTL_MS,
181
+ });
182
+ return sortedItems;
183
+ }
184
+ function getCommandItems(sharedDir, allowedRoots) {
185
+ const markdownFiles = collectMarkdownFiles(sharedDir, allowedRoots);
186
+ const items = [];
187
+ for (const markdownFile of markdownFiles) {
188
+ const description = readMarkdownDescription(markdownFile.resolvedPath, allowedRoots);
189
+ if (!description) {
190
+ continue;
191
+ }
192
+ const relativePath = path.relative(sharedDir, markdownFile.displayPath);
193
+ const normalizedName = relativePath.split(path.sep).join('/').replace(/\.md$/i, '');
194
+ if (!normalizedName) {
195
+ continue;
196
+ }
197
+ items.push({
198
+ name: normalizedName,
199
+ description,
200
+ path: markdownFile.displayPath,
201
+ type: 'command',
202
+ });
203
+ }
148
204
  return items.sort((a, b) => a.name.localeCompare(b.name));
149
205
  }
206
+ function getSkillOrAgentItem(type, entry, entryPath, resolvedEntryPath, allowedRoots, stats) {
207
+ if (type === 'skills') {
208
+ if (!stats.isDirectory()) {
209
+ return null;
210
+ }
211
+ const description = readMarkdownDescription(path.join(resolvedEntryPath, 'SKILL.md'), allowedRoots);
212
+ if (!description) {
213
+ return null;
214
+ }
215
+ return {
216
+ name: entry.name,
217
+ description,
218
+ path: entryPath,
219
+ type: 'skill',
220
+ };
221
+ }
222
+ if (stats.isDirectory()) {
223
+ const description = readFirstMarkdownDescription([
224
+ path.join(resolvedEntryPath, 'prompt.md'),
225
+ path.join(resolvedEntryPath, 'AGENT.md'),
226
+ path.join(resolvedEntryPath, 'agent.md'),
227
+ ], allowedRoots);
228
+ if (!description) {
229
+ return null;
230
+ }
231
+ return {
232
+ name: entry.name,
233
+ description,
234
+ path: entryPath,
235
+ type: 'agent',
236
+ };
237
+ }
238
+ if (!stats.isFile() || !entry.name.toLowerCase().endsWith('.md')) {
239
+ return null;
240
+ }
241
+ const description = readMarkdownDescription(resolvedEntryPath, allowedRoots);
242
+ if (!description) {
243
+ return null;
244
+ }
245
+ return {
246
+ name: entry.name.replace(/\.md$/i, ''),
247
+ description,
248
+ path: entryPath,
249
+ type: 'agent',
250
+ };
251
+ }
252
+ function collectMarkdownFiles(sharedDir, allowedRoots) {
253
+ const directoriesToVisit = [
254
+ { path: sharedDir, depth: 0 },
255
+ ];
256
+ const visitedDirectories = new Set();
257
+ const markdownFiles = [];
258
+ while (directoriesToVisit.length > 0) {
259
+ const current = directoriesToVisit.pop();
260
+ if (!current) {
261
+ continue;
262
+ }
263
+ const currentDir = current.path;
264
+ const resolvedCurrentDir = safeRealPath(currentDir);
265
+ if (!resolvedCurrentDir || !isPathWithinAny(resolvedCurrentDir, allowedRoots)) {
266
+ continue;
267
+ }
268
+ const normalizedDirPath = normalizeForPathComparison(resolvedCurrentDir);
269
+ if (visitedDirectories.has(normalizedDirPath)) {
270
+ continue;
271
+ }
272
+ visitedDirectories.add(normalizedDirPath);
273
+ let entries = [];
274
+ try {
275
+ entries = fs.readdirSync(currentDir, { withFileTypes: true });
276
+ }
277
+ catch {
278
+ continue;
279
+ }
280
+ for (const entry of entries) {
281
+ const entryPath = path.join(currentDir, entry.name);
282
+ const resolvedEntryPath = safeRealPath(entryPath);
283
+ if (!resolvedEntryPath || !isPathWithinAny(resolvedEntryPath, allowedRoots)) {
284
+ continue;
285
+ }
286
+ let stats;
287
+ try {
288
+ stats = fs.statSync(resolvedEntryPath);
289
+ }
290
+ catch {
291
+ continue;
292
+ }
293
+ if (stats.isDirectory()) {
294
+ if (current.depth < MAX_DIRECTORY_TRAVERSAL_DEPTH) {
295
+ directoriesToVisit.push({ path: entryPath, depth: current.depth + 1 });
296
+ }
297
+ continue;
298
+ }
299
+ if (stats.isFile() && entry.name.toLowerCase().endsWith('.md')) {
300
+ markdownFiles.push({
301
+ displayPath: entryPath,
302
+ resolvedPath: resolvedEntryPath,
303
+ });
304
+ }
305
+ }
306
+ }
307
+ return markdownFiles;
308
+ }
150
309
  function extractDescription(content) {
151
- // Extract first non-empty, non-heading line
152
- const lines = content.split('\n');
310
+ const frontmatterDescription = extractFrontmatterDescription(content);
311
+ if (frontmatterDescription) {
312
+ return trimDescription(frontmatterDescription);
313
+ }
314
+ // Extract first non-empty, non-heading line from the markdown body.
315
+ const lines = stripFrontmatter(content).split('\n');
153
316
  for (const line of lines) {
154
317
  const trimmed = line.trim();
155
- if (trimmed && !trimmed.startsWith('#') && !trimmed.startsWith('---')) {
156
- return trimmed.slice(0, 100);
318
+ if (isDescriptionBodyLine(trimmed)) {
319
+ return trimDescription(trimmed);
157
320
  }
158
321
  }
159
322
  return 'No description';
160
323
  }
161
- function readMarkdownDescription(markdownPath, allowedRoot) {
324
+ function isDescriptionBodyLine(line) {
325
+ if (!line) {
326
+ return false;
327
+ }
328
+ if (line === '---' || line === '...') {
329
+ return false;
330
+ }
331
+ return !line.startsWith('#') && !line.startsWith('<!--');
332
+ }
333
+ function extractFrontmatterDescription(content) {
334
+ const frontmatterMatch = content.match(/^---\s*\r?\n([\s\S]*?)\r?\n---(?:\s*\r?\n|$)/);
335
+ if (!frontmatterMatch) {
336
+ return null;
337
+ }
338
+ try {
339
+ const parsed = yaml.load(frontmatterMatch[1]);
340
+ const description = parsed?.description;
341
+ if (typeof description !== 'string') {
342
+ return null;
343
+ }
344
+ const trimmed = description.trim();
345
+ return trimmed.length > 0 ? trimmed : null;
346
+ }
347
+ catch {
348
+ return null;
349
+ }
350
+ }
351
+ function stripFrontmatter(content) {
352
+ return content.replace(/^---\s*\r?\n[\s\S]*?\r?\n---\s*\r?\n?/, '');
353
+ }
354
+ function trimDescription(description) {
355
+ if (description.length <= MAX_DESCRIPTION_LENGTH) {
356
+ return description;
357
+ }
358
+ return `${description.slice(0, MAX_DESCRIPTION_LENGTH - 3).trimEnd()}...`;
359
+ }
360
+ function readFirstMarkdownDescription(markdownPaths, allowedRoots) {
361
+ for (const markdownPath of markdownPaths) {
362
+ const description = readMarkdownDescription(markdownPath, allowedRoots);
363
+ if (description) {
364
+ return description;
365
+ }
366
+ }
367
+ return null;
368
+ }
369
+ function readMarkdownDescription(markdownPath, allowedRoots) {
162
370
  try {
163
371
  const resolvedMarkdownPath = safeRealPath(markdownPath);
164
- if (!resolvedMarkdownPath || !isPathWithin(resolvedMarkdownPath, allowedRoot)) {
372
+ if (!resolvedMarkdownPath || !isPathWithinAny(resolvedMarkdownPath, allowedRoots)) {
165
373
  return null;
166
374
  }
167
375
  const stats = fs.statSync(resolvedMarkdownPath);
168
376
  if (!stats.isFile()) {
169
377
  return null;
170
378
  }
379
+ if (stats.size > MAX_MARKDOWN_FILE_BYTES) {
380
+ return null;
381
+ }
171
382
  const content = fs.readFileSync(resolvedMarkdownPath, 'utf8');
172
383
  return extractDescription(content);
173
384
  }
@@ -175,6 +386,93 @@ function readMarkdownDescription(markdownPath, allowedRoot) {
175
386
  return null;
176
387
  }
177
388
  }
389
+ function readMarkdownContent(markdownPath, allowedRoots) {
390
+ try {
391
+ const resolvedMarkdownPath = safeRealPath(markdownPath);
392
+ if (!resolvedMarkdownPath || !isPathWithinAny(resolvedMarkdownPath, allowedRoots)) {
393
+ return null;
394
+ }
395
+ const stats = fs.statSync(resolvedMarkdownPath);
396
+ if (!stats.isFile()) {
397
+ return null;
398
+ }
399
+ if (stats.size > MAX_CONTENT_FILE_BYTES) {
400
+ return null;
401
+ }
402
+ return fs.readFileSync(resolvedMarkdownPath, 'utf8');
403
+ }
404
+ catch {
405
+ return null;
406
+ }
407
+ }
408
+ function resolveReadableMarkdownPath(markdownPaths, allowedRoots) {
409
+ for (const markdownPath of markdownPaths) {
410
+ const resolvedMarkdownPath = safeRealPath(markdownPath);
411
+ if (!resolvedMarkdownPath || !isPathWithinAny(resolvedMarkdownPath, allowedRoots)) {
412
+ continue;
413
+ }
414
+ try {
415
+ const stats = fs.statSync(resolvedMarkdownPath);
416
+ if (!stats.isFile() || stats.size > MAX_CONTENT_FILE_BYTES) {
417
+ continue;
418
+ }
419
+ return resolvedMarkdownPath;
420
+ }
421
+ catch {
422
+ continue;
423
+ }
424
+ }
425
+ return null;
426
+ }
427
+ function getSharedItemContent(type, itemPath, allowedRoots) {
428
+ const resolvedItemPath = safeRealPath(itemPath);
429
+ if (!resolvedItemPath || !isPathWithinAny(resolvedItemPath, allowedRoots)) {
430
+ return null;
431
+ }
432
+ let itemStats;
433
+ try {
434
+ itemStats = fs.statSync(resolvedItemPath);
435
+ }
436
+ catch {
437
+ return null;
438
+ }
439
+ let markdownPath = null;
440
+ if (type === 'commands') {
441
+ if (!itemStats.isFile() || !itemPath.toLowerCase().endsWith('.md')) {
442
+ return null;
443
+ }
444
+ markdownPath = resolvedItemPath;
445
+ }
446
+ else if (type === 'skills') {
447
+ if (!itemStats.isDirectory()) {
448
+ return null;
449
+ }
450
+ markdownPath = resolveReadableMarkdownPath([path.join(resolvedItemPath, 'SKILL.md')], allowedRoots);
451
+ }
452
+ else {
453
+ if (itemStats.isDirectory()) {
454
+ markdownPath = resolveReadableMarkdownPath([
455
+ path.join(resolvedItemPath, 'prompt.md'),
456
+ path.join(resolvedItemPath, 'AGENT.md'),
457
+ path.join(resolvedItemPath, 'agent.md'),
458
+ ], allowedRoots);
459
+ }
460
+ else if (itemStats.isFile() && itemPath.toLowerCase().endsWith('.md')) {
461
+ markdownPath = resolvedItemPath;
462
+ }
463
+ }
464
+ if (!markdownPath) {
465
+ return null;
466
+ }
467
+ const content = readMarkdownContent(markdownPath, allowedRoots);
468
+ if (!content) {
469
+ return null;
470
+ }
471
+ return {
472
+ content,
473
+ contentPath: markdownPath,
474
+ };
475
+ }
178
476
  function safeRealPath(targetPath) {
179
477
  try {
180
478
  return fs.realpathSync(targetPath);
@@ -1 +1 @@
1
- {"version":3,"file":"shared-routes.js","sourceRoot":"","sources":["../../src/web-server/shared-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared-routes.js","sourceRoot":"","sources":["../../src/web-server/shared-routes.ts"],"names":[],"mappings":"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"}