@amsterdamdatalabs/adl-agent-control-linux-x64 0.1.35 → 0.1.46
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/bin/adl +2 -2
- package/bin/reconcile +3 -11
- package/bin/setup +15 -15
- package/package.json +1 -1
- package/packages/agent-hooks/deploy-profile.json +1 -1
- package/packages/agent-hooks/package.json +1 -1
- package/packages/agent-hooks/src/main.ts +23 -2
- package/packages/agent-hooks/src/pre-tool-use/handler.ts +2 -2
- package/packages/agent-hooks/src/rules/impl/adl-build-run-role.ts +116 -0
- package/packages/agent-hooks/src/rules/impl/adl-git-user-override-block.ts +159 -0
- package/packages/agent-hooks/src/rules/impl/adl-mcp-cli.ts +22 -12
- package/packages/agent-hooks/src/rules/impl/adl-pr-complete-pending.ts +9 -9
- package/packages/agent-hooks/src/rules/impl/adl-pr-role.ts +6 -5
- package/packages/agent-hooks/src/rules/impl/adl-run-required.ts +11 -5
- package/packages/agent-hooks/src/rules/impl/adl-workitem-role.ts +18 -5
- package/packages/agent-hooks/src/rules/impl/agent-tamper-protection.ts +30 -25
- package/packages/agent-hooks/src/rules/impl/git-core.ts +4 -8
- package/packages/agent-hooks/src/rules/impl/git-target.ts +5 -0
- package/packages/agent-hooks/src/rules/impl/mcp-tool.ts +4 -2
- package/packages/agent-hooks/src/rules/impl/tool-frontend.ts +230 -11
- package/packages/agent-hooks/src/rules/registry.ts +11 -2
- package/packages/agent-hooks/src/rules/shell/git-identity.ts +1 -1
- package/packages/agent-hooks/src/rules/shell/invocation.ts +14 -2
- package/packages/agent-hooks/src/rules/shell/protected-carriers.ts +10 -7
- package/packages/agent-settings/assets/TARUN-GLOBAL-AGENTS-INSTRUCTIONS.md +2 -2
- package/packages/agent-settings/package.json +1 -1
- package/packages/agent-settings/src/deploy/agents-deploy.ts +19 -1
- package/packages/agent-settings/src/deploy/index.ts +1 -0
- package/packages/agent-skills/assets/agent-search-tool-audit/SKILL.md +4 -6
- package/packages/agent-skills/assets/code-review/SKILL.md +84 -66
- package/packages/agent-skills/assets/diagnosing-bugs/SKILL.md +23 -2
- package/packages/agent-skills/assets/diagnosing-bugs/references/FEEDBACK-LOOP-TACTICS.md +1 -1
- package/packages/agent-skills/assets/explore-codebase/SKILL.md +3 -2
- package/packages/agent-skills/assets/finalize-feature/SKILL.md +63 -0
- package/packages/agent-skills/assets/fix-ci/SKILL.md +58 -0
- package/packages/agent-skills/assets/handoff/SKILL.md +1 -1
- package/packages/agent-skills/assets/implement-feature/SKILL.md +150 -0
- package/packages/agent-skills/assets/implement-feature/references/briefs.md +94 -0
- package/packages/agent-skills/assets/implement-item/SKILL.md +71 -0
- package/packages/agent-skills/assets/mechanics/SKILL.md +38 -0
- package/packages/agent-skills/assets/plan-feature/SKILL.md +141 -0
- package/packages/agent-skills/assets/prepare-promotion/SKILL.md +90 -0
- package/packages/agent-skills/assets/ralplan/SKILL.md +149 -0
- package/packages/agent-skills/assets/refactor-safely/SKILL.md +4 -3
- package/packages/agent-skills/assets/report-bug/SKILL.md +72 -0
- package/packages/agent-skills/assets/review-change/SKILL.md +82 -0
- package/packages/agent-skills/assets/review-plan/SKILL.md +124 -0
- package/packages/agent-skills/assets/triage-workitems/SKILL.md +99 -0
- package/packages/agent-skills/assets/ultragoal/SKILL.md +77 -0
- package/packages/agent-skills/assets/validate-design/SKILL.md +64 -0
- package/packages/agent-skills/assets/verify-item/SKILL.md +71 -0
- package/packages/agent-skills/assets/wayfinder/SKILL.md +1 -1
- package/packages/agent-skills/assets/workitems-process/SKILL.md +145 -0
- package/packages/agent-skills/assets/workitems-process/references/ado-and-git.md +227 -0
- package/packages/agent-skills/assets/workitems-process/references/evidence.md +74 -0
- package/packages/agent-skills/assets/workitems-process/references/workitem-states.md +92 -0
- package/packages/agent-skills/assets/write-feature/SKILL.md +94 -0
- package/packages/agent-skills/dist/deploy.d.ts +52 -0
- package/packages/agent-skills/dist/deploy.d.ts.map +1 -1
- package/packages/agent-skills/dist/deploy.js +218 -7
- package/packages/agent-skills/dist/deploy.js.map +1 -1
- package/packages/agent-skills/dist/index.d.ts +1 -1
- package/packages/agent-skills/dist/index.d.ts.map +1 -1
- package/packages/agent-skills/dist/index.js +1 -1
- package/packages/agent-skills/dist/index.js.map +1 -1
- package/packages/agent-skills/package.json +1 -1
- package/packages/agent-skills/src/deploy.ts +288 -6
- package/packages/agent-skills/src/index.ts +10 -1
- package/packages/azdo/README.md +13 -4
- package/packages/azdo/bunfig.toml +6 -0
- package/packages/azdo/package.json +1 -1
- package/packages/azdo/scripts/probe-ado-rules.ts +1 -1
- package/packages/azdo/src/activity-log.ts +118 -0
- package/packages/azdo/src/azdo-attachments.ts +109 -0
- package/packages/azdo/src/azdo-pl.ts +100 -3
- package/packages/azdo/src/azdo-pr.ts +376 -17
- package/packages/azdo/src/azdo-wit.ts +594 -34
- package/packages/azdo/src/cli.ts +119 -12
- package/packages/azdo/src/lib/client.ts +95 -17
- package/packages/azdo/src/lib/validate-pr-metadata.ts +14 -5
- package/packages/azdo/src/mcp-server.ts +121 -8
- package/packages/azdo/src/tool-dispatch.ts +107 -23
- package/packages/azdo/src/workflow-ladder.csv +125 -107
- package/packages/azdo/src/workflow-rules.ts +254 -97
- package/packages/fleet/src/install-adl-package.ts +4 -3
- package/packages/repo-controls/README.md +12 -4
- package/packages/repo-controls/assets/promote.ts +1 -0
- package/packages/repo-controls/assets/scaffold/docs/AGENTS.md +5 -5
- package/packages/repo-controls/assets/scaffold/plans/AGENTS.md +42 -13
- package/packages/repo-controls/assets/scaffold/root/CONTRIBUTING.md +5 -5
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/closed_set/test_check.py +0 -11
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/filename/test_check.py +4 -6
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/ledger/test_check.py +15 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/docs-okf-profiles.yaml +1 -17
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-profile-untyped/docs/research/no-type.md +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-profile-untyped/docs/research/typed-experiment.md +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-profile-untyped/docs/research/typed-research.md +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/extra-key.md +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/extra-keys.md +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/missing-created.md +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/missing-description.md +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/missing-last-update.md +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/missing-status.md +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/missing-title.md +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/optional-keys.md +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/fixtures/okf-research/docs/research/research-ok.md +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/docs/okf_profile/test_check.py +3 -22
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/open_work_cap/check.py +39 -182
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/open_work_cap/fixtures/open-work-cap-clean/plans/features/az601-clean/intent.md +17 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/open_work_cap/test_check.py +90 -321
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/plan_metadata.py +31 -5
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/plans_layout/check.py +282 -54
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/plans_layout/fixtures/plans-layout-clean/plans/features/az347-test-coverage/design.md +35 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/plans_layout/fixtures/plans-layout-clean/plans/features/az347-test-coverage/file-map-reference.md +19 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/plans_layout/fixtures/plans-layout-clean/plans/features/az347-test-coverage/intent.md +25 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/plans_layout/fixtures/plans-layout-clean/plans/features/az347-test-coverage/items/az351-restore-entrypoint.md +25 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/plans_layout/fixtures/plans-layout-clean/plans/features/az347-test-coverage/requirements.md +44 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/plans_layout/fixtures/plans-layout-violation/plans/features/az347-test-coverage/requirements.md +44 -0
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/checks/layout/plans_layout/test_check.py +646 -53
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/cli.py +3 -3
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/policy/docs_shape.py +1 -12
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/policy/gate-registry.alt.yaml +1 -1
- package/packages/repo-controls/package/adl-compliance/src/adl_compliance/policy/gate-registry.yaml +1 -1
- package/packages/repo-controls/package.json +1 -1
- package/packages/repo-controls/src/config.ts +21 -2
- package/packages/repo-controls/src/doctor.ts +9 -14
- package/packages/repo-controls/src/findings-ratchet.ts +12 -0
- package/packages/repo-controls/src/hook.ts +61 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { deploySkills, type DeploySkillsOptions, type DeploySkillsResult, type SkillConflict } from "./deploy.js";
|
|
1
|
+
export { deploySkills, type DeploySkillsOptions, type DeploySkillsResult, type SkillConflict, removeDeployedSkillFolders, type RemoveDeployedSkillFoldersOptions, type RemoveDeployedSkillFoldersResult, type SkillRefusal, } from "./deploy.js";
|
|
2
2
|
export { doctorAssets, doctorDeployment, type DoctorAssetsResult, type DoctorDeploymentOptions, type DoctorResult, type DoctorIssue, } from "./doctor.js";
|
|
3
3
|
export { formatSkillLine, listSkills, type ListSkillsOptions, type SkillListing, type SkillListingEntry, type SkillOwner } from "./list.js";
|
|
4
4
|
export { manifestPathFor, MANIFEST_RELATIVE_PATH, readManifest, type SkillManifest } from "./manifest.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,0BAA0B,EAC1B,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,EACrC,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5I,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1G,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,WAAW,EACX,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,KAAK,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/I,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { deploySkills } from "./deploy.js";
|
|
1
|
+
export { deploySkills, removeDeployedSkillFolders, } from "./deploy.js";
|
|
2
2
|
export { doctorAssets, doctorDeployment, } from "./doctor.js";
|
|
3
3
|
export { formatSkillLine, listSkills } from "./list.js";
|
|
4
4
|
export { manifestPathFor, MANIFEST_RELATIVE_PATH, readManifest } from "./manifest.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAIZ,0BAA0B,GAI3B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,gBAAgB,GAKjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAsF,MAAM,WAAW,CAAC;AAC5I,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,YAAY,EAAsB,MAAM,eAAe,CAAC;AAC1G,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,WAAW,EACX,cAAc,EAId,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAqD,MAAM,mBAAmB,CAAC;AAC/I,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,GAGpB,MAAM,iBAAiB,CAAC"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"scripts": {
|
|
16
16
|
"build": "rm -rf dist && tsc -p tsconfig.build.json",
|
|
17
17
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
18
|
-
"test": "bun run typecheck && bun test --coverage"
|
|
18
|
+
"test": "bun run typecheck && bun test --isolate --coverage --timeout 30000"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@iarna/toml": "^2.2.5",
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
* When `profile.legacyLock` names a lock the OLD repo-controls engine
|
|
18
18
|
* left behind, a same-name folder it fully wrote (per legacy-lock.ts) is
|
|
19
19
|
* taken over on sight rather than reported as a conflict — see
|
|
20
|
-
* legacy-lock.ts for the exact ownership rule and lock rewrite.
|
|
20
|
+
* legacy-lock.ts for the exact ownership rule and lock rewrite. A legacy
|
|
21
|
+
* folder whose skill retired from assets/ is removed under the same
|
|
22
|
+
* ownership rule (never a hand-modified folder).
|
|
21
23
|
*
|
|
22
24
|
* Fails loud: assets/target validation, an invalid deploy profile, an
|
|
23
25
|
* invalid adl-config.toml subset, or an unwritable target all throw. There
|
|
@@ -40,6 +42,16 @@ export interface DeploySkillsOptions {
|
|
|
40
42
|
readonly profile?: DeployProfile;
|
|
41
43
|
/** Computes the exact same written/unchanged/removed/conflicts/retiredRemovals result without writing anything (independent review, 2026-09-29, finding 6). */
|
|
42
44
|
readonly dryRun?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* When set, deploy only the named surface (profile.surfaces[].name) —
|
|
47
|
+
* the deploy half of the per-surface knob (az567). Other surfaces are
|
|
48
|
+
* left untouched: their files are not written, their conflicts are not
|
|
49
|
+
* reported, their retired-folder cleanup does not run. The deploy
|
|
50
|
+
* profile's `retired` list is the closed set of "skill folders no
|
|
51
|
+
* surface reads any more"; for surface-prepare this list is also
|
|
52
|
+
* filtered to the active surfaces.
|
|
53
|
+
*/
|
|
54
|
+
readonly surfaceFilter?: string;
|
|
43
55
|
}
|
|
44
56
|
|
|
45
57
|
export interface SkillConflict {
|
|
@@ -69,7 +81,7 @@ export interface DeploySkillsResult {
|
|
|
69
81
|
* relative paths, same bytes, nothing extra. Such a folder carries no user
|
|
70
82
|
* content, so deploy may adopt it (Tarun, 2026-10-01).
|
|
71
83
|
*/
|
|
72
|
-
function folderIdenticalToAsset(skillDirAbs: string, assetDirAbs: string, sourceFiles: readonly string[]): boolean {
|
|
84
|
+
export function folderIdenticalToAsset(skillDirAbs: string, assetDirAbs: string, sourceFiles: readonly string[]): boolean {
|
|
73
85
|
let targetFiles: readonly string[];
|
|
74
86
|
try {
|
|
75
87
|
targetFiles = walkFiles(skillDirAbs);
|
|
@@ -80,7 +92,7 @@ function folderIdenticalToAsset(skillDirAbs: string, assetDirAbs: string, source
|
|
|
80
92
|
return sourceFiles.every((file) => Buffer.compare(readFileSync(join(skillDirAbs, file)), readFileSync(join(assetDirAbs, file))) === 0);
|
|
81
93
|
}
|
|
82
94
|
|
|
83
|
-
function removeEmptyParents(root: string, dir: string): void {
|
|
95
|
+
export function removeEmptyParents(root: string, dir: string): void {
|
|
84
96
|
let current = dir;
|
|
85
97
|
while (current !== root && current.startsWith(root)) {
|
|
86
98
|
if (!existsSync(current)) {
|
|
@@ -93,6 +105,201 @@ function removeEmptyParents(root: string, dir: string): void {
|
|
|
93
105
|
}
|
|
94
106
|
}
|
|
95
107
|
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
// az696 — `adl skills uninstall`: the removal primitive.
|
|
110
|
+
//
|
|
111
|
+
// `removeDeployedSkillFolders` removes the skill folders a previous
|
|
112
|
+
// `deploySkills` wrote, in the same resolution order (assets/ as the
|
|
113
|
+
// source of truth, the deploy profile as the closed set of surfaces, the
|
|
114
|
+
// repo's `[assets.skills]` subset respected on input).
|
|
115
|
+
//
|
|
116
|
+
// The function is split out from `deploySkills` because the deployment
|
|
117
|
+
// hot path should never carry the removal logic. The two are
|
|
118
|
+
// intentionally NOT one function with a flag — deploy's return value
|
|
119
|
+
// (written/unchanged/removed/conflicts/adopted) and uninstall's return
|
|
120
|
+
// value (removed/absent/refused) carry different fields, and a single
|
|
121
|
+
// result type would force both callers to ignore the half they don't
|
|
122
|
+
// care about.
|
|
123
|
+
//
|
|
124
|
+
// Safety: the only paths this function will remove are exactly the paths
|
|
125
|
+
// recorded in the deploy manifest. Anything else in the target repo —
|
|
126
|
+
// a hand-authored skill, an extra file the manifest did not write, a
|
|
127
|
+
// hand-edited deploy-written file — is reported in `refused` and never
|
|
128
|
+
// touched. This mirrors deploy's own contract that it never writes a
|
|
129
|
+
// file it did not itself originate (deploy.ts's header).
|
|
130
|
+
// ---------------------------------------------------------------------------
|
|
131
|
+
|
|
132
|
+
export interface SkillRefusal {
|
|
133
|
+
readonly folder: string;
|
|
134
|
+
readonly skill: string;
|
|
135
|
+
/** Repo-relative posix path to the entry the primitive refused to remove. */
|
|
136
|
+
readonly path: string;
|
|
137
|
+
/** Human-readable reason the entry was refused. */
|
|
138
|
+
readonly reason: string;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export interface RemoveDeployedSkillFoldersOptions {
|
|
142
|
+
readonly assetsDir: string;
|
|
143
|
+
readonly targetRepo: string;
|
|
144
|
+
/** Defaults to loadProfile() (the package's own deploy-profile.json) — pass explicitly when the caller has already resolved real on-disk paths (see profile.ts's header). */
|
|
145
|
+
readonly profile?: DeployProfile;
|
|
146
|
+
/** When set, only the skill folders for this surface (profile.surfaces[].name) are in scope. */
|
|
147
|
+
readonly surfaceFilter?: string;
|
|
148
|
+
/** When set, only this skill id (assets/ skill folder name) is in scope. */
|
|
149
|
+
readonly skillFilter?: string;
|
|
150
|
+
/** Computes the exact same removed/absent/refused result without unlinking anything. */
|
|
151
|
+
readonly dryRun?: boolean;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export interface RemoveDeployedSkillFoldersResult {
|
|
155
|
+
/** Repo-relative posix paths the primitive actually removed (or would have, in --dry-run). Sorted, deduplicated. */
|
|
156
|
+
readonly removed: readonly string[];
|
|
157
|
+
/** (surface, skill) pairs the deploy profile resolves to that are in scope but were already absent on disk. Sorted, deduplicated, "<folder>/<skill>". */
|
|
158
|
+
readonly absent: readonly string[];
|
|
159
|
+
/** Entries the manifest did not record but which live inside a managed skill dir or surface folder — never removed, always reported. */
|
|
160
|
+
readonly refused: readonly SkillRefusal[];
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* The deployed-skill removal primitive (az696). Removes every file the
|
|
165
|
+
* deploy manifest records, restricted by `surfaceFilter`/`skillFilter`
|
|
166
|
+
* (intersection) and the repo's `[assets.skills]` subset. Idempotent: a
|
|
167
|
+
* second call with the same arguments reports every target in `absent`.
|
|
168
|
+
*/
|
|
169
|
+
export function removeDeployedSkillFolders(options: RemoveDeployedSkillFoldersOptions): RemoveDeployedSkillFoldersResult {
|
|
170
|
+
const { assetsDir, targetRepo } = options;
|
|
171
|
+
const dryRun = options.dryRun === true;
|
|
172
|
+
|
|
173
|
+
if (!existsSync(assetsDir) || !statSync(assetsDir).isDirectory()) {
|
|
174
|
+
throw new Error(`agent-skills assets directory not found: ${assetsDir}`);
|
|
175
|
+
}
|
|
176
|
+
if (!existsSync(targetRepo) || !statSync(targetRepo).isDirectory()) {
|
|
177
|
+
throw new Error(`uninstall target is not a directory: ${targetRepo}`);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
const profile = options.profile ?? loadProfile();
|
|
181
|
+
const availableSkills = listSourceSkillNames(assetsDir);
|
|
182
|
+
|
|
183
|
+
const selection = resolveSkillSelection(targetRepo, availableSkills);
|
|
184
|
+
if (!selection.ok) throw new Error(selection.error);
|
|
185
|
+
const selectedSkills = [...new Set(selection.skills)].sort();
|
|
186
|
+
|
|
187
|
+
const manifest = readManifest(targetRepo);
|
|
188
|
+
|
|
189
|
+
// Build the in-scope (surface, skill) set, applying both filters as
|
|
190
|
+
// intersection. An unknown surfaceFilter or skillFilter is silently
|
|
191
|
+
// out-of-scope — the caller (the CLI) validates the names first and
|
|
192
|
+
// the primitive trusts its inputs.
|
|
193
|
+
const inScopeSurfaces = profile.surfaces.filter(
|
|
194
|
+
(surface) => options.surfaceFilter === undefined || surface.name === options.surfaceFilter,
|
|
195
|
+
);
|
|
196
|
+
const inScopeSkills = selectedSkills.filter(
|
|
197
|
+
(skill) => options.skillFilter === undefined || skill === options.skillFilter,
|
|
198
|
+
);
|
|
199
|
+
|
|
200
|
+
// Build the manifest-ownership set restricted to the in-scope
|
|
201
|
+
// (surface, skill) pairs. Everything the manifest records under those
|
|
202
|
+
// pairs is removable; everything else is not in scope.
|
|
203
|
+
const ownedPaths = new Set<string>();
|
|
204
|
+
for (const surface of inScopeSurfaces) {
|
|
205
|
+
for (const skill of inScopeSkills) {
|
|
206
|
+
const prefix = `${surface.folder}/${skill}/`;
|
|
207
|
+
for (const file of manifest.files) {
|
|
208
|
+
if (file.startsWith(prefix)) ownedPaths.add(file);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
const removed: string[] = [];
|
|
214
|
+
for (const relPath of [...ownedPaths].sort()) {
|
|
215
|
+
const absolute = join(targetRepo, relPath);
|
|
216
|
+
if (existsSync(absolute)) {
|
|
217
|
+
if (!dryRun) {
|
|
218
|
+
unlinkSync(absolute);
|
|
219
|
+
removeEmptyParents(targetRepo, dirname(absolute));
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
removed.push(relPath);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// Safety check: every path inside a managed skill dir or surface
|
|
226
|
+
// folder that is NOT in the manifest is reported as a refusal. The
|
|
227
|
+
// surface folder itself (e.g. `.claude/skills`) is reported when it
|
|
228
|
+
// exists and is not under any managed skill dir — the agent never
|
|
229
|
+
// removes the surface root on its own, only the skill dirs under it.
|
|
230
|
+
const refused: SkillRefusal[] = [];
|
|
231
|
+
for (const surface of inScopeSurfaces) {
|
|
232
|
+
const surfaceAbs = join(targetRepo, surface.folder);
|
|
233
|
+
if (!existsSync(surfaceAbs)) continue;
|
|
234
|
+
const inScope = options.skillFilter === undefined
|
|
235
|
+
? inScopeSkills
|
|
236
|
+
: inScopeSkills.filter((skill) => skill === options.skillFilter);
|
|
237
|
+
|
|
238
|
+
// Hand-authored skill dirs the manifest did not write.
|
|
239
|
+
for (const name of directoryNames(surfaceAbs)) {
|
|
240
|
+
if (inScope.includes(name)) continue;
|
|
241
|
+
// A skill the manifest owns under this surface is in-scope; an
|
|
242
|
+
// unrecorded same-name dir is user-authored and refused.
|
|
243
|
+
const isManaged = manifest.files.some((file) => file.startsWith(`${surface.folder}/${name}/`));
|
|
244
|
+
if (isManaged) continue; // already handled in the removal pass above
|
|
245
|
+
refused.push({
|
|
246
|
+
folder: surface.folder,
|
|
247
|
+
skill: name,
|
|
248
|
+
path: `${surface.folder}/${name}`,
|
|
249
|
+
reason: "folder is not recorded in the deploy manifest; refusing to remove user-authored content",
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// For each in-scope skill dir, any file inside that is not in the
|
|
254
|
+
// manifest is reported and never removed.
|
|
255
|
+
for (const skill of inScope) {
|
|
256
|
+
const skillDirAbs = join(surfaceAbs, skill);
|
|
257
|
+
if (!existsSync(skillDirAbs)) continue;
|
|
258
|
+
const isManaged = manifest.files.some((file) => file.startsWith(`${surface.folder}/${skill}/`));
|
|
259
|
+
if (!isManaged) continue; // already refused above as user-authored
|
|
260
|
+
for (const relFile of walkFiles(skillDirAbs)) {
|
|
261
|
+
const relPath = `${surface.folder}/${skill}/${relFile}`;
|
|
262
|
+
if (ownedPaths.has(relPath)) continue;
|
|
263
|
+
refused.push({
|
|
264
|
+
folder: surface.folder,
|
|
265
|
+
skill,
|
|
266
|
+
path: relPath,
|
|
267
|
+
reason: "file is inside a managed skill dir but is not recorded in the deploy manifest; refusing to remove user-authored content",
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
refused.sort((a, b) => a.path.localeCompare(b.path));
|
|
273
|
+
|
|
274
|
+
// The "absent" report: every (surface, skill) pair the deploy profile
|
|
275
|
+
// resolves to, filtered to in-scope, that has no files on disk and no
|
|
276
|
+
// manifest record. This is the idempotency signal a second run will
|
|
277
|
+
// see.
|
|
278
|
+
const absent: string[] = [];
|
|
279
|
+
for (const surface of inScopeSurfaces) {
|
|
280
|
+
for (const skill of inScopeSkills) {
|
|
281
|
+
const skillDirAbs = join(targetRepo, surface.folder, skill);
|
|
282
|
+
const prefix = `${surface.folder}/${skill}/`;
|
|
283
|
+
const hasManifestEntry = manifest.files.some((file) => file.startsWith(prefix));
|
|
284
|
+
if (!hasManifestEntry && !existsSync(skillDirAbs)) {
|
|
285
|
+
absent.push(`${surface.folder}/${skill}`);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
absent.sort();
|
|
290
|
+
|
|
291
|
+
// Rewrite the manifest to drop the paths we removed (and only those).
|
|
292
|
+
// The surviving set keeps every path the manifest recorded that is
|
|
293
|
+
// outside the in-scope (surface, skill) pairs — those belong to other
|
|
294
|
+
// surfaces/skills the user did not ask to uninstall.
|
|
295
|
+
if (!dryRun) {
|
|
296
|
+
const surviving = manifest.files.filter((file) => !ownedPaths.has(file));
|
|
297
|
+
writeManifest(targetRepo, surviving);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
return { removed: removed.sort(), absent, refused };
|
|
301
|
+
}
|
|
302
|
+
|
|
96
303
|
export function deploySkills(options: DeploySkillsOptions): DeploySkillsResult {
|
|
97
304
|
const { assetsDir, targetRepo } = options;
|
|
98
305
|
const dryRun = options.dryRun === true;
|
|
@@ -125,8 +332,47 @@ export function deploySkills(options: DeploySkillsOptions): DeploySkillsResult {
|
|
|
125
332
|
// conflict, with a reason naming what disqualified it.
|
|
126
333
|
const takeoverFiles = new Set<string>();
|
|
127
334
|
const takeoverConflictReasons = new Map<string, string>();
|
|
335
|
+
/** `${folder}/${skill}` in a retired folder that the legacy lock wrote and assets/ retired — removed by the retired-folder cleanup below. */
|
|
336
|
+
const legacyRetiredInRetired = new Set<string>();
|
|
128
337
|
if (legacyLock !== null) {
|
|
338
|
+
// Legacy retirement: a folder the old engine fully wrote (per the
|
|
339
|
+
// lock) whose skill no longer ships in assets/ is folded into
|
|
340
|
+
// takeoverFiles so the removal pass below deletes it — the header's
|
|
341
|
+
// "dropped from assets/ is removed" promise extended to old-engine
|
|
342
|
+
// folders. A repo-subset exclusion keeps the folder (the subset only
|
|
343
|
+
// limits what THIS deploy writes, it does not retract skills assets
|
|
344
|
+
// still ships). A folder failing the ownership check (hand-modified,
|
|
345
|
+
// extra file) is left untouched: it is becoming user-owned, the same
|
|
346
|
+
// disposition as the takeover conflict case. In retired folders there
|
|
347
|
+
// is no takeover pass: the folder is only recorded, and the
|
|
348
|
+
// retired-folder cleanup removes it under the same conditions.
|
|
349
|
+
const legacyRetired = (folder: string, foldIntoTakeover: boolean) => {
|
|
350
|
+
const prefix = `${folder}/`;
|
|
351
|
+
for (const skill of new Set(
|
|
352
|
+
[...legacyLock!.files.keys()]
|
|
353
|
+
.filter((relPath) => relPath.startsWith(prefix))
|
|
354
|
+
.map((relPath) => relPath.slice(prefix.length).split("/", 1)[0]!),
|
|
355
|
+
)) {
|
|
356
|
+
if (availableSkills.includes(skill)) continue; // still shipped — selected or subset path owns it
|
|
357
|
+
const skillDirRel = `${folder}/${skill}`;
|
|
358
|
+
const skillDirAbs = join(targetRepo, skillDirRel);
|
|
359
|
+
if (!existsSync(skillDirAbs)) continue;
|
|
360
|
+
if (manifest.files.some((file) => file.startsWith(`${skillDirRel}/`))) continue; // already ours
|
|
361
|
+
|
|
362
|
+
const check = checkLegacyOwnership(legacyLock!, targetRepo, skillDirRel, skillDirAbs);
|
|
363
|
+
if (!check.owned) continue;
|
|
364
|
+
if (foldIntoTakeover) {
|
|
365
|
+
for (const relFile of walkFiles(skillDirAbs)) takeoverFiles.add(`${skillDirRel}/${relFile}`);
|
|
366
|
+
} else {
|
|
367
|
+
legacyRetiredInRetired.add(skillDirRel);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
};
|
|
129
371
|
for (const surface of profile.surfaces) {
|
|
372
|
+
// az567 surfaceFilter: skip non-target surfaces entirely. The
|
|
373
|
+
// legacy-takeover pass for the non-target surface is irrelevant
|
|
374
|
+
// when only one surface is being deployed.
|
|
375
|
+
if (options.surfaceFilter !== undefined && surface.name !== options.surfaceFilter) continue;
|
|
130
376
|
for (const skill of selectedSkills) {
|
|
131
377
|
const skillDirRel = `${surface.folder}/${skill}`;
|
|
132
378
|
const skillDirAbs = join(targetRepo, skillDirRel);
|
|
@@ -140,12 +386,26 @@ export function deploySkills(options: DeploySkillsOptions): DeploySkillsResult {
|
|
|
140
386
|
takeoverConflictReasons.set(skillDirRel, check.reason!);
|
|
141
387
|
}
|
|
142
388
|
}
|
|
389
|
+
|
|
390
|
+
legacyRetired(surface.folder, true);
|
|
391
|
+
}
|
|
392
|
+
for (const folder of retiredFolders(profile)) {
|
|
393
|
+
// az567 surfaceFilter: retired-folder cleanup is also filtered to
|
|
394
|
+
// the active surfaces. A non-target surface's retired folder is
|
|
395
|
+
// left exactly as found.
|
|
396
|
+
if (options.surfaceFilter !== undefined) {
|
|
397
|
+
const isTargetActive = profile.surfaces.some((s) => s.folder === folder && s.name === options.surfaceFilter);
|
|
398
|
+
if (!isTargetActive) continue;
|
|
399
|
+
}
|
|
400
|
+
legacyRetired(folder, false);
|
|
143
401
|
}
|
|
144
402
|
}
|
|
145
403
|
|
|
146
404
|
const manifestFiles = new Set([...manifest.files, ...takeoverFiles]);
|
|
147
405
|
const adopted: string[] = [];
|
|
148
406
|
|
|
407
|
+
// Total over `selectedSkills`: every loop below iterates that same array, so
|
|
408
|
+
// `sourceFilesBySkill.get(skill)` is never undefined and needs no fallback.
|
|
149
409
|
const sourceFilesBySkill = new Map<string, readonly string[]>();
|
|
150
410
|
for (const skill of selectedSkills) sourceFilesBySkill.set(skill, walkFiles(join(assetsDir, skill)));
|
|
151
411
|
|
|
@@ -155,6 +415,10 @@ export function deploySkills(options: DeploySkillsOptions): DeploySkillsResult {
|
|
|
155
415
|
const keptPaths = new Set<string>();
|
|
156
416
|
|
|
157
417
|
for (const surface of profile.surfaces) {
|
|
418
|
+
// az567 surfaceFilter: only iterate the named surface. Other
|
|
419
|
+
// surfaces' deploy paths, conflicts, and removal decisions are out
|
|
420
|
+
// of scope and never appear in this result.
|
|
421
|
+
if (options.surfaceFilter !== undefined && surface.name !== options.surfaceFilter) continue;
|
|
158
422
|
for (const skill of selectedSkills) {
|
|
159
423
|
const skillDirRel = `${surface.folder}/${skill}`;
|
|
160
424
|
const skillDirAbs = join(targetRepo, skillDirRel);
|
|
@@ -164,7 +428,7 @@ export function deploySkills(options: DeploySkillsOptions): DeploySkillsResult {
|
|
|
164
428
|
// An unrecorded folder whose whole tree is byte-identical to the asset
|
|
165
429
|
// is adopted: its files fall through to the write loop below as
|
|
166
430
|
// unchanged and so land in the manifest. Anything else stays a conflict.
|
|
167
|
-
if (skillDirExists && !managedByUs && folderIdenticalToAsset(skillDirAbs, join(assetsDir, skill), sourceFilesBySkill.get(skill)
|
|
431
|
+
if (skillDirExists && !managedByUs && folderIdenticalToAsset(skillDirAbs, join(assetsDir, skill), sourceFilesBySkill.get(skill)!)) {
|
|
168
432
|
managedByUs = true;
|
|
169
433
|
adopted.push(skillDirRel);
|
|
170
434
|
}
|
|
@@ -180,7 +444,7 @@ export function deploySkills(options: DeploySkillsOptions): DeploySkillsResult {
|
|
|
180
444
|
continue; // never write into it, never claim its files in the manifest
|
|
181
445
|
}
|
|
182
446
|
|
|
183
|
-
for (const relFile of sourceFilesBySkill.get(skill)
|
|
447
|
+
for (const relFile of sourceFilesBySkill.get(skill)!) {
|
|
184
448
|
const targetRel = `${skillDirRel}/${relFile}`;
|
|
185
449
|
keptPaths.add(targetRel);
|
|
186
450
|
const targetAbs = join(targetRepo, targetRel);
|
|
@@ -205,6 +469,14 @@ export function deploySkills(options: DeploySkillsOptions): DeploySkillsResult {
|
|
|
205
469
|
// profile actually manages, even though every manifest entry should
|
|
206
470
|
// already satisfy that by construction.
|
|
207
471
|
if (!profile.surfaces.some((surface) => relPath.startsWith(`${surface.folder}/`))) continue;
|
|
472
|
+
// az567 surfaceFilter: paths under a non-target surface are not in
|
|
473
|
+
// scope and must not be removed during a per-surface deploy.
|
|
474
|
+
if (options.surfaceFilter !== undefined) {
|
|
475
|
+
const inTargetSurface = profile.surfaces.some(
|
|
476
|
+
(surface) => surface.name === options.surfaceFilter && relPath.startsWith(`${surface.folder}/`),
|
|
477
|
+
);
|
|
478
|
+
if (!inTargetSurface) continue;
|
|
479
|
+
}
|
|
208
480
|
const absolute = join(targetRepo, relPath);
|
|
209
481
|
if (existsSync(absolute)) {
|
|
210
482
|
if (!dryRun) {
|
|
@@ -230,11 +502,21 @@ export function deploySkills(options: DeploySkillsOptions): DeploySkillsResult {
|
|
|
230
502
|
const retiredRemovals: string[] = [];
|
|
231
503
|
const availableSkillSet = new Set(availableSkills);
|
|
232
504
|
for (const folder of retiredFolders(profile)) {
|
|
505
|
+
// az567 surfaceFilter: only clean up retired folders that are NOT
|
|
506
|
+
// tied to a non-target surface. A retired folder is per-profile
|
|
507
|
+
// (the active-surface filters above do not reduce the retired list);
|
|
508
|
+
// when a surfaceFilter is set, retired-folder cleanup runs the same
|
|
509
|
+
// way it does for a full deploy, because retired folders are not
|
|
510
|
+
// tied to a particular active surface.
|
|
233
511
|
const folderAbs = join(targetRepo, folder);
|
|
234
512
|
if (!existsSync(folderAbs)) continue;
|
|
235
513
|
|
|
236
514
|
for (const name of directoryNames(folderAbs)) {
|
|
237
|
-
|
|
515
|
+
// Ours to remove when the skill still ships in assets/ (a stale
|
|
516
|
+
// duplicate of a live skill) or the legacy lock proves the old
|
|
517
|
+
// engine wrote this copy of a now-retired skill. Anything else was
|
|
518
|
+
// never this package's to manage — left byte-for-byte.
|
|
519
|
+
if (!availableSkillSet.has(name) && !legacyRetiredInRetired.has(`${folder}/${name}`)) continue;
|
|
238
520
|
if (!dryRun) removeDirRecursive(join(folderAbs, name));
|
|
239
521
|
retiredRemovals.push(`${folder}/${name}`);
|
|
240
522
|
}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {
|
|
2
|
+
deploySkills,
|
|
3
|
+
type DeploySkillsOptions,
|
|
4
|
+
type DeploySkillsResult,
|
|
5
|
+
type SkillConflict,
|
|
6
|
+
removeDeployedSkillFolders,
|
|
7
|
+
type RemoveDeployedSkillFoldersOptions,
|
|
8
|
+
type RemoveDeployedSkillFoldersResult,
|
|
9
|
+
type SkillRefusal,
|
|
10
|
+
} from "./deploy.js";
|
|
2
11
|
export {
|
|
3
12
|
doctorAssets,
|
|
4
13
|
doctorDeployment,
|
package/packages/azdo/README.md
CHANGED
|
@@ -68,13 +68,22 @@ adl mcp cli pr-create-or-update --action create \
|
|
|
68
68
|
--title 'feat(cli): add direct mode' \
|
|
69
69
|
--description $'## Summary\n\nAdds a CLI path.\n\n## Why\n\nMCP can be unavailable.\n\n## Changes\n\n- Add CLI mode'
|
|
70
70
|
adl mcp cli build-run --id 17 --branch refs/heads/integration
|
|
71
|
-
adl mcp cli workitem-create-or-update --
|
|
71
|
+
adl mcp cli workitem-create-or-update-bug --title 'CLI failure' --parent-id 378 --effort 1 --description $'## Current behaviour\n\nCLI exits 2.\n\n## Expected behaviour\n\nExits 0.\n\n## Behaviour that must not change\n\nJSON on stdout.\n\n## Responsible Feature\n\naz378\n\n## Verification\n\nRe-run the failing command.'
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
Run `adl mcp cli --help` for the complete flag contract. The CLI has exactly the
|
|
75
|
-
current MCP surface: `pr_list_or_get`, `pr_create_or_update`, `
|
|
76
|
-
`build_run`, `workitem_list_or_get`,
|
|
77
|
-
|
|
75
|
+
current MCP surface: `pr_list_or_get`, `pr_create_or_update`, `pr_review`,
|
|
76
|
+
`build_list_or_get`, `build_run`, `workitem_list_or_get`,
|
|
77
|
+
`workitem_create_or_update_feature`, `workitem_create_or_update_pbi`,
|
|
78
|
+
`workitem_create_or_update_bug`, `workitem_comments_read`, `workitem_attachments`,
|
|
79
|
+
`activity_add` and `activity_list`; the CLI exposes their hyphenated equivalents.
|
|
80
|
+
The blanket `workitem_create_or_update` was split per work-item type so the agent
|
|
81
|
+
gate can enforce each type's mandatory fields (Feature: title + parentId + priority
|
|
82
|
+
+ intent.md description; PBI/Bug: title + parentId + item-file description + effort
|
|
83
|
+
in days; `comment` on every update of any type); the read side
|
|
84
|
+
(`workitem_list_or_get`) stays one tool. Per-type mandatory fields and the
|
|
85
|
+
heading-parse gates: see
|
|
86
|
+
`packages/agent-skills/assets/workitems-process/references/ado-and-git.md` §1a.
|
|
78
87
|
|
|
79
88
|
## Source
|
|
80
89
|
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Bun test config — like Python's conftest.py: a preload file runs once
|
|
2
|
+
# before every test in this package. tests/setup.ts installs the test-only
|
|
3
|
+
# AzureRemote defaults (org / project / repository) that the resolvers
|
|
4
|
+
# fall back to when no argument and no git remote resolve.
|
|
5
|
+
[test]
|
|
6
|
+
preload = ["./tests/setup.ts"]
|