@event4u/agent-config 14.5.0 → 14.7.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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +384 -3
- package/README.md +1 -1
- package/dist/agent-src/commands/analyze/decision.md +7 -0
- package/dist/agent-src/commands/analyze/inbox.md +264 -10
- package/dist/agent-src/commands/analyze.md +1 -1
- package/dist/agent-src/commands/optimize/project.md +10 -0
- package/dist/agent-src/commands/roadmap/process-full.md +132 -4
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +31 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +161 -1
- package/dist/agent-src/rules/context-hygiene.md +2 -0
- package/dist/agent-src/rules/decision-revisit-gate.md +111 -7
- package/dist/agent-src/rules/fix-what-you-see.md +108 -0
- package/dist/agent-src/rules/no-roadmap-references.md +0 -5
- package/dist/agent-src/rules/recurring-criticism.md +110 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
- package/dist/agent-src/rules/rule-type-governance.md +0 -2
- package/dist/agent-src/rules/self-repair-loop.md +17 -0
- package/dist/agent-src/rules/skill-quality.md +0 -2
- package/dist/agent-src/rules/source-confidentiality.md +37 -7
- package/dist/agent-src/scripts/archival_sweep.ts +117 -0
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +19 -3
- package/dist/agent-src/scripts/gate_budget.ts +282 -0
- package/dist/agent-src/scripts/gate_execute.ts +72 -31
- package/dist/agent-src/scripts/roadmap_gates.ts +74 -3
- package/dist/agent-src/scripts/update_roadmap_progress.ts +251 -7
- package/dist/agent-src/skills/adr-create/SKILL.md +25 -3
- package/dist/agent-src/skills/ai-council/SKILL.md +48 -807
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +320 -0
- package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +99 -0
- package/dist/agent-src/skills/ai-council/references/execution-modes.md +162 -0
- package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +125 -0
- package/dist/agent-src/skills/ai-council/references/procedure.md +143 -0
- package/dist/agent-src/skills/decision-review/SKILL.md +18 -0
- package/dist/agent-src/skills/quality-tools/SKILL.md +34 -326
- package/dist/agent-src/skills/quality-tools/references/js-ts-tools.md +113 -0
- package/dist/agent-src/skills/quality-tools/references/php-tools.md +222 -0
- package/dist/agent-src/skills/roadmap-management/SKILL.md +15 -409
- package/dist/agent-src/skills/roadmap-management/references/archival.md +226 -0
- package/dist/agent-src/skills/roadmap-management/references/authoring.md +107 -0
- package/dist/agent-src/skills/roadmap-management/references/dashboard.md +47 -0
- package/dist/agent-src/skills/roadmap-management/references/lifecycle.md +58 -0
- package/dist/agent-src/skills/skill-writing/SKILL.md +34 -570
- package/dist/agent-src/skills/skill-writing/references/procedure.md +275 -0
- package/dist/agent-src/skills/skill-writing/references/read-only-scripts.md +18 -0
- package/dist/agent-src/skills/skill-writing/references/section-patterns.md +298 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/roadmaps.md +45 -2
- package/dist/agent-src/templates/scripts/telemetry/flush_sender.mjs +163 -0
- package/dist/agent-src/templates/scripts/telemetry/remote.ts +160 -7
- package/dist/agent-src/templates/scripts/telemetry/transport.ts +169 -0
- package/dist/cli/registry.js +1 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/chunk-2GNWGMAL.js +172 -0
- package/dist/cli-delegate/{chunk-RLN73PR5.js → chunk-4VR4ORQ6.js} +10 -7
- package/dist/cli-delegate/chunk-6EOCNQAM.js +402 -0
- package/dist/cli-delegate/{chunk-XURJ4AQC.js → chunk-74E3TKWV.js} +381 -280
- package/dist/cli-delegate/{chunk-3UCJWMMP.js → chunk-7F3VYSM2.js} +4 -4
- package/dist/cli-delegate/{chunk-BKO2AZ7Z.js → chunk-B2ERU2VA.js} +1 -1
- package/dist/cli-delegate/{chunk-NXFWFAYV.js → chunk-G23AT6GD.js} +1 -0
- package/dist/cli-delegate/{chunk-63WSP6YZ.js → chunk-GJ5BVHXM.js} +72 -165
- package/dist/cli-delegate/{chunk-ZPSXJTLI.js → chunk-JZ4NR2TW.js} +353 -1
- package/dist/cli-delegate/chunk-MWRD5YOH.js +100 -0
- package/dist/cli-delegate/{chunk-GRRPEPRN.js → chunk-T7L2QK3K.js} +24 -5
- package/dist/cli-delegate/{chunk-EVTY7ISR.js → chunk-YM4GZDJG.js} +9 -1
- package/dist/cli-delegate/cmd_conformance.js +459 -709
- package/dist/cli-delegate/cmd_doctor.js +6 -6
- package/dist/cli-delegate/cmd_explain.js +1 -1
- package/dist/cli-delegate/cmd_export.js +7 -6
- package/dist/cli-delegate/cmd_handoff.js +6 -6
- package/dist/cli-delegate/cmd_packs_active.js +1 -1
- package/dist/cli-delegate/cmd_preflight.js +2 -2
- package/dist/cli-delegate/cmd_prune.js +7 -6
- package/dist/cli-delegate/cmd_session_recycle.js +840 -30
- package/dist/cli-delegate/cmd_settings_migrate.js +7 -6
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +7 -6
- package/dist/cli-delegate/cmd_uninstall.js +9 -7
- package/dist/cli-delegate/cmd_update.js +1 -1
- package/dist/cli-delegate/cmd_upgrade.js +1 -1
- package/dist/cli-delegate/cmd_validate.js +7 -6
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +72 -29
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +10 -8
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +8 -6
- package/dist/hooks/dispatch.js +3127 -2022
- package/dist/install/claudePathsPlan.js +187 -0
- package/dist/install/claudePathsPlan.js.map +1 -0
- package/dist/install/hostLayerFingerprint.js +136 -0
- package/dist/install/hostLayerFingerprint.js.map +1 -0
- package/dist/install/install.mjs +553 -425
- package/dist/install/partitionEligibility.js +276 -0
- package/dist/install/partitionEligibility.js.map +1 -0
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +1744 -1191
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_src.js +41 -0
- package/dist/scripts/_lib/agent_src.js.map +1 -1
- package/dist/scripts/_lib/install_layout.js +83 -0
- package/dist/scripts/_lib/install_layout.js.map +1 -0
- package/dist/scripts/_lib/installed_lock.js +444 -0
- package/dist/scripts/_lib/installed_lock.js.map +1 -0
- package/dist/scripts/condense.js +13 -164
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/schemas/settings.js +4 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/docs/contracts/settings-classes.md +12 -6
- package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +8 -3
- package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +26 -0
- package/docs/guidelines/agent-infra/engineering-memory-data-format.md +49 -0
- package/docs/guidelines/agent-infra/memory-access.md +17 -0
- package/docs/guidelines/agent-infra/recurring-criticism-mechanics.md +96 -0
- package/package.json +1 -1
- package/src/agent-src/scripts/archival_sweep.ts +117 -0
- package/src/agent-src/scripts/archive_completed_roadmaps.ts +19 -3
- package/src/agent-src/scripts/gate_budget.ts +282 -0
- package/src/agent-src/scripts/gate_execute.ts +72 -31
- package/src/agent-src/scripts/roadmap_gates.ts +74 -3
- package/src/agent-src/scripts/update_roadmap_progress.ts +251 -7
- package/src/agent-src/templates/scripts/telemetry/flush_sender.mjs +163 -0
- package/src/agent-src/templates/scripts/telemetry/remote.ts +160 -7
- package/src/agent-src/templates/scripts/telemetry/transport.ts +169 -0
- package/src/config/agent-settings.template.yml +27 -2
- package/src/config/ci-local-parity.yml +18 -0
- package/src/config/estate-count-budget.json +367 -3
- package/src/config/gate-violation-baselines.json +41 -41
- package/src/config/pack-size-budget.json +3 -2
- package/src/config/rule-activation-census.json +14 -6
- package/src/config/rule-stub-ceilings.json +19 -6
- package/src/install/claudePathsPlan.ts +196 -0
- package/src/install/hostLayerFingerprint.ts +145 -0
- package/src/install/partitionEligibility.ts +325 -0
- package/src/scripts/_cli/cmd_session_recycle.ts +9 -1
- package/src/scripts/_dispatch.bash +6 -1
- package/src/scripts/_lib/ac_heading.ts +30 -0
- package/src/scripts/_lib/agent_src.ts +42 -0
- package/src/scripts/_lib/bench_ab_pinned_repo.ts +162 -0
- package/src/scripts/_lib/bench_ab_workspace.ts +10 -1
- package/src/scripts/_lib/envelope_grounding.ts +38 -8
- package/src/scripts/_lib/installed_lock.ts +50 -5
- package/src/scripts/_lib/layer_overlap_notice.ts +85 -0
- package/src/scripts/_lib/md_section.ts +129 -0
- package/src/scripts/_lib/scope_guard.sh +86 -4
- package/src/scripts/_lib/self_repair.ts +19 -0
- package/src/scripts/_lib/self_repair_class_b.ts +171 -0
- package/src/scripts/_lib/subagent_capsule.ts +81 -1
- package/src/scripts/adr/regenerate_index.ts +13 -2
- package/src/scripts/adr_cite_check.ts +424 -0
- package/src/scripts/ai_council/cli_help.ts +55 -0
- package/src/scripts/before_complete_hook.ts +153 -28
- package/src/scripts/bench_ab_v2_complexity.ts +27 -7
- package/src/scripts/check_adr_frontmatter.ts +187 -1
- package/src/scripts/check_references.ts +60 -0
- package/src/scripts/check_release_published.ts +32 -11
- package/src/scripts/check_single_delivery.ts +517 -0
- package/src/scripts/ci_settle.ts +170 -0
- package/src/scripts/condense.ts +20 -170
- package/src/scripts/council_cli.ts +3 -3
- package/src/scripts/dispatch_r2_reviewer.ts +6 -14
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +77 -14
- package/src/scripts/hooks/block_no_verify.ts +61 -10
- package/src/scripts/hooks/block_unauthorized_git.ts +1 -1
- package/src/scripts/hooks/concern_registry.ts +4 -0
- package/src/scripts/hooks/rtk_wrap_hook.ts +8 -3
- package/src/scripts/hooks/run_continuation_hook.ts +887 -68
- package/src/scripts/hooks/ship_diff_volume_hook.ts +81 -15
- package/src/scripts/hooks/source_first_gate_hook.ts +464 -0
- package/src/scripts/hooks/state_io.ts +782 -20
- package/src/scripts/hooks/subagent_ledger_hook.ts +44 -15
- package/src/scripts/hooks/telemetry_flush_hook.ts +139 -0
- package/src/scripts/hooks/telemetry_self_repair.ts +128 -0
- package/src/scripts/hooks/telemetry_usage_hook.ts +22 -4
- package/src/scripts/hooks/turn_end_gate_hook.ts +81 -15
- package/src/scripts/install.sh +12 -2
- package/src/scripts/install.ts +16 -11
- package/src/scripts/language_mirror_hook.ts +561 -25
- package/src/scripts/lint_framework_leakage_allowlist.json +2 -2
- package/src/scripts/lint_plan_risk_register.ts +4 -3
- package/src/scripts/lint_skill_router_head.ts +4 -4
- package/src/scripts/mcp_server/tools.ts +2 -2
- package/src/scripts/memory_consolidation.ts +189 -0
- package/src/scripts/memory_eviction.ts +384 -0
- package/src/scripts/new_roadmap.ts +136 -0
- package/src/scripts/pack_mcp_content.ts +20 -5
- package/src/scripts/release.ts +37 -38
- package/src/scripts/report_layer_overlap.ts +78 -0
- package/src/scripts/report_memory_pointers.ts +622 -0
- package/src/scripts/self_repair_hook.ts +37 -5
- package/src/scripts/session_register_hook.ts +115 -15
- package/src/scripts/skill_usage_collect.ts +11 -1
- package/src/scripts/skill_usage_report.ts +278 -8
- package/src/scripts/sync_pr_branch.ts +7 -0
- package/src/server/schemas/settings.ts +8 -0
- package/dist/cli-delegate/chunk-EJITJBJX.js +0 -172
- package/dist/cli-delegate/chunk-PZWRPRWP.js +0 -38
- /package/dist/cli-delegate/{chunk-RYNADUFG.js → chunk-LWTYTX6F.js} +0 -0
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
|
|
2
|
-
|
|
3
|
-
// src/scripts/hooks/state_io.ts
|
|
4
|
-
import fs from "node:fs";
|
|
5
|
-
import path from "node:path";
|
|
6
|
-
var LOCK_BASENAME = ".dispatcher.lock";
|
|
7
|
-
var REPLAY_ENV_VAR = "AGENT_CONFIG_REPLAY";
|
|
8
|
-
function is_replay_mode() {
|
|
9
|
-
return (process.env[REPLAY_ENV_VAR] ?? "").trim() === "1";
|
|
10
|
-
}
|
|
11
|
-
function _lock_path(state_dir) {
|
|
12
|
-
return path.join(state_dir, LOCK_BASENAME);
|
|
13
|
-
}
|
|
14
|
-
function _py_json_dumps(value, indent) {
|
|
15
|
-
const pad = " ".repeat(indent);
|
|
16
|
-
const escapeString = (s) => {
|
|
17
|
-
let out = '"';
|
|
18
|
-
for (const ch of s) {
|
|
19
|
-
const code = ch.codePointAt(0);
|
|
20
|
-
switch (ch) {
|
|
21
|
-
case '"':
|
|
22
|
-
out += '\\"';
|
|
23
|
-
break;
|
|
24
|
-
case "\\":
|
|
25
|
-
out += "\\\\";
|
|
26
|
-
break;
|
|
27
|
-
case "\n":
|
|
28
|
-
out += "\\n";
|
|
29
|
-
break;
|
|
30
|
-
case "\r":
|
|
31
|
-
out += "\\r";
|
|
32
|
-
break;
|
|
33
|
-
case " ":
|
|
34
|
-
out += "\\t";
|
|
35
|
-
break;
|
|
36
|
-
case "\b":
|
|
37
|
-
out += "\\b";
|
|
38
|
-
break;
|
|
39
|
-
case "\f":
|
|
40
|
-
out += "\\f";
|
|
41
|
-
break;
|
|
42
|
-
default:
|
|
43
|
-
if (code < 32 || code > 126) {
|
|
44
|
-
if (code > 65535) {
|
|
45
|
-
const c = code - 65536;
|
|
46
|
-
const hi = 55296 + (c >> 10);
|
|
47
|
-
const lo = 56320 + (c & 1023);
|
|
48
|
-
out += "\\u" + hi.toString(16).padStart(4, "0") + "\\u" + lo.toString(16).padStart(4, "0");
|
|
49
|
-
} else {
|
|
50
|
-
out += "\\u" + code.toString(16).padStart(4, "0");
|
|
51
|
-
}
|
|
52
|
-
} else {
|
|
53
|
-
out += ch;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return out + '"';
|
|
58
|
-
};
|
|
59
|
-
const render = (v, depth) => {
|
|
60
|
-
if (v === null || v === void 0) {
|
|
61
|
-
return "null";
|
|
62
|
-
}
|
|
63
|
-
if (typeof v === "boolean") {
|
|
64
|
-
return v ? "true" : "false";
|
|
65
|
-
}
|
|
66
|
-
if (typeof v === "number") {
|
|
67
|
-
if (!Number.isFinite(v)) {
|
|
68
|
-
if (Number.isNaN(v)) return "NaN";
|
|
69
|
-
return v > 0 ? "Infinity" : "-Infinity";
|
|
70
|
-
}
|
|
71
|
-
return String(v);
|
|
72
|
-
}
|
|
73
|
-
if (typeof v === "string") {
|
|
74
|
-
return escapeString(v);
|
|
75
|
-
}
|
|
76
|
-
const curPad = pad.repeat(depth + 1);
|
|
77
|
-
const closePad = pad.repeat(depth);
|
|
78
|
-
if (Array.isArray(v)) {
|
|
79
|
-
if (v.length === 0) {
|
|
80
|
-
return "[]";
|
|
81
|
-
}
|
|
82
|
-
const items = v.map((item) => curPad + render(item, depth + 1));
|
|
83
|
-
return "[\n" + items.join(",\n") + "\n" + closePad + "]";
|
|
84
|
-
}
|
|
85
|
-
if (typeof v === "object") {
|
|
86
|
-
const obj = v;
|
|
87
|
-
const keys = Object.keys(obj);
|
|
88
|
-
if (keys.length === 0) {
|
|
89
|
-
return "{}";
|
|
90
|
-
}
|
|
91
|
-
const items = keys.map(
|
|
92
|
-
(k) => curPad + escapeString(k) + ": " + render(obj[k], depth + 1)
|
|
93
|
-
);
|
|
94
|
-
return "{\n" + items.join(",\n") + "\n" + closePad + "}";
|
|
95
|
-
}
|
|
96
|
-
throw new TypeError(`Object of type ${typeof v} is not JSON serializable`);
|
|
97
|
-
};
|
|
98
|
-
return render(value, 0);
|
|
99
|
-
}
|
|
100
|
-
function atomic_write_json(target, payload, options = {}) {
|
|
101
|
-
if (is_replay_mode()) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
const indent = options.indent ?? 2;
|
|
105
|
-
const targetPath = path.resolve(target);
|
|
106
|
-
const state_dir = path.dirname(targetPath);
|
|
107
|
-
fs.mkdirSync(state_dir, { recursive: true });
|
|
108
|
-
const body = _py_json_dumps(payload, indent) + "\n";
|
|
109
|
-
_atomic_write_text(targetPath, body);
|
|
110
|
-
}
|
|
111
|
-
function atomic_write_text(target, text) {
|
|
112
|
-
if (is_replay_mode()) {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
const targetPath = path.resolve(target);
|
|
116
|
-
const state_dir = path.dirname(targetPath);
|
|
117
|
-
fs.mkdirSync(state_dir, { recursive: true });
|
|
118
|
-
_atomic_write_text(targetPath, text);
|
|
119
|
-
}
|
|
120
|
-
function _acquire_lock(lock_path) {
|
|
121
|
-
const fd = fs.openSync(lock_path, "a", 420);
|
|
122
|
-
const held = lock_path + ".held";
|
|
123
|
-
const deadlineMs = 5e3;
|
|
124
|
-
const start = Date.now();
|
|
125
|
-
for (; ; ) {
|
|
126
|
-
try {
|
|
127
|
-
const heldFd = fs.openSync(held, "wx", 420);
|
|
128
|
-
fs.closeSync(heldFd);
|
|
129
|
-
return fd;
|
|
130
|
-
} catch (err) {
|
|
131
|
-
if (err.code !== "EEXIST") {
|
|
132
|
-
return fd;
|
|
133
|
-
}
|
|
134
|
-
if (Date.now() - start > deadlineMs) {
|
|
135
|
-
try {
|
|
136
|
-
fs.rmSync(held, { force: true });
|
|
137
|
-
} catch {
|
|
138
|
-
}
|
|
139
|
-
continue;
|
|
140
|
-
}
|
|
141
|
-
const sab = new Int32Array(new SharedArrayBuffer(4));
|
|
142
|
-
Atomics.wait(sab, 0, 0, 2);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
function _release_lock(fd, lock_path) {
|
|
147
|
-
try {
|
|
148
|
-
fs.closeSync(fd);
|
|
149
|
-
} catch {
|
|
150
|
-
}
|
|
151
|
-
try {
|
|
152
|
-
fs.rmSync(lock_path + ".held", { force: true });
|
|
153
|
-
} catch {
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
function _atomic_write_text(target, text) {
|
|
157
|
-
const tmp = target + `.tmp.${process.pid}`;
|
|
158
|
-
const lock_path = _lock_path(path.dirname(target));
|
|
159
|
-
const fd = _acquire_lock(lock_path);
|
|
160
|
-
try {
|
|
161
|
-
fs.writeFileSync(tmp, text, { encoding: "utf-8" });
|
|
162
|
-
fs.renameSync(tmp, target);
|
|
163
|
-
} finally {
|
|
164
|
-
_release_lock(fd, lock_path);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export {
|
|
169
|
-
is_replay_mode,
|
|
170
|
-
atomic_write_json,
|
|
171
|
-
atomic_write_text
|
|
172
|
-
};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
|
|
2
|
-
|
|
3
|
-
// src/scripts/_lib/git_common_dir.ts
|
|
4
|
-
import fs from "node:fs";
|
|
5
|
-
import path from "node:path";
|
|
6
|
-
function realpath_or_self(p) {
|
|
7
|
-
try {
|
|
8
|
-
return fs.realpathSync(p);
|
|
9
|
-
} catch {
|
|
10
|
-
return p;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
function git_common_dir(project_root) {
|
|
14
|
-
const dot_git = path.join(project_root, ".git");
|
|
15
|
-
try {
|
|
16
|
-
const st = fs.statSync(dot_git);
|
|
17
|
-
if (st.isDirectory()) {
|
|
18
|
-
return realpath_or_self(dot_git);
|
|
19
|
-
}
|
|
20
|
-
const m = fs.readFileSync(dot_git, "utf-8").match(/^gitdir:\s*(.+)\s*$/m);
|
|
21
|
-
if (m === null) {
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
const gitdir = path.resolve(project_root, m[1].trim());
|
|
25
|
-
const commondir_file = path.join(gitdir, "commondir");
|
|
26
|
-
if (fs.existsSync(commondir_file)) {
|
|
27
|
-
const common = path.resolve(gitdir, fs.readFileSync(commondir_file, "utf-8").trim());
|
|
28
|
-
return realpath_or_self(common);
|
|
29
|
-
}
|
|
30
|
-
return realpath_or_self(gitdir);
|
|
31
|
-
} catch {
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export {
|
|
37
|
-
git_common_dir
|
|
38
|
-
};
|
|
File without changes
|