opencode-agora 0.4.1 → 0.4.2
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 +13 -5
- package/dist/cli/app.d.ts.map +1 -1
- package/dist/cli/app.js +4 -0
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/commands/operations.d.ts.map +1 -1
- package/dist/cli/commands/operations.js +40 -5
- package/dist/cli/commands/operations.js.map +1 -1
- package/dist/cli/commands/outdated.d.ts +3 -0
- package/dist/cli/commands/outdated.d.ts.map +1 -0
- package/dist/cli/commands/outdated.js +48 -0
- package/dist/cli/commands/outdated.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +3 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +35 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands-meta.d.ts.map +1 -1
- package/dist/cli/commands-meta.js +29 -0
- package/dist/cli/commands-meta.js.map +1 -1
- package/dist/cli/mcp-server.d.ts +7 -1
- package/dist/cli/mcp-server.d.ts.map +1 -1
- package/dist/cli/mcp-server.js +70 -2
- package/dist/cli/mcp-server.js.map +1 -1
- package/dist/cli/pages/community.js +1 -1
- package/dist/cli/pages/community.js.map +1 -1
- package/dist/cli/pages/marketplace.d.ts.map +1 -1
- package/dist/cli/pages/marketplace.js +59 -1
- package/dist/cli/pages/marketplace.js.map +1 -1
- package/dist/cli/pages/news.js +2 -2
- package/dist/cli/pages/news.js.map +1 -1
- package/dist/cli/shell.d.ts.map +1 -1
- package/dist/cli/shell.js +18 -2
- package/dist/cli/shell.js.map +1 -1
- package/dist/format.d.ts +0 -2
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +0 -2
- package/dist/format.js.map +1 -1
- package/dist/live.js +7 -1
- package/dist/live.js.map +1 -1
- package/dist/outdated.d.ts +24 -0
- package/dist/outdated.d.ts.map +1 -0
- package/dist/outdated.js +53 -0
- package/dist/outdated.js.map +1 -0
- package/dist/scan.d.ts +26 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +179 -0
- package/dist/scan.js.map +1 -0
- package/package.json +4 -2
package/dist/scan.js
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { hasPermissions, getInstallKind } from './marketplace.js';
|
|
2
|
+
function tally(checks) {
|
|
3
|
+
let pass = 0, warn = 0, fail = 0;
|
|
4
|
+
for (const c of checks) {
|
|
5
|
+
if (c.status === 'pass')
|
|
6
|
+
pass++;
|
|
7
|
+
else if (c.status === 'warn')
|
|
8
|
+
warn++;
|
|
9
|
+
else
|
|
10
|
+
fail++;
|
|
11
|
+
}
|
|
12
|
+
return { pass, warn, fail };
|
|
13
|
+
}
|
|
14
|
+
function licenseCheck(status, message) {
|
|
15
|
+
return { name: 'license_present', label: 'License declared', status, message };
|
|
16
|
+
}
|
|
17
|
+
// Returns repo_reachable plus (when the repo is reachable) license_present,
|
|
18
|
+
// both derived from a single GitHub repos API call. A missing license is a
|
|
19
|
+
// warning, never a hard fail — many legitimate repos lack a detected license.
|
|
20
|
+
async function checkRepo(item, opts) {
|
|
21
|
+
const base = {
|
|
22
|
+
name: 'repo_reachable',
|
|
23
|
+
label: 'Repository reachable'
|
|
24
|
+
};
|
|
25
|
+
if (!item.repository) {
|
|
26
|
+
return [{ ...base, status: 'pass', message: 'no repository field, skipped' }];
|
|
27
|
+
}
|
|
28
|
+
let url;
|
|
29
|
+
try {
|
|
30
|
+
url = new URL(item.repository);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return [{ ...base, status: 'pass', message: 'non-github repository, skipped' }];
|
|
34
|
+
}
|
|
35
|
+
if (url.hostname !== 'github.com') {
|
|
36
|
+
return [{ ...base, status: 'pass', message: 'non-github repository, skipped' }];
|
|
37
|
+
}
|
|
38
|
+
const path = url.pathname.replace(/^\//, '').replace(/\.git$/, '').split('/').slice(0, 2).join('/');
|
|
39
|
+
const apiUrl = `https://api.github.com/repos/${path}`;
|
|
40
|
+
const headers = { Accept: 'application/vnd.github+json' };
|
|
41
|
+
if (opts.githubToken)
|
|
42
|
+
headers.Authorization = `Bearer ${opts.githubToken}`;
|
|
43
|
+
const fetcher = opts.fetcher ?? globalThis.fetch;
|
|
44
|
+
try {
|
|
45
|
+
const res = await fetcher(apiUrl, { headers, signal: AbortSignal.timeout(8000) });
|
|
46
|
+
if (res.status === 200) {
|
|
47
|
+
const reachable = { ...base, status: 'pass', message: `github.com/${path}` };
|
|
48
|
+
let license;
|
|
49
|
+
try {
|
|
50
|
+
const body = (await res.json());
|
|
51
|
+
const spdx = body.license?.spdx_id;
|
|
52
|
+
license =
|
|
53
|
+
spdx && spdx !== 'NOASSERTION'
|
|
54
|
+
? licenseCheck('pass', spdx)
|
|
55
|
+
: licenseCheck('warn', 'no license detected on the repository');
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
license = licenseCheck('warn', 'could not read license metadata');
|
|
59
|
+
}
|
|
60
|
+
return [reachable, license];
|
|
61
|
+
}
|
|
62
|
+
if (res.status === 404)
|
|
63
|
+
return [{ ...base, status: 'fail', message: 'repo not found' }];
|
|
64
|
+
return [{ ...base, status: 'warn', message: 'could not verify (rate limited or network)' }];
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return [{ ...base, status: 'warn', message: 'could not verify (rate limited or network)' }];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async function checkNpmExists(item, opts) {
|
|
71
|
+
const base = {
|
|
72
|
+
name: 'npm_exists',
|
|
73
|
+
label: 'npm package exists'
|
|
74
|
+
};
|
|
75
|
+
if (!item.npmPackage)
|
|
76
|
+
return { ...base, status: 'pass', message: 'no npm package, skipped' };
|
|
77
|
+
const encoded = encodeURIComponent(item.npmPackage).replace('%40', '@').replace('%2F', '/');
|
|
78
|
+
const fetcher = opts.fetcher ?? globalThis.fetch;
|
|
79
|
+
try {
|
|
80
|
+
const res = await fetcher(`https://registry.npmjs.org/${encoded}/latest`, {
|
|
81
|
+
signal: AbortSignal.timeout(8000)
|
|
82
|
+
});
|
|
83
|
+
if (res.status === 200) {
|
|
84
|
+
const json = await res.json();
|
|
85
|
+
return { ...base, status: 'pass', message: `${item.npmPackage}@${json.version ?? 'unknown'}` };
|
|
86
|
+
}
|
|
87
|
+
if (res.status === 404)
|
|
88
|
+
return { ...base, status: 'fail', message: 'package not found on npm' };
|
|
89
|
+
return { ...base, status: 'warn', message: 'could not verify (network)' };
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return { ...base, status: 'warn', message: 'could not verify (network)' };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
async function scanPackage(item, opts) {
|
|
96
|
+
const checks = [];
|
|
97
|
+
// 1. permissions_declared
|
|
98
|
+
const hasPerm = hasPermissions(item.permissions);
|
|
99
|
+
if (hasPerm) {
|
|
100
|
+
const parts = [];
|
|
101
|
+
if (item.permissions?.fs?.length)
|
|
102
|
+
parts.push('fs');
|
|
103
|
+
if (item.permissions?.net?.length)
|
|
104
|
+
parts.push('net');
|
|
105
|
+
if (item.permissions?.exec?.length)
|
|
106
|
+
parts.push('exec');
|
|
107
|
+
checks.push({ name: 'permissions_declared', label: 'Permissions declared', status: 'pass', message: parts.join('|') });
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
checks.push({ name: 'permissions_declared', label: 'Permissions declared', status: 'warn', message: 'no permissions manifest declared' });
|
|
111
|
+
}
|
|
112
|
+
// 2. permission_consistency
|
|
113
|
+
const kind = getInstallKind(item);
|
|
114
|
+
if (kind === 'git-clone' && !item.permissions?.exec?.length) {
|
|
115
|
+
checks.push({ name: 'permission_consistency', label: 'Permission consistency', status: 'warn', message: 'git-clone install runs shell commands; declare exec' });
|
|
116
|
+
}
|
|
117
|
+
else if (kind === 'mcp-config-patch' && item.npmPackage && !item.permissions?.exec?.length) {
|
|
118
|
+
checks.push({ name: 'permission_consistency', label: 'Permission consistency', status: 'warn', message: 'npx invocation runs binaries; declare exec' });
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
checks.push({ name: 'permission_consistency', label: 'Permission consistency', status: 'pass', message: 'declared permissions match install kind' });
|
|
122
|
+
}
|
|
123
|
+
// 3. repo_reachable (+ license_present when reachable)
|
|
124
|
+
if (item.repository) {
|
|
125
|
+
checks.push(...(await checkRepo(item, opts)));
|
|
126
|
+
}
|
|
127
|
+
// 4. npm_exists
|
|
128
|
+
if (item.npmPackage) {
|
|
129
|
+
checks.push(await checkNpmExists(item, opts));
|
|
130
|
+
}
|
|
131
|
+
// 5. recently_active
|
|
132
|
+
if (item.pushedAt) {
|
|
133
|
+
const now = opts.now ? opts.now() : new Date();
|
|
134
|
+
const days = Math.floor((now.getTime() - new Date(item.pushedAt).getTime()) / 86_400_000);
|
|
135
|
+
if (days <= 365) {
|
|
136
|
+
checks.push({ name: 'recently_active', label: 'Recently active', status: 'pass', message: `pushed ${days}d ago` });
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
checks.push({ name: 'recently_active', label: 'Recently active', status: 'warn', message: `last push ${days}d ago — may be unmaintained` });
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// 6. flag_count_low
|
|
143
|
+
const flags = item.flagCount ?? 0;
|
|
144
|
+
if (flags < 3) {
|
|
145
|
+
checks.push({ name: 'flag_count_low', label: 'Flag count low', status: 'pass', message: `${flags} flags` });
|
|
146
|
+
}
|
|
147
|
+
else if (flags < 10) {
|
|
148
|
+
checks.push({ name: 'flag_count_low', label: 'Flag count low', status: 'warn', message: `${flags} flags — under review threshold` });
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
checks.push({ name: 'flag_count_low', label: 'Flag count low', status: 'fail', message: `${flags} flags — would auto-hide` });
|
|
152
|
+
}
|
|
153
|
+
return checks;
|
|
154
|
+
}
|
|
155
|
+
export async function scanItem(item, opts = {}) {
|
|
156
|
+
let checks;
|
|
157
|
+
if (item.kind === 'workflow') {
|
|
158
|
+
const n = item.flagCount ?? 0;
|
|
159
|
+
checks = [
|
|
160
|
+
{ name: 'workflow_kind', label: 'Workflow kind', status: 'pass', message: 'Workflow items are inert prompts — no install side effects to scan.' },
|
|
161
|
+
{
|
|
162
|
+
name: 'flag_count_low',
|
|
163
|
+
label: 'Flag count low',
|
|
164
|
+
status: n < 3 ? 'pass' : n < 10 ? 'warn' : 'fail',
|
|
165
|
+
message: n < 3 ? `${n} flags` : n < 10 ? `${n} flags — under review threshold` : `${n} flags — would auto-hide`
|
|
166
|
+
}
|
|
167
|
+
];
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
checks = await scanPackage(item, opts);
|
|
171
|
+
}
|
|
172
|
+
return {
|
|
173
|
+
id: item.id,
|
|
174
|
+
itemKind: item.kind,
|
|
175
|
+
checks,
|
|
176
|
+
summary: tally(checks)
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=scan.js.map
|
package/dist/scan.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-agora",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Agora - The Developer's Terminal Marketplace & Community Hub for OpenCode",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -29,7 +29,9 @@
|
|
|
29
29
|
"build": "rm -rf dist && tsc && chmod +x dist/cli.js",
|
|
30
30
|
"dev": "bun run build && cp -r dist/* ~/.config/opencode/plugins/agora/",
|
|
31
31
|
"hub:dev": "bun hub/server.ts",
|
|
32
|
-
"typecheck": "
|
|
32
|
+
"typecheck": "bun run typecheck:cli && bun run typecheck:backend",
|
|
33
|
+
"typecheck:cli": "tsc -p tsconfig.check.json",
|
|
34
|
+
"typecheck:backend": "cd backend && bun run typecheck",
|
|
33
35
|
"test": "bun test",
|
|
34
36
|
"prepublishOnly": "bun run build",
|
|
35
37
|
"refresh:data": "bun scripts/refresh-data.ts",
|