@miller-tech/uap 1.10.0 → 1.11.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/benchmarks/benchmark.d.ts +14 -14
- package/dist/bin/cli.js +5 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/llama-server-optimize.js +0 -0
- package/dist/bin/policy.js +0 -0
- package/dist/cli/task.d.ts +1 -1
- package/dist/cli/task.d.ts.map +1 -1
- package/dist/cli/task.js +65 -0
- package/dist/cli/task.js.map +1 -1
- package/dist/dashboard/data-service.d.ts +10 -0
- package/dist/dashboard/data-service.d.ts.map +1 -1
- package/dist/dashboard/data-service.js +22 -1
- package/dist/dashboard/data-service.js.map +1 -1
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +51 -5
- package/dist/dashboard/server.js.map +1 -1
- package/dist/models/profile-loader.d.ts +1 -1
- package/dist/models/types.d.ts +45 -45
- package/dist/policies/schemas/policy.d.ts +5 -5
- package/dist/tasks/types.d.ts +22 -22
- package/dist/types/config.d.ts +170 -170
- package/dist/types/coordination.d.ts +22 -22
- package/dist/uap-droids-strict.d.ts +4 -4
- package/package.json +1 -1
- package/scripts/maintenance/verify-compliance.sh +12 -12
- package/templates/hooks/session-start.sh +1 -1
- package/dist/bin/tool-calls.d.ts +0 -3
- package/dist/bin/tool-calls.d.ts.map +0 -1
- package/dist/bin/tool-calls.js +0 -4
- package/dist/bin/tool-calls.js.map +0 -1
- package/dist/cli/completion-gates.d.ts +0 -51
- package/dist/cli/completion-gates.d.ts.map +0 -1
- package/dist/cli/completion-gates.js +0 -201
- package/dist/cli/completion-gates.js.map +0 -1
- package/dist/cli/rtk-validation.d.ts +0 -24
- package/dist/cli/rtk-validation.d.ts.map +0 -1
- package/dist/cli/rtk-validation.js +0 -138
- package/dist/cli/rtk-validation.js.map +0 -1
- package/dist/cli/uap.d.ts +0 -10
- package/dist/cli/uap.d.ts.map +0 -1
- package/dist/cli/uap.js +0 -457
- package/dist/cli/uap.js.map +0 -1
- package/dist/coordination/droid-validator.d.ts +0 -59
- package/dist/coordination/droid-validator.d.ts.map +0 -1
- package/dist/coordination/droid-validator.js +0 -142
- package/dist/coordination/droid-validator.js.map +0 -1
- package/dist/coordination/worktree-enforcer.d.ts +0 -22
- package/dist/coordination/worktree-enforcer.d.ts.map +0 -1
- package/dist/coordination/worktree-enforcer.js +0 -71
- package/dist/coordination/worktree-enforcer.js.map +0 -1
- package/dist/generators/template-loader.d.ts +0 -105
- package/dist/generators/template-loader.d.ts.map +0 -1
- package/dist/generators/template-loader.js +0 -291
- package/dist/generators/template-loader.js.map +0 -1
- package/dist/memory/active-context.d.ts +0 -65
- package/dist/memory/active-context.d.ts.map +0 -1
- package/dist/memory/active-context.js +0 -126
- package/dist/memory/active-context.js.map +0 -1
- package/dist/memory/agent-scoped-memory.d.ts +0 -67
- package/dist/memory/agent-scoped-memory.d.ts.map +0 -1
- package/dist/memory/agent-scoped-memory.js +0 -126
- package/dist/memory/agent-scoped-memory.js.map +0 -1
- package/dist/memory/dedup-detector.d.ts +0 -57
- package/dist/memory/dedup-detector.d.ts.map +0 -1
- package/dist/memory/dedup-detector.js +0 -107
- package/dist/memory/dedup-detector.js.map +0 -1
- package/dist/memory/dedup-memory.d.ts +0 -89
- package/dist/memory/dedup-memory.d.ts.map +0 -1
- package/dist/memory/dedup-memory.js +0 -173
- package/dist/memory/dedup-memory.js.map +0 -1
- package/dist/memory/generic-uap-patterns.d.ts +0 -7
- package/dist/memory/generic-uap-patterns.d.ts.map +0 -1
- package/dist/memory/generic-uap-patterns.js +0 -43
- package/dist/memory/generic-uap-patterns.js.map +0 -1
- package/dist/memory/merge-claude-md.d.ts +0 -45
- package/dist/memory/merge-claude-md.d.ts.map +0 -1
- package/dist/memory/merge-claude-md.js +0 -118
- package/dist/memory/merge-claude-md.js.map +0 -1
- package/dist/memory/multi-view-memory.d.ts +0 -134
- package/dist/memory/multi-view-memory.d.ts.map +0 -1
- package/dist/memory/multi-view-memory.js +0 -430
- package/dist/memory/multi-view-memory.js.map +0 -1
- package/dist/memory/patterns.d.ts +0 -37
- package/dist/memory/patterns.d.ts.map +0 -1
- package/dist/memory/patterns.js +0 -81
- package/dist/memory/patterns.js.map +0 -1
- package/dist/memory/semantic-edge-graph.d.ts +0 -86
- package/dist/memory/semantic-edge-graph.d.ts.map +0 -1
- package/dist/memory/semantic-edge-graph.js +0 -168
- package/dist/memory/semantic-edge-graph.js.map +0 -1
- package/dist/memory/semantic-retrieval.d.ts +0 -70
- package/dist/memory/semantic-retrieval.d.ts.map +0 -1
- package/dist/memory/semantic-retrieval.js +0 -112
- package/dist/memory/semantic-retrieval.js.map +0 -1
- package/dist/memory/short-term/factory.d.ts +0 -26
- package/dist/memory/short-term/factory.d.ts.map +0 -1
- package/dist/memory/short-term/factory.js +0 -28
- package/dist/memory/short-term/factory.js.map +0 -1
- package/dist/memory/short-term/indexeddb.d.ts +0 -25
- package/dist/memory/short-term/indexeddb.d.ts.map +0 -1
- package/dist/memory/short-term/indexeddb.js +0 -64
- package/dist/memory/short-term/indexeddb.js.map +0 -1
- package/dist/memory/smart-consolidator.d.ts +0 -53
- package/dist/memory/smart-consolidator.d.ts.map +0 -1
- package/dist/memory/smart-consolidator.js +0 -144
- package/dist/memory/smart-consolidator.js.map +0 -1
- package/dist/memory/view-memory.d.ts +0 -80
- package/dist/memory/view-memory.d.ts.map +0 -1
- package/dist/memory/view-memory.js +0 -130
- package/dist/memory/view-memory.js.map +0 -1
- package/dist/memory/wrapped-memory.d.ts +0 -77
- package/dist/memory/wrapped-memory.d.ts.map +0 -1
- package/dist/memory/wrapped-memory.js +0 -127
- package/dist/memory/wrapped-memory.js.map +0 -1
- package/dist/models/api-client.d.ts +0 -46
- package/dist/models/api-client.d.ts.map +0 -1
- package/dist/models/api-client.js +0 -182
- package/dist/models/api-client.js.map +0 -1
- package/dist/utils/config-manager.d.ts +0 -30
- package/dist/utils/config-manager.d.ts.map +0 -1
- package/dist/utils/config-manager.js +0 -41
- package/dist/utils/config-manager.js.map +0 -1
- package/dist/utils/fetch-with-retry.d.ts +0 -5
- package/dist/utils/fetch-with-retry.d.ts.map +0 -1
- package/dist/utils/fetch-with-retry.js +0 -61
- package/dist/utils/fetch-with-retry.js.map +0 -1
- package/dist/utils/file-discovery.d.ts +0 -38
- package/dist/utils/file-discovery.d.ts.map +0 -1
- package/dist/utils/file-discovery.js +0 -100
- package/dist/utils/file-discovery.js.map +0 -1
- package/dist/utils/validate-json.d.ts +0 -51
- package/dist/utils/validate-json.d.ts.map +0 -1
- package/dist/utils/validate-json.js +0 -94
- package/dist/utils/validate-json.js.map +0 -1
- package/tools/agents/scripts/__pycache__/tool_call_wrapper.cpython-313.pyc +0 -0
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RTK (Required Template Keys) Validation
|
|
3
|
-
*
|
|
4
|
-
* Validates that CLAUDE.md contains all mandatory sections required by
|
|
5
|
-
* the UAP protocol. Replaces the v3.0.0 stub that always returned valid.
|
|
6
|
-
*
|
|
7
|
-
* Required sections are defined by the ENFORCEMENT_CHECKS comment in CLAUDE.md:
|
|
8
|
-
* SESSION_START, DECISION_LOOP, MANDATORY_WORKTREE, PARALLEL_REVIEW,
|
|
9
|
-
* SCHEMA_DIFF, GATES, RTK_INCLUDES, PATTERN_ROUTER, VALIDATE_PLAN
|
|
10
|
-
*/
|
|
11
|
-
import { existsSync, readFileSync } from 'fs';
|
|
12
|
-
import { join } from 'path';
|
|
13
|
-
/**
|
|
14
|
-
* Mandatory sections that must appear in CLAUDE.md.
|
|
15
|
-
* Each entry maps a check name to the heading/content pattern that satisfies it.
|
|
16
|
-
*/
|
|
17
|
-
const REQUIRED_SECTIONS = {
|
|
18
|
-
SESSION_START: {
|
|
19
|
-
pattern: /## .*SESSION\s+START/i,
|
|
20
|
-
description: 'Session initialization instructions',
|
|
21
|
-
},
|
|
22
|
-
DECISION_LOOP: {
|
|
23
|
-
pattern: /## .*DECISION\s+LOOP/i,
|
|
24
|
-
description: 'Six-step decision loop (READ/QUERY/THINK/ACT/RECORD)',
|
|
25
|
-
},
|
|
26
|
-
MANDATORY_WORKTREE: {
|
|
27
|
-
pattern: /## .*WORKTREE\s+WORKFLOW|## .*Pre-Edit Worktree Gate/i,
|
|
28
|
-
description: 'Worktree workflow enforcement',
|
|
29
|
-
},
|
|
30
|
-
PARALLEL_REVIEW: {
|
|
31
|
-
pattern: /## .*PARALLEL\s+REVIEW/i,
|
|
32
|
-
description: 'Parallel review protocol',
|
|
33
|
-
},
|
|
34
|
-
SCHEMA_DIFF: {
|
|
35
|
-
pattern: /Schema\s+Diff\s+Gate|schema.diff/i,
|
|
36
|
-
description: 'Schema diff gate for breaking changes',
|
|
37
|
-
},
|
|
38
|
-
GATES: {
|
|
39
|
-
pattern: /## .*COMPLETION\s+GATES|## .*BLOCKING\s+PREREQUISITES/i,
|
|
40
|
-
description: 'Completion gates (test, build, lint, deploy)',
|
|
41
|
-
},
|
|
42
|
-
PATTERN_ROUTER: {
|
|
43
|
-
pattern: /## .*Pattern\s+Router/i,
|
|
44
|
-
description: 'Pattern router configuration',
|
|
45
|
-
},
|
|
46
|
-
VERIFIER_FIRST: {
|
|
47
|
-
pattern: /## .*VERIFIER.FIRST/i,
|
|
48
|
-
description: 'Verifier-first protocol (baseline before changes)',
|
|
49
|
-
},
|
|
50
|
-
PRE_EDIT_BUILD: {
|
|
51
|
-
pattern: /## .*Pre-Edit\s+Build\s+Gate/i,
|
|
52
|
-
description: 'Pre-edit build gate enforcement',
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
/**
|
|
56
|
-
* Optional but recommended sections.
|
|
57
|
-
*/
|
|
58
|
-
const RECOMMENDED_SECTIONS = {
|
|
59
|
-
MEMORY_SYSTEM: {
|
|
60
|
-
pattern: /## .*Memory|memory.*system/i,
|
|
61
|
-
description: 'Memory system configuration',
|
|
62
|
-
},
|
|
63
|
-
BROWSER_USAGE: {
|
|
64
|
-
pattern: /## .*Browser|browser.*usage/i,
|
|
65
|
-
description: 'Browser automation guidelines',
|
|
66
|
-
},
|
|
67
|
-
TROUBLESHOOTING: {
|
|
68
|
-
pattern: /## .*Troubleshoot/i,
|
|
69
|
-
description: 'Troubleshooting section',
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
/**
|
|
73
|
-
* Validate that CLAUDE.md contains all required RTK sections.
|
|
74
|
-
*
|
|
75
|
-
* @param projectDir - Project root directory (defaults to cwd)
|
|
76
|
-
* @returns Validation result with missing/found sections
|
|
77
|
-
*/
|
|
78
|
-
export function validateRTKIncludes(projectDir) {
|
|
79
|
-
const dir = projectDir || process.cwd();
|
|
80
|
-
const claudeMdPath = join(dir, 'CLAUDE.md');
|
|
81
|
-
if (!existsSync(claudeMdPath)) {
|
|
82
|
-
return {
|
|
83
|
-
valid: false,
|
|
84
|
-
missing: Object.keys(REQUIRED_SECTIONS),
|
|
85
|
-
found: [],
|
|
86
|
-
warnings: ['CLAUDE.md not found in project root'],
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
const content = readFileSync(claudeMdPath, 'utf-8');
|
|
90
|
-
const missing = [];
|
|
91
|
-
const found = [];
|
|
92
|
-
const warnings = [];
|
|
93
|
-
// Check required sections
|
|
94
|
-
for (const [name, { pattern }] of Object.entries(REQUIRED_SECTIONS)) {
|
|
95
|
-
if (pattern.test(content)) {
|
|
96
|
-
found.push(name);
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
missing.push(name);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
// Check recommended sections (warnings only)
|
|
103
|
-
for (const [name, { pattern, description: desc }] of Object.entries(RECOMMENDED_SECTIONS)) {
|
|
104
|
-
if (!pattern.test(content)) {
|
|
105
|
-
warnings.push(`Recommended section missing: ${name} (${desc})`);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
// Check for ENFORCEMENT_CHECKS comment
|
|
109
|
-
const enforcementMatch = content.match(/ENFORCEMENT_CHECKS:\s*([A-Z_,\s]+)/);
|
|
110
|
-
if (enforcementMatch) {
|
|
111
|
-
const declaredChecks = enforcementMatch[1]
|
|
112
|
-
.split(',')
|
|
113
|
-
.map((s) => s.trim())
|
|
114
|
-
.filter(Boolean);
|
|
115
|
-
// Verify all declared checks have corresponding sections
|
|
116
|
-
for (const check of declaredChecks) {
|
|
117
|
-
if (!REQUIRED_SECTIONS[check] && !found.includes(check)) {
|
|
118
|
-
warnings.push(`Declared enforcement check "${check}" has no matching section`);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
warnings.push('No ENFORCEMENT_CHECKS comment found in CLAUDE.md');
|
|
124
|
-
}
|
|
125
|
-
// Check template version
|
|
126
|
-
const versionMatch = content.match(/TEMPLATE_VERSION:\s*([\d.]+)/);
|
|
127
|
-
if (!versionMatch) {
|
|
128
|
-
warnings.push('No TEMPLATE_VERSION found in CLAUDE.md');
|
|
129
|
-
}
|
|
130
|
-
return {
|
|
131
|
-
valid: missing.length === 0,
|
|
132
|
-
missing,
|
|
133
|
-
found,
|
|
134
|
-
warnings,
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
// printRTKValidation removed — was exported but never called from any consumer
|
|
138
|
-
//# sourceMappingURL=rtk-validation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rtk-validation.js","sourceRoot":"","sources":["../../src/cli/rtk-validation.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/uap.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Universal Agent Protocol (UAP) CLI
|
|
4
|
-
*
|
|
5
|
-
* This is the main UAP command-line interface that works independently
|
|
6
|
-
* from opencode. It provides project initialization, configuration,
|
|
7
|
-
* and integration with various agent harnesses.
|
|
8
|
-
*/
|
|
9
|
-
export {};
|
|
10
|
-
//# sourceMappingURL=uap.d.ts.map
|
package/dist/cli/uap.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uap.d.ts","sourceRoot":"","sources":["../../src/cli/uap.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
|
package/dist/cli/uap.js
DELETED
|
@@ -1,457 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Universal Agent Protocol (UAP) CLI
|
|
4
|
-
*
|
|
5
|
-
* This is the main UAP command-line interface that works independently
|
|
6
|
-
* from opencode. It provides project initialization, configuration,
|
|
7
|
-
* and integration with various agent harnesses.
|
|
8
|
-
*/
|
|
9
|
-
import { execSync } from 'child_process';
|
|
10
|
-
import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'fs';
|
|
11
|
-
import path from 'path';
|
|
12
|
-
import { fileURLToPath } from 'url';
|
|
13
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
-
const __dirname = path.dirname(__filename);
|
|
15
|
-
const projectRoot = path.resolve(__dirname, '..', '..');
|
|
16
|
-
const UAP_VERSION = '2.0.2';
|
|
17
|
-
// Import RTK integration
|
|
18
|
-
import { installRTK, checkRTKStatus, showRTKHelp } from './rtk.js';
|
|
19
|
-
class UAPCli {
|
|
20
|
-
async run(args) {
|
|
21
|
-
const command = args[0];
|
|
22
|
-
switch (command) {
|
|
23
|
-
case 'init':
|
|
24
|
-
await this.init();
|
|
25
|
-
break;
|
|
26
|
-
case 'setup':
|
|
27
|
-
await this.setup(args.slice(1));
|
|
28
|
-
break;
|
|
29
|
-
case 'install': {
|
|
30
|
-
// Check if user wants to install RTK
|
|
31
|
-
const subCommand = args[1];
|
|
32
|
-
if (subCommand === 'rtk') {
|
|
33
|
-
await installRTK({
|
|
34
|
-
force: args.includes('--force'),
|
|
35
|
-
method: args.includes('--method')
|
|
36
|
-
? args[args.indexOf('--method') + 1]
|
|
37
|
-
: undefined,
|
|
38
|
-
});
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
await this.install(args.slice(1));
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
case 'rtk': {
|
|
45
|
-
// RTK subcommand
|
|
46
|
-
const rtkSubCommand = args[1];
|
|
47
|
-
if (rtkSubCommand === 'install') {
|
|
48
|
-
await installRTK({
|
|
49
|
-
force: args.includes('--force'),
|
|
50
|
-
method: args.includes('--method')
|
|
51
|
-
? args[args.indexOf('--method') + 1]
|
|
52
|
-
: undefined,
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
else if (rtkSubCommand === 'status') {
|
|
56
|
-
await checkRTKStatus();
|
|
57
|
-
}
|
|
58
|
-
else if (rtkSubCommand === 'help' || !rtkSubCommand) {
|
|
59
|
-
showRTKHelp();
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
console.log(`Unknown RTK command: ${rtkSubCommand}`);
|
|
63
|
-
showRTKHelp();
|
|
64
|
-
}
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
case 'uninstall':
|
|
68
|
-
await this.uninstall();
|
|
69
|
-
break;
|
|
70
|
-
case 'hooks':
|
|
71
|
-
await this.hooks(args.slice(1));
|
|
72
|
-
break;
|
|
73
|
-
case 'plugins':
|
|
74
|
-
await this.plugins(args.slice(1));
|
|
75
|
-
break;
|
|
76
|
-
case 'version':
|
|
77
|
-
case '-v':
|
|
78
|
-
case '--version':
|
|
79
|
-
console.log(`uap version ${UAP_VERSION}`);
|
|
80
|
-
break;
|
|
81
|
-
case '--help':
|
|
82
|
-
case '-h':
|
|
83
|
-
default:
|
|
84
|
-
this.printHelp();
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
printHelp() {
|
|
89
|
-
console.log(`
|
|
90
|
-
Universal Agent Protocol (UAP) v${UAP_VERSION}
|
|
91
|
-
AI agents that learn and remember across sessions
|
|
92
|
-
|
|
93
|
-
USAGE:
|
|
94
|
-
uap <command> [options]
|
|
95
|
-
|
|
96
|
-
COMMANDS:
|
|
97
|
-
init Initialize UAP in current project
|
|
98
|
-
setup [options] Run comprehensive UAP setup
|
|
99
|
-
install Install UAP plugins for specific harness (opencode, etc.)
|
|
100
|
-
or install RTK CLI proxy with "uap install rtk"
|
|
101
|
-
rtk Manage RTK (Rust Token Killer) integration
|
|
102
|
-
install Install RTK CLI proxy for 60-90% token savings
|
|
103
|
-
status Check RTK installation and token savings
|
|
104
|
-
help Show RTK usage information
|
|
105
|
-
uninstall Remove UAP from current project
|
|
106
|
-
hooks Manage UAP hooks
|
|
107
|
-
plugins List and manage UAP plugins
|
|
108
|
-
|
|
109
|
-
OPTIONS:
|
|
110
|
-
-p, --project Target project directory
|
|
111
|
-
-h, --harness Target agent harness (opencode, claude-code, etc.)
|
|
112
|
-
-f, --force Force operations without confirmation
|
|
113
|
-
-v, --verbose Enable verbose output
|
|
114
|
-
--version Show version number
|
|
115
|
-
--help Show this help message
|
|
116
|
-
|
|
117
|
-
EXAMPLES:
|
|
118
|
-
uap init # Initialize UAP in current directory
|
|
119
|
-
uap setup -p all # Full setup with all components
|
|
120
|
-
uap install opencode # Install UAP plugins for opencode harness
|
|
121
|
-
uap install rtk # Install RTK CLI proxy (60-90% token savings)
|
|
122
|
-
uap rtk status # Check RTK installation and savings
|
|
123
|
-
uap hooks list # List available hooks
|
|
124
|
-
|
|
125
|
-
INTEGRATION:
|
|
126
|
-
RTK works alongside UAP's MCP Router for maximum token savings:
|
|
127
|
-
|
|
128
|
-
- MCP Router (~98% savings): Hides 150+ tools behind 2 meta-tools
|
|
129
|
-
- RTK (60-90% savings): Filters CLI command output before LLM sees it
|
|
130
|
-
|
|
131
|
-
Combined: 95%+ total token reduction
|
|
132
|
-
`);
|
|
133
|
-
}
|
|
134
|
-
async init() {
|
|
135
|
-
console.log('🔧 Initializing Universal Agent Protocol...\n');
|
|
136
|
-
const projectDir = process.cwd();
|
|
137
|
-
const uapConfig = path.join(projectDir, '.uap.json');
|
|
138
|
-
const claudeMd = path.join(projectDir, 'CLAUDE.md');
|
|
139
|
-
// Create .uap.json config
|
|
140
|
-
const config = {
|
|
141
|
-
version: UAP_VERSION,
|
|
142
|
-
project: projectDir,
|
|
143
|
-
initialized: true,
|
|
144
|
-
timestamp: new Date().toISOString(),
|
|
145
|
-
features: {
|
|
146
|
-
memory: true,
|
|
147
|
-
hooks: true,
|
|
148
|
-
plugins: true,
|
|
149
|
-
droids: false,
|
|
150
|
-
skills: false,
|
|
151
|
-
},
|
|
152
|
-
};
|
|
153
|
-
writeFileSync(uapConfig, JSON.stringify(config, null, 2));
|
|
154
|
-
console.log('✓ Created .uap.json configuration');
|
|
155
|
-
// Check if CLAUDE.md exists
|
|
156
|
-
if (!existsSync(claudeMd)) {
|
|
157
|
-
console.log('ℹ No CLAUDE.md found. You can create one manually or with: uap setup -p claude-md');
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
console.log('✓ CLAUDE.md detected');
|
|
161
|
-
}
|
|
162
|
-
console.log('\n✅ UAP initialized successfully!');
|
|
163
|
-
console.log(`\nNext steps:`);
|
|
164
|
-
console.log(` uap setup -p all # Run full setup`);
|
|
165
|
-
console.log(` uap install opencode # Install for opencode harness`);
|
|
166
|
-
}
|
|
167
|
-
async setup(args) {
|
|
168
|
-
console.log('🔧 Running UAP setup...\n');
|
|
169
|
-
const projectDir = process.cwd();
|
|
170
|
-
// Check if initialized
|
|
171
|
-
const uapConfigPath = path.join(projectDir, '.uap.json');
|
|
172
|
-
if (!existsSync(uapConfigPath)) {
|
|
173
|
-
console.log('❌ UAP not initialized. Run: uap init');
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
const config = JSON.parse(readFileSync(uapConfigPath, 'utf8'));
|
|
177
|
-
// Install components based on options
|
|
178
|
-
const hasAll = args.includes('-p') || args.includes('--project');
|
|
179
|
-
const setupMemory = hasAll || args.includes('memory');
|
|
180
|
-
const setupHooks = hasAll || args.includes('hooks');
|
|
181
|
-
const setupMCP = hasAll || args.includes('mcp-router');
|
|
182
|
-
if (setupMemory) {
|
|
183
|
-
await this.installMemory(projectDir);
|
|
184
|
-
}
|
|
185
|
-
if (setupHooks) {
|
|
186
|
-
await this.installHooks(projectDir);
|
|
187
|
-
}
|
|
188
|
-
if (setupMCP) {
|
|
189
|
-
await this.installMCPRouter(projectDir);
|
|
190
|
-
}
|
|
191
|
-
// Update config
|
|
192
|
-
config.lastSetup = new Date().toISOString();
|
|
193
|
-
writeFileSync(uapConfigPath, JSON.stringify(config, null, 2));
|
|
194
|
-
console.log('\n✅ UAP setup complete!');
|
|
195
|
-
}
|
|
196
|
-
async install(args) {
|
|
197
|
-
if (args.length === 0) {
|
|
198
|
-
console.log('❌ Please specify a harness: uap install <harness>');
|
|
199
|
-
console.log('Available harnesses: opencode, claude-code, etc.');
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
const harness = args[0];
|
|
203
|
-
console.log(`🔧 Installing UAP plugins for ${harness}...\n`);
|
|
204
|
-
switch (harness) {
|
|
205
|
-
case 'opencode':
|
|
206
|
-
await this.installForOpencode();
|
|
207
|
-
break;
|
|
208
|
-
case 'claude-code':
|
|
209
|
-
await this.installForClaudeCode();
|
|
210
|
-
break;
|
|
211
|
-
default:
|
|
212
|
-
console.log(`ℹ Plugin installation for ${harness} not yet implemented.`);
|
|
213
|
-
console.log('Available harnesses: opencode, claude-code');
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
async installForOpencode() {
|
|
217
|
-
const homeDir = process.env.HOME || '/tmp';
|
|
218
|
-
const opencodeDir = path.join(homeDir, '.opencode');
|
|
219
|
-
const pluginsDir = path.join(opencodeDir, 'plugin');
|
|
220
|
-
if (!existsSync(opencodeDir)) {
|
|
221
|
-
console.log(`ℹ Opencode not found at ${opencodeDir}`);
|
|
222
|
-
console.log('Installing UAP to opencode...');
|
|
223
|
-
mkdirSync(pluginsDir, { recursive: true });
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
mkdirSync(pluginsDir, { recursive: true });
|
|
227
|
-
}
|
|
228
|
-
await this.copyPluginsToDir(pluginsDir);
|
|
229
|
-
// Create opencode config if needed
|
|
230
|
-
const opencodeConfig = path.join(opencodeDir, 'config.json');
|
|
231
|
-
if (!existsSync(opencodeConfig)) {
|
|
232
|
-
const config = {
|
|
233
|
-
uapEnabled: true,
|
|
234
|
-
uapVersion: UAP_VERSION,
|
|
235
|
-
installedAt: new Date().toISOString(),
|
|
236
|
-
};
|
|
237
|
-
writeFileSync(opencodeConfig, JSON.stringify(config, null, 2));
|
|
238
|
-
console.log('✓ Created opencode config with UAP integration');
|
|
239
|
-
}
|
|
240
|
-
console.log('\n✅ UAP successfully integrated with opencode!');
|
|
241
|
-
}
|
|
242
|
-
async installForClaudeCode() {
|
|
243
|
-
const homeDir = process.env.HOME || '/tmp';
|
|
244
|
-
const claudeCodeDir = path.join(homeDir, '.claude', 'code');
|
|
245
|
-
const hooksDir = path.join(claudeCodeDir, '.factory', 'hooks');
|
|
246
|
-
if (!existsSync(claudeCodeDir)) {
|
|
247
|
-
console.log(`ℹ Claude Code not found at ${claudeCodeDir}`);
|
|
248
|
-
console.log('Installing UAP to claude-code...');
|
|
249
|
-
mkdirSync(hooksDir, { recursive: true });
|
|
250
|
-
}
|
|
251
|
-
else {
|
|
252
|
-
mkdirSync(hooksDir, { recursive: true });
|
|
253
|
-
}
|
|
254
|
-
// Copy hook scripts for claude-code from plugin directory
|
|
255
|
-
const hooks = ['session-start.sh', 'pre-compact.sh'];
|
|
256
|
-
for (const hook of hooks) {
|
|
257
|
-
const src = path.join(projectRoot, 'tools', 'agents', 'plugin', hook);
|
|
258
|
-
const dest = path.join(hooksDir, hook);
|
|
259
|
-
if (existsSync(src)) {
|
|
260
|
-
try {
|
|
261
|
-
const content = readFileSync(src, 'utf8');
|
|
262
|
-
writeFileSync(dest, content);
|
|
263
|
-
console.log(`✓ Installed ${hook}`);
|
|
264
|
-
}
|
|
265
|
-
catch (e) {
|
|
266
|
-
console.log(`✗ Failed to install ${hook}: ${e}`);
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
console.log(`ℹ Hook not found: ${hook}`);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
// Create claude-code config if needed
|
|
274
|
-
const claudeConfig = path.join(claudeCodeDir, 'config.json');
|
|
275
|
-
if (!existsSync(claudeConfig)) {
|
|
276
|
-
const config = {
|
|
277
|
-
uapEnabled: true,
|
|
278
|
-
uapVersion: UAP_VERSION,
|
|
279
|
-
installedAt: new Date().toISOString(),
|
|
280
|
-
};
|
|
281
|
-
writeFileSync(claudeConfig, JSON.stringify(config, null, 2));
|
|
282
|
-
console.log('✓ Created claude-code config with UAP integration');
|
|
283
|
-
}
|
|
284
|
-
console.log('\n✅ UAP successfully integrated with claude-code!');
|
|
285
|
-
}
|
|
286
|
-
async copyPluginsToDir(destDir) {
|
|
287
|
-
const uapPlugins = [
|
|
288
|
-
'uap-commands.ts',
|
|
289
|
-
'uap-droids.ts',
|
|
290
|
-
'uap-skills.ts',
|
|
291
|
-
'uap-patterns.ts',
|
|
292
|
-
'session-start.sh',
|
|
293
|
-
'pre-compact.sh',
|
|
294
|
-
];
|
|
295
|
-
for (const plugin of uapPlugins) {
|
|
296
|
-
const src = path.join(projectRoot, 'tools', 'agents', 'plugin', plugin);
|
|
297
|
-
const dest = path.join(destDir, plugin);
|
|
298
|
-
if (existsSync(src)) {
|
|
299
|
-
try {
|
|
300
|
-
const content = readFileSync(src, 'utf8');
|
|
301
|
-
writeFileSync(dest, content);
|
|
302
|
-
console.log(`✓ Installed ${plugin}`);
|
|
303
|
-
}
|
|
304
|
-
catch (e) {
|
|
305
|
-
console.log(`✗ Failed to install ${plugin}: ${e}`);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
309
|
-
console.log(`ℹ Plugin not found: ${plugin}`);
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
async installMemory(projectDir) {
|
|
314
|
-
console.log('🔧 Setting up memory system...');
|
|
315
|
-
const memoryDir = path.join(projectDir, 'agents', 'data', 'memory');
|
|
316
|
-
mkdirSync(memoryDir, { recursive: true });
|
|
317
|
-
const shortTermDB = path.join(memoryDir, 'short_term.db');
|
|
318
|
-
const longTermDB = path.join(memoryDir, 'long_term.db');
|
|
319
|
-
// Initialize SQLite databases
|
|
320
|
-
try {
|
|
321
|
-
execSync(`sqlite3 ${shortTermDB} "CREATE TABLE IF NOT EXISTS memories (id INTEGER PRIMARY KEY, content TEXT, metadata TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP);"`);
|
|
322
|
-
console.log('✓ Created short-term memory database');
|
|
323
|
-
execSync(`sqlite3 ${longTermDB} "CREATE TABLE IF NOT EXISTS lessons (id INTEGER PRIMARY KEY, title TEXT, content TEXT, category TEXT, importance INTEGER, created_at DATETIME DEFAULT CURRENT_TIMESTAMP);"`);
|
|
324
|
-
console.log('✓ Created long-term memory database');
|
|
325
|
-
}
|
|
326
|
-
catch (e) {
|
|
327
|
-
console.log('ℹ SQLite not available for in-memory setup');
|
|
328
|
-
}
|
|
329
|
-
console.log('✅ Memory system initialized!');
|
|
330
|
-
}
|
|
331
|
-
async installHooks(projectDir) {
|
|
332
|
-
console.log('🔧 Installing UAP hooks...');
|
|
333
|
-
const hooksDir = path.join(projectDir, '.factory', 'hooks');
|
|
334
|
-
mkdirSync(hooksDir, { recursive: true });
|
|
335
|
-
// Copy hook scripts
|
|
336
|
-
const hooks = ['session-start.sh', 'pre-compact.sh'];
|
|
337
|
-
for (const hook of hooks) {
|
|
338
|
-
const src = path.join(projectRoot, '.factory', 'hooks', hook);
|
|
339
|
-
const dest = path.join(hooksDir, hook);
|
|
340
|
-
if (existsSync(src)) {
|
|
341
|
-
try {
|
|
342
|
-
const content = readFileSync(src, 'utf8');
|
|
343
|
-
writeFileSync(dest, content);
|
|
344
|
-
console.log(`✓ Installed ${hook}`);
|
|
345
|
-
}
|
|
346
|
-
catch (e) {
|
|
347
|
-
console.log(`✗ Failed to install ${hook}: ${e}`);
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
else {
|
|
351
|
-
console.log(`ℹ Hook not found: ${hook}`);
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
console.log('✅ Hooks installed!');
|
|
355
|
-
}
|
|
356
|
-
async installMCPRouter(projectDir) {
|
|
357
|
-
console.log('Setting up MCP Router...');
|
|
358
|
-
// Discover existing MCP server configurations
|
|
359
|
-
const mcpConfigPaths = [
|
|
360
|
-
path.join(projectDir, '.claude', 'settings.json'),
|
|
361
|
-
path.join(projectDir, '.cursor', 'mcp.json'),
|
|
362
|
-
path.join(projectDir, 'mcp.json'),
|
|
363
|
-
path.join(projectDir, '.vscode', 'mcp.json'),
|
|
364
|
-
];
|
|
365
|
-
const discoveredServers = {};
|
|
366
|
-
for (const configPath of mcpConfigPaths) {
|
|
367
|
-
if (existsSync(configPath)) {
|
|
368
|
-
try {
|
|
369
|
-
const config = JSON.parse(readFileSync(configPath, 'utf8'));
|
|
370
|
-
const servers = config.mcpServers || config.servers || {};
|
|
371
|
-
for (const [name, serverConfig] of Object.entries(servers)) {
|
|
372
|
-
if (!discoveredServers[name]) {
|
|
373
|
-
discoveredServers[name] = serverConfig;
|
|
374
|
-
console.log(` Found MCP server: ${name} (from ${path.basename(configPath)})`);
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
catch {
|
|
379
|
-
// Skip invalid configs
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
// Generate router configuration
|
|
384
|
-
const routerConfig = {
|
|
385
|
-
version: '1.0.0',
|
|
386
|
-
router: {
|
|
387
|
-
name: 'uap-mcp-router',
|
|
388
|
-
description: 'UAP MCP Router - reduces tool context by 98%+',
|
|
389
|
-
exposedTools: ['discover_tools', 'execute_tool'],
|
|
390
|
-
},
|
|
391
|
-
servers: {},
|
|
392
|
-
};
|
|
393
|
-
// Add discovered servers
|
|
394
|
-
for (const [name, config] of Object.entries(discoveredServers)) {
|
|
395
|
-
routerConfig.servers[name] = {
|
|
396
|
-
...config,
|
|
397
|
-
enabled: true,
|
|
398
|
-
};
|
|
399
|
-
}
|
|
400
|
-
// Add self-exclusion to prevent routing loops
|
|
401
|
-
routerConfig.servers['uap-mcp-router'] = {
|
|
402
|
-
enabled: false,
|
|
403
|
-
comment: 'Self-exclusion to prevent routing loops',
|
|
404
|
-
};
|
|
405
|
-
// Write router config
|
|
406
|
-
const routerConfigPath = path.join(projectDir, '.mcp-router.json');
|
|
407
|
-
writeFileSync(routerConfigPath, JSON.stringify(routerConfig, null, 2));
|
|
408
|
-
console.log(` Created router config: .mcp-router.json`);
|
|
409
|
-
// Report results
|
|
410
|
-
const serverCount = Object.keys(discoveredServers).length;
|
|
411
|
-
if (serverCount > 0) {
|
|
412
|
-
console.log(` Discovered ${serverCount} MCP server(s)`);
|
|
413
|
-
console.log(` Router will expose 2 meta-tools instead of ${serverCount * 15}+ raw tools`);
|
|
414
|
-
}
|
|
415
|
-
else {
|
|
416
|
-
console.log(' No existing MCP servers found. Add servers to .mcp-router.json manually.');
|
|
417
|
-
}
|
|
418
|
-
console.log('MCP Router setup complete!');
|
|
419
|
-
console.log(' Start: npx uap mcp-router start');
|
|
420
|
-
}
|
|
421
|
-
async uninstall() {
|
|
422
|
-
console.log('❌ UAP uninstall not yet implemented');
|
|
423
|
-
console.log('To manually remove UAP:');
|
|
424
|
-
console.log(' rm -rf .uap.json .factory/hooks agents/data/memory');
|
|
425
|
-
}
|
|
426
|
-
async hooks(args) {
|
|
427
|
-
const command = args[0];
|
|
428
|
-
switch (command) {
|
|
429
|
-
case 'list':
|
|
430
|
-
console.log('Available UAP hooks:');
|
|
431
|
-
console.log(' - session-start: Run at session initialization');
|
|
432
|
-
console.log(' - pre-compact: Run before context compression');
|
|
433
|
-
console.log(' - post-complete: Run after task completion');
|
|
434
|
-
break;
|
|
435
|
-
case 'install':
|
|
436
|
-
await this.installHooks(process.cwd());
|
|
437
|
-
break;
|
|
438
|
-
default:
|
|
439
|
-
this.printHelp();
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
async plugins(args) {
|
|
443
|
-
console.log('UAP Plugins:');
|
|
444
|
-
console.log(' - uap-session-hooks: Session management hooks');
|
|
445
|
-
console.log(' - uap-commands: UAP command definitions');
|
|
446
|
-
console.log(' - uap-droids: Specialized agent droids');
|
|
447
|
-
console.log(' - uap-skills: Domain-specific skills');
|
|
448
|
-
console.log(' - uap-patterns: Reusable coding patterns');
|
|
449
|
-
if (args[0] === 'install') {
|
|
450
|
-
await this.install(args.slice(1));
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
// Main entry point
|
|
455
|
-
const cli = new UAPCli();
|
|
456
|
-
cli.run(process.argv.slice(2)).catch(console.error);
|
|
457
|
-
//# sourceMappingURL=uap.js.map
|
package/dist/cli/uap.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uap.js","sourceRoot":"","sources":["../../src/cli/uap.ts"],"names":[],"mappings":"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"}
|