@dotobokuri/fleet-console 1.54.0 → 1.55.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.
- package/AGENTS.md +1 -1
- package/dist/access-protocol.d.ts +58 -0
- package/dist/access-protocol.mjs +165 -0
- package/dist/cli.mjs +1207 -716
- package/dist/client/assets/{_baseUniq-B2XggV1b.js → _baseUniq-Cp0TuK00.js} +1 -1
- package/dist/client/assets/{arc-CPqvR_Wl.js → arc-Cwtz1wxV.js} +1 -1
- package/dist/client/assets/{architectureDiagram-Q4EWVU46-BczXSpod.js → architectureDiagram-Q4EWVU46-f2trvyEV.js} +1 -1
- package/dist/client/assets/{blockDiagram-DXYQGD6D-BPtW_zZR.js → blockDiagram-DXYQGD6D-BhEa9Mh6.js} +1 -1
- package/dist/client/assets/{c4Diagram-AHTNJAMY-Cry2oyLL.js → c4Diagram-AHTNJAMY-CuqbJbZK.js} +1 -1
- package/dist/client/assets/channel-D9kPbZ6w.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-DKkKt4m0.js → chunk-4BX2VUAB-Vx63wo1i.js} +1 -1
- package/dist/client/assets/{chunk-4TB4RGXK-DKGkDbqm.js → chunk-4TB4RGXK-DHRtIlLJ.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-DawsVr8O.js → chunk-55IACEB6-ChTm2kCK.js} +1 -1
- package/dist/client/assets/{chunk-EDXVE4YY-tS8vRy63.js → chunk-EDXVE4YY-C_BQtaY5.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-B0jQQkjI.js → chunk-FMBD7UC4-BPV9Mw6e.js} +1 -1
- package/dist/client/assets/{chunk-OYMX7WX6-FZQSRkEo.js → chunk-OYMX7WX6-ya-VyPHj.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-Bq1WBmr8.js → chunk-QZHKN3VN-CLiSGdJ6.js} +1 -1
- package/dist/client/assets/{chunk-YZCP3GAM-CNWIYKHc.js → chunk-YZCP3GAM-DasGOM9R.js} +1 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-B1zyip5T.js +1 -0
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-B1zyip5T.js +1 -0
- package/dist/client/assets/clone-x5mGq45q.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-CmOaWS4P.js → cose-bilkent-S5V4N54A-C11PcGWz.js} +1 -1
- package/dist/client/assets/{dagre-KV5264BT-D2gJaf1o.js → dagre-KV5264BT-BGiNFCUB.js} +1 -1
- package/dist/client/assets/{diagram-5BDNPKRD-DH-M3VUk.js → diagram-5BDNPKRD-CSxK9ZtI.js} +1 -1
- package/dist/client/assets/{diagram-G4DWMVQ6-169IB8uN.js → diagram-G4DWMVQ6-COZtgx_6.js} +1 -1
- package/dist/client/assets/{diagram-MMDJMWI5-D1OVxCyQ.js → diagram-MMDJMWI5-4-mD0i99.js} +1 -1
- package/dist/client/assets/{diagram-TYMM5635-CkiS1glz.js → diagram-TYMM5635-BNX8i0L7.js} +1 -1
- package/dist/client/assets/{erDiagram-SMLLAGMA-CZUp7ncJ.js → erDiagram-SMLLAGMA-1a9K7CGs.js} +1 -1
- package/dist/client/assets/{flowDiagram-DWJPFMVM-9SIhR3aC.js → flowDiagram-DWJPFMVM-B7BZTT0P.js} +1 -1
- package/dist/client/assets/{ganttDiagram-T4ZO3ILL-CA4smcv3.js → ganttDiagram-T4ZO3ILL-FeCgSTyp.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-UUTBAWPF-DF8CSmoM.js → gitGraphDiagram-UUTBAWPF-ItC4KjyQ.js} +1 -1
- package/dist/client/assets/{graph-Bc_ceTI8.js → graph-C0wWu6sL.js} +1 -1
- package/dist/client/assets/{index-NNL49IzO.css → index-B0961B8M.css} +1 -1
- package/dist/client/assets/index-DEW90Ngb.js +479 -0
- package/dist/client/assets/{infoDiagram-42DDH7IO-BC5KSucM.js → infoDiagram-42DDH7IO-5ub69t3k.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-UXIWVN3A-JJIJclQD.js → ishikawaDiagram-UXIWVN3A-BEvDRmdo.js} +1 -1
- package/dist/client/assets/{journeyDiagram-VCZTEJTY-ERzBaHVf.js → journeyDiagram-VCZTEJTY-DUxQ-ZUX.js} +1 -1
- package/dist/client/assets/{kanban-definition-6JOO6SKY-KvnzNd3g.js → kanban-definition-6JOO6SKY-BiPkJbpE.js} +1 -1
- package/dist/client/assets/{layout-DJbQbTix.js → layout-Bhtd-qjm.js} +1 -1
- package/dist/client/assets/{linear-BzBkH5Aq.js → linear-BT8b8xym.js} +1 -1
- package/dist/client/assets/{mermaid.core-CAqwSbV2.js → mermaid.core-BlTpil8e.js} +4 -4
- package/dist/client/assets/{min-giSfwdiX.js → min-DrnMPIwV.js} +1 -1
- package/dist/client/assets/{mindmap-definition-QFDTVHPH-BH0wnMRm.js → mindmap-definition-QFDTVHPH-uQH7Nv45.js} +1 -1
- package/dist/client/assets/{pieDiagram-DEJITSTG-WOHMlPDe.js → pieDiagram-DEJITSTG-MOetI488.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-34T5L4WZ-DcIpvIOj.js → quadrantDiagram-34T5L4WZ-C-jeoH4D.js} +1 -1
- package/dist/client/assets/{requirementDiagram-MS252O5E-C99uWiwG.js → requirementDiagram-MS252O5E-C7cKIVp5.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-XADWPNL6-czWBcwBu.js → sankeyDiagram-XADWPNL6-Dcv2A0AY.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-FGHM5R23-CjtCPppG.js → sequenceDiagram-FGHM5R23-CXO-xPvA.js} +1 -1
- package/dist/client/assets/{stateDiagram-FHFEXIEX-D0UKF8ze.js → stateDiagram-FHFEXIEX-GKivP2tt.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-BfnEUJRo.js +1 -0
- package/dist/client/assets/{timeline-definition-GMOUNBTQ-3isWQZNU.js → timeline-definition-GMOUNBTQ-DLJSUfwG.js} +1 -1
- package/dist/client/assets/{vennDiagram-DHZGUBPP-C_LF2g8l.js → vennDiagram-DHZGUBPP-DFihaprP.js} +1 -1
- package/dist/client/assets/{wardley-RL74JXVD-Bw0Y4M6p.js → wardley-RL74JXVD-BBV41M5Z.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-NUSXRM2D-B6e3mxQI.js → wardleyDiagram-NUSXRM2D-B5J5AiY-.js} +1 -1
- package/dist/client/assets/{xychartDiagram-5P7HB3ND-DjlZXnLg.js → xychartDiagram-5P7HB3ND-D1NFEt18.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/fleet-plugins/file-explorer/routes.mjs +13 -9
- package/dist/fleet-plugins/ledger/routes.mjs +6 -2
- package/dist/fleet-plugins/quota/routes.mjs +22 -18
- package/dist/fleet-plugins/repository/routes.mjs +17 -13
- package/dist/fleet-plugins/scuttlebutt/routes.mjs +13 -14
- package/dist/fleet-plugins/skills/routes.mjs +14 -10
- package/dist/fleet-plugins/terminal/routes.mjs +354 -314
- package/dist/fleet.mjs +3950 -3486
- package/package.json +5 -1
- package/dist/client/assets/channel-D5C5uwWd.js +0 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-Cv4Bxw_r.js +0 -1
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-Cv4Bxw_r.js +0 -1
- package/dist/client/assets/clone-C7dthYDe.js +0 -1
- package/dist/client/assets/index-kTAFpDLu.js +0 -479
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-BdRUP2Pp.js +0 -1
|
@@ -7,7 +7,11 @@ import path3 from 'node:path';
|
|
|
7
7
|
function definePlugin(definition) {
|
|
8
8
|
return definition;
|
|
9
9
|
}
|
|
10
|
-
function registerRouter(ctx, path9, handler) {
|
|
10
|
+
function registerRouter(ctx, path9, handler, catalog) {
|
|
11
|
+
if (catalog) {
|
|
12
|
+
ctx.registerRouter(normalizePath(path9), handler, catalog);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
11
15
|
ctx.registerRouter(normalizePath(path9), handler);
|
|
12
16
|
}
|
|
13
17
|
function normalizePath(path9) {
|
|
@@ -1727,51 +1731,51 @@ var routes_default = definePlugin({
|
|
|
1727
1731
|
registerRouter(ctx, "repos", async ({ req, res }) => {
|
|
1728
1732
|
await handleRepositoryRepos(req, res, ctx);
|
|
1729
1733
|
return true;
|
|
1730
|
-
});
|
|
1734
|
+
}, { method: "POST", path: "", summary: "List repositories in a Theater.", category: "Repository Plugin", gate: "origin-write", transport: "http" });
|
|
1731
1735
|
registerRouter(ctx, "worktrees", async ({ req, res }) => {
|
|
1732
1736
|
await handleRepositoryWorktrees(req, res, ctx);
|
|
1733
1737
|
return true;
|
|
1734
|
-
});
|
|
1738
|
+
}, { method: "POST", path: "", summary: "List repository worktrees.", category: "Repository Plugin", gate: "origin-write", transport: "http" });
|
|
1735
1739
|
registerRouter(ctx, "changed", async ({ req, res }) => {
|
|
1736
1740
|
await handleRepositoryChanged(req, res, ctx);
|
|
1737
1741
|
return true;
|
|
1738
|
-
});
|
|
1742
|
+
}, { method: "POST", path: "", summary: "List changed repository files.", category: "Repository Plugin", gate: "origin-write", transport: "http" });
|
|
1739
1743
|
registerRouter(ctx, "fetch", async ({ req, res }) => {
|
|
1740
1744
|
await handleRepositoryFetch(req, res, ctx);
|
|
1741
1745
|
return true;
|
|
1742
|
-
});
|
|
1746
|
+
}, { method: "POST", path: "", summary: "Fetch repository data.", category: "Repository Plugin", gate: "origin-write", transport: "http" });
|
|
1743
1747
|
registerRouter(ctx, "file", async ({ req, res }) => {
|
|
1744
1748
|
await handleRepositoryFile(req, res, ctx);
|
|
1745
1749
|
return true;
|
|
1746
|
-
});
|
|
1750
|
+
}, { method: "POST", path: "", summary: "Read a repository file diff.", category: "Repository Plugin", gate: "origin-write", transport: "http" });
|
|
1747
1751
|
registerRouter(ctx, "log", async ({ req, res }) => {
|
|
1748
1752
|
await handleRepositoryLog(req, res, ctx);
|
|
1749
1753
|
return true;
|
|
1750
|
-
});
|
|
1754
|
+
}, { method: "POST", path: "", summary: "Read repository history.", category: "Repository Plugin", gate: "origin-write", transport: "http" });
|
|
1751
1755
|
registerRouter(ctx, "palette-search", async ({ req, res }) => {
|
|
1752
1756
|
await handleRepositorySearch(req, res, ctx);
|
|
1753
1757
|
return true;
|
|
1754
|
-
});
|
|
1758
|
+
}, { method: "POST", path: "", summary: "Search repository commits.", category: "Repository Plugin", gate: "origin-write", transport: "http" });
|
|
1755
1759
|
registerRouter(ctx, "refs", async ({ req, res }) => {
|
|
1756
1760
|
await handleRepositoryRefs(req, res, ctx);
|
|
1757
1761
|
return true;
|
|
1758
|
-
});
|
|
1762
|
+
}, { method: "POST", path: "", summary: "Read repository refs.", category: "Repository Plugin", gate: "origin-write", transport: "http" });
|
|
1759
1763
|
registerRouter(ctx, "commit", async ({ req, res }) => {
|
|
1760
1764
|
await handleRepositoryCommit(req, res, ctx);
|
|
1761
1765
|
return true;
|
|
1762
|
-
});
|
|
1766
|
+
}, { method: "POST", path: "", summary: "Read repository commit details.", category: "Repository Plugin", gate: "origin-write", transport: "http" });
|
|
1763
1767
|
registerRouter(ctx, "commit-file", async ({ req, res }) => {
|
|
1764
1768
|
await handleRepositoryCommitFile(req, res, ctx);
|
|
1765
1769
|
return true;
|
|
1766
|
-
});
|
|
1770
|
+
}, { method: "POST", path: "", summary: "Read a file diff at a repository commit.", category: "Repository Plugin", gate: "origin-write", transport: "http" });
|
|
1767
1771
|
registerRouter(ctx, "compare", async ({ req, res }) => {
|
|
1768
1772
|
await handleRepositoryCompare(req, res, ctx);
|
|
1769
1773
|
return true;
|
|
1770
|
-
});
|
|
1774
|
+
}, { method: "POST", path: "", summary: "Compare repository revisions.", category: "Repository Plugin", gate: "origin-write", transport: "http" });
|
|
1771
1775
|
registerRouter(ctx, "compare-file", async ({ req, res }) => {
|
|
1772
1776
|
await handleRepositoryCompareFile(req, res, ctx);
|
|
1773
1777
|
return true;
|
|
1774
|
-
});
|
|
1778
|
+
}, { method: "POST", path: "", summary: "Compare repository files.", category: "Repository Plugin", gate: "origin-write", transport: "http" });
|
|
1775
1779
|
}
|
|
1776
1780
|
});
|
|
1777
1781
|
|
|
@@ -21,7 +21,11 @@ var __export = (target, all) => {
|
|
|
21
21
|
function definePlugin(definition) {
|
|
22
22
|
return definition;
|
|
23
23
|
}
|
|
24
|
-
function registerRouter(ctx, path5, handler) {
|
|
24
|
+
function registerRouter(ctx, path5, handler, catalog) {
|
|
25
|
+
if (catalog) {
|
|
26
|
+
ctx.registerRouter(normalizePath(path5), handler, catalog);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
25
29
|
ctx.registerRouter(normalizePath(path5), handler);
|
|
26
30
|
}
|
|
27
31
|
function normalizePath(path5) {
|
|
@@ -17475,10 +17479,6 @@ new Map(
|
|
|
17475
17479
|
REASONING_EFFORTS.map((effort, index) => [effort, index])
|
|
17476
17480
|
);
|
|
17477
17481
|
var CLAUDE_COMPAT_CONTEXT_WINDOW = 1e6;
|
|
17478
|
-
var CLAUDE_DEFAULT_CONTEXT_WINDOW = 2e5;
|
|
17479
|
-
function canProjectClaudeContextWindow(contextWindow) {
|
|
17480
|
-
return typeof contextWindow === "number" && Number.isFinite(contextWindow) && contextWindow > CLAUDE_DEFAULT_CONTEXT_WINDOW;
|
|
17481
|
-
}
|
|
17482
17482
|
function isClaudeOneMillionContextWindow(contextWindow) {
|
|
17483
17483
|
return typeof contextWindow === "number" && Number.isFinite(contextWindow) && contextWindow >= CLAUDE_COMPAT_CONTEXT_WINDOW;
|
|
17484
17484
|
}
|
|
@@ -18015,10 +18015,6 @@ var models_default = {
|
|
|
18015
18015
|
};
|
|
18016
18016
|
var GATEWAY_PROVIDERS = ["codex", "cursor", "kimi", "opencode"];
|
|
18017
18017
|
var GATEWAY_MODEL_WIRES = ["anthropic", "responses", "chat-completions"];
|
|
18018
|
-
function isAnthropicPassthroughModel(model) {
|
|
18019
|
-
if (model.provider === "kimi") return true;
|
|
18020
|
-
return model.provider === "opencode" && (model.wire ?? "anthropic") === "anthropic";
|
|
18021
|
-
}
|
|
18022
18018
|
var GATEWAY_REASONING_EFFORTS = [
|
|
18023
18019
|
"low",
|
|
18024
18020
|
"medium",
|
|
@@ -18154,10 +18150,7 @@ function toGatewayModelAlias(modelId) {
|
|
|
18154
18150
|
}
|
|
18155
18151
|
function toClaudeGatewayModelId(model) {
|
|
18156
18152
|
const alias = toGatewayModelAlias(model.id);
|
|
18157
|
-
|
|
18158
|
-
return `${alias}${CLAUDE_ONE_MILLION_MARKER}`;
|
|
18159
|
-
}
|
|
18160
|
-
return alias;
|
|
18153
|
+
return isClaudeOneMillionContextWindow(model.contextWindow) ? `${alias}${CLAUDE_ONE_MILLION_MARKER}` : alias;
|
|
18161
18154
|
}
|
|
18162
18155
|
function toClaudeGatewayModelDisplayName(model) {
|
|
18163
18156
|
return isClaudeOneMillionContextWindow(model.contextWindow) ? `${model.displayName}${CLAUDE_ONE_MILLION_DISPLAY_SUFFIX}` : model.displayName;
|
|
@@ -19349,6 +19342,7 @@ function claudeGatewayLaunchEnv(inherited, options) {
|
|
|
19349
19342
|
env.CLAUDE_SECURESTORAGE_CONFIG_DIR = "";
|
|
19350
19343
|
env.CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY = "1";
|
|
19351
19344
|
env.ENABLE_TOOL_SEARCH = "true";
|
|
19345
|
+
env.CLAUDE_CODE_AUTO_COMPACT_WINDOW ??= "1000000";
|
|
19352
19346
|
delete env.ANTHROPIC_AUTH_TOKEN;
|
|
19353
19347
|
delete env.ANTHROPIC_API_KEY;
|
|
19354
19348
|
delete env.ANTHROPIC_MODEL;
|
|
@@ -19972,7 +19966,12 @@ function registerChatRoutes(ctx, deps = {}) {
|
|
|
19972
19966
|
if (match[2] === "message") return handleMessage(ctx, req, res, chatId, registry3);
|
|
19973
19967
|
if (match[2] === "stream") return handleStream(ctx, req, res, chatId, registry3);
|
|
19974
19968
|
return handleStop(ctx, req, res, chatId, registry3);
|
|
19975
|
-
}
|
|
19969
|
+
}, [
|
|
19970
|
+
{ method: "POST", path: "/start", summary: "Start a Scuttlebutt chat session.", category: "Scuttlebutt Plugin", gate: "origin-write", transport: "http" },
|
|
19971
|
+
{ method: "POST", path: "/:chatId/message", summary: "Send a Scuttlebutt chat message.", category: "Scuttlebutt Plugin", gate: "origin-write", transport: "http" },
|
|
19972
|
+
{ method: "GET", path: "/:chatId/stream", summary: "Stream a Scuttlebutt chat session.", category: "Scuttlebutt Plugin", gate: "origin-write", transport: "sse" },
|
|
19973
|
+
{ method: "POST", path: "/:chatId/stop", summary: "Stop a Scuttlebutt chat session.", category: "Scuttlebutt Plugin", gate: "origin-write", transport: "http" }
|
|
19974
|
+
]);
|
|
19976
19975
|
ctx.host.lifecycle.registerCleanup(() => registry3.dispose());
|
|
19977
19976
|
return registry3;
|
|
19978
19977
|
}
|
|
@@ -10,7 +10,11 @@ import crypto from 'node:crypto';
|
|
|
10
10
|
function definePlugin(definition) {
|
|
11
11
|
return definition;
|
|
12
12
|
}
|
|
13
|
-
function registerRouter(ctx, path6, handler) {
|
|
13
|
+
function registerRouter(ctx, path6, handler, catalog) {
|
|
14
|
+
if (catalog) {
|
|
15
|
+
ctx.registerRouter(normalizePath(path6), handler, catalog);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
14
18
|
ctx.registerRouter(normalizePath(path6), handler);
|
|
15
19
|
}
|
|
16
20
|
function normalizePath(path6) {
|
|
@@ -928,39 +932,39 @@ var routes_default = definePlugin({
|
|
|
928
932
|
registerRouter(ctx, "list", async ({ req, res }) => {
|
|
929
933
|
await handleList(req, res, ctx, executor);
|
|
930
934
|
return true;
|
|
931
|
-
});
|
|
935
|
+
}, { method: "GET", path: "", summary: "List installed skills.", category: "Skills Plugin", gate: "origin-write", transport: "http" });
|
|
932
936
|
registerRouter(ctx, "palette-search", async ({ req, res }) => {
|
|
933
937
|
await handlePaletteSearch(req, res, ctx);
|
|
934
938
|
return true;
|
|
935
|
-
});
|
|
939
|
+
}, { method: "POST", path: "", summary: "Search installed skills.", category: "Skills Plugin", gate: "origin-write", transport: "http" });
|
|
936
940
|
registerRouter(ctx, "search", async ({ req, res }) => {
|
|
937
941
|
await handleSearch(req, res, ctx);
|
|
938
942
|
return true;
|
|
939
|
-
});
|
|
943
|
+
}, { method: "GET", path: "", summary: "Search the skill registry.", category: "Skills Plugin", gate: "origin-write", transport: "http" });
|
|
940
944
|
registerRouter(ctx, "install", async ({ req, res }) => {
|
|
941
945
|
await handleInstall(req, res, ctx, executor);
|
|
942
946
|
return true;
|
|
943
|
-
});
|
|
947
|
+
}, { method: "POST", path: "", summary: "Install a skill.", category: "Skills Plugin", gate: "origin-write", transport: "http" });
|
|
944
948
|
registerRouter(ctx, "update", async ({ req, res }) => {
|
|
945
949
|
await handleUpdate(req, res, ctx, executor);
|
|
946
950
|
return true;
|
|
947
|
-
});
|
|
951
|
+
}, { method: "POST", path: "", summary: "Update installed skills.", category: "Skills Plugin", gate: "origin-write", transport: "http" });
|
|
948
952
|
registerRouter(ctx, "jobs", async ({ req, res }) => {
|
|
949
953
|
await handleGetJob(req, res, ctx);
|
|
950
954
|
return true;
|
|
951
|
-
});
|
|
955
|
+
}, { method: "GET", path: "", summary: "Read a skill job.", category: "Skills Plugin", gate: "origin-write", transport: "http" });
|
|
952
956
|
registerRouter(ctx, "remove", async ({ req, res }) => {
|
|
953
957
|
await handleRemove(req, res, ctx, executor);
|
|
954
958
|
return true;
|
|
955
|
-
});
|
|
959
|
+
}, { method: "POST", path: "", summary: "Remove an installed skill.", category: "Skills Plugin", gate: "origin-write", transport: "http" });
|
|
956
960
|
registerRouter(ctx, "preview", async ({ req, res }) => {
|
|
957
961
|
await handlePreview(req, res, ctx, executor);
|
|
958
962
|
return true;
|
|
959
|
-
});
|
|
963
|
+
}, { method: "POST", path: "", summary: "Preview a skill.", category: "Skills Plugin", gate: "origin-write", transport: "http" });
|
|
960
964
|
registerRouter(ctx, "installed-file", async ({ req, res }) => {
|
|
961
965
|
await handleInstalledFile(req, res, ctx, executor);
|
|
962
966
|
return true;
|
|
963
|
-
});
|
|
967
|
+
}, { method: "POST", path: "", summary: "Read an installed skill file.", category: "Skills Plugin", gate: "origin-write", transport: "http" });
|
|
964
968
|
}
|
|
965
969
|
});
|
|
966
970
|
|