@miller-tech/uap 1.40.1 → 1.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/bin/cli.js +17 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/deliver-defaults.d.ts +23 -0
- package/dist/cli/deliver-defaults.d.ts.map +1 -0
- package/dist/cli/deliver-defaults.js +121 -0
- package/dist/cli/deliver-defaults.js.map +1 -0
- package/dist/cli/hooks.d.ts.map +1 -1
- package/dist/cli/hooks.js +50 -2
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +29 -0
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/react.d.ts +25 -0
- package/dist/cli/react.d.ts.map +1 -0
- package/dist/cli/react.js +59 -0
- package/dist/cli/react.js.map +1 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +19 -0
- package/dist/cli/setup.js.map +1 -1
- package/dist/coordination/reactor.d.ts +38 -0
- package/dist/coordination/reactor.d.ts.map +1 -0
- package/dist/coordination/reactor.js +124 -0
- package/dist/coordination/reactor.js.map +1 -0
- package/dist/mcp-router/server.d.ts +2 -1
- package/dist/mcp-router/server.d.ts.map +1 -1
- package/dist/mcp-router/server.js +5 -2
- package/dist/mcp-router/server.js.map +1 -1
- package/dist/mcp-router/tools/react.d.ts +58 -0
- package/dist/mcp-router/tools/react.d.ts.map +1 -0
- package/dist/mcp-router/tools/react.js +57 -0
- package/dist/mcp-router/tools/react.js.map +1 -0
- package/dist/memory/model-router.d.ts +1 -1
- package/dist/memory/model-router.d.ts.map +1 -1
- package/dist/memory/model-router.js +27 -1
- package/dist/memory/model-router.js.map +1 -1
- package/dist/models/openai-compat-client.d.ts.map +1 -1
- package/dist/models/openai-compat-client.js +5 -0
- package/dist/models/openai-compat-client.js.map +1 -1
- package/dist/models/types.d.ts +8 -0
- package/dist/models/types.d.ts.map +1 -1
- package/dist/models/types.js +22 -0
- package/dist/models/types.js.map +1 -1
- package/dist/policies/policy-tools.d.ts +7 -0
- package/dist/policies/policy-tools.d.ts.map +1 -1
- package/dist/policies/policy-tools.js +24 -2
- package/dist/policies/policy-tools.js.map +1 -1
- package/dist/types/config.d.ts +12 -0
- package/dist/types/config.d.ts.map +1 -1
- package/docs/design/UAP_REACTOR.md +170 -0
- package/package.json +3 -1
- package/src/policies/enforcers/7ebbc721-7540-4e9f-879a-770e0213a09b_architecture_review.py +101 -0
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/src/policies/enforcers/_common.py +100 -0
- package/src/policies/enforcers/artifact_hygiene.py +52 -0
- package/src/policies/enforcers/cluster_routing.py +63 -0
- package/src/policies/enforcers/codebase_read_before_plan.py +52 -0
- package/src/policies/enforcers/coord_overlap.py +81 -0
- package/src/policies/enforcers/delivery_enforcement.py +97 -0
- package/src/policies/enforcers/doc_live_over_report.py +50 -0
- package/src/policies/enforcers/expert_review_required.py +135 -0
- package/src/policies/enforcers/iac_parity.py +53 -0
- package/src/policies/enforcers/mcp_router_first.py +37 -0
- package/src/policies/enforcers/memory_before_plan.py +61 -0
- package/src/policies/enforcers/parallel_reads.py +50 -0
- package/src/policies/enforcers/rtk_wrap.py +44 -0
- package/src/policies/enforcers/schema_diff_gate.py +80 -0
- package/src/policies/enforcers/session_memory_write.py +52 -0
- package/src/policies/enforcers/task_required.py +131 -0
- package/src/policies/enforcers/test_gate.py +58 -0
- package/src/policies/enforcers/validate_plan_before_build.py +75 -0
- package/src/policies/enforcers/worktree_required.py +57 -0
- package/src/policies/schemas/policies/architecture-review.md +51 -0
- package/src/policies/schemas/policies/artifact-hygiene.md +29 -0
- package/src/policies/schemas/policies/cluster-routing.md +31 -0
- package/src/policies/schemas/policies/codebase-read-before-plan.md +30 -0
- package/src/policies/schemas/policies/coord-overlap.md +24 -0
- package/src/policies/schemas/policies/delivery-enforcement.md +45 -0
- package/src/policies/schemas/policies/doc-live-over-report.md +32 -0
- package/src/policies/schemas/policies/expert-review-required.md +60 -0
- package/src/policies/schemas/policies/iac-parity.md +31 -0
- package/src/policies/schemas/policies/mandatory-testing-deployment.md +147 -0
- package/src/policies/schemas/policies/mcp-router-first.md +24 -0
- package/src/policies/schemas/policies/memory-before-plan.md +24 -0
- package/src/policies/schemas/policies/merge-deploy-monitor-verify.md +145 -0
- package/src/policies/schemas/policies/parallel-reads.md +24 -0
- package/src/policies/schemas/policies/rtk-wrap.md +26 -0
- package/src/policies/schemas/policies/schema-diff-gate.md +30 -0
- package/src/policies/schemas/policies/session-memory-write.md +24 -0
- package/src/policies/schemas/policies/task-required.md +49 -0
- package/src/policies/schemas/policies/test-gate.md +24 -0
- package/src/policies/schemas/policies/validate-plan-before-build.md +28 -0
- package/src/policies/schemas/policies/worktree-required.md +28 -0
- package/templates/hooks/uap-policy-gate.sh +5 -0
- package/templates/hooks/uap-reactor-prompt.sh +44 -0
- package/templates/hooks/uap-schema-post.sh +26 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAGzE,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAGlF,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"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"}
|
package/dist/models/types.js
CHANGED
|
@@ -21,11 +21,33 @@ export const ModelConfigSchemaModels = z.object({
|
|
|
21
21
|
costPer1MOutput: z.number().optional(),
|
|
22
22
|
capabilities: z.array(z.string()).default([]),
|
|
23
23
|
modelContextBudget: z.number().optional(), // Effective context sweet spot (may be less than maxContextTokens)
|
|
24
|
+
// Reasoning/thinking effort for models that support it. 'xhigh' is UAP's
|
|
25
|
+
// maximum; it maps to provider 'high' on OpenAI-compatible wires.
|
|
26
|
+
reasoningEffort: z.enum(['low', 'medium', 'high', 'xhigh']).optional(),
|
|
24
27
|
});
|
|
25
28
|
/**
|
|
26
29
|
* Pre-defined model presets for common configurations
|
|
27
30
|
*/
|
|
28
31
|
export const ModelPresets = {
|
|
32
|
+
'opus-4.8': {
|
|
33
|
+
id: 'opus-4.8',
|
|
34
|
+
name: 'Claude Opus 4.8',
|
|
35
|
+
provider: 'anthropic',
|
|
36
|
+
apiModel: 'claude-opus-4-8',
|
|
37
|
+
apiKeyEnvVar: 'ANTHROPIC_API_KEY',
|
|
38
|
+
maxContextTokens: 200000,
|
|
39
|
+
costPer1MInput: 7.5,
|
|
40
|
+
costPer1MOutput: 37.5,
|
|
41
|
+
capabilities: [
|
|
42
|
+
'planning',
|
|
43
|
+
'complex-reasoning',
|
|
44
|
+
'code-generation',
|
|
45
|
+
'review',
|
|
46
|
+
'advanced-planning',
|
|
47
|
+
],
|
|
48
|
+
modelContextBudget: 180000,
|
|
49
|
+
reasoningEffort: 'xhigh',
|
|
50
|
+
},
|
|
29
51
|
'opus-4.6': {
|
|
30
52
|
id: 'opus-4.6',
|
|
31
53
|
name: 'Claude Opus 4.6',
|
package/dist/models/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,mEAAmE;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,13 @@ export declare class PolicyToolRegistry {
|
|
|
4
4
|
private get memory();
|
|
5
5
|
private get toolDir();
|
|
6
6
|
getExecutableTool(policyId: string): Promise<string | null>;
|
|
7
|
+
/**
|
|
8
|
+
* Materialize the shared `_common.py` module next to the enforcers. Every
|
|
9
|
+
* enforcer does `from _common import ...`, so without this the enforcer
|
|
10
|
+
* crashes with ModuleNotFoundError at runtime and the policy gate silently
|
|
11
|
+
* falls back to "allow". Copied from the bundled package (or the repo in dev).
|
|
12
|
+
*/
|
|
13
|
+
private ensureCommonModule;
|
|
7
14
|
storeToolCode(policyId: string, toolName: string, pythonCode: string): Promise<string>;
|
|
8
15
|
callPolicyTool(policyId: string, operation: string, args: Record<string, unknown>): Promise<unknown>;
|
|
9
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-tools.d.ts","sourceRoot":"","sources":["../../src/policies/policy-tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"policy-tools.d.ts","sourceRoot":"","sources":["../../src/policies/policy-tools.ts"],"names":[],"mappings":"AAQA,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,QAAQ,CAAuB;IAEvC,OAAO,KAAK,MAAM,GAKjB;IAED,OAAO,KAAK,OAAO,GAMlB;IAEK,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiBjE;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAcpB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUtF,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC;CAwBpB;AAID,wBAAgB,qBAAqB,IAAI,kBAAkB,CAK1D"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { getPolicyMemoryManager } from './policy-memory.js';
|
|
2
|
-
import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
3
|
-
import { join } from 'node:path';
|
|
2
|
+
import { writeFileSync, mkdirSync, existsSync, copyFileSync } from 'node:fs';
|
|
3
|
+
import { join, dirname } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
4
5
|
import { execFileSync } from 'node:child_process';
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
5
7
|
export class PolicyToolRegistry {
|
|
6
8
|
_memory = null;
|
|
7
9
|
_toolDir = null;
|
|
@@ -31,10 +33,30 @@ export class PolicyToolRegistry {
|
|
|
31
33
|
}
|
|
32
34
|
return null;
|
|
33
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Materialize the shared `_common.py` module next to the enforcers. Every
|
|
38
|
+
* enforcer does `from _common import ...`, so without this the enforcer
|
|
39
|
+
* crashes with ModuleNotFoundError at runtime and the policy gate silently
|
|
40
|
+
* falls back to "allow". Copied from the bundled package (or the repo in dev).
|
|
41
|
+
*/
|
|
42
|
+
ensureCommonModule() {
|
|
43
|
+
const target = join(this.toolDir, '_common.py');
|
|
44
|
+
const candidates = [
|
|
45
|
+
join(__dirname, '..', '..', 'src', 'policies', 'enforcers', '_common.py'), // dist -> pkg root
|
|
46
|
+
join(process.cwd(), 'src', 'policies', 'enforcers', '_common.py'), // running in repo
|
|
47
|
+
];
|
|
48
|
+
for (const src of candidates) {
|
|
49
|
+
if (existsSync(src)) {
|
|
50
|
+
copyFileSync(src, target);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
34
55
|
async storeToolCode(policyId, toolName, pythonCode) {
|
|
35
56
|
await this.memory.storeExecutablePolicy(policyId, pythonCode, toolName);
|
|
36
57
|
const filePath = join(this.toolDir, `${policyId}_${toolName}.py`);
|
|
37
58
|
writeFileSync(filePath, pythonCode);
|
|
59
|
+
this.ensureCommonModule();
|
|
38
60
|
return filePath;
|
|
39
61
|
}
|
|
40
62
|
async callPolicyTool(policyId, operation, args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-tools.js","sourceRoot":"","sources":["../../src/policies/policy-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"policy-tools.js","sourceRoot":"","sources":["../../src/policies/policy-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -1325,6 +1325,7 @@ export declare const MultiModelSchema: z.ZodObject<{
|
|
|
1325
1325
|
costPer1MOutput: z.ZodOptional<z.ZodNumber>;
|
|
1326
1326
|
capabilities: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1327
1327
|
modelContextBudget: z.ZodOptional<z.ZodNumber>;
|
|
1328
|
+
reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high", "xhigh"]>>;
|
|
1328
1329
|
}, "strip", z.ZodTypeAny, {
|
|
1329
1330
|
id: string;
|
|
1330
1331
|
name: string;
|
|
@@ -1337,6 +1338,7 @@ export declare const MultiModelSchema: z.ZodObject<{
|
|
|
1337
1338
|
costPer1MInput?: number | undefined;
|
|
1338
1339
|
costPer1MOutput?: number | undefined;
|
|
1339
1340
|
modelContextBudget?: number | undefined;
|
|
1341
|
+
reasoningEffort?: "low" | "medium" | "high" | "xhigh" | undefined;
|
|
1340
1342
|
}, {
|
|
1341
1343
|
id: string;
|
|
1342
1344
|
name: string;
|
|
@@ -1349,6 +1351,7 @@ export declare const MultiModelSchema: z.ZodObject<{
|
|
|
1349
1351
|
costPer1MOutput?: number | undefined;
|
|
1350
1352
|
capabilities?: string[] | undefined;
|
|
1351
1353
|
modelContextBudget?: number | undefined;
|
|
1354
|
+
reasoningEffort?: "low" | "medium" | "high" | "xhigh" | undefined;
|
|
1352
1355
|
}>]>, "many">>;
|
|
1353
1356
|
roles: z.ZodOptional<z.ZodObject<{
|
|
1354
1357
|
planner: z.ZodDefault<z.ZodString>;
|
|
@@ -1452,6 +1455,7 @@ export declare const MultiModelSchema: z.ZodObject<{
|
|
|
1452
1455
|
costPer1MInput?: number | undefined;
|
|
1453
1456
|
costPer1MOutput?: number | undefined;
|
|
1454
1457
|
modelContextBudget?: number | undefined;
|
|
1458
|
+
reasoningEffort?: "low" | "medium" | "high" | "xhigh" | undefined;
|
|
1455
1459
|
})[];
|
|
1456
1460
|
routingStrategy: "cost-optimized" | "performance-first" | "balanced" | "adaptive";
|
|
1457
1461
|
roles?: {
|
|
@@ -1501,6 +1505,7 @@ export declare const MultiModelSchema: z.ZodObject<{
|
|
|
1501
1505
|
costPer1MOutput?: number | undefined;
|
|
1502
1506
|
capabilities?: string[] | undefined;
|
|
1503
1507
|
modelContextBudget?: number | undefined;
|
|
1508
|
+
reasoningEffort?: "low" | "medium" | "high" | "xhigh" | undefined;
|
|
1504
1509
|
})[] | undefined;
|
|
1505
1510
|
roles?: {
|
|
1506
1511
|
planner?: string | undefined;
|
|
@@ -2580,6 +2585,7 @@ export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
|
2580
2585
|
costPer1MOutput: z.ZodOptional<z.ZodNumber>;
|
|
2581
2586
|
capabilities: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
2582
2587
|
modelContextBudget: z.ZodOptional<z.ZodNumber>;
|
|
2588
|
+
reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high", "xhigh"]>>;
|
|
2583
2589
|
}, "strip", z.ZodTypeAny, {
|
|
2584
2590
|
id: string;
|
|
2585
2591
|
name: string;
|
|
@@ -2592,6 +2598,7 @@ export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
|
2592
2598
|
costPer1MInput?: number | undefined;
|
|
2593
2599
|
costPer1MOutput?: number | undefined;
|
|
2594
2600
|
modelContextBudget?: number | undefined;
|
|
2601
|
+
reasoningEffort?: "low" | "medium" | "high" | "xhigh" | undefined;
|
|
2595
2602
|
}, {
|
|
2596
2603
|
id: string;
|
|
2597
2604
|
name: string;
|
|
@@ -2604,6 +2611,7 @@ export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
|
2604
2611
|
costPer1MOutput?: number | undefined;
|
|
2605
2612
|
capabilities?: string[] | undefined;
|
|
2606
2613
|
modelContextBudget?: number | undefined;
|
|
2614
|
+
reasoningEffort?: "low" | "medium" | "high" | "xhigh" | undefined;
|
|
2607
2615
|
}>]>, "many">>;
|
|
2608
2616
|
roles: z.ZodOptional<z.ZodObject<{
|
|
2609
2617
|
planner: z.ZodDefault<z.ZodString>;
|
|
@@ -2707,6 +2715,7 @@ export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
|
2707
2715
|
costPer1MInput?: number | undefined;
|
|
2708
2716
|
costPer1MOutput?: number | undefined;
|
|
2709
2717
|
modelContextBudget?: number | undefined;
|
|
2718
|
+
reasoningEffort?: "low" | "medium" | "high" | "xhigh" | undefined;
|
|
2710
2719
|
})[];
|
|
2711
2720
|
routingStrategy: "cost-optimized" | "performance-first" | "balanced" | "adaptive";
|
|
2712
2721
|
roles?: {
|
|
@@ -2756,6 +2765,7 @@ export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
|
2756
2765
|
costPer1MOutput?: number | undefined;
|
|
2757
2766
|
capabilities?: string[] | undefined;
|
|
2758
2767
|
modelContextBudget?: number | undefined;
|
|
2768
|
+
reasoningEffort?: "low" | "medium" | "high" | "xhigh" | undefined;
|
|
2759
2769
|
})[] | undefined;
|
|
2760
2770
|
roles?: {
|
|
2761
2771
|
planner?: string | undefined;
|
|
@@ -3101,6 +3111,7 @@ export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
|
3101
3111
|
costPer1MInput?: number | undefined;
|
|
3102
3112
|
costPer1MOutput?: number | undefined;
|
|
3103
3113
|
modelContextBudget?: number | undefined;
|
|
3114
|
+
reasoningEffort?: "low" | "medium" | "high" | "xhigh" | undefined;
|
|
3104
3115
|
})[];
|
|
3105
3116
|
routingStrategy: "cost-optimized" | "performance-first" | "balanced" | "adaptive";
|
|
3106
3117
|
roles?: {
|
|
@@ -3362,6 +3373,7 @@ export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
|
3362
3373
|
costPer1MOutput?: number | undefined;
|
|
3363
3374
|
capabilities?: string[] | undefined;
|
|
3364
3375
|
modelContextBudget?: number | undefined;
|
|
3376
|
+
reasoningEffort?: "low" | "medium" | "high" | "xhigh" | undefined;
|
|
3365
3377
|
})[] | undefined;
|
|
3366
3378
|
roles?: {
|
|
3367
3379
|
planner?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;EAOzB,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAShC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;EAMpC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAKnC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCjC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc/B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB3B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIvB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;EAKzB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;EAMtB,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;EAKxB,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;EASjC,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGzB,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;EAIxB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW5B,CAAC;AAQH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAAqB,CAAC;AACpD,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# UAP Auto-Apply ("Reactor") — Design & Contract
|
|
2
|
+
|
|
3
|
+
Status: in implementation (feature/227-uap-auto-apply-reactor)
|
|
4
|
+
Goal: every UAP capability that is appropriate to apply automatically fires
|
|
5
|
+
automatically and *dynamically* (context-aware) across all supported coding
|
|
6
|
+
agents, instead of requiring manual invocation.
|
|
7
|
+
|
|
8
|
+
## 1. Two modes (never conflated)
|
|
9
|
+
|
|
10
|
+
- **Enforce** — deterministic, hard gates that must always fire (worktree,
|
|
11
|
+
policy/compliance, delivery, schema-diff, completion). These *block*
|
|
12
|
+
(exit 2 / throw). Already largely wired; this feature fills the gaps.
|
|
13
|
+
- **Assist** — capabilities that *should* fire when contextually appropriate
|
|
14
|
+
(memory recall, pattern RAG, expert-route, skill surfacing, model routing,
|
|
15
|
+
task linking). These *inject context* the model sees — raising the odds it
|
|
16
|
+
uses the right tool without removing judgement. Optionally **auto-spawn**
|
|
17
|
+
an expert above a confidence threshold for whitelisted task types.
|
|
18
|
+
|
|
19
|
+
## 2. Architecture: one resolver, many adapters
|
|
20
|
+
|
|
21
|
+
A single harness-agnostic entrypoint `uap react --event <evt>` consumes a JSON
|
|
22
|
+
payload on stdin and emits a JSON result. Harness adapters are thin shims that
|
|
23
|
+
normalise each harness's event name/format, call `uap react`, then map
|
|
24
|
+
`inject` → injected context and `block` → exit-2/throw.
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
harness hook ──payload──▶ uap react ──▶ resolve() ──▶ { inject, block, actions }
|
|
28
|
+
│
|
|
29
|
+
┌─────────────────────────────────┼─────────────────────────────────┐
|
|
30
|
+
CapabilityRouter.routeTask PatternRouter.matchPatterns memory recall (async, later phase)
|
|
31
|
+
→ experts + skills + conf → enforcement patterns → relevant memories
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The resolver composes existing, tested code: `CapabilityRouter.routeTask`
|
|
35
|
+
(`src/coordination/capability-router.ts`), `PatternRouter.matchPatterns`
|
|
36
|
+
(`src/coordination/pattern-router.ts`), and `ExpertOrchestrator.plan`
|
|
37
|
+
(`src/coordination/expert-orchestrator.ts`).
|
|
38
|
+
|
|
39
|
+
## 3. Resolver contract (`src/coordination/reactor.ts`)
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
export type ReactorEvent =
|
|
43
|
+
| 'session-start' | 'user-prompt' | 'pre-tool' | 'post-tool' | 'stop' | 'session-end';
|
|
44
|
+
|
|
45
|
+
export interface ReactorContext {
|
|
46
|
+
event: ReactorEvent;
|
|
47
|
+
promptText?: string; // the user's message (user-prompt event)
|
|
48
|
+
changedFiles?: string[]; // files in play (routing signal)
|
|
49
|
+
tool?: string; // tool name (pre/post-tool)
|
|
50
|
+
cwd?: string;
|
|
51
|
+
sessionId?: string;
|
|
52
|
+
surfaced?: string[]; // dedup keys already injected this session
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface ReactorAction {
|
|
56
|
+
kind: 'spawn-expert' | 'suggest-skill' | 'enforce' | 'link-task';
|
|
57
|
+
target: string; // droid/skill/pattern id
|
|
58
|
+
confidence: number; // 0..1
|
|
59
|
+
reason: string;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export interface ReactorResult {
|
|
63
|
+
inject: string; // markdown context card; '' when nothing relevant
|
|
64
|
+
block: boolean; // hard gate (enforce mode)
|
|
65
|
+
reason: string;
|
|
66
|
+
actions: ReactorAction[];
|
|
67
|
+
surfacedKeys: string[]; // keys to add to the session dedup cache
|
|
68
|
+
confidence: number; // overall routing confidence
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface ReactorOptions {
|
|
72
|
+
injectThreshold?: number; // default 0.30 — below → stay silent
|
|
73
|
+
autoSpawnThreshold?: number; // default 0.80 — above + whitelisted → spawn action
|
|
74
|
+
autoSpawnTaskTypes?: string[]; // whitelist, e.g. ['security','migration','release']
|
|
75
|
+
maxInjectChars?: number; // default 1200 — token-budget guard
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface ReactorDeps { // for hermetic testing
|
|
79
|
+
capabilityRouter?: CapabilityRouter;
|
|
80
|
+
patternRouter?: PatternRouter;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export function resolve(
|
|
84
|
+
ctx: ReactorContext,
|
|
85
|
+
opts?: ReactorOptions,
|
|
86
|
+
deps?: ReactorDeps,
|
|
87
|
+
): ReactorResult;
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Behaviour (the oracle — see `test/reactor.test.ts`)
|
|
91
|
+
|
|
92
|
+
1. `user-prompt` with a substantive coding prompt → builds a `Task` from
|
|
93
|
+
`promptText`/`changedFiles`, runs `routeTask` + `matchPatterns`, returns a
|
|
94
|
+
non-empty `inject` listing recommended experts, skills, and matched
|
|
95
|
+
patterns; `confidence` mirrors routing confidence.
|
|
96
|
+
2. Routing confidence `< injectThreshold` **and** no matched patterns →
|
|
97
|
+
`inject === ''` (silence beats noise).
|
|
98
|
+
3. Auto-spawn: confidence `>= autoSpawnThreshold` **and** a recommended
|
|
99
|
+
capability whose task type ∈ `autoSpawnTaskTypes` → an action with
|
|
100
|
+
`kind:'spawn-expert'`. Below threshold or off-whitelist → only
|
|
101
|
+
`kind:'suggest-skill'` / no spawn.
|
|
102
|
+
4. Dedup: any item whose key ∈ `ctx.surfaced` is excluded from `inject` and
|
|
103
|
+
from `actions`; `surfacedKeys` returns only the newly-surfaced keys.
|
|
104
|
+
5. Budget: `inject.length <= maxInjectChars` (truncate lowest-confidence items
|
|
105
|
+
first; never hard-cut mid-item).
|
|
106
|
+
6. Assist never blocks: for non-enforce events `block === false` always.
|
|
107
|
+
|
|
108
|
+
## 4. Feature → auto-application matrix
|
|
109
|
+
|
|
110
|
+
| Feature | Trigger | Mode |
|
|
111
|
+
|---|---|---|
|
|
112
|
+
| memory recall | per-prompt (semantic on prompt) | Assist |
|
|
113
|
+
| patterns RAG | per-prompt | Assist |
|
|
114
|
+
| expert-route / droids | per-prompt when substantial coding | Assist (+auto-spawn) |
|
|
115
|
+
| skills | per-prompt, surface top-N | Assist |
|
|
116
|
+
| model routing | per-task complexity | Assist |
|
|
117
|
+
| task link/create | per-prompt | Assist |
|
|
118
|
+
| worktree gate | pre-tool | Enforce |
|
|
119
|
+
| policy/compliance | pre-tool + stop | Enforce |
|
|
120
|
+
| delivery routing | substantial coding → `uap deliver` | Enforce |
|
|
121
|
+
| schema-diff | schema-file edits (post-tool) | Enforce |
|
|
122
|
+
| completion gate | stop | Enforce |
|
|
123
|
+
| HALO analyze | session-end | Assist |
|
|
124
|
+
| deploy flush | on deliver success | Enforce |
|
|
125
|
+
| rtk token-opt | pre-tool (bash) | Enforce (already) |
|
|
126
|
+
| ideate | on-demand only (router suggests when stuck) | Assist |
|
|
127
|
+
|
|
128
|
+
## 5. Per-harness wiring
|
|
129
|
+
|
|
130
|
+
| Harness | Per-prompt inject point | Notes |
|
|
131
|
+
|---|---|---|
|
|
132
|
+
| Claude | `UserPromptSubmit` hook → `uap react` | supported, currently unwired |
|
|
133
|
+
| Cursor | `userPromptSubmit` (mirrors Claude) | |
|
|
134
|
+
| OpenCode | `experimental.chat.system.transform` | generalise existing uap-pattern-rag.ts/uap-skills.ts |
|
|
135
|
+
| Factory | `UserPromptSubmit` (pattern-rag-prompt.sh) | also **fix empty SessionStart** |
|
|
136
|
+
| Forge | **none available** | shell-plugin model has no per-prompt event — per-prompt routing not possible; limitation documented |
|
|
137
|
+
| Codex | MCP `react` tool + AGENTS.md | degraded mode (no hooks): agent calls `react` each task |
|
|
138
|
+
|
|
139
|
+
`uap hooks install <target>` writes the correct per-harness wiring so a fresh
|
|
140
|
+
`uap setup` yields full parity.
|
|
141
|
+
|
|
142
|
+
## 6. Anti-noise & safety
|
|
143
|
+
|
|
144
|
+
- Confidence gate (only inject above threshold).
|
|
145
|
+
- Per-session dedup cache (never re-inject the same item twice).
|
|
146
|
+
- Inject token budget (hard cap, truncate lowest-confidence first).
|
|
147
|
+
- Enforce stays hard; assist can never block.
|
|
148
|
+
|
|
149
|
+
## 7. Rollout status — all phases landed
|
|
150
|
+
|
|
151
|
+
1. ✅ **Resolver core** (`src/coordination/reactor.ts`) + 8 contract tests.
|
|
152
|
+
2. ✅ **CLI** `uap react` (JSON in/out, `--prompt`/`--surfaced`) + 4 tests.
|
|
153
|
+
3. ✅ **Reference harnesses**: Claude `UserPromptSubmit` adapter
|
|
154
|
+
(`templates/hooks/uap-reactor-prompt.sh`) + OpenCode
|
|
155
|
+
`.opencode/plugin/uap-reactor.ts` (`chat.system.transform`) + adapter test.
|
|
156
|
+
4. ✅ **Parity**: Factory + Cursor + VSCode `UserPromptSubmit` wired in
|
|
157
|
+
`src/cli/hooks.ts`; adapter copied to every harness. Forge: no per-prompt
|
|
158
|
+
event (documented limitation, §5).
|
|
159
|
+
5. ✅ **Codex degraded mode**: first-class `react` MCP tool
|
|
160
|
+
(`src/mcp-router/tools/react.ts`) + AGENTS.md "DO THIS FIRST" guidance + 4 tests.
|
|
161
|
+
6. ✅ **Enforce gap-fill**: PostToolUse schema-change reminder
|
|
162
|
+
(`templates/hooks/uap-schema-post.sh`, wired across installers, 3 tests).
|
|
163
|
+
completion-gate-on-stop was already wired everywhere (`stop.sh`);
|
|
164
|
+
deploy-on-deliver is available via `uap deliver --deploy` (left opt-in —
|
|
165
|
+
defaulting it is a behavior change out of scope).
|
|
166
|
+
|
|
167
|
+
Per-prompt dynamic auto-apply: Claude / Cursor / VSCode / OpenCode (and Factory
|
|
168
|
+
once its empty `SessionStart` is re-installed). Codex via the MCP `react` tool.
|
|
169
|
+
Forge is session/enforce-only by its own model. Source units were scaffolded via
|
|
170
|
+
`uap deliver` and hand-corrected (the local model cheats gates — see PR notes).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@miller-tech/uap",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.42.0",
|
|
4
4
|
"description": "Autonomous AI agent memory system with CLAUDE.md protocol enforcement",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -107,6 +107,8 @@
|
|
|
107
107
|
"docs",
|
|
108
108
|
"config",
|
|
109
109
|
"templates",
|
|
110
|
+
"src/policies/schemas/policies",
|
|
111
|
+
"src/policies/enforcers",
|
|
110
112
|
"tools/agents",
|
|
111
113
|
"scripts/setup",
|
|
112
114
|
"scripts/version-bump.sh",
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""architecture-review-required enforcer.
|
|
3
|
+
|
|
4
|
+
Triggered when merge / PR-ready operations are attempted and the diff
|
|
5
|
+
touches qualifying paths. Requires either:
|
|
6
|
+
- An ADR file under docs/architecture/adr/ added or modified in the same diff, OR
|
|
7
|
+
- An active waiver under policies/waivers/ matching this policy slug
|
|
8
|
+
"""
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import re
|
|
12
|
+
import sys
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
|
|
15
|
+
sys.path.insert(0, str(Path(__file__).parent))
|
|
16
|
+
from _common import emit, parse_cli, repo_root, run # noqa: E402
|
|
17
|
+
|
|
18
|
+
PR_OPS_RE = re.compile(
|
|
19
|
+
r"\b(pr[-_ ]?ready|pr-create|gh pr create|signoff|ready[-_ ]for[-_ ]review|merge)\b",
|
|
20
|
+
re.I,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
# Paths whose modification triggers the architecture-review requirement.
|
|
24
|
+
TRIGGER_PATTERNS = [
|
|
25
|
+
re.compile(r"^src/types/"),
|
|
26
|
+
re.compile(r".*/schemas/"),
|
|
27
|
+
re.compile(r"^src/index\.ts$"),
|
|
28
|
+
re.compile(r"^docs/architecture/(?!adr/)"), # docs/architecture/ but NOT the adr/ we want
|
|
29
|
+
re.compile(r"^src/coordination/(capability|pattern)-router\.ts$"),
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
ADR_PATH_RE = re.compile(r"^docs/architecture/adr/.+\.md$")
|
|
33
|
+
WAIVER_RE = re.compile(r"^policies/waivers/.*architecture-review.*\.md$", re.I)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def main() -> None:
|
|
37
|
+
op, args = parse_cli()
|
|
38
|
+
cmd = (args.get("command") or "").lower()
|
|
39
|
+
|
|
40
|
+
if not (PR_OPS_RE.search(op) or PR_OPS_RE.search(cmd)):
|
|
41
|
+
emit(True, "not a PR-ready gate point")
|
|
42
|
+
|
|
43
|
+
root = repo_root()
|
|
44
|
+
rc, out, _ = run(
|
|
45
|
+
["git", "diff", "--name-only", "origin/master...HEAD"], cwd=root, timeout=10
|
|
46
|
+
)
|
|
47
|
+
if rc != 0:
|
|
48
|
+
# Try origin/main as fallback
|
|
49
|
+
rc, out, _ = run(
|
|
50
|
+
["git", "diff", "--name-only", "origin/main...HEAD"], cwd=root, timeout=10
|
|
51
|
+
)
|
|
52
|
+
if rc != 0:
|
|
53
|
+
emit(True, "cannot compute diff vs upstream; allowing")
|
|
54
|
+
|
|
55
|
+
changed = [line for line in out.splitlines() if line.strip()]
|
|
56
|
+
|
|
57
|
+
# Detect qualifying changes
|
|
58
|
+
triggered = []
|
|
59
|
+
for f in changed:
|
|
60
|
+
for pat in TRIGGER_PATTERNS:
|
|
61
|
+
if pat.match(f):
|
|
62
|
+
triggered.append(f)
|
|
63
|
+
break
|
|
64
|
+
|
|
65
|
+
if not triggered:
|
|
66
|
+
emit(True, "no architecture-qualifying paths touched in diff")
|
|
67
|
+
|
|
68
|
+
# Look for an ADR in the diff
|
|
69
|
+
adr_present = any(ADR_PATH_RE.match(f) for f in changed)
|
|
70
|
+
|
|
71
|
+
# Look for an active waiver
|
|
72
|
+
waiver_present = False
|
|
73
|
+
waivers_dir = root / "policies" / "waivers"
|
|
74
|
+
if waivers_dir.exists():
|
|
75
|
+
for waiver in waivers_dir.glob("*architecture-review*.md"):
|
|
76
|
+
if waiver.is_file():
|
|
77
|
+
waiver_present = True
|
|
78
|
+
break
|
|
79
|
+
|
|
80
|
+
if adr_present or waiver_present:
|
|
81
|
+
emit(
|
|
82
|
+
True,
|
|
83
|
+
f"architecture-review satisfied "
|
|
84
|
+
f"({'adr-in-diff' if adr_present else 'active-waiver'})",
|
|
85
|
+
adr=adr_present,
|
|
86
|
+
waiver=waiver_present,
|
|
87
|
+
triggers=sorted(set(triggered)),
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
emit(
|
|
91
|
+
False,
|
|
92
|
+
"architecture-review-required: diff touches "
|
|
93
|
+
f"{', '.join(sorted(set(triggered))[:3])} but no ADR under "
|
|
94
|
+
"docs/architecture/adr/ and no active waiver. "
|
|
95
|
+
"Add an ADR or request a waiver from compliance-officer.",
|
|
96
|
+
triggers=sorted(set(triggered)),
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
if __name__ == "__main__":
|
|
101
|
+
main()
|
|
Binary file
|