mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-11 21:57:14 +03:00
Sync generated provider output
This commit is contained in:
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
@@ -32,7 +32,7 @@ The first argument is the action. Defaults to `status`.
|
||||
| `ignore-value <id> <value> [--shared] [--reason "..."]` | Append a rule/value suppression to shared `.impeccable/config.json`. |
|
||||
| `ignore-value <id> <value> --local [--reason "..."]` | Append a private rule/value suppression to `.impeccable/config.local.json`. |
|
||||
| `ignore-value <id> "*" --file <glob> [--file <glob>...]` | Turn one rule off in matching files only, leaving it active everywhere else. Repeat `--file`, or use `--file=<glob>` / `--files=<glob>`. A bare `"*"` with no `--file` is refused: use `ignore-rule <id>` if you really mean project-wide. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue. |
|
||||
| `reset` | Delete the project config, dedup cache, and Cursor pending queue, and remove the hook's entries from every provider manifest `on` installs, the committed Copilot file included (a team-shared `settings.json` that `on` never writes is never touched). |
|
||||
|
||||
## Flow
|
||||
|
||||
|
||||
@@ -770,9 +770,22 @@ function reset(cwd) {
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
return removed.length
|
||||
? `Reset design hook config and cache (removed: ${removed.join(', ')}).`
|
||||
: 'No hook config or cache to remove. Already at defaults.';
|
||||
// `on` writes three things: config, consent, and hook entries in the
|
||||
// provider manifests. Reset must undo all three (issue #512): a leftover
|
||||
// manifest entry kept invoking the hook after the config that said "off"
|
||||
// was deleted. Local destRel only, since `on` never writes the team-shared
|
||||
// sharedDestRel. No skill-folder gate: a reset mid-uninstall (skill files
|
||||
// gone, manifest still wired) is the case that most needs the prune.
|
||||
const pruned = [];
|
||||
for (const target of HOOK_MANIFEST_TARGETS) {
|
||||
try {
|
||||
if (pruneImpeccableHookFromManifest(path.join(cwd, target.destRel))) pruned.push(target.provider);
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
const parts = [];
|
||||
if (removed.length) parts.push(`Reset design hook config and cache (removed: ${removed.join(', ')}).`);
|
||||
if (pruned.length) parts.push(`Removed hook entries from: ${pruned.join(', ')}.`);
|
||||
return parts.length ? parts.join(' ') : 'No hook config or cache to remove. Already at defaults.';
|
||||
}
|
||||
|
||||
function main() {
|
||||
|
||||
Reference in New Issue
Block a user