@miller-tech/uap 1.20.51 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +65 -21
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/bin/cli.js +88 -5
  4. package/dist/bin/cli.js.map +1 -1
  5. package/dist/cli/agent.js +1 -1
  6. package/dist/cli/agent.js.map +1 -1
  7. package/dist/cli/droids.d.ts +21 -1
  8. package/dist/cli/droids.d.ts.map +1 -1
  9. package/dist/cli/droids.js +142 -0
  10. package/dist/cli/droids.js.map +1 -1
  11. package/dist/cli/expert-route.d.ts +11 -0
  12. package/dist/cli/expert-route.d.ts.map +1 -0
  13. package/dist/cli/expert-route.js +67 -0
  14. package/dist/cli/expert-route.js.map +1 -0
  15. package/dist/cli/harness.d.ts +24 -0
  16. package/dist/cli/harness.d.ts.map +1 -0
  17. package/dist/cli/harness.js +84 -0
  18. package/dist/cli/harness.js.map +1 -0
  19. package/dist/cli/hooks.d.ts +13 -2
  20. package/dist/cli/hooks.d.ts.map +1 -1
  21. package/dist/cli/hooks.js +333 -3
  22. package/dist/cli/hooks.js.map +1 -1
  23. package/dist/cli/ideate.d.ts +18 -0
  24. package/dist/cli/ideate.d.ts.map +1 -0
  25. package/dist/cli/ideate.js +148 -0
  26. package/dist/cli/ideate.js.map +1 -0
  27. package/dist/cli/patterns.js +55 -0
  28. package/dist/cli/patterns.js.map +1 -1
  29. package/dist/cli/setup.d.ts.map +1 -1
  30. package/dist/cli/setup.js +14 -1
  31. package/dist/cli/setup.js.map +1 -1
  32. package/dist/coordination/capability-router.d.ts +1 -1
  33. package/dist/coordination/capability-router.d.ts.map +1 -1
  34. package/dist/coordination/capability-router.js +132 -0
  35. package/dist/coordination/capability-router.js.map +1 -1
  36. package/dist/coordination/expert-orchestrator.d.ts +66 -0
  37. package/dist/coordination/expert-orchestrator.d.ts.map +1 -0
  38. package/dist/coordination/expert-orchestrator.js +150 -0
  39. package/dist/coordination/expert-orchestrator.js.map +1 -0
  40. package/dist/coordination/service.d.ts +8 -1
  41. package/dist/coordination/service.d.ts.map +1 -1
  42. package/dist/coordination/service.js +18 -4
  43. package/dist/coordination/service.js.map +1 -1
  44. package/dist/mcp-router/experts/registry.d.ts +54 -0
  45. package/dist/mcp-router/experts/registry.d.ts.map +1 -0
  46. package/dist/mcp-router/experts/registry.js +143 -0
  47. package/dist/mcp-router/experts/registry.js.map +1 -0
  48. package/dist/mcp-router/index.d.ts +2 -0
  49. package/dist/mcp-router/index.d.ts.map +1 -1
  50. package/dist/mcp-router/index.js +1 -0
  51. package/dist/mcp-router/index.js.map +1 -1
  52. package/dist/mcp-router/server.d.ts.map +1 -1
  53. package/dist/mcp-router/server.js +16 -0
  54. package/dist/mcp-router/server.js.map +1 -1
  55. package/dist/mcp-router/tools/execute.d.ts.map +1 -1
  56. package/dist/mcp-router/tools/execute.js +40 -0
  57. package/dist/mcp-router/tools/execute.js.map +1 -1
  58. package/dist/models/planner.d.ts +7 -1
  59. package/dist/models/planner.d.ts.map +1 -1
  60. package/dist/models/planner.js +61 -0
  61. package/dist/models/planner.js.map +1 -1
  62. package/dist/models/types.d.ts +2 -0
  63. package/dist/models/types.d.ts.map +1 -1
  64. package/dist/models/types.js.map +1 -1
  65. package/dist/observability/halo-exporter.d.ts +86 -0
  66. package/dist/observability/halo-exporter.d.ts.map +1 -0
  67. package/dist/observability/halo-exporter.js +139 -0
  68. package/dist/observability/halo-exporter.js.map +1 -0
  69. package/dist/tasks/database.d.ts.map +1 -1
  70. package/dist/tasks/database.js +9 -2
  71. package/dist/tasks/database.js.map +1 -1
  72. package/dist/telemetry/session-telemetry.d.ts.map +1 -1
  73. package/dist/telemetry/session-telemetry.js +7 -0
  74. package/dist/telemetry/session-telemetry.js.map +1 -1
  75. package/docs/architecture/EXPERT_STACK.md +137 -0
  76. package/docs/architecture/PLATFORM_GATING.md +68 -0
  77. package/docs/reference/EXPERT_DROIDS.md +219 -0
  78. package/package.json +1 -1
  79. package/templates/hooks/pre-tool-use-edit-write.sh +29 -8
  80. package/templates/hooks/uap-policy-gate-hermes.sh +42 -0
  81. package/tools/agents/scripts/anthropic_proxy.py +166 -30
  82. package/tools/agents/tests/test_attractor_detection.py +213 -0
@@ -2,6 +2,8 @@ import chalk from 'chalk';
2
2
  import ora from 'ora';
3
3
  import { existsSync, readdirSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
4
4
  import { join, basename } from 'path';
5
+ import yaml from 'js-yaml';
6
+ import { DEFAULT_CAPABILITY_MAPPINGS } from '../coordination/capability-router.js';
5
7
  const BUILTIN_TEMPLATES = {
6
8
  'code-reviewer': {
7
9
  description: 'Reviews diffs for correctness, tests, and migration risks',
@@ -116,6 +118,146 @@ export async function droidsCommand(action, options = {}) {
116
118
  }
117
119
  await importDroids(cwd, options.path);
118
120
  break;
121
+ case 'validate': {
122
+ const result = await validateDroids(cwd);
123
+ if (!options.quiet)
124
+ printValidationReport(result);
125
+ if (!result.ok)
126
+ process.exit(1);
127
+ break;
128
+ }
129
+ }
130
+ }
131
+ /**
132
+ * Validate that every droid referenced by the capability router exists on
133
+ * disk and has a well-formed frontmatter. Returns a structured result so
134
+ * the validator is usable both from the CLI and from tests.
135
+ */
136
+ export async function validateDroids(cwd) {
137
+ const issues = [];
138
+ const droidDir = join(cwd, '.factory', 'droids');
139
+ const droidsFound = [];
140
+ // 1. Discover all .md droids and parse their frontmatter
141
+ // Skip test fixtures created by parallel-droid tests (.gitignored, not tracked)
142
+ if (existsSync(droidDir)) {
143
+ const entries = readdirSync(droidDir).filter((f) => f.endsWith('.md') && !f.startsWith('test-droid-'));
144
+ const seenNames = new Map();
145
+ for (const file of entries) {
146
+ const path = join(droidDir, file);
147
+ const content = readFileSync(path, 'utf-8');
148
+ const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
149
+ if (!fmMatch) {
150
+ issues.push({
151
+ severity: 'error',
152
+ type: 'invalid-frontmatter',
153
+ path,
154
+ message: `No YAML frontmatter found in ${basename(file)}`,
155
+ });
156
+ continue;
157
+ }
158
+ let meta;
159
+ try {
160
+ const parsed = yaml.load(fmMatch[1]);
161
+ if (!parsed || typeof parsed !== 'object') {
162
+ throw new Error('frontmatter is not an object');
163
+ }
164
+ meta = parsed;
165
+ }
166
+ catch (err) {
167
+ issues.push({
168
+ severity: 'error',
169
+ type: 'invalid-frontmatter',
170
+ path,
171
+ message: `Cannot parse frontmatter in ${basename(file)}: ${err.message}`,
172
+ });
173
+ continue;
174
+ }
175
+ const name = typeof meta.name === 'string' ? meta.name.trim() : '';
176
+ const desc = typeof meta.description === 'string' ? meta.description.trim() : '';
177
+ if (!name) {
178
+ issues.push({
179
+ severity: 'error',
180
+ type: 'missing-name',
181
+ path,
182
+ message: `Missing required 'name' field in ${basename(file)}`,
183
+ });
184
+ continue;
185
+ }
186
+ if (!desc || desc.length < 5) {
187
+ issues.push({
188
+ severity: 'error',
189
+ type: 'missing-description',
190
+ path,
191
+ droidName: name,
192
+ message: `Droid '${name}' description must be at least 5 chars`,
193
+ });
194
+ }
195
+ if (seenNames.has(name)) {
196
+ issues.push({
197
+ severity: 'error',
198
+ type: 'duplicate-name',
199
+ path,
200
+ droidName: name,
201
+ message: `Duplicate droid name '${name}' (also in ${basename(seenNames.get(name))})`,
202
+ });
203
+ }
204
+ else {
205
+ seenNames.set(name, path);
206
+ }
207
+ droidsFound.push(name);
208
+ }
209
+ }
210
+ // 2. Cross-reference capability router expectations
211
+ const expected = new Set();
212
+ for (const mapping of DEFAULT_CAPABILITY_MAPPINGS) {
213
+ for (const d of mapping.droids)
214
+ expected.add(d);
215
+ }
216
+ const droidsExpected = [...expected].sort();
217
+ const foundSet = new Set(droidsFound);
218
+ for (const name of droidsExpected) {
219
+ if (!foundSet.has(name)) {
220
+ issues.push({
221
+ severity: 'error',
222
+ type: 'missing-droid',
223
+ droidName: name,
224
+ message: `Capability router references droid '${name}' but no file exists at .factory/droids/${name}.md`,
225
+ });
226
+ }
227
+ }
228
+ return {
229
+ ok: issues.filter((i) => i.severity === 'error').length === 0,
230
+ issues,
231
+ droidsFound: droidsFound.sort(),
232
+ droidsExpected,
233
+ };
234
+ }
235
+ function printValidationReport(result) {
236
+ console.log(chalk.bold('\n🔍 Droid Validation\n'));
237
+ console.log(` Droids on disk: ${chalk.cyan(result.droidsFound.length)}`);
238
+ console.log(` Droids expected: ${chalk.cyan(result.droidsExpected.length)}`);
239
+ console.log(` Issues found: ${result.ok ? chalk.green(0) : chalk.red(result.issues.length)}\n`);
240
+ if (result.issues.length === 0) {
241
+ console.log(chalk.green('✅ All droids valid.\n'));
242
+ return;
243
+ }
244
+ const errors = result.issues.filter((i) => i.severity === 'error');
245
+ const warnings = result.issues.filter((i) => i.severity === 'warning');
246
+ if (errors.length > 0) {
247
+ console.log(chalk.red.bold(`❌ ${errors.length} error(s):`));
248
+ for (const issue of errors) {
249
+ const label = issue.droidName ? `[${issue.droidName}] ` : '';
250
+ console.log(chalk.red(` • ${label}${issue.message}`));
251
+ }
252
+ console.log('');
253
+ }
254
+ if (warnings.length > 0) {
255
+ console.log(chalk.yellow.bold(`⚠️ ${warnings.length} warning(s):`));
256
+ for (const issue of warnings) {
257
+ const label = issue.droidName ? `[${issue.droidName}] ` : '';
258
+ console.log(chalk.yellow(` • ${label}${issue.message}`));
259
+ }
260
+ console.log('');
119
261
  }
120
262
  }
121
263
  async function listDroids(cwd) {
@@ -1 +1 @@
1
- {"version":3,"file":"droids.js","sourceRoot":"","sources":["../../src/cli/droids.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"droids.js","sourceRoot":"","sources":["../../src/cli/droids.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface ExpertRouteOptions {
2
+ files?: string[];
3
+ json?: boolean;
4
+ }
5
+ /**
6
+ * `uap expert-route <task>` — print the recommended expert droid chain for
7
+ * a task description. Supports `--files` to scope by affected paths and
8
+ * `--json` for machine-readable output.
9
+ */
10
+ export declare function expertRouteCommand(description: string, options?: ExpertRouteOptions): Promise<void>;
11
+ //# sourceMappingURL=expert-route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expert-route.d.ts","sourceRoot":"","sources":["../../src/cli/expert-route.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAWD;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAef"}
@@ -0,0 +1,67 @@
1
+ import chalk from 'chalk';
2
+ import { ExpertOrchestrator, planFromDescription, } from '../coordination/expert-orchestrator.js';
3
+ const PHASE_LABEL = {
4
+ ideate: '💡 Ideate',
5
+ plan: '📋 Plan',
6
+ design: '🏗 Design',
7
+ implement: '⚙️ Implement',
8
+ review: '🔍 Review',
9
+ release: '🚀 Release',
10
+ };
11
+ /**
12
+ * `uap expert-route <task>` — print the recommended expert droid chain for
13
+ * a task description. Supports `--files` to scope by affected paths and
14
+ * `--json` for machine-readable output.
15
+ */
16
+ export async function expertRouteCommand(description, options = {}) {
17
+ if (!description || description.trim().length === 0) {
18
+ console.error(chalk.red('expert-route: task description required'));
19
+ process.exit(2);
20
+ }
21
+ const orchestrator = new ExpertOrchestrator();
22
+ const plan = planFromDescription(description, orchestrator, options.files);
23
+ if (options.json || !process.stdout.isTTY) {
24
+ process.stdout.write(JSON.stringify(toJson(plan), null, 2) + '\n');
25
+ return;
26
+ }
27
+ printPlan(plan);
28
+ }
29
+ function toJson(plan) {
30
+ return {
31
+ task: plan.task,
32
+ confidence: plan.confidence,
33
+ matched_capabilities: plan.capability.matchedCapabilities,
34
+ steps: plan.steps.map((s) => ({
35
+ phase: s.phase,
36
+ droid: s.droid,
37
+ parallel: s.parallel,
38
+ rationale: s.rationale,
39
+ success_rate: s.successRate,
40
+ })),
41
+ };
42
+ }
43
+ function printPlan(plan) {
44
+ console.log(chalk.bold('\n🤖 Expert Droid Chain\n'));
45
+ console.log(` ${chalk.dim('Task:')} ${plan.task}`);
46
+ console.log(` ${chalk.dim('Confidence:')} ${(plan.confidence * 100).toFixed(0)}%`);
47
+ console.log(` ${chalk.dim('Matched:')} ${plan.capability.matchedCapabilities.join(', ') || chalk.dim('(no specific capability)')}`);
48
+ console.log('');
49
+ let lastPhase = null;
50
+ for (const step of plan.steps) {
51
+ if (step.phase !== lastPhase) {
52
+ console.log(chalk.bold(` ${PHASE_LABEL[step.phase]}`));
53
+ lastPhase = step.phase;
54
+ }
55
+ const parallelTag = step.parallel ? chalk.dim(' [parallel]') : '';
56
+ const rate = step.successRate === null
57
+ ? chalk.dim(' (no history)')
58
+ : ` ${chalk.green(((step.successRate * 100) | 0) + '% success')}`;
59
+ console.log(` • ${chalk.cyan(step.droid)}${parallelTag}${rate}`);
60
+ console.log(` ${chalk.dim(step.rationale)}`);
61
+ }
62
+ if (plan.steps.length === 0) {
63
+ console.log(chalk.yellow(' No droids matched; consider broadening the task description.'));
64
+ }
65
+ console.log('');
66
+ }
67
+ //# sourceMappingURL=expert-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expert-route.js","sourceRoot":"","sources":["../../src/cli/expert-route.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Resolve a process exit code from a spawnSync result. A signal-terminated
3
+ * child has `status: null` + `signal: '<name>'`; `status ?? 0` would coalesce
4
+ * that to a *successful* exit, hiding SIGTERM/SIGKILL (CI timeouts, OOM) from
5
+ * callers that gate on the exit code. Map signals to 128+n (POSIX convention).
6
+ */
7
+ export declare function spawnExitCode(status: number | null, signal: NodeJS.Signals | null): number;
8
+ export interface HarnessOptions {
9
+ traces?: string;
10
+ prompt?: string;
11
+ json?: boolean;
12
+ }
13
+ /**
14
+ * `uap harness analyze` — run the HALO engine over collected UAP traces to
15
+ * surface systemic harness failure modes. Thin wrapper over the `halo` CLI.
16
+ *
17
+ * HALO contract: ask about the trace data; never ask it to write code.
18
+ */
19
+ export declare function harnessAnalyze(options?: HarnessOptions): Promise<void>;
20
+ /** `uap harness status` — report HALO trace collection state. */
21
+ export declare function harnessStatus(options?: HarnessOptions): Promise<void>;
22
+ /** Dispatch for the `uap harness <subcommand>` group. */
23
+ export declare function harnessCommand(sub: 'analyze' | 'status', options?: HarnessOptions): Promise<void>;
24
+ //# sourceMappingURL=harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/cli/harness.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,GAC5B,MAAM,CAOR;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAiBD;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BhF;AAED,iEAAiE;AACjE,wBAAsB,aAAa,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B/E;AAED,yDAAyD;AACzD,wBAAsB,cAAc,CAClC,GAAG,EAAE,SAAS,GAAG,QAAQ,EACzB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAGf"}
@@ -0,0 +1,84 @@
1
+ import chalk from 'chalk';
2
+ import { existsSync, readFileSync } from 'fs';
3
+ import { spawnSync } from 'child_process';
4
+ import { constants as osConstants } from 'os';
5
+ import { isHaloTracingEnabled, haloTracePath } from '../observability/halo-exporter.js';
6
+ /**
7
+ * Resolve a process exit code from a spawnSync result. A signal-terminated
8
+ * child has `status: null` + `signal: '<name>'`; `status ?? 0` would coalesce
9
+ * that to a *successful* exit, hiding SIGTERM/SIGKILL (CI timeouts, OOM) from
10
+ * callers that gate on the exit code. Map signals to 128+n (POSIX convention).
11
+ */
12
+ export function spawnExitCode(status, signal) {
13
+ if (status !== null)
14
+ return status;
15
+ if (signal) {
16
+ const num = osConstants.signals[signal];
17
+ return typeof num === 'number' ? 128 + num : 1;
18
+ }
19
+ return 1;
20
+ }
21
+ /** True when the `halo` CLI (halo-engine) is resolvable on PATH. */
22
+ function haloInstalled() {
23
+ const probe = spawnSync('halo', ['--help'], { stdio: 'ignore' });
24
+ return probe.status === 0 || probe.status === 2; // 2 = usage/help on some CLIs
25
+ }
26
+ function countLines(path) {
27
+ try {
28
+ const txt = readFileSync(path, 'utf-8').trim();
29
+ return txt.length === 0 ? 0 : txt.split('\n').length;
30
+ }
31
+ catch {
32
+ return 0;
33
+ }
34
+ }
35
+ /**
36
+ * `uap harness analyze` — run the HALO engine over collected UAP traces to
37
+ * surface systemic harness failure modes. Thin wrapper over the `halo` CLI.
38
+ *
39
+ * HALO contract: ask about the trace data; never ask it to write code.
40
+ */
41
+ export async function harnessAnalyze(options = {}) {
42
+ const traces = options.traces || haloTracePath();
43
+ const prompt = options.prompt || 'What are the most common systemic failure modes in these traces?';
44
+ if (!existsSync(traces)) {
45
+ console.error(chalk.red(`No trace file at ${traces}.`));
46
+ console.error(chalk.dim('Enable trace collection first: set UAP_HALO_TRACE=1 (optionally UAP_HALO_TRACE_PATH) and re-run your workflow.'));
47
+ process.exit(2);
48
+ }
49
+ if (!haloInstalled()) {
50
+ console.error(chalk.yellow('The `halo` CLI is not installed.'));
51
+ console.error(chalk.dim('Install it (Python ≥3.10): pip install halo-engine'));
52
+ console.error(chalk.dim('Then run:'));
53
+ console.error(chalk.cyan(` halo ${traces} -p "${prompt}"`));
54
+ process.exit(2);
55
+ }
56
+ const args = [traces, '-p', prompt];
57
+ if (options.json)
58
+ args.push('--json');
59
+ const res = spawnSync('halo', args, { stdio: 'inherit' });
60
+ process.exit(spawnExitCode(res.status, res.signal));
61
+ }
62
+ /** `uap harness status` — report HALO trace collection state. */
63
+ export async function harnessStatus(options = {}) {
64
+ const enabled = isHaloTracingEnabled();
65
+ const path = haloTracePath();
66
+ const exists = existsSync(path);
67
+ const spans = exists ? countLines(path) : 0;
68
+ if (options.json) {
69
+ process.stdout.write(JSON.stringify({ tracingEnabled: enabled, tracePath: path, traceFileExists: exists, spanCount: spans }, null, 2) + '\n');
70
+ return;
71
+ }
72
+ console.log(chalk.bold('\n🔭 HALO Trace Status\n'));
73
+ console.log(` ${chalk.dim('Tracing:')} ${enabled ? chalk.green('enabled') : chalk.yellow('disabled (set UAP_HALO_TRACE=1)')}`);
74
+ console.log(` ${chalk.dim('Trace file:')} ${path}`);
75
+ console.log(` ${chalk.dim('Status:')} ${exists ? chalk.green(`${spans} spans`) : chalk.dim('no traces collected yet')}`);
76
+ console.log('');
77
+ }
78
+ /** Dispatch for the `uap harness <subcommand>` group. */
79
+ export async function harnessCommand(sub, options = {}) {
80
+ if (sub === 'status')
81
+ return harnessStatus(options);
82
+ return harnessAnalyze(options);
83
+ }
84
+ //# sourceMappingURL=harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/cli/harness.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,20 @@
1
- export type HooksTarget = 'claude' | 'factory' | 'cursor' | 'vscode' | 'opencode' | 'codex' | 'forgecode' | 'omp';
2
- type HooksAction = 'install' | 'status';
1
+ export type HooksTarget = 'claude' | 'factory' | 'cursor' | 'vscode' | 'opencode' | 'codex' | 'forgecode' | 'omp' | 'hermes';
2
+ type HooksAction = 'install' | 'status' | 'doctor';
3
3
  interface HooksOptions {
4
4
  projectDir?: string;
5
5
  target?: HooksTarget;
6
6
  }
7
+ export declare const ALL_TARGETS: HooksTarget[];
7
8
  export declare function hooksCommand(action: HooksAction, options?: HooksOptions): Promise<void>;
9
+ export type GateTier = 'gateable' | 'mcp' | 'advisory';
10
+ export interface DoctorRow {
11
+ platform: HooksTarget;
12
+ tier: GateTier;
13
+ scriptPresent: boolean;
14
+ wired: boolean;
15
+ note: string;
16
+ }
17
+ /** Audit one platform's policy-gate coverage. */
18
+ export declare function auditPlatform(cwd: string, target: HooksTarget): DoctorRow;
8
19
  export {};
9
20
  //# sourceMappingURL=hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,WAAW,GACX,KAAK,CAAC;AACV,KAAK,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExC,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAmBD,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjG"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,WAAW,GACX,KAAK,GACL,QAAQ,CAAC;AACb,KAAK,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEnD,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAGD,eAAO,MAAM,WAAW,EAAE,WAAW,EAUpC,CAAC;AAcF,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBjG;AA+4CD,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC;AACvD,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAUD,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,CAqFzE"}