@miller-tech/uap 1.8.1 → 1.10.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/README.md +285 -642
- package/config/chat_template.jinja +76 -0
- package/config/lora-finetune.yaml +82 -0
- package/config/model-profiles/claude-haiku-3.5.json +62 -0
- package/config/model-profiles/claude-opus-4.6.json +63 -0
- package/config/model-profiles/claude-sonnet-4.6.json +63 -0
- package/config/model-profiles/gemini-2.5-flash.json +62 -0
- package/config/model-profiles/gemini-2.5-pro.json +62 -0
- package/config/model-profiles/generic.json +54 -0
- package/config/model-profiles/glm-5.json +61 -0
- package/config/model-profiles/gpt-4.1.json +64 -0
- package/config/model-profiles/gpt-4o.json +64 -0
- package/config/model-profiles/gpt-o3.json +61 -0
- package/config/model-profiles/kimi-k2.5.json +70 -0
- package/config/model-profiles/llama.json +86 -0
- package/config/model-profiles/qwen35.json +218 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/bin/cli.js +78 -9
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/llama-server-optimize.js +0 -10
- package/dist/bin/llama-server-optimize.js.map +1 -1
- package/dist/bin/policy.js +11 -195
- package/dist/bin/policy.js.map +1 -1
- package/dist/cli/dashboard.d.ts.map +1 -1
- package/dist/cli/dashboard.js +14 -14
- package/dist/cli/dashboard.js.map +1 -1
- package/dist/cli/generate.d.ts +0 -7
- package/dist/cli/generate.d.ts.map +1 -1
- package/dist/cli/generate.js +10 -22
- package/dist/cli/generate.js.map +1 -1
- package/dist/cli/hooks.d.ts +1 -1
- package/dist/cli/hooks.d.ts.map +1 -1
- package/dist/cli/hooks.js +371 -0
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +120 -3
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/memory.d.ts.map +1 -1
- package/dist/cli/memory.js +43 -109
- package/dist/cli/memory.js.map +1 -1
- package/dist/cli/model.d.ts.map +1 -1
- package/dist/cli/model.js +8 -25
- package/dist/cli/model.js.map +1 -1
- package/dist/cli/patterns.d.ts.map +1 -1
- package/dist/cli/patterns.js +11 -9
- package/dist/cli/patterns.js.map +1 -1
- package/dist/cli/policy.d.ts.map +1 -1
- package/dist/cli/policy.js +165 -1
- package/dist/cli/policy.js.map +1 -1
- package/dist/cli/rtk-validation.d.ts +0 -4
- package/dist/cli/rtk-validation.d.ts.map +1 -1
- package/dist/cli/rtk-validation.js +5 -23
- package/dist/cli/rtk-validation.js.map +1 -1
- package/dist/cli/schema-diff.d.ts.map +1 -1
- package/dist/cli/schema-diff.js +25 -16
- package/dist/cli/schema-diff.js.map +1 -1
- package/dist/cli/setup-wizard.d.ts.map +1 -1
- package/dist/cli/setup-wizard.js +13 -9
- package/dist/cli/setup-wizard.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +3 -4
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/visualize.d.ts +6 -13
- package/dist/cli/visualize.d.ts.map +1 -1
- package/dist/cli/visualize.js +35 -64
- package/dist/cli/visualize.js.map +1 -1
- package/dist/cli/worktree.d.ts.map +1 -1
- package/dist/cli/worktree.js +12 -13
- package/dist/cli/worktree.js.map +1 -1
- package/dist/coordination/adaptive-patterns.d.ts.map +1 -1
- package/dist/coordination/adaptive-patterns.js +7 -3
- package/dist/coordination/adaptive-patterns.js.map +1 -1
- package/dist/coordination/deploy-batcher.d.ts.map +1 -1
- package/dist/coordination/deploy-batcher.js +8 -8
- package/dist/coordination/deploy-batcher.js.map +1 -1
- package/dist/dashboard/data-service.d.ts.map +1 -1
- package/dist/dashboard/data-service.js +12 -13
- package/dist/dashboard/data-service.js.map +1 -1
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +23 -8
- package/dist/dashboard/server.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp-router/executor/client.d.ts +0 -6
- package/dist/mcp-router/executor/client.d.ts.map +1 -1
- package/dist/mcp-router/executor/client.js +1 -27
- package/dist/mcp-router/executor/client.js.map +1 -1
- package/dist/mcp-router/index.d.ts +1 -1
- package/dist/mcp-router/index.d.ts.map +1 -1
- package/dist/mcp-router/index.js.map +1 -1
- package/dist/mcp-router/output-compressor.js +114 -112
- package/dist/mcp-router/output-compressor.js.map +1 -1
- package/dist/mcp-router/types.d.ts +0 -5
- package/dist/mcp-router/types.d.ts.map +1 -1
- package/dist/memory/backends/github.d.ts.map +1 -1
- package/dist/memory/backends/github.js +21 -13
- package/dist/memory/backends/github.js.map +1 -1
- package/dist/memory/context-pruner.d.ts +2 -9
- package/dist/memory/context-pruner.d.ts.map +1 -1
- package/dist/memory/context-pruner.js +5 -22
- package/dist/memory/context-pruner.js.map +1 -1
- package/dist/memory/correction-propagator.d.ts.map +1 -1
- package/dist/memory/correction-propagator.js +19 -19
- package/dist/memory/correction-propagator.js.map +1 -1
- package/dist/memory/dynamic-retrieval.d.ts.map +1 -1
- package/dist/memory/dynamic-retrieval.js +263 -132
- package/dist/memory/dynamic-retrieval.js.map +1 -1
- package/dist/memory/embeddings.d.ts.map +1 -1
- package/dist/memory/embeddings.js +2 -15
- package/dist/memory/embeddings.js.map +1 -1
- package/dist/memory/hierarchical-memory.d.ts.map +1 -1
- package/dist/memory/hierarchical-memory.js +6 -0
- package/dist/memory/hierarchical-memory.js.map +1 -1
- package/dist/memory/knowledge-graph.d.ts.map +1 -1
- package/dist/memory/knowledge-graph.js +2 -1
- package/dist/memory/knowledge-graph.js.map +1 -1
- package/dist/memory/memory-consolidator.d.ts +1 -0
- package/dist/memory/memory-consolidator.d.ts.map +1 -1
- package/dist/memory/memory-consolidator.js +27 -3
- package/dist/memory/memory-consolidator.js.map +1 -1
- package/dist/memory/predictive-memory.d.ts +9 -1
- package/dist/memory/predictive-memory.d.ts.map +1 -1
- package/dist/memory/predictive-memory.js +77 -1
- package/dist/memory/predictive-memory.js.map +1 -1
- package/dist/memory/serverless-qdrant.d.ts +1 -0
- package/dist/memory/serverless-qdrant.d.ts.map +1 -1
- package/dist/memory/serverless-qdrant.js +3 -9
- package/dist/memory/serverless-qdrant.js.map +1 -1
- package/dist/memory/short-term/schema.d.ts.map +1 -1
- package/dist/memory/short-term/schema.js +44 -6
- package/dist/memory/short-term/schema.js.map +1 -1
- package/dist/memory/short-term/sqlite.d.ts +4 -3
- package/dist/memory/short-term/sqlite.d.ts.map +1 -1
- package/dist/memory/short-term/sqlite.js +3 -12
- package/dist/memory/short-term/sqlite.js.map +1 -1
- package/dist/memory/speculative-cache.js +2 -2
- package/dist/memory/speculative-cache.js.map +1 -1
- package/dist/models/executor.d.ts +21 -0
- package/dist/models/executor.d.ts.map +1 -1
- package/dist/models/executor.js +116 -4
- package/dist/models/executor.js.map +1 -1
- package/dist/models/planner.d.ts +1 -0
- package/dist/models/planner.d.ts.map +1 -1
- package/dist/models/planner.js +13 -1
- package/dist/models/planner.js.map +1 -1
- package/dist/policies/enforced-tool-router.d.ts +3 -1
- package/dist/policies/enforced-tool-router.d.ts.map +1 -1
- package/dist/policies/enforced-tool-router.js.map +1 -1
- package/dist/tasks/service.d.ts +1 -0
- package/dist/tasks/service.d.ts.map +1 -1
- package/dist/tasks/service.js +10 -6
- package/dist/tasks/service.js.map +1 -1
- package/dist/telemetry/session-telemetry.d.ts.map +1 -1
- package/dist/telemetry/session-telemetry.js +73 -17
- package/dist/telemetry/session-telemetry.js.map +1 -1
- package/dist/types/config.d.ts +377 -263
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +13 -67
- package/dist/types/config.js.map +1 -1
- package/dist/utils/config-loader.d.ts +34 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +93 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/lazy-imports.d.ts +18 -0
- package/dist/utils/lazy-imports.d.ts.map +1 -0
- package/dist/utils/lazy-imports.js +39 -0
- package/dist/utils/lazy-imports.js.map +1 -0
- package/dist/utils/stopwords.d.ts +12 -0
- package/dist/utils/stopwords.d.ts.map +1 -0
- package/dist/utils/stopwords.js +196 -0
- package/dist/utils/stopwords.js.map +1 -0
- package/dist/utils/string-similarity.d.ts +10 -3
- package/dist/utils/string-similarity.d.ts.map +1 -1
- package/dist/utils/string-similarity.js +49 -25
- package/dist/utils/string-similarity.js.map +1 -1
- package/docs/INDEX.md +35 -34
- package/package.json +13 -14
- package/scripts/maintenance/publish-npm.sh +82 -0
- package/scripts/maintenance/publish.sh +29 -0
- package/scripts/maintenance/update-droids.py +93 -0
- package/scripts/maintenance/update-skills.py +148 -0
- package/scripts/maintenance/update-uap-compliance.sh +45 -0
- package/scripts/maintenance/validate-skills.py +83 -0
- package/scripts/maintenance/verify-compliance.sh +117 -0
- package/scripts/setup/install-cloakbrowser.ts +14 -0
- package/scripts/setup/install-desktop.sh +105 -0
- package/scripts/setup/install-rtk.sh +184 -0
- package/scripts/setup/install-web.sh +73 -0
- package/scripts/setup/setup.sh +375 -0
- package/scripts/validate-build.sh +62 -0
- package/scripts/version-bump.sh +130 -0
- package/tools/agents/scripts/migrate_memory_to_qdrant.py +1 -1
- /package/docs/{BENCHMARK_GAPS_AND_PLAN.md → archive/BENCHMARK_GAPS_AND_PLAN.md} +0 -0
- /package/docs/{MODEL_ROUTING_IMPLEMENTATION_SUMMARY.md → archive/MODEL_ROUTING_IMPLEMENTATION_SUMMARY.md} +0 -0
- /package/docs/{MODEL_ROUTING_OPTIMIZATION_PLAN.md → archive/MODEL_ROUTING_OPTIMIZATION_PLAN.md} +0 -0
- /package/docs/{PARALLELISM_GAPS_AND_OPTIONS.md → archive/PARALLELISM_GAPS_AND_OPTIONS.md} +0 -0
- /package/docs/{POLICY_GATE_IMPLEMENTATION.md → archive/POLICY_GATE_IMPLEMENTATION.md} +0 -0
- /package/docs/{UAP_OPTIMIZATION_PLAN.md → archive/UAP_OPTIMIZATION_PLAN.md} +0 -0
- /package/docs/{opencode-integration-guide.md → archive/opencode-integration-guide.md} +0 -0
- /package/docs/{opencode-integration-quickref.md → archive/opencode-integration-quickref.md} +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Update all UAP components for v2.3.0 compatibility
|
|
3
|
+
# This script ensures CLAUDE.md, skills, and droids are aligned
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
+
PROJECT_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")"
|
|
9
|
+
|
|
10
|
+
echo "=== UAP Compliance Update Script ==="
|
|
11
|
+
echo "Target: CLAUDE.md v2.3.0+"
|
|
12
|
+
echo ""
|
|
13
|
+
|
|
14
|
+
# Step 1: Verify CLAUDE.md version
|
|
15
|
+
echo "Step 1/4: Checking CLAUDE.md version..."
|
|
16
|
+
if grep -q "CLAUDE.md v2\.[2-9]" "$PROJECT_ROOT/CLAUDE.md" || \
|
|
17
|
+
grep -q "CLAUDE.md v3\." "$PROJECT_ROOT/CLAUDE.md"; then
|
|
18
|
+
echo " ✓ CLAUDE.md version compatible"
|
|
19
|
+
else
|
|
20
|
+
echo " ✗ CLAUDE.md needs update to v2.3.0+"
|
|
21
|
+
exit 1
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
# Step 2: Update skills
|
|
25
|
+
echo ""
|
|
26
|
+
echo "Step 2/4: Updating skills..."
|
|
27
|
+
python3 "$SCRIPT_DIR/update-skills.py" || {
|
|
28
|
+
echo " ⚠ Skills update failed, continuing anyway"
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
# Step 3: Update droids
|
|
32
|
+
echo ""
|
|
33
|
+
echo "Step 3/4: Updating droids..."
|
|
34
|
+
python3 "$SCRIPT_DIR/update-droids.py" || {
|
|
35
|
+
echo " ⚠ Droids update failed, continuing anyway"
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
# Step 4: Verify compliance
|
|
39
|
+
echo ""
|
|
40
|
+
echo "Step 4/4: Verifying UAP compliance..."
|
|
41
|
+
bash "$SCRIPT_DIR/verify-compliance.sh"
|
|
42
|
+
|
|
43
|
+
echo ""
|
|
44
|
+
echo "=== Update Complete ==="
|
|
45
|
+
echo "All components updated for CLAUDE.md v2.3.0+"
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Validate all skills include required v2.3.0 markers."""
|
|
3
|
+
|
|
4
|
+
import os
|
|
5
|
+
import sys
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
SKILLS_DIR = os.path.join(
|
|
9
|
+
os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))),
|
|
10
|
+
".factory",
|
|
11
|
+
"skills",
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
required_markers = [
|
|
15
|
+
"compatibility: CLAUDE.md v2.3.0+",
|
|
16
|
+
"@hooks-session-start.md",
|
|
17
|
+
"DECISION LOOP",
|
|
18
|
+
"MANDATORY",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
print("=== Validating Skills for UAM v2.3.0 Compliance ===\n")
|
|
22
|
+
|
|
23
|
+
errors = []
|
|
24
|
+
warnings = []
|
|
25
|
+
|
|
26
|
+
for skill_dir in os.listdir(SKILLS_DIR):
|
|
27
|
+
skill_path = os.path.join(SKILLS_DIR, skill_dir)
|
|
28
|
+
|
|
29
|
+
if not os.path.isdir(skill_path):
|
|
30
|
+
continue
|
|
31
|
+
|
|
32
|
+
skill_file = os.path.join(skill_path, "SKILL.md")
|
|
33
|
+
|
|
34
|
+
if not os.path.exists(skill_file):
|
|
35
|
+
errors.append(f"{skill_dir}/SKILL.md: File not found")
|
|
36
|
+
continue
|
|
37
|
+
|
|
38
|
+
with open(skill_file, "r", encoding="utf-8") as f:
|
|
39
|
+
content = f.read()
|
|
40
|
+
|
|
41
|
+
skill_name = skill_dir
|
|
42
|
+
|
|
43
|
+
# Check required markers
|
|
44
|
+
for marker in required_markers:
|
|
45
|
+
if marker not in content:
|
|
46
|
+
errors.append(f"{skill_name}: Missing '{marker}'")
|
|
47
|
+
|
|
48
|
+
# Warn about optional but recommended markers
|
|
49
|
+
optional_markers = [
|
|
50
|
+
"Completion Gates Checklist",
|
|
51
|
+
"Verifier-First",
|
|
52
|
+
"Memory Integration",
|
|
53
|
+
]
|
|
54
|
+
|
|
55
|
+
for marker in optional_markers:
|
|
56
|
+
if marker not in content:
|
|
57
|
+
warnings.append(f"{skill_name}: Missing optional '{marker}' (recommended)")
|
|
58
|
+
|
|
59
|
+
# Report results
|
|
60
|
+
if errors:
|
|
61
|
+
print("❌ ERRORS - Skills missing required markers:")
|
|
62
|
+
for error in errors:
|
|
63
|
+
print(f" ✗ {error}")
|
|
64
|
+
print()
|
|
65
|
+
|
|
66
|
+
if warnings:
|
|
67
|
+
print("⚠️ WARNINGS - Skills missing optional markers:")
|
|
68
|
+
for warning in warnings[:5]: # Show first 5 warnings
|
|
69
|
+
print(f" ⚠ {warning}")
|
|
70
|
+
if len(warnings) > 5:
|
|
71
|
+
print(f" ... and {len(warnings) - 5} more")
|
|
72
|
+
print()
|
|
73
|
+
|
|
74
|
+
if not errors and not warnings:
|
|
75
|
+
print("✓ All skills are compliant with UAM v2.3.0!")
|
|
76
|
+
sys.exit(0)
|
|
77
|
+
elif not errors:
|
|
78
|
+
print("✓ Skills pass all required checks (warnings shown above)")
|
|
79
|
+
sys.exit(0)
|
|
80
|
+
else:
|
|
81
|
+
print("\n❌ Validation FAILED")
|
|
82
|
+
print("Run 'npm run update-skills' to fix issues")
|
|
83
|
+
sys.exit(1)
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Verify UAP compliance for CLAUDE.md v2.3.0+
|
|
3
|
+
|
|
4
|
+
echo "=== UAP Compliance Verification ==="
|
|
5
|
+
echo ""
|
|
6
|
+
|
|
7
|
+
score=0
|
|
8
|
+
total=12
|
|
9
|
+
|
|
10
|
+
# 1. CLAUDE.md version check
|
|
11
|
+
if grep -q "CLAUDE.md v2\.[2-9]\|CLAUDE.md v3\." CLAUDE.md; then
|
|
12
|
+
((score++))
|
|
13
|
+
echo "✓ CLAUDE.md version (v2.x+/v3.x)"
|
|
14
|
+
else
|
|
15
|
+
echo "✗ CLAUDE.md version not found"
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
# 2. SESSION START block
|
|
19
|
+
if grep -q "## SESSION START" CLAUDE.md && grep -q "uap task ready" CLAUDE.md; then
|
|
20
|
+
((score++))
|
|
21
|
+
echo "✓ SESSION START block with uap task ready"
|
|
22
|
+
else
|
|
23
|
+
echo "✗ SESSION START block MISSING"
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# 3. DECISION LOOP with skills reference
|
|
27
|
+
if grep -q "@Skill:name.md" CLAUDE.md; then
|
|
28
|
+
((score++))
|
|
29
|
+
echo "✓ DECISION LOOP with @Skill:name.md reference"
|
|
30
|
+
else
|
|
31
|
+
echo "✗ DECISION LOOP skills reference MISSING"
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
# 4. MANDATORY worktree enforcement
|
|
35
|
+
if grep -q "WORKTREE WORKFLOW — MANDATORY\|## WORKTREE WORKFLOW.*MANDATORY" CLAUDE.md; then
|
|
36
|
+
((score++))
|
|
37
|
+
echo "✓ MANDATORY worktree enforcement present"
|
|
38
|
+
else
|
|
39
|
+
echo "✗ MANDATORY worktree enforcement MISSING"
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
# 5. PARALLEL REVIEW PROTOCOL
|
|
43
|
+
if grep -q "## PARALLEL REVIEW PROTOCOL" CLAUDE.md; then
|
|
44
|
+
((score++))
|
|
45
|
+
echo "✓ PARALLEL REVIEW PROTOCOL present"
|
|
46
|
+
else
|
|
47
|
+
echo "✗ PARALLEL REVIEW PROTOCOL MISSING"
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
# 6. Schema diff gate ordering
|
|
51
|
+
if grep -q "BLOCKING PREREQUISITES.*Schema Diff Gate\|1\. \*\*Schema Diff Gate" CLAUDE.md; then
|
|
52
|
+
((score++))
|
|
53
|
+
echo "✓ Schema diff gate in BLOCKING PREREQUISITES"
|
|
54
|
+
else
|
|
55
|
+
echo "✗ Schema diff gate NOT in blocking prerequisites"
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
# 7. VERIFIER-FIRST section
|
|
59
|
+
if grep -q "## VERIFIER-FIRST" CLAUDE.md; then
|
|
60
|
+
((score++))
|
|
61
|
+
echo "✓ VERIFIER-FIRST section present"
|
|
62
|
+
else
|
|
63
|
+
echo "✗ VERIFIER-FIRST MISSING"
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
# 8. COMPLETION GATES - MANDATORY
|
|
67
|
+
if grep -q "COMPLETION GATES.*-.*MANDATORY\|## COMPLETION GATES - MANDATORY" CLAUDE.md; then
|
|
68
|
+
((score++))
|
|
69
|
+
echo "✓ COMPLETION GATES - MANDATORY present"
|
|
70
|
+
else
|
|
71
|
+
echo "✗ COMPLETION GATES - MANDATORY MISSING"
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
# 9. Pattern Router requirement
|
|
75
|
+
if grep -q "Pattern.*Router\|pattern router" CLAUDE.md; then
|
|
76
|
+
((score++))
|
|
77
|
+
echo "✓ Pattern Router documented"
|
|
78
|
+
else
|
|
79
|
+
echo "✗ Pattern Router MISSING"
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
# 10. RTK includes
|
|
83
|
+
if grep -q "@hooks-session-start.md\|@PreCompact.md" CLAUDE.md; then
|
|
84
|
+
((score++))
|
|
85
|
+
echo "✓ RTK includes (@hooks-session-start, @PreCompact)"
|
|
86
|
+
else
|
|
87
|
+
echo "✗ RTK includes MISSING"
|
|
88
|
+
fi
|
|
89
|
+
|
|
90
|
+
# 11. Verifier loop enforcement (min 3 runs)
|
|
91
|
+
if grep -q "MANDATORY.*minimum 3 times\|MANDATORY.*3 times" CLAUDE.md; then
|
|
92
|
+
((score++))
|
|
93
|
+
echo "✓ Verifier loop enforced (min 3 runs)"
|
|
94
|
+
else
|
|
95
|
+
echo "✗ Verifier loop enforcement MISSING"
|
|
96
|
+
fi
|
|
97
|
+
|
|
98
|
+
# 12. Skills directory structure
|
|
99
|
+
if [ -d ".factory/skills" ] && [ "$(ls -A .factory/skills 2>/dev/null)" ]; then
|
|
100
|
+
((score++))
|
|
101
|
+
echo "✓ Skills directory populated"
|
|
102
|
+
else
|
|
103
|
+
echo "✗ Skills directory MISSING or empty"
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
echo ""
|
|
107
|
+
echo "=== UAP COMPLIANCE SCORE: $score/$total ($(( score * 100 / total ))%) ==="
|
|
108
|
+
echo ""
|
|
109
|
+
|
|
110
|
+
if [ "$score" -eq "$total" ]; then
|
|
111
|
+
echo "✓ All compliance checks passed!"
|
|
112
|
+
exit 0
|
|
113
|
+
else
|
|
114
|
+
echo "✗ Compliance check failed! Score: $score/$total"
|
|
115
|
+
echo "Run 'npm run update-uap' to fix issues"
|
|
116
|
+
exit 1
|
|
117
|
+
fi
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { execSync } from 'node:child_process';
|
|
3
|
+
|
|
4
|
+
try {
|
|
5
|
+
console.log('Installing CloakBrowser dependencies...');
|
|
6
|
+
execSync('npm install cloakbrowser playwright-core', { stdio: 'inherit' });
|
|
7
|
+
console.log('\nInstalling Playwright browsers...');
|
|
8
|
+
execSync('npx playwright install chromium', { stdio: 'inherit' });
|
|
9
|
+
console.log('\n✅ CloakBrowser ready!');
|
|
10
|
+
console.log('\nTo use: import { createWebBrowser } from "universal-agent-protocol/browser";');
|
|
11
|
+
} catch (error) {
|
|
12
|
+
console.error('❌ Installation failed:', error.message);
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Colors
|
|
5
|
+
GREEN='\033[0;32m'
|
|
6
|
+
YELLOW='\033[1;33m'
|
|
7
|
+
RED='\033[0;31m'
|
|
8
|
+
NC='\033[0m' # No Color
|
|
9
|
+
|
|
10
|
+
REPO_URL="https://github.com/DammianMiller/universal-agent-protocol"
|
|
11
|
+
|
|
12
|
+
echo -e "${GREEN}Universal Agent Memory - Desktop Installation${NC}"
|
|
13
|
+
echo "============================================"
|
|
14
|
+
echo ""
|
|
15
|
+
|
|
16
|
+
# Check for Node.js
|
|
17
|
+
if ! command -v node &> /dev/null; then
|
|
18
|
+
echo -e "${RED}Error: Node.js is not installed${NC}"
|
|
19
|
+
echo "Please install Node.js 18+ from https://nodejs.org/"
|
|
20
|
+
exit 1
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
NODE_VERSION=$(node -v | cut -d'v' -f2 | cut -d'.' -f1)
|
|
24
|
+
if [ "$NODE_VERSION" -lt 18 ]; then
|
|
25
|
+
echo -e "${RED}Error: Node.js 18+ required (you have $(node -v))${NC}"
|
|
26
|
+
exit 1
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
echo -e "${GREEN}✓${NC} Node.js $(node -v) detected"
|
|
30
|
+
|
|
31
|
+
# Check for npm
|
|
32
|
+
if ! command -v npm &> /dev/null; then
|
|
33
|
+
echo -e "${RED}Error: npm is not installed${NC}"
|
|
34
|
+
exit 1
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
echo -e "${GREEN}✓${NC} npm $(npm -v) detected"
|
|
38
|
+
|
|
39
|
+
# Check for Docker (optional)
|
|
40
|
+
if command -v docker &> /dev/null; then
|
|
41
|
+
echo -e "${GREEN}✓${NC} Docker detected - local Qdrant available"
|
|
42
|
+
DOCKER_AVAILABLE=true
|
|
43
|
+
else
|
|
44
|
+
echo -e "${YELLOW}⚠${NC} Docker not found - will use cloud backends only"
|
|
45
|
+
DOCKER_AVAILABLE=false
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
# Install the CLI globally
|
|
49
|
+
echo ""
|
|
50
|
+
echo "Installing universal-agent-protocol..."
|
|
51
|
+
|
|
52
|
+
# Try npm install first, fall back to git clone if package not published yet
|
|
53
|
+
if npm install -g universal-agent-protocol 2>/dev/null; then
|
|
54
|
+
echo -e "${GREEN}✓${NC} Installed from npm registry"
|
|
55
|
+
else
|
|
56
|
+
echo -e "${YELLOW}Package not yet on npm, installing from GitHub...${NC}"
|
|
57
|
+
|
|
58
|
+
# Install to user's local directory
|
|
59
|
+
INSTALL_DIR="${HOME}/.universal-agent-protocol"
|
|
60
|
+
|
|
61
|
+
# Remove old installation if exists
|
|
62
|
+
if [ -d "$INSTALL_DIR" ]; then
|
|
63
|
+
echo "Removing previous installation..."
|
|
64
|
+
rm -rf "$INSTALL_DIR"
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
# Clone and install
|
|
68
|
+
git clone --depth 1 "$REPO_URL.git" "$INSTALL_DIR"
|
|
69
|
+
cd "$INSTALL_DIR"
|
|
70
|
+
npm install --production=false
|
|
71
|
+
npm run build
|
|
72
|
+
npm link
|
|
73
|
+
|
|
74
|
+
echo -e "${GREEN}✓${NC} Installed from GitHub to $INSTALL_DIR"
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
echo ""
|
|
78
|
+
echo -e "${GREEN}Installation complete!${NC}"
|
|
79
|
+
echo ""
|
|
80
|
+
echo "Next steps:"
|
|
81
|
+
echo " 1. Initialize UAP in your project:"
|
|
82
|
+
echo " $ cd /path/to/your/project"
|
|
83
|
+
echo " $ uap init"
|
|
84
|
+
echo ""
|
|
85
|
+
echo " 2. Review the generated CLAUDE.md"
|
|
86
|
+
echo ""
|
|
87
|
+
echo " 3. Start working - your AI assistant will follow the workflows!"
|
|
88
|
+
echo ""
|
|
89
|
+
|
|
90
|
+
if [ "$DOCKER_AVAILABLE" = true ]; then
|
|
91
|
+
echo " 2. Start local memory services (optional):"
|
|
92
|
+
echo " $ uap memory start"
|
|
93
|
+
echo ""
|
|
94
|
+
echo " Or use cloud backends:"
|
|
95
|
+
else
|
|
96
|
+
echo " 2. Configure cloud memory backends:"
|
|
97
|
+
fi
|
|
98
|
+
|
|
99
|
+
echo " - GitHub: export GITHUB_TOKEN=your_token"
|
|
100
|
+
echo " - Qdrant Cloud: export QDRANT_API_KEY=your_key && export QDRANT_URL=your_url"
|
|
101
|
+
echo ""
|
|
102
|
+
echo " 3. Generate CLAUDE.md for your project:"
|
|
103
|
+
echo " $ uap generate"
|
|
104
|
+
echo ""
|
|
105
|
+
echo "Documentation: ${REPO_URL}#readme"
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# RTK (Rust Token Killer) Installation Script for UAP
|
|
3
|
+
# Auto-detects OS and installs RTK via appropriate method
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
echo "🔧 Installing RTK (Rust Token Killer)..."
|
|
8
|
+
echo " Reduces LLM token consumption by 60-90% on CLI commands"
|
|
9
|
+
echo ""
|
|
10
|
+
|
|
11
|
+
# Detect OS and architecture
|
|
12
|
+
detect_os() {
|
|
13
|
+
if [[ "$(uname -s)" == "Darwin" ]]; then
|
|
14
|
+
echo "macOS"
|
|
15
|
+
elif [[ "$(uname -s)" == "Linux" ]]; then
|
|
16
|
+
echo "Linux"
|
|
17
|
+
elif [[ "$(uname -s)" =~ MINGW.* || "$(uname -s)" =~ MSYS* ]]; then
|
|
18
|
+
echo "Windows"
|
|
19
|
+
else
|
|
20
|
+
echo "Unknown"
|
|
21
|
+
fi
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
detect_arch() {
|
|
25
|
+
local arch=$(uname -m)
|
|
26
|
+
case $arch in
|
|
27
|
+
x86_64) echo "x86_64" ;;
|
|
28
|
+
arm64|aarch64) echo "arm64" ;;
|
|
29
|
+
*) echo "$arch" ;;
|
|
30
|
+
esac
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
OS=$(detect_os)
|
|
34
|
+
ARCH=$(detect_arch)
|
|
35
|
+
|
|
36
|
+
echo "Detected: $OS ($ARCH)"
|
|
37
|
+
echo ""
|
|
38
|
+
|
|
39
|
+
# Check if Homebrew is available (macOS/Linux)
|
|
40
|
+
check_brew() {
|
|
41
|
+
command -v brew &> /dev/null && echo "yes" || echo "no"
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
# Check if cargo is installed
|
|
45
|
+
check_cargo() {
|
|
46
|
+
command -v cargo &> /dev/null && echo "yes" || echo "no"
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
# Check if RTK is already installed
|
|
50
|
+
check_rtk_installed() {
|
|
51
|
+
command -v rtk &> /dev/null && echo "yes" || echo "no"
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
RTK_INSTALLED=$(check_rtk_installed)
|
|
55
|
+
|
|
56
|
+
if [[ "$RTK_INSTALLED" == "yes" ]]; then
|
|
57
|
+
CURRENT_VERSION=$(rtk --version 2>&1 | head -1)
|
|
58
|
+
echo "ℹ RTK is already installed: $CURRENT_VERSION"
|
|
59
|
+
echo ""
|
|
60
|
+
read -p "Do you want to upgrade to the latest version? [y/N] " -n 1 -r
|
|
61
|
+
echo ""
|
|
62
|
+
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
63
|
+
echo "Skipping installation."
|
|
64
|
+
exit 0
|
|
65
|
+
fi
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
# Installation methods (in order of preference)
|
|
69
|
+
install_methods=(
|
|
70
|
+
"homebrew"
|
|
71
|
+
"cargo"
|
|
72
|
+
"curl_install"
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
INSTALL_SUCCESS=false
|
|
76
|
+
|
|
77
|
+
for method in "${install_methods[@]}"; do
|
|
78
|
+
echo "📦 Trying installation method: $method"
|
|
79
|
+
|
|
80
|
+
case $method in
|
|
81
|
+
homebrew)
|
|
82
|
+
if [[ "$OS" == "macOS" ]] || (check_brew == "yes"); then
|
|
83
|
+
echo " Installing via Homebrew..."
|
|
84
|
+
if brew install rtk &> /dev/null; then
|
|
85
|
+
INSTALL_SUCCESS=true
|
|
86
|
+
break
|
|
87
|
+
fi
|
|
88
|
+
fi
|
|
89
|
+
;;
|
|
90
|
+
|
|
91
|
+
cargo)
|
|
92
|
+
if check_cargo == "yes"; then
|
|
93
|
+
echo " Installing via Cargo..."
|
|
94
|
+
if cargo install --git https://github.com/rtk-ai/rtk --quiet 2>&1; then
|
|
95
|
+
INSTALL_SUCCESS=true
|
|
96
|
+
break
|
|
97
|
+
fi
|
|
98
|
+
fi
|
|
99
|
+
;;
|
|
100
|
+
|
|
101
|
+
curl_install)
|
|
102
|
+
if [[ "$OS" == "macOS" ]] || [[ "$OS" == "Linux" ]]; then
|
|
103
|
+
echo " Installing via curl..."
|
|
104
|
+
TEMP_DIR=$(mktemp -d)
|
|
105
|
+
cd "$TEMP_DIR"
|
|
106
|
+
|
|
107
|
+
# Download appropriate binary based on OS/arch
|
|
108
|
+
if [[ "$ARCH" == "arm64" ]]; then
|
|
109
|
+
BINARY="rtk-aarch64-apple-darwin.tar.gz"
|
|
110
|
+
else
|
|
111
|
+
BINARY="rtk-x86_64-apple-darwin.tar.gz"
|
|
112
|
+
fi
|
|
113
|
+
|
|
114
|
+
if [[ "$OS" == "Linux" ]]; then
|
|
115
|
+
if [[ "$ARCH" == "arm64" ]]; then
|
|
116
|
+
BINARY="rtk-aarch64-unknown-linux-gnu.tar.gz"
|
|
117
|
+
else
|
|
118
|
+
BINARY="rtk-x86_64-unknown-linux-musl.tar.gz"
|
|
119
|
+
fi
|
|
120
|
+
fi
|
|
121
|
+
|
|
122
|
+
echo " Downloading: $BINARY"
|
|
123
|
+
|
|
124
|
+
if curl -fsSL "https://github.com/rtk-ai/rtk/releases/latest/download/$BINARY" -o rtk.tar.gz 2>&1; then
|
|
125
|
+
tar -xzf rtk.tar.gz
|
|
126
|
+
chmod +x rtk
|
|
127
|
+
|
|
128
|
+
# Move to local bin or PATH
|
|
129
|
+
if [[ -d "$HOME/.local/bin" ]] || echo "$PATH" | grep -q "$HOME/.local/bin"; then
|
|
130
|
+
mkdir -p "$HOME/.local/bin"
|
|
131
|
+
mv rtk "$HOME/.local/bin/"
|
|
132
|
+
echo " Installed to: $HOME/.local/bin/rtk"
|
|
133
|
+
else
|
|
134
|
+
sudo mkdir -p /usr/local/bin
|
|
135
|
+
sudo mv rtk /usr/local/bin/
|
|
136
|
+
echo " Installed to: /usr/local/bin/rtk"
|
|
137
|
+
fi
|
|
138
|
+
|
|
139
|
+
INSTALL_SUCCESS=true
|
|
140
|
+
cd ..
|
|
141
|
+
rm -rf "$TEMP_DIR"
|
|
142
|
+
break
|
|
143
|
+
fi
|
|
144
|
+
fi
|
|
145
|
+
;;
|
|
146
|
+
esac
|
|
147
|
+
|
|
148
|
+
echo " ✗ Failed: $method"
|
|
149
|
+
done
|
|
150
|
+
|
|
151
|
+
# Verify installation
|
|
152
|
+
if [[ "$INSTALL_SUCCESS" == "true" ]]; then
|
|
153
|
+
if command -v rtk &> /dev/null; then
|
|
154
|
+
VERSION=$(rtk --version 2>&1 | head -1)
|
|
155
|
+
echo ""
|
|
156
|
+
echo "✅ RTK installed successfully!"
|
|
157
|
+
echo " Version: $VERSION"
|
|
158
|
+
echo ""
|
|
159
|
+
echo "📚 Next steps:"
|
|
160
|
+
echo " 1. Initialize hook for Claude Code:"
|
|
161
|
+
echo " rtk init --global"
|
|
162
|
+
echo ""
|
|
163
|
+
echo " 2. Verify installation:"
|
|
164
|
+
echo " rtk gain"
|
|
165
|
+
echo ""
|
|
166
|
+
echo " 3. View token savings:"
|
|
167
|
+
echo " rtk gain --graph"
|
|
168
|
+
echo ""
|
|
169
|
+
else
|
|
170
|
+
echo "❌ Installation completed but RTK binary not found in PATH"
|
|
171
|
+
echo " Please ensure $HOME/.local/bin is in your PATH:"
|
|
172
|
+
echo ' echo '\''export PATH="$HOME/.local/bin:$PATH"'\'' >> ~/.bashrc'
|
|
173
|
+
exit 1
|
|
174
|
+
fi
|
|
175
|
+
else
|
|
176
|
+
echo ""
|
|
177
|
+
echo "❌ All installation methods failed"
|
|
178
|
+
echo ""
|
|
179
|
+
echo "Manual installation options:"
|
|
180
|
+
echo " 1. Homebrew (macOS/Linux): brew install rtk"
|
|
181
|
+
echo " 2. Cargo: cargo install --git https://github.com/rtk-ai/rtk"
|
|
182
|
+
echo " 3. Pre-built binaries: https://github.com/rtk-ai/rtk/releases"
|
|
183
|
+
exit 1
|
|
184
|
+
fi
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
REPO_URL="https://github.com/DammianMiller/universal-agent-protocol"
|
|
5
|
+
|
|
6
|
+
echo "🚀 Universal Agent Memory - Web Platform Setup"
|
|
7
|
+
echo ""
|
|
8
|
+
|
|
9
|
+
# Check for required tools
|
|
10
|
+
if ! command -v node &> /dev/null; then
|
|
11
|
+
echo "❌ Node.js is required. Install from https://nodejs.org"
|
|
12
|
+
exit 1
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
if ! command -v npm &> /dev/null; then
|
|
16
|
+
echo "❌ npm is required. Install from https://nodejs.org"
|
|
17
|
+
exit 1
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
echo "✅ Node.js $(node -v) detected"
|
|
21
|
+
echo "✅ npm $(npm -v) detected"
|
|
22
|
+
|
|
23
|
+
# Install CLI globally
|
|
24
|
+
echo ""
|
|
25
|
+
echo "📦 Installing universal-agent-protocol CLI..."
|
|
26
|
+
|
|
27
|
+
# Try npm install first, fall back to git clone if package not published yet
|
|
28
|
+
if npm install -g universal-agent-protocol 2>/dev/null; then
|
|
29
|
+
echo "✅ Installed from npm registry"
|
|
30
|
+
else
|
|
31
|
+
echo "⚠️ Package not yet on npm, installing from GitHub..."
|
|
32
|
+
|
|
33
|
+
# Install to user's local directory
|
|
34
|
+
INSTALL_DIR="${HOME}/.universal-agent-protocol"
|
|
35
|
+
|
|
36
|
+
# Remove old installation if exists
|
|
37
|
+
if [ -d "$INSTALL_DIR" ]; then
|
|
38
|
+
echo "Removing previous installation..."
|
|
39
|
+
rm -rf "$INSTALL_DIR"
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
# Clone and install
|
|
43
|
+
git clone --depth 1 "$REPO_URL.git" "$INSTALL_DIR"
|
|
44
|
+
cd "$INSTALL_DIR"
|
|
45
|
+
npm install --production=false
|
|
46
|
+
npm run build
|
|
47
|
+
npm link
|
|
48
|
+
|
|
49
|
+
echo "✅ Installed from GitHub to $INSTALL_DIR"
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
# Initialize in current directory
|
|
53
|
+
echo ""
|
|
54
|
+
echo "⚙️ Initializing project..."
|
|
55
|
+
uap init --web --interactive
|
|
56
|
+
|
|
57
|
+
echo ""
|
|
58
|
+
echo "✅ Setup complete!"
|
|
59
|
+
echo ""
|
|
60
|
+
echo "Next steps:"
|
|
61
|
+
echo " 1. Initialize UAP in your project:"
|
|
62
|
+
echo " uap init"
|
|
63
|
+
echo ""
|
|
64
|
+
echo " 2. Review the generated CLAUDE.md"
|
|
65
|
+
echo ""
|
|
66
|
+
echo " 3. Start working - your AI assistant will follow the workflows!"
|
|
67
|
+
echo ""
|
|
68
|
+
echo "Optional: Set up cloud memory backends"
|
|
69
|
+
echo " export GITHUB_TOKEN=your_token"
|
|
70
|
+
echo " export QDRANT_API_KEY=your_key"
|
|
71
|
+
echo " export QDRANT_URL=your_url"
|
|
72
|
+
echo ""
|
|
73
|
+
echo "Documentation: ${REPO_URL}#readme"
|