made-market 0.1.0 → 0.1.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 +17 -56
- package/bin/made-market.mjs +75 -23
- package/{tools/lib → lib}/market.mjs +7 -0
- package/package.json +9 -19
- package/registry/index.json +11 -11
- package/src/init.mjs +257 -0
- package/{tools → src}/install.mjs +14 -7
- package/{tools → src}/publish.mjs +2 -2
- package/docs/BACKEND.md +0 -189
- package/docs/INSTALL.md +0 -95
- package/docs/PUBLISH.md +0 -127
- package/docs/SPEC.md +0 -119
- package/server/auth.mjs +0 -121
- package/server/db.mjs +0 -485
- package/server/errors.mjs +0 -7
- package/server/server.mjs +0 -210
- package/server/service.mjs +0 -254
- package/server/store.mjs +0 -97
- package/site/glyphs.js +0 -22
- package/site/index.html +0 -158
- package/site/market.css +0 -915
- package/site/market.js +0 -521
- package/site/packages/alarm-clock-1.0.0.tar.gz +0 -0
- package/site/packages/bamboo-1.0.0.tar.gz +0 -0
- package/site/packages/demo-echo-1.0.0.tar.gz +0 -0
- package/site/packages/graphite-1.0.0.tar.gz +0 -0
- package/site/packages/key-chime-1.0.0.tar.gz +0 -0
- package/site/packages/ocean-1.0.0.tar.gz +0 -0
- package/site/packages/ollama-agent-1.0.0.tar.gz +0 -0
- package/site/packages/shell-agent-1.0.0.tar.gz +0 -0
- package/site/packages/sunset-1.0.0.tar.gz +0 -0
- package/site/packages/theme-cycler-1.0.0.tar.gz +0 -0
- package/site/packages/webhook-notify-1.0.0.tar.gz +0 -0
- package/site/registry.js +0 -813
- package/tools/build.mjs +0 -79
- package/tools/gen-assets.mjs +0 -67
- package/tools/lib/assets.mjs +0 -198
- package/tools/lib/oss.mjs +0 -75
- package/tools/new.mjs +0 -126
- package/tools/publish-oss.mjs +0 -119
- package/tools/serve.mjs +0 -63
- package/tools/validate.mjs +0 -44
- /package/{tools/lib → lib}/glyphs.mjs +0 -0
- /package/{tools/lib → lib}/icon.mjs +0 -0
- /package/{tools/lib → lib}/pack.mjs +0 -0
- /package/{tools/lib → lib}/plugin.mjs +0 -0
- /package/{tools/lib → lib}/tar.mjs +0 -0
- /package/{tools/lib → lib}/theme.mjs +0 -0
- /package/{tools → src}/account.mjs +0 -0
package/README.md
CHANGED
|
@@ -1,70 +1,31 @@
|
|
|
1
|
-
# made-market ·
|
|
1
|
+
# made-market · 码得插件市场 CLI
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
包装进固定的用户目录 `~/made`(可用 `MADE_HOME` 覆盖)之后才生效:桥接器每次启动扫描 `~/made/plugins` 与 `~/made/themes`,不需要登记,也不需要和配置文件放在一起。
|
|
6
|
-
|
|
7
|
-
| 类别 | 管什么 | 安装到 |
|
|
8
|
-
| --- | --- | --- |
|
|
9
|
-
| **主题** | 码得的外观:调色板、锁屏图、提示音 | `~/made/themes/<dir>/` |
|
|
10
|
-
| **管控** | 接收板侧事件、把命令放进设备队列、调外部 hook | `~/made/plugins/<dir>/` |
|
|
11
|
-
| **agent 运行时** | 接上一种助手的执行方式:会话、模型、进度、取消 | `~/made/plugins/<dir>/` |
|
|
12
|
-
|
|
13
|
-
桥接器里另有一份随代码发布的内置包 `bridge/builtin/`;查找顺序是「内置在前、用户目录在后」,同名时 `~/made` 覆盖内置。
|
|
14
|
-
|
|
15
|
-
技能不在本仓库建广场,沿用现成技能广场;人格归专家市场。边界与归类见码得仓库的 `docs/MARKETS.md`。
|
|
16
|
-
|
|
17
|
-
## 安装一个包
|
|
3
|
+
码得(made)公开插件市场的命令行工具。市场登记与分发主题、管控、agent 运行时三类包,本身不执行插件代码;包装到 `~/made` 后由桥接器自动扫描。
|
|
18
4
|
|
|
19
5
|
```sh
|
|
20
|
-
npx made-market
|
|
21
|
-
npx made-market
|
|
22
|
-
npx made-market
|
|
6
|
+
npx made-market list # 列出索引里的全部包
|
|
7
|
+
npx made-market search 日落 # 在包名、简介和标签里搜索
|
|
8
|
+
npx made-market info sunset # 看一个包的详情
|
|
9
|
+
npx made-market install sunset # 装到 ~/made/themes/,重启桥接器后生效
|
|
23
10
|
```
|
|
24
11
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
## 目录
|
|
12
|
+
## 发布新包
|
|
28
13
|
|
|
29
|
-
|
|
30
|
-
bin/ npx 入口(made-market)
|
|
31
|
-
packages/ 包源:themes/ control/ agents/,每包一个目录
|
|
32
|
-
registry/ 公开索引 index.json(生成物,是分发的唯一入口)
|
|
33
|
-
site/ 公开站点(静态,直接托管 site/ 即可)+ 归档 site/packages/
|
|
34
|
-
tools/ 校验、构建、打包、安装、发布(OSS / 上传服务)、脚手架
|
|
35
|
-
server/ 上传分发服务(用户上传 → 服务端校验 → 动态索引)
|
|
36
|
-
docs/ 包规范、安装说明、提交说明、后端部署
|
|
37
|
-
test/ 校验/打包/安装/上传服务的测试
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## 维护者命令
|
|
14
|
+
发布需要先登录(下载安装永远匿名,无需账号):
|
|
41
15
|
|
|
42
16
|
```sh
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
node tools/install.mjs alarm-clock --home ~/made # 不经 npx 直接装
|
|
47
|
-
npm test # 跑测试
|
|
17
|
+
npx made-market register <用户名>
|
|
18
|
+
npx made-market login <用户名>
|
|
19
|
+
npx made-market publish <包目录>
|
|
48
20
|
```
|
|
49
21
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
- [包规范 v1](docs/SPEC.md) — 目录结构、`market.json`、三类包的桥接器文件
|
|
53
|
-
- [安装说明](docs/INSTALL.md) — 一条命令或手动解包,卸载与安全边界
|
|
54
|
-
- [提交说明](docs/PUBLISH.md) — 从脚手架到发布(含 OSS)
|
|
55
|
-
- [上传服务](docs/BACKEND.md) — 自建后端:用户上传、服务端校验、动态索引、部署
|
|
56
|
-
|
|
57
|
-
## 用户上传
|
|
58
|
-
|
|
59
|
-
开放上传靠自建的上传分发服务(`server/`,无依赖 Node 服务):作者
|
|
60
|
-
`npx made-market publish <包目录>` 上传,服务端用与 `validate.mjs` 相同的规则
|
|
61
|
-
校验("CI 过审即上架"),版本不可变,索引动态重建,归档与元数据存阿里云 OSS。
|
|
62
|
-
部署与 token 管理见 [docs/BACKEND.md](docs/BACKEND.md)。
|
|
22
|
+
会话有效期 90 天,凭证存放在 `~/made/credentials.json`(权限 0600)。
|
|
63
23
|
|
|
64
|
-
##
|
|
24
|
+
## 服务地址
|
|
65
25
|
|
|
66
|
-
|
|
26
|
+
- 默认索引:GitHub 上的 `registry/index.json`(离线时回落到包内自带快照)
|
|
27
|
+
- 自建市场:`--server` 指定市场服务地址,或设 `MADE_MARKET_REGISTRY` / `MADE_MARKET_SERVER` 环境变量
|
|
67
28
|
|
|
68
|
-
##
|
|
29
|
+
## 服务端
|
|
69
30
|
|
|
70
|
-
|
|
31
|
+
本仓库([github.com/jobop/made-market](https://github.com/jobop/made-market))同时包含市场服务端(`server/`)与站点(`site/`),它们**不随本 npm 包分发**;`cli/lib` 里的包格式核心库与仓库内服务端共用同一份源码。
|
package/bin/made-market.mjs
CHANGED
|
@@ -12,10 +12,15 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import fs from 'node:fs';
|
|
14
14
|
import path from 'node:path';
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
15
|
+
import { fileURLToPath } from 'node:url';
|
|
16
|
+
import { ROOT, validatePackage } from '../lib/market.mjs';
|
|
17
|
+
import { DEFAULT_SERVER, install, loadRegistry, resolveHome, resolveRegistry } from '../src/install.mjs';
|
|
18
|
+
import { publish } from '../src/publish.mjs';
|
|
19
|
+
import { login, logout, register, resolvePassword, whoami } from '../src/account.mjs';
|
|
20
|
+
import { scaffold } from '../src/init.mjs';
|
|
21
|
+
|
|
22
|
+
// 版本号读 CLI 自己的 package.json(cli/),发布后即 node_modules/made-market/package.json。
|
|
23
|
+
const CLI_PACKAGE_JSON = fileURLToPath(new URL('../package.json', import.meta.url));
|
|
19
24
|
|
|
20
25
|
const KIND_LABELS = { theme: '主题', control: '管控', agent: 'agent 运行时' };
|
|
21
26
|
const KIND_ORDER = ['theme', 'control', 'agent'];
|
|
@@ -26,6 +31,8 @@ const USAGE = `码得 · 插件市场 (made-market)
|
|
|
26
31
|
npx made-market <命令> [参数] [选项]
|
|
27
32
|
|
|
28
33
|
命令
|
|
34
|
+
init <目录> --kind <类型> 生成插件脚手架(可直接 publish 的最小包,SDK 入口)
|
|
35
|
+
validate <包目录> 本地校验一个包(与市场服务端同一套规则)
|
|
29
36
|
list 列出索引里的全部包
|
|
30
37
|
search <关键词> 在包名、简介和标签里搜索
|
|
31
38
|
info <包 ID> 看一个包的详情:文件、校验和、安装位置、创建人
|
|
@@ -35,17 +42,18 @@ const USAGE = `码得 · 插件市场 (made-market)
|
|
|
35
42
|
login <用户名> 登录市场服务(发布的前提;90 天会话)
|
|
36
43
|
whoami 看当前登录的账号
|
|
37
44
|
logout 退出登录(吊销服务端会话并删除本地凭证)
|
|
38
|
-
rebuild-from-store 管理命令:从存储 manifests 全量重建
|
|
45
|
+
rebuild-from-store 管理命令:从存储 manifests 全量重建 SQLite 索引
|
|
39
46
|
|
|
40
47
|
选项
|
|
41
48
|
--home <目录> 包目录根,默认 $MADE_HOME 或 ~/made
|
|
42
|
-
--registry <路径|URL>
|
|
43
|
-
|
|
44
|
-
--server <URL> 市场服务地址(register/login/publish
|
|
45
|
-
|
|
49
|
+
--registry <路径|URL> 索引来源。默认 $MADE_MARKET_REGISTRY > 官方市场(联网拉实时索引,
|
|
50
|
+
失败回落本包自带索引,离线可装示例包)
|
|
51
|
+
--server <URL> 市场服务地址(register/login/publish/install;install 默认官方市场,
|
|
52
|
+
可用 $MADE_MARKET_SERVER 覆盖,已登录时 publish 也可从凭证读取)
|
|
46
53
|
--token <t> 发布 token(publish;默认 $MADE_MARKET_TOKEN 或登录凭证)
|
|
47
54
|
--password <pw> 密码(register/login;缺省在 TTY 下不回显输入)
|
|
48
|
-
|
|
55
|
+
选项
|
|
56
|
+
--kind theme|control|agent init 的包类型 / list、search 只列某一类
|
|
49
57
|
--json 以 JSON 输出
|
|
50
58
|
--force 目标目录已存在时覆盖
|
|
51
59
|
--dry-run 只校验并列出将要写入的文件
|
|
@@ -165,7 +173,7 @@ async function main() {
|
|
|
165
173
|
}
|
|
166
174
|
|
|
167
175
|
if (options.version) {
|
|
168
|
-
const pkg = JSON.parse(fs.readFileSync(
|
|
176
|
+
const pkg = JSON.parse(fs.readFileSync(CLI_PACKAGE_JSON, 'utf8'));
|
|
169
177
|
console.log(pkg.version);
|
|
170
178
|
return;
|
|
171
179
|
}
|
|
@@ -174,8 +182,25 @@ async function main() {
|
|
|
174
182
|
return;
|
|
175
183
|
}
|
|
176
184
|
|
|
177
|
-
//
|
|
178
|
-
|
|
185
|
+
// 脚手架:不依赖索引。
|
|
186
|
+
if (options.command === 'init') {
|
|
187
|
+
const dir = options.args[0];
|
|
188
|
+
if (!dir) throw new Error('init 需要一个包目录名,例如:npx made-market init my-theme --kind theme');
|
|
189
|
+
const written = scaffold({ dir, kind: options.kind, force: options.force });
|
|
190
|
+
console.log(`脚手架已生成(${options.kind || '?'} 包,共 ${written.length} 个文件):`);
|
|
191
|
+
for (const file of written) console.log(` ${file}`);
|
|
192
|
+
console.log('\n下一步:');
|
|
193
|
+
console.log(' 1. 改掉 market.json / theme.json(或 plugin.mjs)里的占位文案');
|
|
194
|
+
console.log(` 2. 本地校验:npx made-market validate ${dir}`);
|
|
195
|
+
console.log(` 3. 注册并发布:npx made-market register <用户名> --server https://made-market.link`);
|
|
196
|
+
console.log(` npx made-market publish ${dir} --server https://made-market.link`);
|
|
197
|
+
console.log(' 开发文档见市场主页「开发者指南」。');
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// 索引来源按需加载:--registry > $MADE_MARKET_REGISTRY > 官方市场实时索引
|
|
202
|
+
// (远端失败自动回落包内自带索引,离线可装示例包)。
|
|
203
|
+
// rebuild-from-store 不依赖全量索引。
|
|
179
204
|
const loadIndex = () => loadRegistry(resolveRegistry(options.registry));
|
|
180
205
|
|
|
181
206
|
if (options.command === 'list') {
|
|
@@ -228,11 +253,17 @@ async function main() {
|
|
|
228
253
|
|
|
229
254
|
if (options.command === 'install') {
|
|
230
255
|
if (!options.args.length) throw new Error('install 需要至少一个包 ID');
|
|
231
|
-
//
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
256
|
+
// 默认走市场 API:按包直查最新版本,不拉全量索引(大市场友好),
|
|
257
|
+
// 新发布的包立即可装。显式 --registry 才按索引文件走(自建源/精确复现用)。
|
|
258
|
+
if (!options.registry) {
|
|
259
|
+
const server = options.server || process.env.MADE_MARKET_SERVER || DEFAULT_SERVER;
|
|
260
|
+
try {
|
|
261
|
+
const { packages, base } = await resolveViaApi(options.args, server);
|
|
262
|
+
await install(options.args, { home: options.home, registry: base, index: { packages }, force: options.force, dryRun: options.dryRun });
|
|
263
|
+
return;
|
|
264
|
+
} catch (error) {
|
|
265
|
+
console.error(`线上市场不可用(${error.message}),改用包内自带索引(仅示例包,离线兜底)。`);
|
|
266
|
+
}
|
|
236
267
|
}
|
|
237
268
|
// 归档从索引所在的位置取:远端索引配远端归档,自带索引配包内归档,可离线。
|
|
238
269
|
const { source, index } = await loadIndex();
|
|
@@ -240,6 +271,27 @@ async function main() {
|
|
|
240
271
|
return;
|
|
241
272
|
}
|
|
242
273
|
|
|
274
|
+
// 本地校验:与服务端同一套规则(cli/lib/market.mjs 的 validatePackage),
|
|
275
|
+
// 上架前先在本地把错误清零,省一轮发布失败。
|
|
276
|
+
if (options.command === 'validate') {
|
|
277
|
+
const dir = options.args[0];
|
|
278
|
+
if (!dir) throw new Error('validate 需要一个包目录');
|
|
279
|
+
const marketPath = path.join(dir, 'market.json');
|
|
280
|
+
if (!fs.existsSync(marketPath)) throw new Error(`${dir} 里没有 market.json`);
|
|
281
|
+
const market = JSON.parse(fs.readFileSync(marketPath, 'utf8'));
|
|
282
|
+
const pkg = { id: path.basename(path.resolve(dir)), kind: market.kind, dir, market };
|
|
283
|
+
const result = validatePackage(pkg);
|
|
284
|
+
for (const message of result.errors) console.error(` 错误:${message}`);
|
|
285
|
+
for (const message of result.warnings) console.warn(` 警告:${message}`);
|
|
286
|
+
if (result.errors.length) {
|
|
287
|
+
console.error(`校验未通过:${result.errors.length} 个错误,${result.warnings.length} 个警告。`);
|
|
288
|
+
process.exitCode = 1;
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
console.log(`校验通过:${pkg.id} v${market.version}(${result.warnings.length} 个警告)。可以 publish。`);
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
|
|
243
295
|
if (options.command === 'publish') {
|
|
244
296
|
const dir = options.args[0];
|
|
245
297
|
if (!dir) throw new Error('publish 需要一个包目录');
|
|
@@ -274,16 +326,16 @@ async function main() {
|
|
|
274
326
|
}
|
|
275
327
|
|
|
276
328
|
if (options.command === 'rebuild-from-store') {
|
|
277
|
-
|
|
278
|
-
const {
|
|
279
|
-
|
|
280
|
-
const db =
|
|
329
|
+
// 索引库是服务端配套能力,rebuild-from-store 属管理命令,仅在仓库内可用(npm 包不含 server/)。
|
|
330
|
+
const { openDatabase, initSchema, rebuildFromStore } = await import('../../server/db.mjs');
|
|
331
|
+
const { createStore } = await import("../../server/store.mjs");
|
|
332
|
+
const db = openDatabase();
|
|
281
333
|
try {
|
|
282
334
|
await initSchema(db);
|
|
283
335
|
const count = await rebuildFromStore(db, createStore(), { log: (key) => console.log(` 同步 ${key}`) });
|
|
284
336
|
console.log(`索引重建完成:${count} 条版本事实。`);
|
|
285
337
|
} finally {
|
|
286
|
-
|
|
338
|
+
db.close();
|
|
287
339
|
}
|
|
288
340
|
return;
|
|
289
341
|
}
|
|
@@ -12,7 +12,14 @@ import { checkTheme, THEME_NAME } from './theme.mjs';
|
|
|
12
12
|
import { BOARD_COMMANDS, BOARD_EVENTS, PACKAGE_DIR, checkNames, parseSettingsSpec, scanPluginSource } from './plugin.mjs';
|
|
13
13
|
import { MAX_JSON_BYTES, validateIcon } from './icon.mjs';
|
|
14
14
|
|
|
15
|
+
/** 仓库根(dev 时 = 仓库根;发布包里没有 packages/,这个只给仓库内工具与测试用)。 */
|
|
15
16
|
export const ROOT = path.resolve(fileURLToPath(new URL('../..', import.meta.url)));
|
|
17
|
+
/**
|
|
18
|
+
* 包根:lib/ 的上一级。仓库里是 cli/(自带 registry/index.json 的生成物),
|
|
19
|
+
* 发布包里就是包根(npm 包无 cli/ 前缀)。找包内自带资源一律用它,不能用 ROOT——
|
|
20
|
+
* 发布后 ROOT 会落到 node_modules/,这就是「找不到索引」bug 的根源。
|
|
21
|
+
*/
|
|
22
|
+
export const PKG_ROOT = path.resolve(fileURLToPath(new URL('..', import.meta.url)));
|
|
16
23
|
export const API_VERSION = 1;
|
|
17
24
|
export const SEMVER = /^\d+\.\d+\.\d+$/;
|
|
18
25
|
export const MAX_DESCRIPTION = 4000;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "made-market",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "码得(made
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "码得(made)公开插件市场的命令行工具:列出、搜索、安装主题/管控/agent 包,以及登录后发布新包。市场服务端在 github.com/jobop/made-market 仓库内,不随本包分发。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"engines": {
|
|
@@ -12,18 +12,16 @@
|
|
|
12
12
|
},
|
|
13
13
|
"files": [
|
|
14
14
|
"bin/",
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"registry/",
|
|
19
|
-
"site/",
|
|
20
|
-
"docs/",
|
|
15
|
+
"src/",
|
|
16
|
+
"lib/",
|
|
17
|
+
"registry/index.json",
|
|
21
18
|
"README.md",
|
|
22
19
|
"LICENSE"
|
|
23
20
|
],
|
|
24
21
|
"repository": {
|
|
25
22
|
"type": "git",
|
|
26
|
-
"url": "git+https://github.com/jobop/made-market.git"
|
|
23
|
+
"url": "git+https://github.com/jobop/made-market.git",
|
|
24
|
+
"directory": "cli"
|
|
27
25
|
},
|
|
28
26
|
"homepage": "https://jobop.github.io/made-market/",
|
|
29
27
|
"bugs": {
|
|
@@ -44,15 +42,7 @@
|
|
|
44
42
|
"registry": "https://registry.npmjs.org/"
|
|
45
43
|
},
|
|
46
44
|
"scripts": {
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"build": "node tools/build.mjs",
|
|
50
|
-
"serve": "node tools/serve.mjs",
|
|
51
|
-
"install": "node tools/install.mjs",
|
|
52
|
-
"publish:oss": "node tools/publish-oss.mjs",
|
|
53
|
-
"rebuild-index": "node bin/made-market.mjs rebuild-from-store",
|
|
54
|
-
"test": "node --test",
|
|
55
|
-
"test:pg": "node --test --test-timeout=120000 --test-concurrency=1",
|
|
56
|
-
"prepublishOnly": "node tools/validate.mjs && node tools/build.mjs && node --test"
|
|
45
|
+
"prepublishOnly": "cd .. && node tools/validate.mjs && node tools/build.mjs && node --test",
|
|
46
|
+
"prepack": "mkdir -p registry && cp ../registry/index.json registry/index.json"
|
|
57
47
|
}
|
|
58
48
|
}
|
package/registry/index.json
CHANGED
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
],
|
|
81
81
|
"payloadBytes": 209717,
|
|
82
82
|
"archiveBytes": 39822,
|
|
83
|
-
"sha256": "
|
|
83
|
+
"sha256": "b656724a6be3466c0ad52010bfa9f2a3b043595b6b7b6bed90a01bdfcca3ba95",
|
|
84
84
|
"download": "packages/sunset-1.0.0.tar.gz",
|
|
85
85
|
"swatch": [
|
|
86
86
|
"#e0834a",
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
],
|
|
154
154
|
"payloadBytes": 212917,
|
|
155
155
|
"archiveBytes": 44910,
|
|
156
|
-
"sha256": "
|
|
156
|
+
"sha256": "3894aadcfdba77eb351abc4381d3b76141ed0d6a15d8b75a982a64092e1300fa",
|
|
157
157
|
"download": "packages/ocean-1.0.0.tar.gz",
|
|
158
158
|
"swatch": [
|
|
159
159
|
"#2fa3b8",
|
|
@@ -226,7 +226,7 @@
|
|
|
226
226
|
],
|
|
227
227
|
"payloadBytes": 198517,
|
|
228
228
|
"archiveBytes": 31125,
|
|
229
|
-
"sha256": "
|
|
229
|
+
"sha256": "ff66fd400882e4ce3017b32782825aca59e60e5a407c793b175d2c4500c1cb97",
|
|
230
230
|
"download": "packages/graphite-1.0.0.tar.gz",
|
|
231
231
|
"swatch": [
|
|
232
232
|
"#8e9aa6",
|
|
@@ -299,7 +299,7 @@
|
|
|
299
299
|
],
|
|
300
300
|
"payloadBytes": 206517,
|
|
301
301
|
"archiveBytes": 34163,
|
|
302
|
-
"sha256": "
|
|
302
|
+
"sha256": "24dbf64bb96520a16efbfbb553ccff91190ae4fde5b18444f3c6a7ee97b0993f",
|
|
303
303
|
"download": "packages/bamboo-1.0.0.tar.gz",
|
|
304
304
|
"swatch": [
|
|
305
305
|
"#5aa85e",
|
|
@@ -367,7 +367,7 @@
|
|
|
367
367
|
],
|
|
368
368
|
"payloadBytes": 1576,
|
|
369
369
|
"archiveBytes": 1067,
|
|
370
|
-
"sha256": "
|
|
370
|
+
"sha256": "c3f6afae9ef5f47b622c74c2faf7174ba2ba38a9db2d19651a992874fd6f5f9a",
|
|
371
371
|
"download": "packages/theme-cycler-1.0.0.tar.gz",
|
|
372
372
|
"sourcePath": "packages/control/theme-cycler"
|
|
373
373
|
},
|
|
@@ -430,7 +430,7 @@
|
|
|
430
430
|
],
|
|
431
431
|
"payloadBytes": 3023,
|
|
432
432
|
"archiveBytes": 1808,
|
|
433
|
-
"sha256": "
|
|
433
|
+
"sha256": "ab7acdc88895a391596182fa9425e1e81d0b7ec5de73c035b9fe0ee2a7a3a123",
|
|
434
434
|
"download": "packages/webhook-notify-1.0.0.tar.gz",
|
|
435
435
|
"sourcePath": "packages/control/webhook-notify"
|
|
436
436
|
},
|
|
@@ -492,7 +492,7 @@
|
|
|
492
492
|
],
|
|
493
493
|
"payloadBytes": 2370,
|
|
494
494
|
"archiveBytes": 1450,
|
|
495
|
-
"sha256": "
|
|
495
|
+
"sha256": "43512f16e9559f5984ab9cf827b9b8e0e7c5671bc1cd1cf211adc0b0344e9f37",
|
|
496
496
|
"download": "packages/key-chime-1.0.0.tar.gz",
|
|
497
497
|
"sourcePath": "packages/control/key-chime"
|
|
498
498
|
},
|
|
@@ -554,7 +554,7 @@
|
|
|
554
554
|
],
|
|
555
555
|
"payloadBytes": 3940,
|
|
556
556
|
"archiveBytes": 1959,
|
|
557
|
-
"sha256": "
|
|
557
|
+
"sha256": "c131b7a0e67a9e0a1e4ab23b9dcf5ec05f7bb73c8b43621fe849c6762009c4e0",
|
|
558
558
|
"download": "packages/alarm-clock-1.0.0.tar.gz",
|
|
559
559
|
"sourcePath": "packages/control/alarm-clock"
|
|
560
560
|
},
|
|
@@ -621,7 +621,7 @@
|
|
|
621
621
|
],
|
|
622
622
|
"payloadBytes": 3793,
|
|
623
623
|
"archiveBytes": 1612,
|
|
624
|
-
"sha256": "
|
|
624
|
+
"sha256": "7f3d1045be427b2d4cbe0b070cb63ca0fc1fe127c63201f9423f23970d37f736",
|
|
625
625
|
"download": "packages/demo-echo-1.0.0.tar.gz",
|
|
626
626
|
"icon": {
|
|
627
627
|
"format": "indexed4",
|
|
@@ -702,7 +702,7 @@
|
|
|
702
702
|
],
|
|
703
703
|
"payloadBytes": 6098,
|
|
704
704
|
"archiveBytes": 2672,
|
|
705
|
-
"sha256": "
|
|
705
|
+
"sha256": "0a33b62f6f186a80d370012ddd146f9c504daf182503cc23cb4c13bd9c7e35d3",
|
|
706
706
|
"download": "packages/ollama-agent-1.0.0.tar.gz",
|
|
707
707
|
"icon": {
|
|
708
708
|
"format": "indexed4",
|
|
@@ -786,7 +786,7 @@
|
|
|
786
786
|
],
|
|
787
787
|
"payloadBytes": 5814,
|
|
788
788
|
"archiveBytes": 2456,
|
|
789
|
-
"sha256": "
|
|
789
|
+
"sha256": "541eef0c992b636cfe5d0b8f1f03dffa15a58b414f061ed392971bd3723a6c0f",
|
|
790
790
|
"download": "packages/shell-agent-1.0.0.tar.gz",
|
|
791
791
|
"icon": {
|
|
792
792
|
"format": "indexed4",
|