@my-life-buddies/cli 0.27.1-dev.1 → 0.28.0-dev.1
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 +15 -33
- package/dist/bin/buddy.js +11 -37
- package/dist/bin/buddy.js.map +2 -2
- package/dist/bin/core.js +100 -201
- package/dist/bin/core.js.map +4 -4
- package/dist/bin/preview.js +2 -57
- package/dist/bin/preview.js.map +3 -3
- package/package.json +3 -5
- package/resources/README.md +2 -2
- package/resources/brand/README.md +1 -1
- package/dist/web/app.css +0 -758
- package/dist/web/app.js +0 -1155
- package/dist/web/assets/developer-platform-icon.png.base64 +0 -1
- package/dist/web/brand.css +0 -100
- package/dist/web/chat-markdown.js +0 -181
- package/dist/web/diagnostics.js +0 -193
- package/dist/web/index.html +0 -268
- package/dist/web/products.css +0 -19
- package/dist/web/products.js +0 -104
- package/dist/web/tokens.css +0 -15
- package/dist/web/tool-inventory.js +0 -94
- package/dist/web/widgets.css +0 -62
- package/dist/web/widgets.js +0 -317
- /package/dist/{web → bin/resources}/widget-document.js +0 -0
package/README.md
CHANGED
|
@@ -292,15 +292,9 @@ buddy-cli-sit init --mode create --directory ./study-buddy \
|
|
|
292
292
|
→ 基础技术自测 → 打开真实预览 → 开发者体验并反馈
|
|
293
293
|
```
|
|
294
294
|
|
|
295
|
-
CLI 0.15.0 起,Creator 使用独立 npm 包 `@my-life-buddies/buddy-creator-skill
|
|
295
|
+
CLI 0.15.0 起,Creator 使用独立 npm 包 `@my-life-buddies/buddy-creator-skill`。每次进入或恢复创作都查询公共 npm latest 最新正式版,校验后缓存到 `~/.cache/buddy-cli-sit/creator-skills/buddy-creator-skill/<版本>/`,在 `.buddy/creator/skill-lock.json` 记录本次准确版本与完整性摘要。只有查证缓存对应最新版后才复用;版本记录不会阻止升级,恢复时也需要联网。Skill 负责人独立发包,不再要求重发 CLI。
|
|
296
296
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
```bash
|
|
300
|
-
buddy-cli-sit init --mode create --directory ./study-buddy --creator-version 1.6.0
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
CLI 只接受协议兼容的准确稳定版本,保留原始背景、身份与作品。未改动的旧版生成接续说明会备份后迁移;开发者自定义说明不覆盖。新项目下载失败会报错并保留登记身份,可在同目录重试。
|
|
297
|
+
不再提供 `--creator-version` 固定版本入口。CLI 查询 latest 后验证协议及完整性,保留原始背景、身份与作品。未改动的旧版生成接续说明会备份后迁移;开发者自定义说明不覆盖。查询、下载或协议校验失败都会报错,不退回旧缓存;已有资料和登记身份保留,可在同目录重试。
|
|
304
298
|
|
|
305
299
|
维护者本地联调:
|
|
306
300
|
|
|
@@ -309,11 +303,11 @@ BUDDY_CREATOR_SKILL_PATH=/absolute/path/buddy-creator-skill \
|
|
|
309
303
|
buddy-cli-sit init --mode create --directory ./study-buddy
|
|
310
304
|
```
|
|
311
305
|
|
|
312
|
-
|
|
306
|
+
本地来源同样记录在项目中,仅用于显式 Skill 联调,不要求发布。每次联调都需要提供该环境变量;清除后会查询公共 npm latest,不因旧的本地版本记录继续使用本地目录。Python 执行仍需 3.9+,不安装 Python 第三方依赖。阶段与创作规则由 Skill 的 `references/cli-workflow.md` 管理,CLI 只处理身份、目录和有效交付后的开发接续。
|
|
313
307
|
|
|
314
|
-
创作资料保存在 `.buddy/creator/`。CLI 支持 Creator 接入协议 1 和 2
|
|
308
|
+
创作资料保存在 `.buddy/creator/`。CLI 支持 Creator 接入协议 1 和 2;最新版 Creator 统一使用 `workflowVersion=2` 的三册(定位、知识与方法、付费服务);旧四册由 Creator 的 open 保存历史后迁移,复用资料与可用进度,补充缺口并重新确认发生变化的内容,不把旧完成标记直接当作新交付。按该作品工作流完成手册、小挂件清单、当前原型和设计验收,并通过交付校验,Skill 才返回 `directive=creator_complete`、`completion.status=ready` 和有效的 `completion.manualPath`;明确确认不使用小挂件时无需制造原型。完整创建任务中,当前 Coding Agent 退出采访,在同一轮重新读取 `HANDOFF.md`、真实手册、同目录实际 manifest、来源映射及小挂件设计与验收产物,自动开始开发,无需再说“继续”。不按旧四册文件名硬编码交付清单;手册确认或文件存在不能单独触发开发。只有影响实现的关键缺口才补问;仅设计、流程测试和暂停仍遵守原范围。
|
|
315
309
|
|
|
316
|
-
|
|
310
|
+
新版三册还需读取 `completion.capabilityContractPath` 指向的能力契约,按 Skill 的 `references/implementation-handoff.md` 保存 `implementation-report.json`,记录当前契约版本、逐需求实现和真实验证证据,再运行 `handoff-check`。该命令只核对报告结构、版本及覆盖,仍需实际 Runtime 验证;迁移后的项目也须通过当前三册交付校验。「平台能力」中的方案来自 `service.blueprint.data.capabilityPlan`;旧资料迁移时可读取 `proactiveReminders`,方案展示不代表已经启用。
|
|
317
311
|
|
|
318
312
|
手册中的角色、方法、处理路径和持续服务要求,都是开发依据。Coding Agent 按这些要求判断是否需要工具、专业方法、特定处理步骤、记忆与历史整理,技术选择不逐项交给开发者;完成后向开发者简要说明需求来源、实现位置、检查结果和缺口,不要求额外生成 README。已经明确的直接做,不能实现的如实说明;只有元数据或默认配置,不代表手册要求已经完成。
|
|
319
313
|
|
|
@@ -323,7 +317,7 @@ BUDDY_CREATOR_SKILL_PATH=/absolute/path/buddy-creator-skill \
|
|
|
323
317
|
buddy-cli-sit init --mode direct --directory ./study-buddy
|
|
324
318
|
```
|
|
325
319
|
|
|
326
|
-
创作阶段的 `package.json` 只有顶层 `buddyId`;CLI
|
|
320
|
+
创作阶段的 `package.json` 只有顶层 `buddyId`;CLI 用它从平台读取最新资料并重新校验归属,不另建搭子。创作中断后在原目录重试 `--mode create`,检查最新 Creator 后接续原作品;手册完成后执行 `--mode direct`,保留已有业务代码与数据声明,补齐 npm 字段和缺失的工程文件;缺失 `data-access.json` 时生成空 requirements 数组。旧 `--mode interview` 已停止使用。
|
|
327
321
|
|
|
328
322
|
两条主线都遵循同一个登记规则:名称、`tagline`(一句话介绍)、`intro`(完整介绍)先同步到平台,返回的 ID 写入 `package.json.buddyId`。公开资料不在本地留副本。若平台已创建成功、本地写盘失败,可用 `--buddy-id <平台返回的 ID>` 恢复;它不是自定义 ID 的入口。
|
|
329
323
|
|
|
@@ -337,7 +331,7 @@ Creator 例外保留首次创作背景快照,用于接续同一作品;恢复
|
|
|
337
331
|
|
|
338
332
|
你明确要求自动体验或多场景回归时,Coding Agent 再按指定范围执行。`push` 仍需要明确授权。若你只要求初始化、修改某段代码或完成设计,也不会因为这套默认流程就自动启动预览。
|
|
339
333
|
|
|
340
|
-
这些规则通过 CLI 帮助、命令输出和 Creator 的 `HANDOFF.md` 交给 Coding Agent;CLI 不会在 `init`
|
|
334
|
+
这些规则通过 CLI 帮助、命令输出和 Creator 的 `HANDOFF.md` 交给 Coding Agent;CLI 不会在 `init` 内自动执行采访、编写业务代码或批量调用模型。重试创作时查询最新 Creator 并刷新生成的接续说明,保留原作品和开发者修改的文件。已有完整工程且保留 Creator 记录时,也可执行 `init --mode create` 接续创作,业务文件不会重建;没有 Creator 历史的直接开发工程继续按已有需求开发。
|
|
341
335
|
|
|
342
336
|
## 查看和修改搭子资料
|
|
343
337
|
|
|
@@ -420,13 +414,13 @@ CLI 将文件原样放入源码包,启动入口只调用 `BuddyServer.start(cr
|
|
|
420
414
|
|
|
421
415
|
## 在模拟器里聊一次
|
|
422
416
|
|
|
423
|
-
CLI 0.13.0 起,默认预览 UI 由后台提供。后台「获取连接指令」返回 `buddy-cli-sit preview --buddy-id <id> --developer-web <后台 URL> --app-server <平台 URL> --no-open`;请在对应工程目录执行。CLI 0.17.7 起支持 `--no-open`,只连接工程,返回原调试页即可,不重复打开网页;页面已关闭时可打开终端打印的地址。直接执行 `buddy-cli-sit preview`
|
|
417
|
+
CLI 0.13.0 起,默认预览 UI 由后台提供。后台「获取连接指令」返回 `buddy-cli-sit preview --buddy-id <id> --developer-web <后台 URL> --app-server <平台 URL> --no-open`;请在对应工程目录执行。CLI 0.17.7 起支持 `--no-open`,只连接工程,返回原调试页即可,不重复打开网页;页面已关闭时可打开终端打印的地址。直接执行 `buddy-cli-sit preview` 仍自动打开后台。
|
|
424
418
|
|
|
425
419
|
CLI 校验工程身份,后台验证账号与搭子归属。同一电脑、同一工程已有连接时,新命令复用它并退出,由原 CLI 继续维持连接;请保持原终端运行。连接其他电脑或工程前,请先退出原 CLI。
|
|
426
420
|
|
|
427
421
|
后台显示「未连接本地工程」「已连接但 DEV 未启动」「DEV 运行中」。CLI 主动发起 HTTPS 连接,后台通过受限调试接口控制本机 Runtime,浏览器不需访问 localhost。工程路径用于显示连接身份,源码不会经调试通道上传。连接每 500 ms 交换待处理请求;持续中断 10 秒停止 DEV,后台最迟约 17 秒显示断开;短暂断网恢复后手动启动 DEV;若后台已结束或撤销连接,CLI 会退出,需要重新执行连接指令。页面刷新只恢复状态,CLI 退出停止 DEV 并断开。
|
|
428
422
|
|
|
429
|
-
|
|
423
|
+
CLI 0.28.0-dev.1 起,调试页面完全由后台维护,安装包不再包含独立本地网页。`--local`、`--port` 已停用,使用旧参数会提示改用 `buddy-cli-sit preview`。本地连接不需要公网隧道;DEV、日志、消息、小挂件和商品调试接口继续保留,预览不会提审或发布。
|
|
430
424
|
|
|
431
425
|
以下两个命令按需选择,不必同时启动同一个工程:
|
|
432
426
|
|
|
@@ -523,27 +517,15 @@ buddy-cli-sit products submit --resume <submissionId>
|
|
|
523
517
|
|
|
524
518
|
提交结果包含准确的审核快照 ID。只有曾上架商品(包括已下架商品)才可独立选择已有版本提交修改;当前线上代码支持本次修改时,可以选择当前已发布版本,之后单独发布修改。首次商品仅可通过此命令恢复原上传的商品提交失败,仍须与关联搭子版本一起发布。
|
|
525
519
|
|
|
526
|
-
###
|
|
520
|
+
### 在后台确认发布
|
|
527
521
|
|
|
528
|
-
|
|
529
|
-
buddy-cli-sit release --from-push <pushId>
|
|
530
|
-
buddy-cli-sit release --from-submission <submissionId>
|
|
531
|
-
buddy-cli-sit release --from-submission <submissionId> --products-only
|
|
532
|
-
buddy-cli-sit release --version <版本> --code-only
|
|
533
|
-
```
|
|
534
|
-
|
|
535
|
-
前两种方式使用原回执中的版本与获批快照。`--products-only` 仅用于曾上架商品的修改,要求目标仍为当前已发布搭子版本;首次商品不能使用此选项,必须随关联搭子版本一起发布。已下架商品发布修改后仍保持下架。只希望更新代码时,明确使用 `--code-only`,商品内容保持原样。读取回执失败或商品提交失败不会被自动当成空商品清单继续发布。也可以到后台“版本与发布”确认本次发布内容。
|
|
522
|
+
CLI 负责上传代码、提交明确选中的商品以及查询或恢复这些操作。上传、审核和构建成功后,在开发者后台“版本与发布”核对本次版本与获批商品快照,再确认发布;CLI 不提供最终发布命令。
|
|
536
523
|
|
|
537
|
-
|
|
538
|
-
buddy-cli-sit release --status <releaseId>
|
|
539
|
-
buddy-cli-sit release --resume <releaseId>
|
|
540
|
-
buddy-cli-sit release --retry <releaseId>
|
|
541
|
-
buddy-cli-sit release --cancel <releaseId>
|
|
542
|
-
```
|
|
524
|
+
首次商品必须随关联搭子版本一起发布。曾上架商品的修改可以在当前线上代码支持时,从后台单独发布;已下架商品发布修改后仍保持下架。只希望更新代码时,在后台明确选择仅发布代码,商品内容保持原样。
|
|
543
525
|
|
|
544
|
-
|
|
526
|
+
发布任务的状态查询、重试和取消也在后台操作。取消阻止本任务后续激活商品,但不回滚已经开始的代码部署。后台显示发布成功后,仍需确认实际服务体验。下架仍在后台操作。
|
|
545
527
|
|
|
546
|
-
|
|
528
|
+
CLI 的上传和商品补提恢复记录按平台、账号、搭子隔离,保存在本机私有操作目录;记录不包含登录凭据,恢复使用当前账号重新鉴权。
|
|
547
529
|
|
|
548
530
|
### 上传前检查
|
|
549
531
|
|
|
@@ -645,6 +627,6 @@ unset BUDDY_CLI_PIN_VERSION
|
|
|
645
627
|
|
|
646
628
|
SIT 平台固定为 `https://buddies.sit.dots.chat`。CLI 地址约束是客户端防误连机制;服务端仍须独立校验身份、Token 和权限,不是完整的服务端安全隔离。
|
|
647
629
|
|
|
648
|
-
SIT `push` 触发异步构建,显示 `building/ready/failed` 及失败原因,最多等待一分钟;仍在构建时用 `buddy-cli-sit status`
|
|
630
|
+
SIT `push` 触发异步构建,显示 `building/ready/failed` 及失败原因,最多等待一分钟;仍在构建时用 `buddy-cli-sit status` 查询,不能重复上传当作查询。审核通过、构建就绪和线上发布是不同状态;确认上传回执中的版本与商品快照后,在开发者后台“版本与发布”确认发布,并核对实际服务体验。
|
|
649
631
|
|
|
650
632
|
DEV 要同时看到 Runtime 初始化完成和服务端在线后才就绪。后台的 Widget 编辑需配套 Server 和 Web 部署,只开放 `operations.userUI` 授权的记录操作,并遵守字段只读限制;409 冲突需重读核对,不能自动覆盖。图片上传与关闭后的聚合通知、API 和错误处理见 [Widget 指南](../../docs/preview/widgets.md)。目标 App 仍需提供编辑桥接并单独验收,后台预览成功不代表手机端已支持。记录编辑不代表多人实时同步、玩家身份认证或同一 Widget 内的玩家私有数据隔离;付费服务不在此范围。
|
package/dist/bin/buddy.js
CHANGED
|
@@ -96,7 +96,6 @@ import {
|
|
|
96
96
|
} from "./preview.js";
|
|
97
97
|
var PREVIEW_COMMAND_HELP = `\u7528\u6CD5:
|
|
98
98
|
buddy-cli-sit preview [--directory <\u9879\u76EE\u76EE\u5F55>] [--buddy-id <\u642D\u5B50 ID>] [--developer-web <\u540E\u53F0 URL>] [--app-server <App Server URL>] [--no-open]
|
|
99
|
-
buddy-cli-sit preview --local [--directory <\u9879\u76EE\u76EE\u5F55>] [--port <\u672C\u5730\u7AEF\u53E3>]
|
|
100
99
|
|
|
101
100
|
\u8BF4\u660E:
|
|
102
101
|
\u9ED8\u8BA4\u6253\u5F00\u5F53\u524D\u642D\u5B50\u7684\u521B\u9020\u8005\u540E\u53F0\u300C\u5F00\u53D1\u8C03\u8BD5\u300D\uFF0C\u8FDE\u63A5\u672C\u5730\u5DE5\u7A0B\uFF1B\u5728\u540E\u53F0\u542F\u52A8/\u505C\u6B62 DEV\u3001\u8BD5\u804A\u3001\u67E5\u770B Widget\u3001\u65F6\u95F4\u7EBF\u4E0E\u534F\u8BAE\u65E5\u5FD7\u3001\u771F\u673A\u9884\u89C8\u3002
|
|
@@ -104,8 +103,7 @@ var PREVIEW_COMMAND_HELP = `\u7528\u6CD5:
|
|
|
104
103
|
\u540E\u53F0\u590D\u5236\u7684\u547D\u4EE4\u5E26 --no-open\uFF0C\u53EA\u8FDE\u63A5\u5DE5\u7A0B\uFF0C\u539F\u8C03\u8BD5\u9875\u81EA\u52A8\u63A5\u5165\uFF0C\u4E0D\u91CD\u590D\u6253\u5F00\u7F51\u9875\uFF1B\u9875\u9762\u5173\u95ED\u540E\u53EF\u6253\u5F00\u7EC8\u7AEF\u4E2D\u7684\u5730\u5740\u3002
|
|
105
104
|
\u8FDE\u63A5\u540E\u5373\u53EF\u67E5\u770B\u5DE5\u7A0B\u6A21\u578B\u548C\u5DE5\u5177\u5217\u8868\uFF0C\u65E0\u9700\u53D1\u9001\u6D88\u606F\uFF1BCLI \u53EA\u8BFB\u73B0\u6709\u6E90\u4EE3\u7801\uFF0C\u52A8\u6001\u914D\u7F6E\u6807\u6CE8\u5F85\u786E\u8BA4\uFF0C\u4FDD\u5B58\u540E\u81EA\u52A8\u5237\u65B0\u3002
|
|
106
105
|
\u4E0D\u6267\u884C\u4E1A\u52A1\u5DE5\u5382\u6765\u63A2\u6D4B\u914D\u7F6E\uFF0C\u4E0D\u65B0\u589E\u5DE5\u7A0B\u914D\u7F6E\u6587\u4EF6\uFF0C\u4E5F\u4E0D\u8981\u6C42\u4E3A\u6B64\u5347\u7EA7 Runtime\u3002\u6BCF\u6B21\u8C03\u7528\u7684\u5B9E\u9645\u6A21\u578B\u4E0E\u5DE5\u5177\u4EE5\u6A21\u578B\u8C03\u7528\u65E5\u5FD7\u4E3A\u51C6\u3002
|
|
107
|
-
|
|
108
|
-
--local \u662F\u540E\u53F0\u4E0D\u53EF\u7528\u65F6\u7684\u72EC\u7ACB\u672C\u5730\u9884\u89C8\u5907\u7528\u5165\u53E3\uFF0C--port \u4EC5\u4E0E --local \u4E00\u8D77\u4F7F\u7528\u3002
|
|
106
|
+
\u8C03\u8BD5\u9875\u9762\u7531\u521B\u9020\u8005\u540E\u53F0\u63D0\u4F9B\uFF1BCLI \u53EA\u8FDE\u63A5\u548C\u8FD0\u884C\u672C\u5730\u5DE5\u7A0B\uFF0C\u4E0D\u63D0\u4F9B\u72EC\u7ACB\u672C\u5730\u7F51\u9875\u3002
|
|
109
107
|
\u4FDD\u6301\u7EC8\u7AEF\u8FD0\u884C\uFF1BCtrl+C \u6216\u5173\u95ED\u7EC8\u7AEF\u4F1A\u505C\u6B62 DEV \u5E76\u65AD\u5F00\u8FDE\u63A5\uFF0C\u5237\u65B0\u540E\u53F0\u4E0D\u4F1A\u81EA\u52A8\u542F\u52A8 DEV\u3002
|
|
110
108
|
DEV \u5931\u8D25\u5148\u67E5\u770B\u5177\u4F53\u9519\u8BEF\u548C\u8FD0\u884C\u65E5\u5FD7\uFF1B\u5347\u7EA7 CLI \u540E\u9000\u51FA\u65E7 preview \u8FDB\u7A0B\u5E76\u91CD\u65B0\u8FDE\u63A5\uFF0C\u518D\u542F\u52A8 DEV\u3002
|
|
111
109
|
\u540E\u53F0\u53EF\u5F3A\u5236\u65AD\u8FDE\uFF1B\u672C\u673A\u505C\u6B62\u672A\u786E\u8BA4\u65F6\uFF0C\u5728\u539F\u5DE5\u7A0B\u76EE\u5F55\u6267\u884C buddy-cli-sit dev stop\u3002\u8BE5\u547D\u4EE4\u4E0D\u91CD\u8FDE\u3001\u4E0D\u91CD\u542F\u3002
|
|
@@ -133,9 +131,7 @@ function parsePreviewArguments(args) {
|
|
|
133
131
|
let directory = ".";
|
|
134
132
|
let directorySet = false;
|
|
135
133
|
let appServer;
|
|
136
|
-
let port;
|
|
137
134
|
let help = false;
|
|
138
|
-
let local = false;
|
|
139
135
|
let noOpen = false;
|
|
140
136
|
let refreshToken = false;
|
|
141
137
|
let buddyId;
|
|
@@ -152,11 +148,7 @@ function parsePreviewArguments(args) {
|
|
|
152
148
|
help = true;
|
|
153
149
|
continue;
|
|
154
150
|
}
|
|
155
|
-
if (flag === "--local") {
|
|
156
|
-
if (local) throw new Error("--local \u4E0D\u80FD\u91CD\u590D");
|
|
157
|
-
local = true;
|
|
158
|
-
continue;
|
|
159
|
-
}
|
|
151
|
+
if (flag === "--local" || flag === "--port") throw new Error(`${flag} \u5DF2\u505C\u7528\uFF1B\u8BF7\u8FD0\u884C buddy-cli-sit preview\uFF0C\u5728\u521B\u9020\u8005\u540E\u53F0\u5F00\u53D1\u8C03\u8BD5\u3002`);
|
|
160
152
|
if (flag === "--no-open") {
|
|
161
153
|
if (noOpen) throw new Error("--no-open \u4E0D\u80FD\u91CD\u590D");
|
|
162
154
|
noOpen = true;
|
|
@@ -177,10 +169,6 @@ function parsePreviewArguments(args) {
|
|
|
177
169
|
directory = value;
|
|
178
170
|
directorySet = true;
|
|
179
171
|
break;
|
|
180
|
-
case "--port":
|
|
181
|
-
if (port !== void 0 || !/^\d+$/u.test(value) || Number(value) < 1 || Number(value) > 65535) throw new Error("--port \u5FC5\u987B\u662F 1\u201365535 \u7684\u7AEF\u53E3\u4E14\u4E0D\u80FD\u91CD\u590D");
|
|
182
|
-
port = Number(value);
|
|
183
|
-
break;
|
|
184
172
|
case "--app-server":
|
|
185
173
|
appServer = setOnce(appServer, value, flag);
|
|
186
174
|
break;
|
|
@@ -188,16 +176,7 @@ function parsePreviewArguments(args) {
|
|
|
188
176
|
throw new Error(`\u672A\u77E5 preview \u53C2\u6570 ${flag ?? ""}`);
|
|
189
177
|
}
|
|
190
178
|
}
|
|
191
|
-
|
|
192
|
-
if (local && developerWeb) throw new Error("--local \u4E0D\u9700\u8981 --developer-web");
|
|
193
|
-
if (local && noOpen) throw new Error("--no-open \u4EC5\u7528\u4E8E\u540E\u53F0\u9884\u89C8\uFF0C\u4E0D\u80FD\u548C --local \u4E00\u8D77\u4F7F\u7528");
|
|
194
|
-
return Object.freeze({ directory, appServer, help, local, buddyId, developerWeb, ...port === void 0 ? {} : { port }, ...refreshToken ? { refreshToken: true } : {}, ...noOpen ? { noOpen: true } : {} });
|
|
195
|
-
}
|
|
196
|
-
function waitForAbort(signal) {
|
|
197
|
-
if (signal.aborted) return Promise.resolve();
|
|
198
|
-
return new Promise((resolveWait) => {
|
|
199
|
-
signal.addEventListener("abort", () => resolveWait(), { once: true });
|
|
200
|
-
});
|
|
179
|
+
return Object.freeze({ directory, appServer, help, buddyId, developerWeb, ...refreshToken ? { refreshToken: true } : {}, ...noOpen ? { noOpen: true } : {} });
|
|
201
180
|
}
|
|
202
181
|
function previewHandle(handle) {
|
|
203
182
|
return Object.freeze({
|
|
@@ -312,12 +291,12 @@ var BuddyPlatformHost = class {
|
|
|
312
291
|
}
|
|
313
292
|
});
|
|
314
293
|
await controller.refreshInspection();
|
|
315
|
-
const serverHandle = await startPreviewControlServer({ controller
|
|
294
|
+
const serverHandle = await startPreviewControlServer({ controller });
|
|
316
295
|
let bridge;
|
|
317
296
|
try {
|
|
318
297
|
const pageUrl = new URL(webUrl);
|
|
319
298
|
pageUrl.hash = `/buddy/${encodeURIComponent(manifest.buddyId)}/debug`;
|
|
320
|
-
|
|
299
|
+
bridge = await connectPreviewBridge({
|
|
321
300
|
webUrl,
|
|
322
301
|
platformOrigin: baseUrl.origin,
|
|
323
302
|
buddyId: manifest.buddyId,
|
|
@@ -330,10 +309,10 @@ var BuddyPlatformHost = class {
|
|
|
330
309
|
});
|
|
331
310
|
if (parsed.noOpen) io.write(`\u8BF7\u8FD4\u56DE\u539F\u540E\u53F0\u8C03\u8BD5\u9875\uFF0C\u9875\u9762\u4F1A\u81EA\u52A8\u63A5\u5165\u672C\u5730\u5DE5\u7A0B\u3002\u9875\u9762\u5730\u5740\uFF1A${pageUrl.href}`);
|
|
332
311
|
else {
|
|
333
|
-
await this.#openUrl(
|
|
334
|
-
io.write(`\u642D\u642D
|
|
312
|
+
await this.#openUrl(pageUrl);
|
|
313
|
+
io.write(`\u642D\u642D\u540E\u53F0\u5F00\u53D1\u8C03\u8BD5\u9875\u9762\u5DF2\u6253\u5F00\uFF1A${pageUrl.href}`);
|
|
335
314
|
}
|
|
336
|
-
|
|
315
|
+
io.write(`${bridge?.reused ? "\u5DF2\u590D\u7528" : "\u5DF2\u8FDE\u63A5"}\u672C\u5730\u5DE5\u7A0B\uFF1A${projectRoot}\uFF08${manifest.buddyId}\uFF09\uFF0C\u8BF7\u5728\u540E\u53F0\u67E5\u770B DEV \u72B6\u6001\u3002`);
|
|
337
316
|
io.write("\u5728\u9875\u9762\u4E2D\u542F\u52A8 DEV\uFF1B\u6D88\u606F\u4F1A\u7ECF\u8FC7 DEV App Server\uFF0C\u4E0D\u4F1A\u4ECE\u6D4F\u89C8\u5668\u76F4\u8FDE Agent\u3002");
|
|
338
317
|
if (bridge?.reused) {
|
|
339
318
|
io.write("\u8FDE\u63A5\u7531\u539F CLI \u7EF4\u6301\uFF0C\u8BF7\u4FDD\u6301\u539F\u7EC8\u7AEF\u8FD0\u884C\uFF1B\u5F53\u524D\u547D\u4EE4\u5DF2\u5B8C\u6210\u3002");
|
|
@@ -341,7 +320,7 @@ var BuddyPlatformHost = class {
|
|
|
341
320
|
}
|
|
342
321
|
io.write("\u4FDD\u6301\u7EC8\u7AEF\u8FD0\u884C\uFF1BCtrl+C \u505C\u6B62 DEV \u5E76\u65AD\u5F00\u8FDE\u63A5\u3002");
|
|
343
322
|
if (signal.aborted) return { exitCode: 130, route: "preview" };
|
|
344
|
-
await
|
|
323
|
+
await bridge.completion;
|
|
345
324
|
return { exitCode: 130, route: "preview" };
|
|
346
325
|
} finally {
|
|
347
326
|
await bridge?.close().catch(() => void 0);
|
|
@@ -475,6 +454,7 @@ import { readFile } from "node:fs/promises";
|
|
|
475
454
|
import { homedir as homedir2 } from "node:os";
|
|
476
455
|
import { join as join3 } from "node:path";
|
|
477
456
|
import { promisify } from "node:util";
|
|
457
|
+
import { npmPackageManifest } from "./core.js";
|
|
478
458
|
|
|
479
459
|
// apps/cli/src/update-lock.ts
|
|
480
460
|
import { mkdir, rm, writeFile } from "node:fs/promises";
|
|
@@ -625,13 +605,7 @@ async function latestVersion(options) {
|
|
|
625
605
|
const timeout = AbortSignal.timeout(1e4);
|
|
626
606
|
const signal = options.signal ? AbortSignal.any([options.signal, timeout]) : timeout;
|
|
627
607
|
try {
|
|
628
|
-
const
|
|
629
|
-
signal,
|
|
630
|
-
headers: { Accept: "application/json" },
|
|
631
|
-
redirect: "error"
|
|
632
|
-
});
|
|
633
|
-
if (!response.ok) throw new Error(`npm \u8FD4\u56DE HTTP ${response.status}`);
|
|
634
|
-
const metadata = await response.json();
|
|
608
|
+
const metadata = await npmPackageManifest(PACKAGE, "dev", { fetch: options.fetch, signal });
|
|
635
609
|
if (metadata?.name !== PACKAGE) throw new Error("npm \u8FD4\u56DE\u7684\u5305\u540D\u4E0D\u5339\u914D");
|
|
636
610
|
parseVersion(metadata.version);
|
|
637
611
|
if (typeof metadata.version !== "string" || !/^\d+\.\d+\.\d+-dev\.\d+$/.test(metadata.version)) throw new Error("npm dev \u672A\u6307\u5411 x.y.z-dev.N \u7248\u672C\uFF1BSIT CLI \u4E0D\u4F1A\u8DE8\u6E20\u9053\u66F4\u65B0\uFF0C\u8BF7\u8054\u7CFB\u53D1\u5E03\u8005\u4FEE\u6B63 dev \u6807\u7B7E");
|