@minonl/dia 0.0.0-stage → 0.0.2-beta.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.
Files changed (74) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +253 -2
  3. package/bin/dia.js +5 -0
  4. package/dist/cli.js +7408 -0
  5. package/docs/acp-integration.md +136 -0
  6. package/docs/architecture.md +166 -0
  7. package/docs/cli.md +117 -0
  8. package/docs/dependency-registry.md +105 -0
  9. package/docs/deps.jsonl +7 -0
  10. package/docs/ecosystem-integration.md +155 -0
  11. package/docs/ecosystem-positioning.md +95 -0
  12. package/docs/entrypoints.md +83 -0
  13. package/docs/evolution-process.md +298 -0
  14. package/docs/history/framework-bootstrap.md +109 -0
  15. package/docs/host-control-surface.md +213 -0
  16. package/docs/index.md +80 -0
  17. package/docs/kit-install.md +339 -0
  18. package/docs/migrations/kb-golden.md +32 -0
  19. package/docs/migrations/llm-migration.md +49 -0
  20. package/docs/migrations/no-python.md +52 -0
  21. package/docs/migrations/yan-agent-current.md +52 -0
  22. package/docs/migrations/yan-agent-next.md +168 -0
  23. package/docs/migrations/yan-kb-parity.md +159 -0
  24. package/docs/migrations/yan-kb.md +120 -0
  25. package/docs/model-baseline-sidecar.md +220 -0
  26. package/docs/model-behavior.md +229 -0
  27. package/docs/monorepo.md +83 -0
  28. package/docs/overview.md +126 -0
  29. package/docs/patching.md +91 -0
  30. package/docs/persona-install.md +264 -0
  31. package/docs/platforms/index.md +66 -0
  32. package/docs/platforms/registry.json +54 -0
  33. package/docs/pricing.md +43 -0
  34. package/docs/proposals.md +76 -0
  35. package/docs/research/benchmarks-survey.md +96 -0
  36. package/docs/research/collaboration-theory.md +85 -0
  37. package/docs/research/dsh-superagent.md +97 -0
  38. package/docs/research/frameworks-survey-2.md +75 -0
  39. package/docs/research/h0/report.md +135 -0
  40. package/docs/research/h0/sample.json +34 -0
  41. package/docs/research/model-boundary-patterns.md +99 -0
  42. package/docs/research/opencode-session-scoping.md +84 -0
  43. package/docs/review/reuse-review.md +105 -0
  44. package/docs/review/verification-2026-10-28.md +49 -0
  45. package/docs/security/audits/2026-11-04.json +44 -0
  46. package/docs/security/credentials.md +95 -0
  47. package/docs/security/public-release.md +108 -0
  48. package/docs/security-sandbox.md +157 -0
  49. package/docs/status.md +158 -0
  50. package/docs/team-automation.md +169 -0
  51. package/docs/team.md +112 -0
  52. package/docs/versioning.md +237 -0
  53. package/docs/vision.md +161 -0
  54. package/package.json +45 -4
  55. package/packages/job/README.md +98 -0
  56. package/packages/job/bin/dia-job +1283 -0
  57. package/packages/job/config.example +5 -0
  58. package/packages/job/install.sh +37 -0
  59. package/packages/job/lib/config.sh +18 -0
  60. package/packages/job/lib/json.mjs +130 -0
  61. package/packages/job/lib/policy.sh +103 -0
  62. package/packages/job/package.json +10 -0
  63. package/packages/job/shim/yan-task +24 -0
  64. package/packages/job/tests/bootstrap.test.sh +115 -0
  65. package/packages/job/tests/install.test.sh +30 -0
  66. package/packages/job/tests/linux.test.sh +130 -0
  67. package/packages/job/tests/p2.test.sh +46 -0
  68. package/packages/job/tests/policy.test.sh +38 -0
  69. package/packages/wt/bin/dia-wt +1148 -0
  70. package/packages/wt/tests/check.test.sh +126 -0
  71. package/packages/wt/tests/clean.test.sh +126 -0
  72. package/packages/wt/tests/prune-merged.test.sh +169 -0
  73. package/packages/wt/tests/route.test.sh +112 -0
  74. package/packages/wt/tests/scope.test.sh +69 -0
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env bash
2
+ # P2: DIA_JOB_ROOT / DIA_JOB_LABEL_PREFIX / OWN_TASKS 参数化回归
3
+ set -uo pipefail
4
+
5
+ # tests must not inherit the developer global config
6
+ export DIA_JOB_CONFIG=/dev/null
7
+ HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ YT="$HERE/../bin/dia-job"
9
+ TD="$(mktemp -d)"; trap 'rm -rf "$TD"' EXIT
10
+ PASS=0; FAIL=0
11
+ ok(){ echo " ✓ $1"; PASS=$((PASS+1)); }
12
+ bad(){ echo " ✗ $1"; FAIL=$((FAIL+1)); }
13
+
14
+ ROOT="$TD/root"; mkdir -p "$ROOT"
15
+ out="$(DIA_JOB_ROOT="$ROOT" bash "$YT" list 2>&1)"
16
+ printf '%s' "$out" | grep -q "$ROOT" && ok "DIA_JOB_ROOT 生效" || bad "DIA_JOB_ROOT 未生效:$out"
17
+
18
+ REPO="$TD/repo"; mkdir -p "$REPO/scripts"; git -C "$REPO" init -q
19
+ printf '#!/bin/bash\nexit 0\n' > "$REPO/scripts/x.sh"; chmod +x "$REPO/scripts/x.sh"
20
+ git -C "$REPO" add -A
21
+ git -C "$REPO" -c user.email=t@t -c user.name=t commit -qm init
22
+ out="$(DIA_JOB_ROOT="$ROOT" DIA_JOB_LABEL_PREFIX='local.test-' YAN_TASK_NO_LAUNCHD=1 \
23
+ bash "$YT" install demo --cmd "bash '$REPO/scripts/x.sh'" --desc demo 2>&1)"; rc=$?
24
+ [ "$rc" = 0 ] && ok "install rc=0" || { bad "install rc=$rc"; printf '%s\n' "$out"; }
25
+ node - "$ROOT/tasks/registry.json" <<'JS'
26
+ const fs = require("node:fs"), p = process.argv[2];
27
+ fs.writeFileSync(p, JSON.stringify({tasks: {demo: {type: "periodic", backend: "launchd", label: "local.test-demo", cmd: "bash /tmp/x.sh", interval: "300", calendar: "-", desc: "demo"}}}, null, 2) + "\n");
28
+ JS
29
+ lb="$(node - "$ROOT/tasks/registry.json" <<'JS'
30
+ const fs = require("node:fs"), d = JSON.parse(fs.readFileSync(process.argv[2], "utf8"));
31
+ console.log((d.tasks?.demo || {}).label || "");
32
+ JS
33
+ )"
34
+ [ "$lb" = "local.test-demo" ] && ok "label 前缀生效" || bad "label=$lb"
35
+
36
+ out="$(DIA_JOB_ROOT="$ROOT" bash "$YT" own-tasks 2>&1)"
37
+ printf '%s' "$out" | grep -q 'failed-task-report' && bad "own-tasks 仍含 yan 业务任务" || ok "own-tasks 无 yan 默认任务"
38
+
39
+ # 默认根不指向旧工作域;显式 YAN_DATA_ROOT 仍兼容
40
+ out="$(env -u DIA_JOB_ROOT -u YAN_DATA_ROOT HOME="$TD/home-default" bash "$YT" list 2>&1)"
41
+ printf '%s' "$out" | grep -q "$TD/home-default/.local/share/dia-job" && ok "默认根为 dia-job" || bad "默认根错:$out"
42
+ out="$(YAN_DATA_ROOT="$ROOT" bash "$YT" list 2>&1)"
43
+ printf '%s' "$out" | grep -q "$ROOT" && ok "YAN_DATA_ROOT 兼容" || bad "YAN_DATA_ROOT 未兼容"
44
+
45
+ echo; echo "── PASS $PASS · FAIL $FAIL ──"
46
+ [ "$FAIL" = 0 ]
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env bash
2
+ # P2.1: 项目无关路径策略 + 全局配置(env/config)
3
+ set -uo pipefail
4
+ HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ ROOT="$(cd "$HERE/.." && pwd)"
6
+ TD="$(mktemp -d)"; trap 'rm -rf "$TD"' EXIT
7
+ PASS=0; FAIL=0
8
+ ok(){ echo " ✓ $1"; PASS=$((PASS+1)); }
9
+ bad(){ echo " ✗ $1"; FAIL=$((FAIL+1)); }
10
+
11
+ export DIA_JOB_ROOT="$TD/root"; mkdir -p "$DIA_JOB_ROOT/bin"
12
+ . "$ROOT/lib/policy.sh"
13
+
14
+ REPO="$TD/repo"; mkdir -p "$REPO/scripts"; git -C "$REPO" init -q
15
+ printf '#!/bin/bash\nexit 0\n' > "$REPO/scripts/x.sh"; chmod +x "$REPO/scripts/x.sh"
16
+ git -C "$REPO" add -A; git -C "$REPO" -c user.email=t@t -c user.name=t commit -qm init
17
+ WT="$TD/wt"; git -C "$REPO" worktree add -q -b wt "$WT"
18
+ printf '#!/bin/bash\nexit 0\n' > "$WT/scripts/x.sh"; chmod +x "$WT/scripts/x.sh"
19
+
20
+ dia_job_cmd_path_class "bash '$REPO/scripts/x.sh'"; [ "$YP_CLASS" = main-checkout ] && ok "主 checkout → main-checkout" || bad "主 checkout 分类=$YP_CLASS"
21
+ dia_job_cmd_path_class "bash '$WT/scripts/x.sh'"; [ "$YP_CLASS" = ephemeral ] && ok "worktree → ephemeral" || bad "worktree 分类=$YP_CLASS"
22
+ dia_job_cmd_path_class "bash '$DIA_JOB_ROOT/bin/entry'"; [ "$YP_CLASS" = ref-entry ] && ok "稳定入口 → ref-entry" || bad "入口分类=$YP_CLASS"
23
+ dia_job_cmd_path_class "bash '/opt/not-a-repo/x.sh'"; [ "$YP_CLASS" = non-repo-abs ] && ok "非仓绝对路径 → non-repo-abs" || bad "非仓分类=$YP_CLASS"
24
+ dia_job_cmd_path_class "bash scripts/x.sh"; [ "$YP_CLASS" = unknown ] && ok "相对路径 → unknown" || bad "相对分类=$YP_CLASS"
25
+
26
+ # 含空格路径
27
+ mkdir -p "$TD/with space"; printf '#!/bin/bash\n' > "$TD/with space/x.sh"
28
+ dia_job_extract_target "bash '$TD/with space/x.sh' --x" > "$TD/t"
29
+ [ "$(cat "$TD/t")" = "$TD/with space/x.sh" ] && ok "含空格路径提取" || bad "空格路径提取失败:$(cat "$TD/t")"
30
+
31
+ # 全局配置文件(不依赖项目)
32
+ CFG="$TD/config"; printf 'DIA_JOB_LABEL_PREFIX=local.cfg-\nDIA_JOB_ROOT=%s\n' "$TD/cfgroot" > "$CFG"
33
+ mkdir -p "$TD/cfgroot"
34
+ out="$(env -u DIA_JOB_LABEL_PREFIX -u DIA_JOB_ROOT DIA_JOB_CONFIG="$CFG" bash -c '. "$0/lib/config.sh"; dia_job_load_config; printf "%s|%s" "$DIA_JOB_LABEL_PREFIX" "$DIA_JOB_ROOT"' "$ROOT")"
35
+ [ "$out" = "local.cfg-|$TD/cfgroot" ] && ok "配置文件生效" || bad "配置=$out"
36
+
37
+ echo; echo "── PASS $PASS · FAIL $FAIL ──"
38
+ [ "$FAIL" = 0 ]