@kaitranntt/ccs 7.77.1-dev.9 → 7.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/dist/auth/auth-commands.d.ts +2 -1
  2. package/dist/auth/auth-commands.d.ts.map +1 -1
  3. package/dist/auth/auth-commands.js +18 -4
  4. package/dist/auth/auth-commands.js.map +1 -1
  5. package/dist/auth/commands/backup-command.d.ts.map +1 -1
  6. package/dist/auth/commands/backup-command.js +7 -2
  7. package/dist/auth/commands/backup-command.js.map +1 -1
  8. package/dist/auth/commands/create-command.d.ts.map +1 -1
  9. package/dist/auth/commands/create-command.js +14 -16
  10. package/dist/auth/commands/create-command.js.map +1 -1
  11. package/dist/auth/commands/default-command.d.ts +1 -1
  12. package/dist/auth/commands/default-command.d.ts.map +1 -1
  13. package/dist/auth/commands/default-command.js +10 -2
  14. package/dist/auth/commands/default-command.js.map +1 -1
  15. package/dist/auth/commands/index.d.ts +1 -0
  16. package/dist/auth/commands/index.d.ts.map +1 -1
  17. package/dist/auth/commands/index.js +3 -1
  18. package/dist/auth/commands/index.js.map +1 -1
  19. package/dist/auth/commands/list-command.d.ts.map +1 -1
  20. package/dist/auth/commands/list-command.js +16 -3
  21. package/dist/auth/commands/list-command.js.map +1 -1
  22. package/dist/auth/commands/remove-command.d.ts.map +1 -1
  23. package/dist/auth/commands/remove-command.js +5 -1
  24. package/dist/auth/commands/remove-command.js.map +1 -1
  25. package/dist/auth/commands/resources-command.d.ts +3 -0
  26. package/dist/auth/commands/resources-command.d.ts.map +1 -0
  27. package/dist/auth/commands/resources-command.js +115 -0
  28. package/dist/auth/commands/resources-command.js.map +1 -0
  29. package/dist/auth/commands/show-command.d.ts.map +1 -1
  30. package/dist/auth/commands/show-command.js +13 -4
  31. package/dist/auth/commands/show-command.js.map +1 -1
  32. package/dist/auth/commands/types.d.ts +11 -1
  33. package/dist/auth/commands/types.d.ts.map +1 -1
  34. package/dist/auth/commands/types.js +41 -2
  35. package/dist/auth/commands/types.js.map +1 -1
  36. package/dist/auth/profile-continuity-inheritance.d.ts.map +1 -1
  37. package/dist/auth/profile-continuity-inheritance.js +2 -1
  38. package/dist/auth/profile-continuity-inheritance.js.map +1 -1
  39. package/dist/auth/profile-detector.d.ts.map +1 -1
  40. package/dist/auth/profile-detector.js +1 -0
  41. package/dist/auth/profile-detector.js.map +1 -1
  42. package/dist/auth/profile-registry.d.ts +2 -0
  43. package/dist/auth/profile-registry.d.ts.map +1 -1
  44. package/dist/auth/profile-registry.js +6 -2
  45. package/dist/auth/profile-registry.js.map +1 -1
  46. package/dist/auth/shared-resource-policy.d.ts +20 -0
  47. package/dist/auth/shared-resource-policy.d.ts.map +1 -0
  48. package/dist/auth/shared-resource-policy.js +69 -0
  49. package/dist/auth/shared-resource-policy.js.map +1 -0
  50. package/dist/cliproxy/auth/oauth-handler.d.ts +34 -0
  51. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  52. package/dist/cliproxy/auth/oauth-handler.js +85 -13
  53. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  54. package/dist/cliproxy/auth/oauth-process.d.ts.map +1 -1
  55. package/dist/cliproxy/auth/oauth-process.js +94 -3
  56. package/dist/cliproxy/auth/oauth-process.js.map +1 -1
  57. package/dist/cliproxy/auth/oauth-trace/diagnose-failure.d.ts +24 -0
  58. package/dist/cliproxy/auth/oauth-trace/diagnose-failure.d.ts.map +1 -0
  59. package/dist/cliproxy/auth/oauth-trace/diagnose-failure.js +159 -0
  60. package/dist/cliproxy/auth/oauth-trace/diagnose-failure.js.map +1 -0
  61. package/dist/cliproxy/auth/oauth-trace/index.d.ts +4 -0
  62. package/dist/cliproxy/auth/oauth-trace/index.d.ts.map +1 -0
  63. package/dist/cliproxy/auth/oauth-trace/index.js +14 -0
  64. package/dist/cliproxy/auth/oauth-trace/index.js.map +1 -0
  65. package/dist/cliproxy/auth/oauth-trace/redactor.d.ts +22 -0
  66. package/dist/cliproxy/auth/oauth-trace/redactor.d.ts.map +1 -0
  67. package/dist/cliproxy/auth/oauth-trace/redactor.js +112 -0
  68. package/dist/cliproxy/auth/oauth-trace/redactor.js.map +1 -0
  69. package/dist/cliproxy/auth/oauth-trace/sink-file.d.ts +18 -0
  70. package/dist/cliproxy/auth/oauth-trace/sink-file.d.ts.map +1 -0
  71. package/dist/cliproxy/auth/oauth-trace/sink-file.js +90 -0
  72. package/dist/cliproxy/auth/oauth-trace/sink-file.js.map +1 -0
  73. package/dist/cliproxy/auth/oauth-trace/sink-memory.d.ts +13 -0
  74. package/dist/cliproxy/auth/oauth-trace/sink-memory.d.ts.map +1 -0
  75. package/dist/cliproxy/auth/oauth-trace/sink-memory.js +31 -0
  76. package/dist/cliproxy/auth/oauth-trace/sink-memory.js.map +1 -0
  77. package/dist/cliproxy/auth/oauth-trace/sink-verbose-stdout.d.ts +11 -0
  78. package/dist/cliproxy/auth/oauth-trace/sink-verbose-stdout.d.ts.map +1 -0
  79. package/dist/cliproxy/auth/oauth-trace/sink-verbose-stdout.js +47 -0
  80. package/dist/cliproxy/auth/oauth-trace/sink-verbose-stdout.js.map +1 -0
  81. package/dist/cliproxy/auth/oauth-trace/trace-events.d.ts +51 -0
  82. package/dist/cliproxy/auth/oauth-trace/trace-events.d.ts.map +1 -0
  83. package/dist/cliproxy/auth/oauth-trace/trace-events.js +44 -0
  84. package/dist/cliproxy/auth/oauth-trace/trace-events.js.map +1 -0
  85. package/dist/cliproxy/auth/oauth-trace/trace-recorder.d.ts +34 -0
  86. package/dist/cliproxy/auth/oauth-trace/trace-recorder.d.ts.map +1 -0
  87. package/dist/cliproxy/auth/oauth-trace/trace-recorder.js +83 -0
  88. package/dist/cliproxy/auth/oauth-trace/trace-recorder.js.map +1 -0
  89. package/dist/commands/command-catalog.d.ts +1 -1
  90. package/dist/commands/command-catalog.d.ts.map +1 -1
  91. package/dist/commands/command-catalog.js +1 -0
  92. package/dist/commands/command-catalog.js.map +1 -1
  93. package/dist/commands/completion-backend.d.ts.map +1 -1
  94. package/dist/commands/completion-backend.js +7 -0
  95. package/dist/commands/completion-backend.js.map +1 -1
  96. package/dist/commands/help-command.d.ts.map +1 -1
  97. package/dist/commands/help-command.js +1 -0
  98. package/dist/commands/help-command.js.map +1 -1
  99. package/dist/commands/sync-command.d.ts.map +1 -1
  100. package/dist/commands/sync-command.js +3 -2
  101. package/dist/commands/sync-command.js.map +1 -1
  102. package/dist/config/migration-manager.d.ts.map +1 -1
  103. package/dist/config/migration-manager.js +12 -0
  104. package/dist/config/migration-manager.js.map +1 -1
  105. package/dist/config/schemas/auth.d.ts +2 -0
  106. package/dist/config/schemas/auth.d.ts.map +1 -1
  107. package/dist/config/schemas/auth.js.map +1 -1
  108. package/dist/dispatcher/flows/account-flow.d.ts.map +1 -1
  109. package/dist/dispatcher/flows/account-flow.js +4 -3
  110. package/dist/dispatcher/flows/account-flow.js.map +1 -1
  111. package/dist/shared/claude-extension-setup.d.ts.map +1 -1
  112. package/dist/shared/claude-extension-setup.js +5 -1
  113. package/dist/shared/claude-extension-setup.js.map +1 -1
  114. package/dist/types/config.d.ts +2 -0
  115. package/dist/types/config.d.ts.map +1 -1
  116. package/dist/types/config.js.map +1 -1
  117. package/dist/ui/assets/accounts-CW9bbE4S.js +1 -0
  118. package/dist/ui/assets/{alert-dialog-BM9gIsRp.js → alert-dialog-ClPYGzV3.js} +1 -1
  119. package/dist/ui/assets/{api-0YJdilQb.js → api-BjpAFHdA.js} +1 -1
  120. package/dist/ui/assets/{auth-section-C1ljCo7W.js → auth-section-wl4-fzwD.js} +1 -1
  121. package/dist/ui/assets/{backups-section-C-iLf1kg.js → backups-section-CRfyOhtX.js} +1 -1
  122. package/dist/ui/assets/{channels-DDSqllsQ.js → channels-DH0HkSGX.js} +1 -1
  123. package/dist/ui/assets/{checkbox-5R1YTubE.js → checkbox-CTpEjpTH.js} +1 -1
  124. package/dist/ui/assets/{claude-extension-CEGefl3-.js → claude-extension-BQOBO5Au.js} +1 -1
  125. package/dist/ui/assets/{cliproxy-ai-providers-DVF3FnXM.js → cliproxy-ai-providers-DoUPKyI5.js} +1 -1
  126. package/dist/ui/assets/{cliproxy-control-panel-CIsKyGK6.js → cliproxy-control-panel-CvjXdHw9.js} +1 -1
  127. package/dist/ui/assets/{cliproxy-R4kPUeL-.js → cliproxy-qUbiZjec.js} +2 -2
  128. package/dist/ui/assets/{codex-BiEEUC4Y.js → codex-BeeazJpw.js} +1 -1
  129. package/dist/ui/assets/{confirm-dialog-BhJV4F_d.js → confirm-dialog-CYj_LLWN.js} +1 -1
  130. package/dist/ui/assets/{copilot-DgRLuQfV.js → copilot-ZCJeM_Zk.js} +1 -1
  131. package/dist/ui/assets/{cursor-BuOjfajj.js → cursor-CtBjQ1_j.js} +1 -1
  132. package/dist/ui/assets/{droid-BPiviAW2.js → droid-BLmzMBtN.js} +1 -1
  133. package/dist/ui/assets/{globalenv-section-DAqbiNI1.js → globalenv-section-0ENDeVbM.js} +1 -1
  134. package/dist/ui/assets/{health-B_CfF7J0.js → health-BEnDHk-j.js} +1 -1
  135. package/dist/ui/assets/{icons-DIVjDO-z.js → icons-DzKUh8vG.js} +1 -1
  136. package/dist/ui/assets/{index-CzKdWNe5.js → index-B3xma6R0.js} +1 -1
  137. package/dist/ui/assets/{index-BJl0cazY.js → index-Bs28kNJN.js} +27 -27
  138. package/dist/ui/assets/{index-BqR6NZDE.js → index-C04Kst21.js} +1 -1
  139. package/dist/ui/assets/{index-Cj4mWFVK.js → index-Cip18A41.js} +1 -1
  140. package/dist/ui/assets/{index-Bc-AbZRU.js → index-ClMz157R.js} +1 -1
  141. package/dist/ui/assets/index-D2_yb3d2.css +1 -0
  142. package/dist/ui/assets/{index-BEGD-4HR.js → index-DrCrZ7r1.js} +1 -1
  143. package/dist/ui/assets/{index-LJitUhfE.js → index-O9Qq-UJq.js} +1 -1
  144. package/dist/ui/assets/{logs-Lqv-I3_T.js → logs-DQxVdsHm.js} +1 -1
  145. package/dist/ui/assets/{masked-input-CgCDYXYf.js → masked-input-eN6tFUjN.js} +1 -1
  146. package/dist/ui/assets/{proxy-status-widget-Df-4cfdm.js → proxy-status-widget-50UIM6S8.js} +1 -1
  147. package/dist/ui/assets/{raw-json-settings-editor-panel-BpXdUisD.js → raw-json-settings-editor-panel-DqKmVWL-.js} +1 -1
  148. package/dist/ui/assets/{searchable-select-DCOfw3f0.js → searchable-select-JO0gngYE.js} +1 -1
  149. package/dist/ui/assets/{separator-Ct6a34bG.js → separator-AoncAA6l.js} +1 -1
  150. package/dist/ui/assets/shared-BTv96-3y.js +8 -0
  151. package/dist/ui/assets/{table-DsU2UX-e.js → table-BM_YK49c.js} +1 -1
  152. package/dist/ui/assets/{updates-D-0gOqSU.js → updates-eo4H4NOg.js} +1 -1
  153. package/dist/ui/assets/use-accounts-ELLatpzU.js +1 -0
  154. package/dist/ui/index.html +3 -3
  155. package/dist/web-server/routes/account-route-helpers.d.ts +3 -0
  156. package/dist/web-server/routes/account-route-helpers.d.ts.map +1 -1
  157. package/dist/web-server/routes/account-route-helpers.js.map +1 -1
  158. package/dist/web-server/routes/account-routes.d.ts.map +1 -1
  159. package/dist/web-server/routes/account-routes.js +97 -4
  160. package/dist/web-server/routes/account-routes.js.map +1 -1
  161. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
  162. package/dist/web-server/routes/cliproxy-auth-routes.js +29 -0
  163. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
  164. package/dist/web-server/shared-routes-collections.d.ts +13 -0
  165. package/dist/web-server/shared-routes-collections.d.ts.map +1 -0
  166. package/dist/web-server/shared-routes-collections.js +170 -0
  167. package/dist/web-server/shared-routes-collections.js.map +1 -0
  168. package/dist/web-server/shared-routes-content.d.ts +16 -0
  169. package/dist/web-server/shared-routes-content.d.ts.map +1 -0
  170. package/dist/web-server/shared-routes-content.js +152 -0
  171. package/dist/web-server/shared-routes-content.js.map +1 -0
  172. package/dist/web-server/shared-routes-markdown-walker.d.ts +12 -0
  173. package/dist/web-server/shared-routes-markdown-walker.d.ts.map +1 -0
  174. package/dist/web-server/shared-routes-markdown-walker.js +97 -0
  175. package/dist/web-server/shared-routes-markdown-walker.js.map +1 -0
  176. package/dist/web-server/shared-routes-markdown.d.ts +18 -0
  177. package/dist/web-server/shared-routes-markdown.d.ts.map +1 -0
  178. package/dist/web-server/shared-routes-markdown.js +167 -0
  179. package/dist/web-server/shared-routes-markdown.js.map +1 -0
  180. package/dist/web-server/shared-routes-path-guards.d.ts +16 -0
  181. package/dist/web-server/shared-routes-path-guards.d.ts.map +1 -0
  182. package/dist/web-server/shared-routes-path-guards.js +93 -0
  183. package/dist/web-server/shared-routes-path-guards.js.map +1 -0
  184. package/dist/web-server/shared-routes-plugin-registry-content.d.ts +12 -0
  185. package/dist/web-server/shared-routes-plugin-registry-content.d.ts.map +1 -0
  186. package/dist/web-server/shared-routes-plugin-registry-content.js +93 -0
  187. package/dist/web-server/shared-routes-plugin-registry-content.js.map +1 -0
  188. package/dist/web-server/shared-routes-plugins.d.ts +21 -0
  189. package/dist/web-server/shared-routes-plugins.d.ts.map +1 -0
  190. package/dist/web-server/shared-routes-plugins.js +197 -0
  191. package/dist/web-server/shared-routes-plugins.js.map +1 -0
  192. package/dist/web-server/shared-routes-symlink-status.d.ts +27 -0
  193. package/dist/web-server/shared-routes-symlink-status.d.ts.map +1 -0
  194. package/dist/web-server/shared-routes-symlink-status.js +135 -0
  195. package/dist/web-server/shared-routes-symlink-status.js.map +1 -0
  196. package/dist/web-server/shared-routes-types.d.ts +23 -0
  197. package/dist/web-server/shared-routes-types.d.ts.map +1 -0
  198. package/dist/web-server/shared-routes-types.js +15 -0
  199. package/dist/web-server/shared-routes-types.js.map +1 -0
  200. package/dist/web-server/shared-routes.d.ts +2 -1
  201. package/dist/web-server/shared-routes.d.ts.map +1 -1
  202. package/dist/web-server/shared-routes.js +49 -455
  203. package/dist/web-server/shared-routes.js.map +1 -1
  204. package/package.json +1 -1
  205. package/dist/ui/assets/accounts-DkID6f81.js +0 -1
  206. package/dist/ui/assets/index-Cm0qoAXb.css +0 -1
  207. package/dist/ui/assets/shared-D-JFc_Cw.js +0 -8
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Shared Routes — Symlink / copy status checker
3
+ *
4
+ * Reports whether shared resources (commands, skills, agents) under
5
+ * ~/.ccs/shared/ are configured as symlinks pointing to ~/.claude/,
6
+ * as directory copies (Windows fallback), or are missing.
7
+ *
8
+ * Return shape is a superset of the original { valid, message } so
9
+ * existing callers remain unaffected while new callers can inspect
10
+ * mode and per-link details.
11
+ */
12
+ type LinkMode = 'symlink' | 'copy' | 'missing';
13
+ interface SymlinkStatusResult {
14
+ valid: boolean;
15
+ message: string;
16
+ /** Overall configuration mode derived from the three entries. */
17
+ mode: 'symlink' | 'copy' | 'mixed' | 'none';
18
+ /** Per-entry classification for diagnostics. */
19
+ links: {
20
+ commands: LinkMode;
21
+ skills: LinkMode;
22
+ agents: LinkMode;
23
+ };
24
+ }
25
+ export declare function checkSymlinkStatus(): SymlinkStatusResult;
26
+ export {};
27
+ //# sourceMappingURL=shared-routes-symlink-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-routes-symlink-status.d.ts","sourceRoot":"","sources":["../../src/web-server/shared-routes-symlink-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,KAAK,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAM/C,UAAU,mBAAmB;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC5C,gDAAgD;IAChD,KAAK,EAAE;QACL,QAAQ,EAAE,QAAQ,CAAC;QACnB,MAAM,EAAE,QAAQ,CAAC;QACjB,MAAM,EAAE,QAAQ,CAAC;KAClB,CAAC;CACH;AAwCD,wBAAgB,kBAAkB,IAAI,mBAAmB,CAoExD"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ /**
3
+ * Shared Routes — Symlink / copy status checker
4
+ *
5
+ * Reports whether shared resources (commands, skills, agents) under
6
+ * ~/.ccs/shared/ are configured as symlinks pointing to ~/.claude/,
7
+ * as directory copies (Windows fallback), or are missing.
8
+ *
9
+ * Return shape is a superset of the original { valid, message } so
10
+ * existing callers remain unaffected while new callers can inspect
11
+ * mode and per-link details.
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.checkSymlinkStatus = void 0;
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const claude_config_path_1 = require("../utils/claude-config-path");
41
+ const config_loader_facade_1 = require("../config/config-loader-facade");
42
+ const SHARED_ENTRY_TYPES = ['commands', 'skills', 'agents'];
43
+ function classifyEntry(linkPath, expectedTarget) {
44
+ try {
45
+ const lstats = fs.lstatSync(linkPath);
46
+ if (lstats.isSymbolicLink()) {
47
+ // Validate it points to the expected Claude config sub-directory.
48
+ const target = fs.readlinkSync(linkPath);
49
+ const resolvedTarget = path.resolve(path.dirname(linkPath), target);
50
+ if (resolvedTarget === path.resolve(expectedTarget)) {
51
+ return 'symlink';
52
+ }
53
+ // Symlink exists but points elsewhere — treat as missing for validity.
54
+ return 'missing';
55
+ }
56
+ if (lstats.isDirectory()) {
57
+ // Best-effort non-empty check to distinguish a real copy from an
58
+ // accidental empty directory.
59
+ try {
60
+ const entries = fs.readdirSync(linkPath);
61
+ if (entries.length > 0) {
62
+ return 'copy';
63
+ }
64
+ }
65
+ catch {
66
+ // readdirSync failed — fall through to missing
67
+ }
68
+ return 'missing';
69
+ }
70
+ }
71
+ catch {
72
+ // lstatSync threw — path does not exist or is unreadable
73
+ }
74
+ return 'missing';
75
+ }
76
+ function checkSymlinkStatus() {
77
+ const ccsDir = (0, config_loader_facade_1.getCcsDir)();
78
+ const sharedDir = path.join(ccsDir, 'shared');
79
+ const claudeConfigDir = (0, claude_config_path_1.getClaudeConfigDir)();
80
+ if (!fs.existsSync(sharedDir)) {
81
+ return {
82
+ valid: false,
83
+ message: 'Shared directory not found',
84
+ mode: 'none',
85
+ links: { commands: 'missing', skills: 'missing', agents: 'missing' },
86
+ };
87
+ }
88
+ const details = {
89
+ commands: { mode: 'missing' },
90
+ skills: { mode: 'missing' },
91
+ agents: { mode: 'missing' },
92
+ };
93
+ for (const entryType of SHARED_ENTRY_TYPES) {
94
+ const linkPath = path.join(sharedDir, entryType);
95
+ const expectedTarget = path.join(claudeConfigDir, entryType);
96
+ if (!fs.existsSync(linkPath)) {
97
+ details[entryType] = { mode: 'missing' };
98
+ continue;
99
+ }
100
+ details[entryType] = { mode: classifyEntry(linkPath, expectedTarget) };
101
+ }
102
+ const modes = SHARED_ENTRY_TYPES.map((t) => details[t].mode);
103
+ const links = {
104
+ commands: details.commands.mode,
105
+ skills: details.skills.mode,
106
+ agents: details.agents.mode,
107
+ };
108
+ const allSymlink = modes.every((m) => m === 'symlink');
109
+ const allCopy = modes.every((m) => m === 'copy');
110
+ const allMissing = modes.every((m) => m === 'missing');
111
+ if (allSymlink) {
112
+ return { valid: true, message: 'Symlinks active', mode: 'symlink', links };
113
+ }
114
+ if (allCopy) {
115
+ return {
116
+ valid: true,
117
+ message: 'Copies active (Windows fallback)',
118
+ mode: 'copy',
119
+ links,
120
+ };
121
+ }
122
+ if (allMissing) {
123
+ return { valid: false, message: 'Shared resources not configured', mode: 'none', links };
124
+ }
125
+ // Mixed — at least one differs from the others.
126
+ const details_str = SHARED_ENTRY_TYPES.map((t) => `${t}:${details[t].mode}`).join(', ');
127
+ return {
128
+ valid: false,
129
+ message: `Mixed configuration: ${details_str}`,
130
+ mode: 'mixed',
131
+ links,
132
+ };
133
+ }
134
+ exports.checkSymlinkStatus = checkSymlinkStatus;
135
+ //# sourceMappingURL=shared-routes-symlink-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-routes-symlink-status.js","sourceRoot":"","sources":["../../src/web-server/shared-routes-symlink-status.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAE7B,oEAAiE;AACjE,yEAA2D;AAqB3D,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAGrE,SAAS,aAAa,CAAC,QAAgB,EAAE,cAAsB;IAC7D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;YAC5B,kEAAkE;YAClE,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACzC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;YACpE,IAAI,cAAc,KAAK,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBACpD,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,uEAAuE;YACvE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,iEAAiE;YACjE,8BAA8B;YAC9B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACzC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,+CAA+C;YACjD,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;IAC3D,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,kBAAkB;IAChC,MAAM,MAAM,GAAG,IAAA,gCAAS,GAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,eAAe,GAAG,IAAA,uCAAkB,GAAE,CAAC;IAE7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,4BAA4B;YACrC,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;SACrE,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAwC;QACnD,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC7B,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC5B,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YACzC,SAAS;QACX,CAAC;QAED,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC;IACzE,CAAC;IAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG;QACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;QAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;QAC3B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;KAC5B,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAEvD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC7E,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO;YACL,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,kCAAkC;YAC3C,IAAI,EAAE,MAAM;YACZ,KAAK;SACN,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,iCAAiC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3F,CAAC;IAED,gDAAgD;IAChD,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxF,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,wBAAwB,WAAW,EAAE;QAC9C,IAAI,EAAE,OAAO;QACb,KAAK;KACN,CAAC;AACJ,CAAC;AApED,gDAoEC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Shared Routes — Type definitions and type guards
3
+ */
4
+ export type SharedCollectionType = 'commands' | 'skills' | 'agents' | 'plugins';
5
+ export type SharedContentType = SharedCollectionType | 'settings';
6
+ export interface SharedItem {
7
+ name: string;
8
+ description: string;
9
+ path: string;
10
+ type: 'command' | 'skill' | 'agent' | 'plugin';
11
+ }
12
+ export interface SharedItemsCacheEntry {
13
+ items: SharedItem[];
14
+ sharedDir: string;
15
+ expiresAt: number;
16
+ }
17
+ export interface InstalledPluginRegistry {
18
+ version?: number;
19
+ plugins: Record<string, unknown>;
20
+ }
21
+ export declare function isSharedCollectionType(value: unknown): value is SharedCollectionType;
22
+ export declare function isSharedContentType(value: unknown): value is SharedContentType;
23
+ //# sourceMappingURL=shared-routes-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-routes-types.d.ts","sourceRoot":"","sources":["../../src/web-server/shared-routes-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAChF,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,GAAG,UAAU,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;CAChD;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEpF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAE9E"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * Shared Routes — Type definitions and type guards
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isSharedContentType = exports.isSharedCollectionType = void 0;
7
+ function isSharedCollectionType(value) {
8
+ return value === 'commands' || value === 'skills' || value === 'agents' || value === 'plugins';
9
+ }
10
+ exports.isSharedCollectionType = isSharedCollectionType;
11
+ function isSharedContentType(value) {
12
+ return isSharedCollectionType(value) || value === 'settings';
13
+ }
14
+ exports.isSharedContentType = isSharedContentType;
15
+ //# sourceMappingURL=shared-routes-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-routes-types.js","sourceRoot":"","sources":["../../src/web-server/shared-routes-types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAuBH,SAAgB,sBAAsB,CAAC,KAAc;IACnD,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAC;AACjG,CAAC;AAFD,wDAEC;AAED,SAAgB,mBAAmB,CAAC,KAAc;IAChD,OAAO,sBAAsB,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,UAAU,CAAC;AAC/D,CAAC;AAFD,kDAEC"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Shared Data Routes (Phase 07)
3
3
  *
4
- * API routes for commands, skills, agents from ~/.ccs/shared/
4
+ * Thin Express router delegates all logic to focused sub-modules.
5
+ * API routes for commands, skills, agents, and plugins from ~/.ccs/shared/
5
6
  */
6
7
  export declare const sharedRoutes: import("express-serve-static-core").Router;
7
8
  //# sourceMappingURL=shared-routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared-routes.d.ts","sourceRoot":"","sources":["../../src/web-server/shared-routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,eAAO,MAAM,YAAY,4CAAW,CAAC"}
1
+ {"version":3,"file":"shared-routes.d.ts","sourceRoot":"","sources":["../../src/web-server/shared-routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyBH,eAAO,MAAM,YAAY,4CAAW,CAAC"}