@jspg-ai/coding-bb 0.0.3-beta.37 → 0.0.3-beta.38

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.
@@ -4,7 +4,7 @@ trigger: always_on
4
4
 
5
5
  # 业务空间开发纪律(双模式,用户选择制)
6
6
 
7
- **仅当工作目录是业务空间根(存在 `CBB-WORKSPACE.json` 且 `.git` 为目录)时生效。空间支持两种开发模式,能力对称(都能修改 workspace 内容与应用代码、都强制分支隔离、交付均有 MR 与直合并两条通道,ADR 0007/0008),由用户显式选择,agent 只给推荐不代决。**
7
+ **仅当处于业务空间体系(空间根、`.worktrees/` 工作树、及其中各应用检出)时生效。空间支持两种开发模式,能力对称(都能修改 workspace 内容与应用代码、都强制分支隔离、交付均有 MR 与直合并两条通道,ADR 0007/0008),由用户显式选择,agent 只给推荐不代决。**
8
8
 
9
9
  **模式一 · 本地模式(单线程快改,当前会话就地干):**
10
10
 
@@ -25,12 +25,14 @@ trigger: always_on
25
25
  - **收尾合并门禁(ADR 0007)**:两模式收尾均须每仓库"已合并"(`safety-check` / `merge-branches.js --check` 判定);未合并三选一——提 MR / 直合并 / 确认废弃(远程重命名 `<分支>-deprecated`);交付完成自动删本地+远程分支
26
26
  - **模式误判零代价**:本地模式中途要并行/隔离 → 重跑 `cbb-worktree-init`(分支已存在自动复用,提交随身带走)
27
27
 
28
- **三时刻对齐(agent 必须遵守):**
28
+ **五时刻对齐(agent 必须遵守):**
29
29
 
30
30
  1. **开工前——状态自检**(`cbb-local-mode` 的 `check-local-state.js`):干净态零交互直接开工;**遗留态(别的需求未收尾,任一仓库检出在非主干分支)必须让用户四选一**(继续 / 先收尾 / 升级 worktree / 丢弃),不得自行决定
31
31
  2. **开工时——布局确认**:向用户展示参与仓库与分支名,确认后执行
32
32
  3. **进行中——插单归属**:用户插入非本需求的改动,先确认归属(并入 / 收尾后处理 / 转 worktree),不得静默混入
33
+ 4. **打包前——主干对齐**(任何构建打包动作前):对产物所涉及的仓库(按代码来源判定:哪个仓库的代码被编进产物就同步哪个,与产物存放位置无关;多仓聚合产物则全部同步)先对齐再打包——① `git fetch <远端>`;② 在当前需求分支执行 `git merge <远端>/<主干>`(远端通常为 `origin`,主干名以远端 HEAD 为准,常见 main / master;在 main 检出上打包时改为 `git pull`;工作区未提交修改阻碍合并时,先提交或暂存再对齐);③ 冲突未解决时**禁止打包**,停下报告用户;fetch/merge 失败 → 报告并等待用户指示;④ 对齐完成后(由此产生的 merge 提交属正常)再执行打包命令(`mvn package` / `npm run build` / 前端 bundle / 生成部署包等凡产出构建产物者);产物目录须已被 `.gitignore` 忽略(未忽略先补 ignore——该修改属普通变更,随需求分支提交)。产物基线 = 主干最新,避免基于过时分支打包导致的集成返工;**不 rebase、不 force push**,merge 提交随下次 push 一并推送
34
+ 5. **打包后——产物收集与留存**:打包完成后把各仓库产物**复制**到 `<空间根>/.build/<需求名>/<应用名>/`(原件保持原位;需求名 = 分支名;workspace 仓库产物用 `workspace` 子目录;目标目录已存在时先向用户确认清理或覆盖;`.build/` 由 cbb 写入空间根 `.gitignore`)——产物按需求聚合留存,worktree 关闭后不丢失;打包时顺带报告 `.build/` 积压现状(需求目录数与总体积),建议清理已交付或已废弃需求的产物目录,经用户逐项确认后执行、**永不自动删除**
33
35
 
34
36
  **读基准代码约定:** 本地模式进行中,工作区是开发态而非基准——要读"main 现状"先确认检出分支,或直接 `git show main:<path>` / `git diff main`;不要默认工作区即基准。
35
37
 
36
- **检验标准:** 任何 main 检出上无载荷提交(hook 兜底,git log 可机械审计;merge 提交除外);本地模式收尾后全部仓库回主干且 clean;worktree 模式的变更产物只出现在需求工作树内;需求分支只经 push 技能产生;**未合并且非废弃的分支无法通过收尾(门禁兜底)**。
38
+ **检验标准:** 任何 main 检出上无载荷提交(hook 兜底,git log 可机械审计;merge 提交除外);本地模式收尾后全部仓库回主干且 clean;worktree 模式的**变更(代码改动)**只出现在需求工作树内(打包产物按第 5 条收集到空间根 `.build/`,不在此限);需求分支只经 push 技能产生;**未合并且非废弃的分支无法通过收尾(门禁兜底)**。
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * 安装时:若 .gitignore 已含某目录(认可带/不带尾斜杠两种形式),则不重复添加;
7
7
  * 否则新增无尾斜杠形式(.claude / .qoder,更通用)。.cbb/ / .codespace/ /
8
- * .worktrees/ 这类纯目录路径维持带斜杠。
8
+ * .worktrees/ / .build/ 这类纯目录路径维持带斜杠。
9
9
  * 卸载时:移除本包曾写入的所有形式(新旧版本均覆盖)。
10
10
  *
11
11
  * 注意:.gitignore 条目无 _managedBy 之类的标记,卸载按"形式匹配"移除,
@@ -32,6 +32,8 @@ const GITIGNORE_RULES = [
32
32
  { add: '.trae', accept: ['.trae', '.trae/'] },
33
33
  // .minimax:MiniMax Code 项目级配置根(rules / skills)
34
34
  { add: '.minimax', accept: ['.minimax', '.minimax/'] },
35
+ // .build/:0.0.3-beta.38 新增 —— 打包产物收集目录(空间纪律第 5 条:产物按需求聚合到 .build/<需求名>/)
36
+ { add: '.build/', accept: ['.build/', '.build'] },
35
37
  ];
36
38
 
37
39
  /** 将 .gitignore 文本拆为行数组。 */
@@ -413,6 +413,8 @@ git -C "<ws_root>" worktree list
413
413
 
414
414
  目标 worktree 应已不在列表中。
415
415
 
416
+ **产物留存检查(打包产物 · 不自动删除)**:检查 `<ws_root>/.build/<branch>/` 是否存在(`test -d`),并统计 `.build/` 全景(需求目录数与总体积,Node 或 `du -sh` 等价实现)。**关闭流程绝不自动删除 `.build/` 内容**(打包产物是交付后的取件来源,删错不可逆);用户明确表示不需要时,才按其指定范围清理。
417
+
416
418
  **工作区回根交接(必须执行)**:若用户的开发会话工作在 worktree 内(当前会话工作目录 = 已删除的 `<wt_path>`),此刻目录已悬空——**OpenCode 等支持会话搬移的工具由 agent 自动 `session_move` 切回 `<ws_root>`,不列入用户待办**;无该能力的工具才提示用户把工作区切回 `<ws_root>`(打开文件夹 / Open Folder / 切换工作目录),并在最终报告中给出该绝对路径。
417
419
 
418
420
  ---
@@ -436,6 +438,9 @@ git -C "<ws_root>" worktree list
436
438
  - 交付完成 → 已删除本地 + 远程分支:feature-xxx(逐仓库列出)
437
439
  - 已废弃 → 远程已重命名为 feature-xxx-deprecated(本地分支保留原名)
438
440
  剩余工作空间 worktree:<列出仍存在的,或 "无" >
441
+ 产物留存:.build/<branch>/(已保留;不需要可告诉我清理)
442
+ .build 全景:共 N 个需求目录 / ~X MB(可顺带清理已交付或已废弃需求)
443
+ (产物留支行仅在该目录存在时显示)
439
444
  👉 仅当所用工具不支持自动切根、且你的窗口仍停在已删除的 worktree 时,请手动切回工作空间根:<ws_root 绝对路径>
440
445
  Workspace cleaned up.
441
446
  ```
@@ -462,6 +467,7 @@ git -C "<ws_root>" worktree list
462
467
  - 操作 `.worktrees/worktree-<需求名>` 以外的任何 worktree(如 `~/.qoder/worktree/...` 会话 worktree)
463
468
  - 移除/删除前跳过 Step 2 安全评估
464
469
  - 删除工作空间根目录的 AI 配置目录(`.claude/`、`.qoder/`、`.opencode/` 等)
470
+ - 未经用户确认删除 `.build/` 内的打包产物(留存目录的清理须用户逐项确认;关闭流程绝不自动删)
465
471
  - 用 `AskUserQuestion` 收集自由文本(分支名等直接对话提问)
466
472
  - 手动改任何仓库的 `.gitignore`(关闭流程不碰它)
467
473
  - 运行环境 node 不可用时强行继续 → 改为 fail-fast 提示用户
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jspg-ai/coding-bb",
3
- "version": "0.0.3-beta.37",
3
+ "version": "0.0.3-beta.38",
4
4
  "description": "整合业界热门且高价值的工具、框架与技能,为 AI CODING AGENT 提供统一的行为准则与工作流,辅助开发者将需求高效落地为符合规范的代码",
5
5
  "main": "cbb/lib/install/init.js",
6
6
  "bin": {