@tom2012/cc-web 2026.4.19-o → 2026.4.19-q
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.
- package/README.md +2 -2
- package/backend/dist/adapters/claude-adapter.d.ts +1 -2
- package/backend/dist/adapters/claude-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/claude-adapter.js +0 -22
- package/backend/dist/adapters/claude-adapter.js.map +1 -1
- package/backend/dist/adapters/codex-adapter.d.ts +3 -4
- package/backend/dist/adapters/codex-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/codex-adapter.js +2 -40
- package/backend/dist/adapters/codex-adapter.js.map +1 -1
- package/backend/dist/adapters/gemini-adapter.d.ts +1 -7
- package/backend/dist/adapters/gemini-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/gemini-adapter.js +0 -8
- package/backend/dist/adapters/gemini-adapter.js.map +1 -1
- package/backend/dist/adapters/opencode-adapter.d.ts +1 -2
- package/backend/dist/adapters/opencode-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/opencode-adapter.js +0 -1
- package/backend/dist/adapters/opencode-adapter.js.map +1 -1
- package/backend/dist/adapters/qwen-adapter.d.ts +1 -2
- package/backend/dist/adapters/qwen-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/qwen-adapter.js +0 -1
- package/backend/dist/adapters/qwen-adapter.js.map +1 -1
- package/backend/dist/adapters/terminal-adapter.d.ts +1 -2
- package/backend/dist/adapters/terminal-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/terminal-adapter.js +0 -1
- package/backend/dist/adapters/terminal-adapter.js.map +1 -1
- package/backend/dist/adapters/types.d.ts +1 -3
- package/backend/dist/adapters/types.d.ts.map +1 -1
- package/backend/dist/agent-prompts.d.ts +70 -0
- package/backend/dist/agent-prompts.d.ts.map +1 -0
- package/backend/dist/agent-prompts.js +227 -0
- package/backend/dist/agent-prompts.js.map +1 -0
- package/backend/dist/auth.d.ts +12 -2
- package/backend/dist/auth.d.ts.map +1 -1
- package/backend/dist/auth.js +24 -12
- package/backend/dist/auth.js.map +1 -1
- package/backend/dist/config.d.ts +0 -1
- package/backend/dist/config.d.ts.map +1 -1
- package/backend/dist/config.js +0 -4
- package/backend/dist/config.js.map +1 -1
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +2 -25
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/middleware/authz.d.ts +13 -0
- package/backend/dist/middleware/authz.d.ts.map +1 -0
- package/backend/dist/middleware/authz.js +40 -0
- package/backend/dist/middleware/authz.js.map +1 -0
- package/backend/dist/routes/agent-prompts.d.ts +3 -0
- package/backend/dist/routes/agent-prompts.d.ts.map +1 -0
- package/backend/dist/routes/agent-prompts.js +200 -0
- package/backend/dist/routes/agent-prompts.js.map +1 -0
- package/backend/dist/routes/backup.d.ts.map +1 -1
- package/backend/dist/routes/backup.js +10 -1
- package/backend/dist/routes/backup.js.map +1 -1
- package/backend/dist/routes/filesystem.d.ts.map +1 -1
- package/backend/dist/routes/filesystem.js +40 -5
- package/backend/dist/routes/filesystem.js.map +1 -1
- package/backend/dist/routes/hooks.d.ts.map +1 -1
- package/backend/dist/routes/hooks.js +21 -23
- package/backend/dist/routes/hooks.js.map +1 -1
- package/backend/dist/routes/plugin-bridge.d.ts.map +1 -1
- package/backend/dist/routes/plugin-bridge.js +16 -8
- package/backend/dist/routes/plugin-bridge.js.map +1 -1
- package/backend/dist/routes/plugins.d.ts.map +1 -1
- package/backend/dist/routes/plugins.js +8 -17
- package/backend/dist/routes/plugins.js.map +1 -1
- package/backend/dist/routes/projects.d.ts.map +1 -1
- package/backend/dist/routes/projects.js +24 -208
- package/backend/dist/routes/projects.js.map +1 -1
- package/backend/dist/routes/skillhub.d.ts.map +1 -1
- package/backend/dist/routes/skillhub.js +14 -4
- package/backend/dist/routes/skillhub.js.map +1 -1
- package/backend/dist/routes/update.d.ts.map +1 -1
- package/backend/dist/routes/update.js +19 -27
- package/backend/dist/routes/update.js.map +1 -1
- package/backend/dist/session-manager.d.ts +43 -35
- package/backend/dist/session-manager.d.ts.map +1 -1
- package/backend/dist/session-manager.js +148 -259
- package/backend/dist/session-manager.js.map +1 -1
- package/backend/dist/types.d.ts +12 -0
- package/backend/dist/types.d.ts.map +1 -1
- package/frontend/dist/assets/AssistantMessageContent-DLBIfRoa.js +13 -0
- package/frontend/dist/assets/{GraphPreview-BIuzGAbi.js → GraphPreview-CAHAPSNV.js} +1 -1
- package/frontend/dist/assets/MobilePage-j50EdDNc.js +14 -0
- package/frontend/dist/assets/{OfficePreview-DURcco1V.js → OfficePreview-BFdVaUwH.js} +2 -2
- package/frontend/dist/assets/{PlanPanel-BjNmFaVk.js → PlanPanel-BZEXnj25.js} +3 -3
- package/frontend/dist/assets/{ProjectPage-OChorfDC.js → ProjectPage-C-KJDFbz.js} +5 -5
- package/frontend/dist/assets/SettingsPage-DzSCqUzP.js +13 -0
- package/frontend/dist/assets/{SkillHubPage-jgiKwTgm.js → SkillHubPage-BWsT-k9U.js} +3 -3
- package/frontend/dist/assets/{chevron-down-Bzon7hPT.js → chevron-down-HPq7YAwV.js} +1 -1
- package/frontend/dist/assets/{chevron-up-CPpzmtnj.js → chevron-up-BGtmxzk3.js} +1 -1
- package/frontend/dist/assets/{index-Bs_kzF7I.js → index-A-o6g_qw.js} +7 -7
- package/frontend/dist/assets/{index-B_-Wdt1O.js → index-BjZ5yznR.js} +1 -1
- package/frontend/dist/assets/index-D7xFwrL6.css +1 -0
- package/frontend/dist/assets/index-DvERL7tB.js +7 -0
- package/frontend/dist/assets/{jszip.min-B96GO4qd.js → jszip.min-vX7H_FIl.js} +1 -1
- package/frontend/dist/assets/{maximize-2-Dil4Qhky.js → maximize-2-DxjkIxPt.js} +1 -1
- package/frontend/dist/assets/{search-CVR9qZ6f.js → search-9lLW2Oo_.js} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/frontend/dist/assets/AssistantMessageContent-DqROC6KU.js +0 -13
- package/frontend/dist/assets/MobilePage-DlL0D36Y.js +0 -14
- package/frontend/dist/assets/SettingsPage-BnD3RAIW.js +0 -13
- package/frontend/dist/assets/ShareViewPage-BmNNrInp.js +0 -1
- package/frontend/dist/assets/bot-DiR-1KP3.js +0 -7
- package/frontend/dist/assets/index-CdG-i6ZW.css +0 -1
- package/frontend/dist/assets/index-eYA5tcCV.js +0 -7
- package/frontend/dist/assets/user-D1xnGKon.js +0 -7
|
@@ -39,6 +39,7 @@ const config_1 = require("../config");
|
|
|
39
39
|
const plugin_manager_1 = require("../plugin-manager");
|
|
40
40
|
const terminal_manager_1 = require("../terminal-manager");
|
|
41
41
|
const session_manager_1 = require("../session-manager");
|
|
42
|
+
const authz_1 = require("../middleware/authz");
|
|
42
43
|
const router = (0, express_1.Router)();
|
|
43
44
|
// ── Permission check middleware ──────────────────────────────────────────────
|
|
44
45
|
function requirePermission(permission) {
|
|
@@ -122,23 +123,30 @@ router.get('/system/info', requirePermission('system:info'), (_req, res) => {
|
|
|
122
123
|
});
|
|
123
124
|
});
|
|
124
125
|
// ── storage:self (plugin private key-value) ──────────────────────────────────
|
|
126
|
+
//
|
|
127
|
+
// Note: the previous "x-plugin-id === :pluginId" check was a tautology — the
|
|
128
|
+
// caller controls both. Until we implement iframe-bound HMAC session tokens
|
|
129
|
+
// (see DETAILS/plugins.md refactor proposal), storage is admin-only:
|
|
130
|
+
// - prevents any authenticated LAN user from tampering with plugin data
|
|
131
|
+
// (which may contain tokens, OAuth refresh, cached secrets)
|
|
132
|
+
// - plugin data is installation-global anyway, not per-user
|
|
133
|
+
// Read-side stays admin-only for symmetry; non-admin plugin UIs that need
|
|
134
|
+
// shared state should use a plugin-defined backend endpoint with explicit scoping.
|
|
125
135
|
const PLUGIN_ID_RE = /^[a-zA-Z0-9_-]+$/;
|
|
126
|
-
router.get('/storage/:pluginId', (req, res) => {
|
|
136
|
+
router.get('/storage/:pluginId', authz_1.requireAdmin, (req, res) => {
|
|
127
137
|
const pluginId = req.params.pluginId;
|
|
128
138
|
if (!PLUGIN_ID_RE.test(pluginId))
|
|
129
139
|
return res.status(400).json({ error: 'Invalid plugin ID' });
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
return res.status(403).json({ error: 'Can only access own storage' });
|
|
140
|
+
if (!plugin_manager_1.pluginManager.get(pluginId))
|
|
141
|
+
return res.status(404).json({ error: 'Plugin not installed' });
|
|
133
142
|
res.json(plugin_manager_1.pluginManager.readData(pluginId));
|
|
134
143
|
});
|
|
135
|
-
router.put('/storage/:pluginId', (req, res) => {
|
|
144
|
+
router.put('/storage/:pluginId', authz_1.requireAdmin, (req, res) => {
|
|
136
145
|
const pluginId = req.params.pluginId;
|
|
137
146
|
if (!PLUGIN_ID_RE.test(pluginId))
|
|
138
147
|
return res.status(400).json({ error: 'Invalid plugin ID' });
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
return res.status(403).json({ error: 'Can only access own storage' });
|
|
148
|
+
if (!plugin_manager_1.pluginManager.get(pluginId))
|
|
149
|
+
return res.status(404).json({ error: 'Plugin not installed' });
|
|
142
150
|
plugin_manager_1.pluginManager.writeData(pluginId, req.body);
|
|
143
151
|
res.json({ success: true });
|
|
144
152
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-bridge.js","sourceRoot":"","sources":["../../src/routes/plugin-bridge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAiC;AACjC,uCAAyB;AACzB,sCAAwC;AACxC,sDAAkD;AAClD,0DAAsD;AACtD,wDAAoD;
|
|
1
|
+
{"version":3,"file":"plugin-bridge.js","sourceRoot":"","sources":["../../src/routes/plugin-bridge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAiC;AACjC,uCAAyB;AACzB,sCAAwC;AACxC,sDAAkD;AAClD,0DAAsD;AACtD,wDAAoD;AACpD,+CAAmD;AAEnD,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB,gFAAgF;AAEhF,SAAS,iBAAiB,CAAC,UAAkB;IAC3C,OAAO,CAAC,GAA8B,EAAE,GAA+B,EAAE,IAAoC,EAAE,EAAE;QAC/G,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAW,CAAC;QACtD,IAAI,CAAC,QAAQ;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC;QAErF,MAAM,MAAM,GAAG,8BAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACtD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,QAAQ,uBAAuB,UAAU,GAAG,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,GAAG,CAAC,4BAA4B,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACzF,MAAM,QAAQ,GAAG,IAAA,oBAAW,GAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,kCAAe,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5D,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAEhF,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IAC3E,MAAM,QAAQ,GAAG,IAAA,oBAAW,GAAE,CAAC;IAC/B,GAAG,CAAC,IAAI,CACN,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnB,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,kCAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAEhF,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC7E,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAA6C,CAAC;IAC9E,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC;IAE/F,MAAM,MAAM,GAAG,kCAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC3D,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;IAEzF,kCAAe,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAEhF,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAChF,MAAM,OAAO,GAAG,gCAAc,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAEhF,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IACzE,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAE7B,sCAAsC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QAC5B,OAAO,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IAErE,GAAG,CAAC,IAAI,CAAC;QACP,GAAG,EAAE;YACH,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK;YACrB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;SACpC;QACD,MAAM,EAAE;YACN,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ,GAAG,OAAO;YACxB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;SACxE;QACD,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE;QACnB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;QACvB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;QACvB,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE;KACtB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,qEAAqE;AACrE,0EAA0E;AAC1E,gEAAgE;AAChE,8DAA8D;AAC9D,0EAA0E;AAC1E,mFAAmF;AAEnF,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAExC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,oBAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC1D,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;IACrC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC9F,IAAI,CAAC,8BAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACjG,GAAG,CAAC,IAAI,CAAC,8BAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,oBAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC1D,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;IACrC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC9F,IAAI,CAAC,8BAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACjG,8BAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/routes/plugins.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/routes/plugins.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAkKxB,eAAe,MAAM,CAAC"}
|
|
@@ -42,6 +42,7 @@ const path = __importStar(require("path"));
|
|
|
42
42
|
const os = __importStar(require("os"));
|
|
43
43
|
const adm_zip_1 = __importDefault(require("adm-zip"));
|
|
44
44
|
const plugin_manager_1 = require("../plugin-manager");
|
|
45
|
+
const authz_1 = require("../middleware/authz");
|
|
45
46
|
const router = (0, express_1.Router)();
|
|
46
47
|
/** Block SSRF: only allow HTTPS downloads from trusted hosts. */
|
|
47
48
|
function isAllowedDownloadUrl(url) {
|
|
@@ -76,7 +77,7 @@ router.get('/', (_req, res) => {
|
|
|
76
77
|
})));
|
|
77
78
|
});
|
|
78
79
|
// ── Install plugin from Hub (download zip, extract, install) ─────────────────
|
|
79
|
-
router.post('/install', async (req, res) => {
|
|
80
|
+
router.post('/install', authz_1.requireAdmin, async (req, res) => {
|
|
80
81
|
const { downloadUrl } = req.body;
|
|
81
82
|
if (!downloadUrl) {
|
|
82
83
|
return res.status(400).json({ error: 'downloadUrl required' });
|
|
@@ -117,7 +118,7 @@ router.post('/install', async (req, res) => {
|
|
|
117
118
|
}
|
|
118
119
|
});
|
|
119
120
|
// ── Uninstall ────────────────────────────────────────────────────────────────
|
|
120
|
-
router.delete('/:id', (req, res) => {
|
|
121
|
+
router.delete('/:id', authz_1.requireAdmin, (req, res) => {
|
|
121
122
|
const { id } = req.params;
|
|
122
123
|
const plugin = plugin_manager_1.pluginManager.get(id);
|
|
123
124
|
if (!plugin)
|
|
@@ -126,7 +127,7 @@ router.delete('/:id', (req, res) => {
|
|
|
126
127
|
res.json({ success: true });
|
|
127
128
|
});
|
|
128
129
|
// ── Update (re-install from Hub) ─────────────────────────────────────────────
|
|
129
|
-
router.post('/:id/update', async (req, res) => {
|
|
130
|
+
router.post('/:id/update', authz_1.requireAdmin, async (req, res) => {
|
|
130
131
|
const { downloadUrl } = req.body;
|
|
131
132
|
if (!downloadUrl)
|
|
132
133
|
return res.status(400).json({ error: 'downloadUrl required' });
|
|
@@ -161,7 +162,7 @@ router.post('/:id/update', async (req, res) => {
|
|
|
161
162
|
}
|
|
162
163
|
});
|
|
163
164
|
// ── User config ──────────────────────────────────────────────────────────────
|
|
164
|
-
router.put('/:id/config', (req, res) => {
|
|
165
|
+
router.put('/:id/config', authz_1.requireAdmin, (req, res) => {
|
|
165
166
|
const { id } = req.params;
|
|
166
167
|
try {
|
|
167
168
|
const entry = plugin_manager_1.pluginManager.updateUserConfig(id, req.body);
|
|
@@ -175,7 +176,7 @@ router.put('/:id/config', (req, res) => {
|
|
|
175
176
|
}
|
|
176
177
|
});
|
|
177
178
|
// ── Enable / disable ─────────────────────────────────────────────────────────
|
|
178
|
-
router.put('/:id/enabled', (req, res) => {
|
|
179
|
+
router.put('/:id/enabled', authz_1.requireAdmin, (req, res) => {
|
|
179
180
|
const { id } = req.params;
|
|
180
181
|
const { enabled } = req.body;
|
|
181
182
|
if (typeof enabled !== 'boolean')
|
|
@@ -183,18 +184,8 @@ router.put('/:id/enabled', (req, res) => {
|
|
|
183
184
|
plugin_manager_1.pluginManager.setEnabled(id, enabled);
|
|
184
185
|
res.json({ success: true });
|
|
185
186
|
});
|
|
186
|
-
//
|
|
187
|
-
|
|
188
|
-
if (!/^[a-zA-Z0-9_-]+$/.test(req.params.id))
|
|
189
|
-
return res.status(400).json({ error: 'Invalid plugin ID' });
|
|
190
|
-
res.json(plugin_manager_1.pluginManager.readData(req.params.id));
|
|
191
|
-
});
|
|
192
|
-
router.put('/:id/data', (req, res) => {
|
|
193
|
-
if (!/^[a-zA-Z0-9_-]+$/.test(req.params.id))
|
|
194
|
-
return res.status(400).json({ error: 'Invalid plugin ID' });
|
|
195
|
-
plugin_manager_1.pluginManager.writeData(req.params.id, req.body);
|
|
196
|
-
res.json({ success: true });
|
|
197
|
-
});
|
|
187
|
+
// Plugin private data is served by /api/plugin-bridge/storage/:pluginId —
|
|
188
|
+
// the duplicate routes that used to live here were redundant and unauthenticated.
|
|
198
189
|
// ── Helper ───────────────────────────────────────────────────────────────────
|
|
199
190
|
function findManifestDir(dir) {
|
|
200
191
|
if (fs.existsSync(path.join(dir, 'manifest.json')))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/routes/plugins.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAiC;AACjC,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,sDAA6B;AAC7B,sDAAkD;
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/routes/plugins.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/routes/projects.ts"],"names":[],"mappings":"AA2BA,QAAA,MAAM,MAAM,4CAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/routes/projects.ts"],"names":[],"mappings":"AA2BA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA8axB,eAAe,MAAM,CAAC"}
|
|
@@ -120,6 +120,28 @@ router.post('/', (req, res) => {
|
|
|
120
120
|
res.status(403).json({ error: `Project folder must be within your workspace: ${workspace}` });
|
|
121
121
|
return;
|
|
122
122
|
}
|
|
123
|
+
// Prevent duplicate registration of the same folder (two projects pointing at the
|
|
124
|
+
// same directory creates ambiguity for hook resolution, chat-history discovery,
|
|
125
|
+
// and .ccweb/project.json overwrites). Use realpath where possible so two
|
|
126
|
+
// symlink-aliased paths also collide.
|
|
127
|
+
const canonicalize = (p) => {
|
|
128
|
+
const resolved = path.resolve(p);
|
|
129
|
+
try {
|
|
130
|
+
return fs.realpathSync(resolved);
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return resolved;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
const resolved = canonicalize(folderPath);
|
|
137
|
+
const duplicate = (0, config_1.getProjects)().find((p) => canonicalize(p.folderPath) === resolved);
|
|
138
|
+
if (duplicate) {
|
|
139
|
+
res.status(409).json({
|
|
140
|
+
error: 'A project already exists for this folder',
|
|
141
|
+
existingProjectId: duplicate.id,
|
|
142
|
+
});
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
123
145
|
const project = {
|
|
124
146
|
id: (0, uuid_1.v4)(),
|
|
125
147
|
name,
|
|
@@ -280,41 +302,6 @@ router.patch('/:id/unarchive', (req, res) => {
|
|
|
280
302
|
(0, config_1.saveProject)(project);
|
|
281
303
|
res.json((0, config_1.getProject)(id) ?? project);
|
|
282
304
|
});
|
|
283
|
-
// GET /api/projects/:id/sessions
|
|
284
|
-
router.get('/:id/sessions', (req, res) => {
|
|
285
|
-
const { id } = req.params;
|
|
286
|
-
const project = (0, config_1.getProject)(id);
|
|
287
|
-
if (!project) {
|
|
288
|
-
res.status(404).json({ error: 'Project not found' });
|
|
289
|
-
return;
|
|
290
|
-
}
|
|
291
|
-
const username = req.user?.username;
|
|
292
|
-
if (!(0, config_1.isProjectOwner)(project, username) && !project.shares?.some((s) => s.username === username)) {
|
|
293
|
-
res.status(403).json({ error: 'Access denied' });
|
|
294
|
-
return;
|
|
295
|
-
}
|
|
296
|
-
res.json(session_manager_1.sessionManager.listSessions(id));
|
|
297
|
-
});
|
|
298
|
-
// GET /api/projects/:id/sessions/:sessionId
|
|
299
|
-
router.get('/:id/sessions/:sessionId', (req, res) => {
|
|
300
|
-
const { id, sessionId } = req.params;
|
|
301
|
-
const project = (0, config_1.getProject)(id);
|
|
302
|
-
if (!project) {
|
|
303
|
-
res.status(404).json({ error: 'Project not found' });
|
|
304
|
-
return;
|
|
305
|
-
}
|
|
306
|
-
const username = req.user?.username;
|
|
307
|
-
if (!(0, config_1.isProjectOwner)(project, username) && !project.shares?.some((s) => s.username === username)) {
|
|
308
|
-
res.status(403).json({ error: 'Access denied' });
|
|
309
|
-
return;
|
|
310
|
-
}
|
|
311
|
-
const session = session_manager_1.sessionManager.getSession(id, sessionId);
|
|
312
|
-
if (!session) {
|
|
313
|
-
res.status(404).json({ error: 'Session not found' });
|
|
314
|
-
return;
|
|
315
|
-
}
|
|
316
|
-
res.json(session);
|
|
317
|
-
});
|
|
318
305
|
// GET /api/projects/usage → CLI tool usage via adapter
|
|
319
306
|
// Pass ?tool=claude|codex|... and ?refresh=true to bust the cache
|
|
320
307
|
router.get('/usage', (req, res) => {
|
|
@@ -377,90 +364,6 @@ router.put('/:id/shares', (req, res) => {
|
|
|
377
364
|
(0, config_1.saveProject)(project);
|
|
378
365
|
res.json(project);
|
|
379
366
|
});
|
|
380
|
-
// GET /api/projects/sessions/search?q=<keyword>
|
|
381
|
-
// Returns matching message snippets across all projects the caller can access
|
|
382
|
-
router.get('/sessions/search', async (req, res) => {
|
|
383
|
-
const rawQ = req.query.q;
|
|
384
|
-
const q = (typeof rawQ === 'string' ? rawQ : undefined)?.trim();
|
|
385
|
-
if (!q || q.length < 2) {
|
|
386
|
-
res.json([]);
|
|
387
|
-
return;
|
|
388
|
-
}
|
|
389
|
-
const projects = (0, config_1.getProjects)();
|
|
390
|
-
const lowerQ = q.toLowerCase();
|
|
391
|
-
const results = [];
|
|
392
|
-
for (const project of projects) {
|
|
393
|
-
// Permission check: owner or shares member
|
|
394
|
-
if (!(0, config_1.isProjectOwner)(project, req.user?.username) &&
|
|
395
|
-
!project.shares?.some((s) => s.username === req.user?.username)) {
|
|
396
|
-
// Admin can see all
|
|
397
|
-
if (!(0, config_1.isAdminUser)(req.user?.username))
|
|
398
|
-
continue;
|
|
399
|
-
}
|
|
400
|
-
const sessionDir = path.join(project.folderPath, '.ccweb', 'sessions');
|
|
401
|
-
if (!fs.existsSync(sessionDir))
|
|
402
|
-
continue;
|
|
403
|
-
let files;
|
|
404
|
-
try {
|
|
405
|
-
files = fs.readdirSync(sessionDir).filter((f) => f.endsWith('.json'));
|
|
406
|
-
}
|
|
407
|
-
catch {
|
|
408
|
-
continue;
|
|
409
|
-
}
|
|
410
|
-
for (const file of files) {
|
|
411
|
-
try {
|
|
412
|
-
if (fs.statSync(path.join(sessionDir, file)).size > 2 * 1024 * 1024)
|
|
413
|
-
continue;
|
|
414
|
-
const raw = fs.readFileSync(path.join(sessionDir, file), 'utf-8');
|
|
415
|
-
const session = JSON.parse(raw);
|
|
416
|
-
if (!session.id)
|
|
417
|
-
continue;
|
|
418
|
-
let sessionSnippets = 0;
|
|
419
|
-
for (const msg of session.messages ?? []) {
|
|
420
|
-
const contentStr = typeof msg.content === 'string'
|
|
421
|
-
? msg.content
|
|
422
|
-
: Array.isArray(msg.content)
|
|
423
|
-
? msg.content
|
|
424
|
-
.filter((b) => b.type === 'text' && b.text)
|
|
425
|
-
.map((b) => b.text)
|
|
426
|
-
.join(' ')
|
|
427
|
-
: '';
|
|
428
|
-
if (!contentStr.toLowerCase().includes(lowerQ))
|
|
429
|
-
continue;
|
|
430
|
-
// Extract snippet: up to 120 chars around the first match
|
|
431
|
-
const idx = contentStr.toLowerCase().indexOf(lowerQ);
|
|
432
|
-
const start = Math.max(0, idx - 40);
|
|
433
|
-
const end = Math.min(contentStr.length, idx + 80);
|
|
434
|
-
const snippet = (start > 0 ? '…' : '') + contentStr.slice(start, end) + (end < contentStr.length ? '…' : '');
|
|
435
|
-
results.push({
|
|
436
|
-
projectId: project.id,
|
|
437
|
-
projectName: project.name,
|
|
438
|
-
sessionId: session.id,
|
|
439
|
-
startedAt: session.startedAt,
|
|
440
|
-
snippet,
|
|
441
|
-
role: msg.role,
|
|
442
|
-
});
|
|
443
|
-
// At most 50 results total
|
|
444
|
-
if (results.length >= 50)
|
|
445
|
-
break;
|
|
446
|
-
// At most 3 snippets per session
|
|
447
|
-
sessionSnippets++;
|
|
448
|
-
if (sessionSnippets >= 3)
|
|
449
|
-
break;
|
|
450
|
-
}
|
|
451
|
-
// At most 50 results total
|
|
452
|
-
if (results.length >= 50)
|
|
453
|
-
break;
|
|
454
|
-
}
|
|
455
|
-
catch {
|
|
456
|
-
// skip corrupt session files
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
if (results.length >= 50)
|
|
460
|
-
break;
|
|
461
|
-
}
|
|
462
|
-
res.json(results);
|
|
463
|
-
});
|
|
464
367
|
// PATCH /api/projects/:id/rename body: { name: string }
|
|
465
368
|
router.patch('/:id/rename', (req, res) => {
|
|
466
369
|
const project = (0, config_1.getProject)(req.params.id);
|
|
@@ -512,64 +415,6 @@ router.patch('/:id/tags', (req, res) => {
|
|
|
512
415
|
(0, config_1.saveProject)(project);
|
|
513
416
|
res.json(project);
|
|
514
417
|
});
|
|
515
|
-
// GET /api/projects/:id/todos
|
|
516
|
-
// Reads the most recent session JSON and returns the latest TodoWrite tool_use input.todos
|
|
517
|
-
router.get('/:id/todos', (req, res) => {
|
|
518
|
-
const project = (0, config_1.getProject)(req.params.id);
|
|
519
|
-
if (!project) {
|
|
520
|
-
res.status(404).json({ error: 'Not found' });
|
|
521
|
-
return;
|
|
522
|
-
}
|
|
523
|
-
if (!(0, config_1.isProjectOwner)(project, req.user?.username) &&
|
|
524
|
-
!project.shares?.some((s) => s.username === req.user?.username) &&
|
|
525
|
-
!(0, config_1.isAdminUser)(req.user?.username)) {
|
|
526
|
-
res.status(403).json({ error: 'Forbidden' });
|
|
527
|
-
return;
|
|
528
|
-
}
|
|
529
|
-
// Find session files, newest first (files are timestamp-prefixed)
|
|
530
|
-
const sessionDir = path.join(project.folderPath, '.ccweb', 'sessions');
|
|
531
|
-
if (!fs.existsSync(sessionDir)) {
|
|
532
|
-
res.json([]);
|
|
533
|
-
return;
|
|
534
|
-
}
|
|
535
|
-
let files;
|
|
536
|
-
try {
|
|
537
|
-
files = fs.readdirSync(sessionDir)
|
|
538
|
-
.filter((f) => f.endsWith('.json'))
|
|
539
|
-
.sort()
|
|
540
|
-
.reverse();
|
|
541
|
-
}
|
|
542
|
-
catch {
|
|
543
|
-
res.json([]);
|
|
544
|
-
return;
|
|
545
|
-
}
|
|
546
|
-
// Search last 5 sessions for most recent TodoWrite
|
|
547
|
-
for (const file of files.slice(0, 5)) {
|
|
548
|
-
try {
|
|
549
|
-
if (fs.statSync(path.join(sessionDir, file)).size > 2 * 1024 * 1024)
|
|
550
|
-
continue;
|
|
551
|
-
const raw = fs.readFileSync(path.join(sessionDir, file), 'utf-8');
|
|
552
|
-
const session = JSON.parse(raw);
|
|
553
|
-
const messages = session.messages ?? [];
|
|
554
|
-
// Walk messages in reverse to find latest TodoWrite
|
|
555
|
-
for (let i = messages.length - 1; i >= 0; i--) {
|
|
556
|
-
const msg = messages[i];
|
|
557
|
-
if (msg.role !== 'assistant' || !Array.isArray(msg.blocks))
|
|
558
|
-
continue;
|
|
559
|
-
for (const block of msg.blocks) {
|
|
560
|
-
if (block.type === 'tool_use' && block.name === 'TodoWrite' && Array.isArray(block.input?.todos)) {
|
|
561
|
-
res.json(block.input.todos);
|
|
562
|
-
return;
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
catch {
|
|
568
|
-
// skip corrupt session
|
|
569
|
-
}
|
|
570
|
-
}
|
|
571
|
-
res.json([]);
|
|
572
|
-
});
|
|
573
418
|
// GET /api/projects/:id/disk-size — folder size in bytes (async, uses du)
|
|
574
419
|
router.get('/:id/disk-size', (req, res) => {
|
|
575
420
|
const project = (0, config_1.getProject)(req.params.id);
|
|
@@ -597,41 +442,12 @@ router.get('/:id/disk-size', (req, res) => {
|
|
|
597
442
|
res.json({ bytes: kb * 1024 });
|
|
598
443
|
});
|
|
599
444
|
});
|
|
600
|
-
// GET /api/projects/:id/last-messages?limit=10 — last N messages from most recent session
|
|
601
|
-
router.get('/:id/last-messages', (req, res) => {
|
|
602
|
-
const project = (0, config_1.getProject)(req.params.id);
|
|
603
|
-
if (!project) {
|
|
604
|
-
res.status(404).json({ error: 'Not found' });
|
|
605
|
-
return;
|
|
606
|
-
}
|
|
607
|
-
if (!(0, config_1.isProjectOwner)(project, req.user?.username) &&
|
|
608
|
-
!project.shares?.some((s) => s.username === req.user?.username) &&
|
|
609
|
-
!(0, config_1.isAdminUser)(req.user?.username)) {
|
|
610
|
-
res.status(403).json({ error: 'Forbidden' });
|
|
611
|
-
return;
|
|
612
|
-
}
|
|
613
|
-
const limit = Math.min(parseInt(req.query.limit) || 10, 50);
|
|
614
|
-
const sessions = session_manager_1.sessionManager.listSessions(req.params.id);
|
|
615
|
-
if (sessions.length === 0) {
|
|
616
|
-
res.json({ messages: [], sessionId: null, hasMore: false });
|
|
617
|
-
return;
|
|
618
|
-
}
|
|
619
|
-
const latest = sessions[0];
|
|
620
|
-
const session = session_manager_1.sessionManager.getSession(req.params.id, latest.id);
|
|
621
|
-
if (!session || !session.messages || session.messages.length === 0) {
|
|
622
|
-
res.json({ messages: [], sessionId: latest.id, hasMore: false });
|
|
623
|
-
return;
|
|
624
|
-
}
|
|
625
|
-
const total = session.messages.length;
|
|
626
|
-
const messages = session.messages.slice(-limit);
|
|
627
|
-
res.json({ messages, sessionId: latest.id, hasMore: total > limit });
|
|
628
|
-
});
|
|
629
445
|
// GET /api/projects/:id/chat-history?limit=N&before=<blockId>
|
|
630
446
|
// returns { blocks: ChatBlock[], hasMore: boolean }
|
|
631
447
|
// - no `before`: return the latest `limit` blocks (chronological order)
|
|
632
448
|
// - with `before`: return up to `limit` blocks strictly before that id
|
|
633
|
-
// Intended for the unified chat UI (useChatHistory).
|
|
634
|
-
//
|
|
449
|
+
// Intended for the unified chat UI (useChatHistory). Reads directly from
|
|
450
|
+
// the CLI's JSONL file via sessionManager.getChatHistory.
|
|
635
451
|
router.get('/:id/chat-history', (req, res) => {
|
|
636
452
|
const project = (0, config_1.getProject)(req.params.id);
|
|
637
453
|
if (!project) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/routes/projects.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/routes/projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillhub.d.ts","sourceRoot":"","sources":["../../src/routes/skillhub.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,MAAM,4CAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"skillhub.d.ts","sourceRoot":"","sources":["../../src/routes/skillhub.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA2QxB,eAAe,MAAM,CAAC"}
|
|
@@ -43,11 +43,18 @@ const REPO_NAME = 'ccweb-skillhub';
|
|
|
43
43
|
const RAW_BASE = `https://raw.githubusercontent.com/${REPO_OWNER}/${REPO_NAME}/main`;
|
|
44
44
|
const API_BASE = `https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}`;
|
|
45
45
|
// ── GitHub token ─────────────────────────────────────────────────────────────
|
|
46
|
-
//
|
|
47
|
-
//
|
|
48
|
-
|
|
46
|
+
// SkillHub write operations (submit issue, download-count bump) require a GitHub
|
|
47
|
+
// PAT scoped to the SkillHub repo. The token MUST come from the CCWEB_GITHUB_TOKEN
|
|
48
|
+
// environment variable — never bundled in the npm package, since any installed
|
|
49
|
+
// user would be able to extract it from backend/dist and gain write access to
|
|
50
|
+
// the SkillHub repo (which in turn would poison every ccweb client via
|
|
51
|
+
// plugins.json / skills.json).
|
|
52
|
+
//
|
|
53
|
+
// When the env var is absent, write endpoints fail fast with a clear message;
|
|
54
|
+
// read-only endpoints (/skills, /plugins) continue to work unauthenticated.
|
|
49
55
|
function getGithubToken() {
|
|
50
|
-
|
|
56
|
+
const token = process.env.CCWEB_GITHUB_TOKEN;
|
|
57
|
+
return token && token.trim() ? token.trim() : null;
|
|
51
58
|
}
|
|
52
59
|
let cachedSkills = null;
|
|
53
60
|
let cacheTime = 0;
|
|
@@ -84,6 +91,9 @@ function httpGet(url, maxRedirects = 5) {
|
|
|
84
91
|
}
|
|
85
92
|
function githubApi(method, endpoint, body) {
|
|
86
93
|
const token = getGithubToken();
|
|
94
|
+
if (!token) {
|
|
95
|
+
return Promise.reject(new Error('SkillHub write operations require CCWEB_GITHUB_TOKEN env var'));
|
|
96
|
+
}
|
|
87
97
|
const url = new URL(`${API_BASE}${endpoint}`);
|
|
88
98
|
const postData = body ? JSON.stringify(body) : '';
|
|
89
99
|
return new Promise((resolve, reject) => {
|