@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.
- package/LICENSE +21 -0
- package/README.md +253 -2
- package/bin/dia.js +5 -0
- package/dist/cli.js +7408 -0
- package/docs/acp-integration.md +136 -0
- package/docs/architecture.md +166 -0
- package/docs/cli.md +117 -0
- package/docs/dependency-registry.md +105 -0
- package/docs/deps.jsonl +7 -0
- package/docs/ecosystem-integration.md +155 -0
- package/docs/ecosystem-positioning.md +95 -0
- package/docs/entrypoints.md +83 -0
- package/docs/evolution-process.md +298 -0
- package/docs/history/framework-bootstrap.md +109 -0
- package/docs/host-control-surface.md +213 -0
- package/docs/index.md +80 -0
- package/docs/kit-install.md +339 -0
- package/docs/migrations/kb-golden.md +32 -0
- package/docs/migrations/llm-migration.md +49 -0
- package/docs/migrations/no-python.md +52 -0
- package/docs/migrations/yan-agent-current.md +52 -0
- package/docs/migrations/yan-agent-next.md +168 -0
- package/docs/migrations/yan-kb-parity.md +159 -0
- package/docs/migrations/yan-kb.md +120 -0
- package/docs/model-baseline-sidecar.md +220 -0
- package/docs/model-behavior.md +229 -0
- package/docs/monorepo.md +83 -0
- package/docs/overview.md +126 -0
- package/docs/patching.md +91 -0
- package/docs/persona-install.md +264 -0
- package/docs/platforms/index.md +66 -0
- package/docs/platforms/registry.json +54 -0
- package/docs/pricing.md +43 -0
- package/docs/proposals.md +76 -0
- package/docs/research/benchmarks-survey.md +96 -0
- package/docs/research/collaboration-theory.md +85 -0
- package/docs/research/dsh-superagent.md +97 -0
- package/docs/research/frameworks-survey-2.md +75 -0
- package/docs/research/h0/report.md +135 -0
- package/docs/research/h0/sample.json +34 -0
- package/docs/research/model-boundary-patterns.md +99 -0
- package/docs/research/opencode-session-scoping.md +84 -0
- package/docs/review/reuse-review.md +105 -0
- package/docs/review/verification-2026-10-28.md +49 -0
- package/docs/security/audits/2026-11-04.json +44 -0
- package/docs/security/credentials.md +95 -0
- package/docs/security/public-release.md +108 -0
- package/docs/security-sandbox.md +157 -0
- package/docs/status.md +158 -0
- package/docs/team-automation.md +169 -0
- package/docs/team.md +112 -0
- package/docs/versioning.md +237 -0
- package/docs/vision.md +161 -0
- package/package.json +45 -4
- package/packages/job/README.md +98 -0
- package/packages/job/bin/dia-job +1283 -0
- package/packages/job/config.example +5 -0
- package/packages/job/install.sh +37 -0
- package/packages/job/lib/config.sh +18 -0
- package/packages/job/lib/json.mjs +130 -0
- package/packages/job/lib/policy.sh +103 -0
- package/packages/job/package.json +10 -0
- package/packages/job/shim/yan-task +24 -0
- package/packages/job/tests/bootstrap.test.sh +115 -0
- package/packages/job/tests/install.test.sh +30 -0
- package/packages/job/tests/linux.test.sh +130 -0
- package/packages/job/tests/p2.test.sh +46 -0
- package/packages/job/tests/policy.test.sh +38 -0
- package/packages/wt/bin/dia-wt +1148 -0
- package/packages/wt/tests/check.test.sh +126 -0
- package/packages/wt/tests/clean.test.sh +126 -0
- package/packages/wt/tests/prune-merged.test.sh +169 -0
- package/packages/wt/tests/route.test.sh +112 -0
- 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 ]
|