@miller-tech/uap 1.9.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.
Files changed (195) hide show
  1. package/README.md +285 -642
  2. package/config/chat_template.jinja +76 -0
  3. package/config/lora-finetune.yaml +82 -0
  4. package/config/model-profiles/claude-haiku-3.5.json +62 -0
  5. package/config/model-profiles/claude-opus-4.6.json +63 -0
  6. package/config/model-profiles/claude-sonnet-4.6.json +63 -0
  7. package/config/model-profiles/gemini-2.5-flash.json +62 -0
  8. package/config/model-profiles/gemini-2.5-pro.json +62 -0
  9. package/config/model-profiles/generic.json +54 -0
  10. package/config/model-profiles/glm-5.json +61 -0
  11. package/config/model-profiles/gpt-4.1.json +64 -0
  12. package/config/model-profiles/gpt-4o.json +64 -0
  13. package/config/model-profiles/gpt-o3.json +61 -0
  14. package/config/model-profiles/kimi-k2.5.json +70 -0
  15. package/config/model-profiles/llama.json +86 -0
  16. package/config/model-profiles/qwen35.json +218 -0
  17. package/dist/.tsbuildinfo +1 -1
  18. package/dist/bin/cli.js +78 -9
  19. package/dist/bin/cli.js.map +1 -1
  20. package/dist/bin/llama-server-optimize.js +0 -10
  21. package/dist/bin/llama-server-optimize.js.map +1 -1
  22. package/dist/bin/policy.js +11 -195
  23. package/dist/bin/policy.js.map +1 -1
  24. package/dist/cli/dashboard.d.ts.map +1 -1
  25. package/dist/cli/dashboard.js +10 -12
  26. package/dist/cli/dashboard.js.map +1 -1
  27. package/dist/cli/generate.d.ts +0 -7
  28. package/dist/cli/generate.d.ts.map +1 -1
  29. package/dist/cli/generate.js +10 -22
  30. package/dist/cli/generate.js.map +1 -1
  31. package/dist/cli/memory.d.ts.map +1 -1
  32. package/dist/cli/memory.js +43 -109
  33. package/dist/cli/memory.js.map +1 -1
  34. package/dist/cli/model.d.ts.map +1 -1
  35. package/dist/cli/model.js +8 -25
  36. package/dist/cli/model.js.map +1 -1
  37. package/dist/cli/patterns.d.ts.map +1 -1
  38. package/dist/cli/patterns.js +11 -9
  39. package/dist/cli/patterns.js.map +1 -1
  40. package/dist/cli/policy.d.ts.map +1 -1
  41. package/dist/cli/policy.js +165 -1
  42. package/dist/cli/policy.js.map +1 -1
  43. package/dist/cli/rtk-validation.d.ts +0 -4
  44. package/dist/cli/rtk-validation.d.ts.map +1 -1
  45. package/dist/cli/rtk-validation.js +5 -23
  46. package/dist/cli/rtk-validation.js.map +1 -1
  47. package/dist/cli/schema-diff.d.ts.map +1 -1
  48. package/dist/cli/schema-diff.js +25 -16
  49. package/dist/cli/schema-diff.js.map +1 -1
  50. package/dist/cli/setup-wizard.d.ts.map +1 -1
  51. package/dist/cli/setup-wizard.js +11 -7
  52. package/dist/cli/setup-wizard.js.map +1 -1
  53. package/dist/cli/setup.d.ts.map +1 -1
  54. package/dist/cli/setup.js +3 -4
  55. package/dist/cli/setup.js.map +1 -1
  56. package/dist/cli/visualize.d.ts +0 -13
  57. package/dist/cli/visualize.d.ts.map +1 -1
  58. package/dist/cli/visualize.js +1 -60
  59. package/dist/cli/visualize.js.map +1 -1
  60. package/dist/cli/worktree.d.ts.map +1 -1
  61. package/dist/cli/worktree.js +12 -13
  62. package/dist/cli/worktree.js.map +1 -1
  63. package/dist/coordination/adaptive-patterns.d.ts.map +1 -1
  64. package/dist/coordination/adaptive-patterns.js +7 -3
  65. package/dist/coordination/adaptive-patterns.js.map +1 -1
  66. package/dist/coordination/deploy-batcher.d.ts.map +1 -1
  67. package/dist/coordination/deploy-batcher.js +8 -8
  68. package/dist/coordination/deploy-batcher.js.map +1 -1
  69. package/dist/dashboard/data-service.d.ts.map +1 -1
  70. package/dist/dashboard/data-service.js +12 -13
  71. package/dist/dashboard/data-service.js.map +1 -1
  72. package/dist/dashboard/server.d.ts.map +1 -1
  73. package/dist/dashboard/server.js +23 -8
  74. package/dist/dashboard/server.js.map +1 -1
  75. package/dist/index.d.ts +4 -4
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +3 -3
  78. package/dist/index.js.map +1 -1
  79. package/dist/mcp-router/executor/client.d.ts +0 -6
  80. package/dist/mcp-router/executor/client.d.ts.map +1 -1
  81. package/dist/mcp-router/executor/client.js +1 -27
  82. package/dist/mcp-router/executor/client.js.map +1 -1
  83. package/dist/mcp-router/index.d.ts +1 -1
  84. package/dist/mcp-router/index.d.ts.map +1 -1
  85. package/dist/mcp-router/index.js.map +1 -1
  86. package/dist/mcp-router/output-compressor.js +114 -112
  87. package/dist/mcp-router/output-compressor.js.map +1 -1
  88. package/dist/mcp-router/types.d.ts +0 -5
  89. package/dist/mcp-router/types.d.ts.map +1 -1
  90. package/dist/memory/backends/github.d.ts.map +1 -1
  91. package/dist/memory/backends/github.js +21 -13
  92. package/dist/memory/backends/github.js.map +1 -1
  93. package/dist/memory/context-pruner.d.ts +2 -9
  94. package/dist/memory/context-pruner.d.ts.map +1 -1
  95. package/dist/memory/context-pruner.js +5 -22
  96. package/dist/memory/context-pruner.js.map +1 -1
  97. package/dist/memory/correction-propagator.d.ts.map +1 -1
  98. package/dist/memory/correction-propagator.js +19 -19
  99. package/dist/memory/correction-propagator.js.map +1 -1
  100. package/dist/memory/dynamic-retrieval.d.ts.map +1 -1
  101. package/dist/memory/dynamic-retrieval.js +263 -132
  102. package/dist/memory/dynamic-retrieval.js.map +1 -1
  103. package/dist/memory/embeddings.d.ts.map +1 -1
  104. package/dist/memory/embeddings.js +2 -15
  105. package/dist/memory/embeddings.js.map +1 -1
  106. package/dist/memory/hierarchical-memory.d.ts.map +1 -1
  107. package/dist/memory/hierarchical-memory.js +6 -0
  108. package/dist/memory/hierarchical-memory.js.map +1 -1
  109. package/dist/memory/knowledge-graph.d.ts.map +1 -1
  110. package/dist/memory/knowledge-graph.js +2 -1
  111. package/dist/memory/knowledge-graph.js.map +1 -1
  112. package/dist/memory/memory-consolidator.d.ts +1 -0
  113. package/dist/memory/memory-consolidator.d.ts.map +1 -1
  114. package/dist/memory/memory-consolidator.js +27 -3
  115. package/dist/memory/memory-consolidator.js.map +1 -1
  116. package/dist/memory/predictive-memory.d.ts +9 -1
  117. package/dist/memory/predictive-memory.d.ts.map +1 -1
  118. package/dist/memory/predictive-memory.js +77 -1
  119. package/dist/memory/predictive-memory.js.map +1 -1
  120. package/dist/memory/serverless-qdrant.d.ts +1 -0
  121. package/dist/memory/serverless-qdrant.d.ts.map +1 -1
  122. package/dist/memory/serverless-qdrant.js +3 -9
  123. package/dist/memory/serverless-qdrant.js.map +1 -1
  124. package/dist/memory/short-term/schema.d.ts.map +1 -1
  125. package/dist/memory/short-term/schema.js +44 -6
  126. package/dist/memory/short-term/schema.js.map +1 -1
  127. package/dist/memory/short-term/sqlite.d.ts +4 -3
  128. package/dist/memory/short-term/sqlite.d.ts.map +1 -1
  129. package/dist/memory/short-term/sqlite.js +3 -12
  130. package/dist/memory/short-term/sqlite.js.map +1 -1
  131. package/dist/memory/speculative-cache.js +2 -2
  132. package/dist/memory/speculative-cache.js.map +1 -1
  133. package/dist/models/executor.d.ts +21 -0
  134. package/dist/models/executor.d.ts.map +1 -1
  135. package/dist/models/executor.js +116 -4
  136. package/dist/models/executor.js.map +1 -1
  137. package/dist/models/planner.d.ts +1 -0
  138. package/dist/models/planner.d.ts.map +1 -1
  139. package/dist/models/planner.js +13 -1
  140. package/dist/models/planner.js.map +1 -1
  141. package/dist/policies/enforced-tool-router.d.ts +3 -1
  142. package/dist/policies/enforced-tool-router.d.ts.map +1 -1
  143. package/dist/policies/enforced-tool-router.js.map +1 -1
  144. package/dist/tasks/service.d.ts +1 -0
  145. package/dist/tasks/service.d.ts.map +1 -1
  146. package/dist/tasks/service.js +10 -6
  147. package/dist/tasks/service.js.map +1 -1
  148. package/dist/telemetry/session-telemetry.d.ts.map +1 -1
  149. package/dist/telemetry/session-telemetry.js +14 -11
  150. package/dist/telemetry/session-telemetry.js.map +1 -1
  151. package/dist/types/config.d.ts +426 -359
  152. package/dist/types/config.d.ts.map +1 -1
  153. package/dist/types/config.js +12 -67
  154. package/dist/types/config.js.map +1 -1
  155. package/dist/utils/config-loader.d.ts +34 -0
  156. package/dist/utils/config-loader.d.ts.map +1 -0
  157. package/dist/utils/config-loader.js +93 -0
  158. package/dist/utils/config-loader.js.map +1 -0
  159. package/dist/utils/lazy-imports.d.ts +18 -0
  160. package/dist/utils/lazy-imports.d.ts.map +1 -0
  161. package/dist/utils/lazy-imports.js +39 -0
  162. package/dist/utils/lazy-imports.js.map +1 -0
  163. package/dist/utils/stopwords.d.ts +12 -0
  164. package/dist/utils/stopwords.d.ts.map +1 -0
  165. package/dist/utils/stopwords.js +196 -0
  166. package/dist/utils/stopwords.js.map +1 -0
  167. package/dist/utils/string-similarity.d.ts +10 -3
  168. package/dist/utils/string-similarity.d.ts.map +1 -1
  169. package/dist/utils/string-similarity.js +49 -25
  170. package/dist/utils/string-similarity.js.map +1 -1
  171. package/docs/INDEX.md +35 -34
  172. package/package.json +13 -14
  173. package/scripts/maintenance/publish-npm.sh +82 -0
  174. package/scripts/maintenance/publish.sh +29 -0
  175. package/scripts/maintenance/update-droids.py +93 -0
  176. package/scripts/maintenance/update-skills.py +148 -0
  177. package/scripts/maintenance/update-uap-compliance.sh +45 -0
  178. package/scripts/maintenance/validate-skills.py +83 -0
  179. package/scripts/maintenance/verify-compliance.sh +117 -0
  180. package/scripts/setup/install-cloakbrowser.ts +14 -0
  181. package/scripts/setup/install-desktop.sh +105 -0
  182. package/scripts/setup/install-rtk.sh +184 -0
  183. package/scripts/setup/install-web.sh +73 -0
  184. package/scripts/setup/setup.sh +375 -0
  185. package/scripts/validate-build.sh +62 -0
  186. package/scripts/version-bump.sh +130 -0
  187. package/tools/agents/scripts/migrate_memory_to_qdrant.py +1 -1
  188. /package/docs/{BENCHMARK_GAPS_AND_PLAN.md → archive/BENCHMARK_GAPS_AND_PLAN.md} +0 -0
  189. /package/docs/{MODEL_ROUTING_IMPLEMENTATION_SUMMARY.md → archive/MODEL_ROUTING_IMPLEMENTATION_SUMMARY.md} +0 -0
  190. /package/docs/{MODEL_ROUTING_OPTIMIZATION_PLAN.md → archive/MODEL_ROUTING_OPTIMIZATION_PLAN.md} +0 -0
  191. /package/docs/{PARALLELISM_GAPS_AND_OPTIONS.md → archive/PARALLELISM_GAPS_AND_OPTIONS.md} +0 -0
  192. /package/docs/{POLICY_GATE_IMPLEMENTATION.md → archive/POLICY_GATE_IMPLEMENTATION.md} +0 -0
  193. /package/docs/{UAP_OPTIMIZATION_PLAN.md → archive/UAP_OPTIMIZATION_PLAN.md} +0 -0
  194. /package/docs/{opencode-integration-guide.md → archive/opencode-integration-guide.md} +0 -0
  195. /package/docs/{opencode-integration-quickref.md → archive/opencode-integration-quickref.md} +0 -0
@@ -10,13 +10,19 @@ import { createHash } from 'crypto';
10
10
  * Returns a value between 0 (no overlap) and 1 (identical)
11
11
  */
12
12
  export function jaccardSimilarity(a, b) {
13
- const setA = new Set(a.toLowerCase().split(/\s+/).filter(w => w.length > 1));
14
- const setB = new Set(b.toLowerCase().split(/\s+/).filter(w => w.length > 1));
13
+ const setA = new Set(a
14
+ .toLowerCase()
15
+ .split(/\s+/)
16
+ .filter((w) => w.length > 1));
17
+ const setB = new Set(b
18
+ .toLowerCase()
19
+ .split(/\s+/)
20
+ .filter((w) => w.length > 1));
15
21
  if (setA.size === 0 && setB.size === 0)
16
22
  return 1;
17
23
  if (setA.size === 0 || setB.size === 0)
18
24
  return 0;
19
- const intersection = new Set([...setA].filter(x => setB.has(x)));
25
+ const intersection = new Set([...setA].filter((x) => setB.has(x)));
20
26
  const union = new Set([...setA, ...setB]);
21
27
  return intersection.size / union.size;
22
28
  }
@@ -31,28 +37,11 @@ export function contentHash(text) {
31
37
  .slice(0, 16); // 16 hex chars = 64 bits, sufficient for dedup
32
38
  }
33
39
  /**
34
- * Improved token estimation
35
- * More accurate than simple length/4 for mixed code and prose
40
+ * Improved token estimation — delegates to the canonical implementation
41
+ * in context-compressor.ts to maintain a single source of truth.
42
+ * Kept as a public API alias for backward compatibility.
36
43
  */
37
- export function estimateTokensAccurate(text) {
38
- if (!text || text.length === 0)
39
- return 0;
40
- // Split by whitespace and count
41
- const words = text.split(/\s+/).filter(w => w.length > 0);
42
- // Count special characters that typically become separate tokens
43
- const specialChars = (text.match(/[{}()\[\]<>:;,."'`@#$%^&*+=|\\/?!~-]/g) || []).length;
44
- // Code tokens: variable names split on camelCase/snake_case
45
- const codeTokens = (text.match(/[a-z][A-Z]|_[a-z]/g) || []).length;
46
- // Numbers often tokenize separately
47
- const numbers = (text.match(/\d+/g) || []).length;
48
- // Base: words + adjustments
49
- // Average English word is ~1.3 tokens, code identifiers ~1.5
50
- const baseTokens = words.length * 1.3;
51
- const specialTokens = specialChars * 0.5;
52
- const extraCodeTokens = codeTokens * 0.3;
53
- const numberTokens = numbers * 0.5;
54
- return Math.ceil(baseTokens + specialTokens + extraCodeTokens + numberTokens);
55
- }
44
+ export { estimateTokens as estimateTokensAccurate } from '../memory/context-compressor.js';
56
45
  /**
57
46
  * Simple stemming for keyword matching
58
47
  * Handles common English suffixes for better fuzzy matching
@@ -60,7 +49,20 @@ export function estimateTokensAccurate(text) {
60
49
  export function simpleStem(word) {
61
50
  const lower = word.toLowerCase();
62
51
  // Common suffixes to strip
63
- const suffixes = ['ing', 'ed', 'es', 's', 'er', 'est', 'ly', 'tion', 'ment', 'ness', 'able', 'ible'];
52
+ const suffixes = [
53
+ 'ing',
54
+ 'ed',
55
+ 'es',
56
+ 's',
57
+ 'er',
58
+ 'est',
59
+ 'ly',
60
+ 'tion',
61
+ 'ment',
62
+ 'ness',
63
+ 'able',
64
+ 'ible',
65
+ ];
64
66
  for (const suffix of suffixes) {
65
67
  if (lower.endsWith(suffix) && lower.length > suffix.length + 2) {
66
68
  const stem = lower.slice(0, -suffix.length);
@@ -95,6 +97,28 @@ export function fuzzyKeywordMatch(text, keyword) {
95
97
  }
96
98
  return false;
97
99
  }
100
+ /**
101
+ * Calculate cosine similarity between two numeric vectors.
102
+ * Shared implementation used by EmbeddingService and ServerlessQdrantManager.
103
+ * Returns a value between -1 (opposite) and 1 (identical).
104
+ */
105
+ export function cosineSimilarity(a, b) {
106
+ if (a.length !== b.length) {
107
+ throw new Error('Vectors must have same dimensions');
108
+ }
109
+ let dotProduct = 0;
110
+ let normA = 0;
111
+ let normB = 0;
112
+ for (let i = 0; i < a.length; i++) {
113
+ dotProduct += a[i] * b[i];
114
+ normA += a[i] * a[i];
115
+ normB += b[i] * b[i];
116
+ }
117
+ const denominator = Math.sqrt(normA) * Math.sqrt(normB);
118
+ if (denominator === 0)
119
+ return 0;
120
+ return dotProduct / denominator;
121
+ }
98
122
  /**
99
123
  * Calculate text similarity using multiple methods
100
124
  * Returns weighted average for more robust comparison
@@ -1 +1 @@
1
- {"version":3,"file":"string-similarity.js","sourceRoot":"","sources":["../../src/utils/string-similarity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"string-similarity.js","sourceRoot":"","sources":["../../src/utils/string-similarity.ts"],"names":[],"mappings":"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"}
package/docs/INDEX.md CHANGED
@@ -1,66 +1,67 @@
1
- # UAP Documentation Index
1
+ # UAP Documentation
2
2
 
3
- > Universal Agent Protocol v1.0.0 - Documentation Hub
3
+ > @miller-tech/uap -- Documentation Hub
4
4
 
5
5
  ---
6
6
 
7
7
  ## Getting Started
8
8
 
9
- - [Overview](getting-started/OVERVIEW.md) - What is UAP, core concepts, 4-layer memory architecture
10
- - [Setup](getting-started/SETUP.md) - Installation, dependencies, configuration
11
- - [Integration](getting-started/INTEGRATION.md) - opencode, ForgeCode, Claude Code, VSCode
9
+ - [Overview](getting-started/OVERVIEW.md) -- What is UAP, core concepts, 4-layer memory architecture
10
+ - [Setup](getting-started/SETUP.md) -- Installation, dependencies, configuration
11
+ - [Integration](getting-started/INTEGRATION.md) -- Claude Code, Factory.AI, OpenCode, ForgeCode, VSCode, Cursor
12
12
 
13
13
  ## Architecture
14
14
 
15
- - [System Analysis](architecture/SYSTEM_ANALYSIS.md) - Complete UAP feature analysis and architecture
16
- - [Multi-Model Architecture](architecture/MULTI_MODEL.md) - Planner/executor two-tier design (92-98% cost reduction)
17
- - [UAP Protocol](architecture/UAP_PROTOCOL.md) - Protocol v1.0 specification and compliance requirements
18
- - [UAP Compliance](architecture/UAP_COMPLIANCE.md) - Protocol deviations and enforcement plan
19
- - [Strict Droids](architecture/UAP_STRICT_DROIDS.md) - JSON schema validation for droid definitions
15
+ - [System Analysis](architecture/SYSTEM_ANALYSIS.md) -- Complete UAP feature analysis and architecture
16
+ - [Multi-Model Architecture](architecture/MULTI_MODEL.md) -- Planner/executor two-tier design
17
+ - [UAP Protocol](architecture/UAP_PROTOCOL.md) -- Protocol specification and compliance requirements
18
+ - [UAP Compliance](architecture/UAP_COMPLIANCE.md) -- Protocol enforcement plan
19
+ - [Strict Droids](architecture/UAP_STRICT_DROIDS.md) -- JSON schema validation for droid definitions
20
20
 
21
21
  ## Reference
22
22
 
23
- - [API Reference](reference/API_REFERENCE.md) - CLI commands, DB schema, API endpoints
24
- - [CLI Reference](reference/UAP_CLI_REFERENCE.md) - UAP CLI command reference (init, task, memory, worktree)
25
- - [Feature Inventory](reference/FEATURES.md) - Complete feature status and implementation details
23
+ - [API Reference](reference/API_REFERENCE.md) -- CLI commands, DB schema, API endpoints
24
+ - [CLI Reference](reference/UAP_CLI_REFERENCE.md) -- Full CLI command reference (25 commands, 109 subcommands)
25
+ - [Feature Inventory](reference/FEATURES.md) -- Complete feature status and implementation details
26
+ - [Harness Matrix](reference/HARNESS-MATRIX.md) -- Per-harness integration details
26
27
 
27
28
  ## Deployment
28
29
 
29
- - [Deployment Guide](deployment/DEPLOYMENT.md) - Model providers, IaC, CI/CD pipelines
30
- - [Deployment Strategies](deployment/DEPLOYMENT_STRATEGIES.md) - Window bucketing, batch processing, resource isolation
31
- - [Deploy Batching](deployment/DEPLOY_BATCHING.md) - Batch windows and bucketing system
32
- - [Deploy Batcher Analysis](deployment/DEPLOY_BATCHER_ANALYSIS.md) - DeployBatcher class architecture deep-dive
33
- - [Deploy Bucketing Analysis](deployment/DEPLOY_BUCKETING_ANALYSIS.md) - Bucketing capability report
34
- - [Qwen3.5 / llama.cpp](deployment/QWEN35_LLAMA_CPP.md) - Local LLM deployment with LoRA fine-tuning
30
+ - [Deployment Guide](deployment/DEPLOYMENT.md) -- Model providers, IaC, CI/CD pipelines
31
+ - [Deployment Strategies](deployment/DEPLOYMENT_STRATEGIES.md) -- Window bucketing, batch processing
32
+ - [Deploy Batching](deployment/DEPLOY_BATCHING.md) -- Batch windows and bucketing system
33
+ - [Deploy Batcher Analysis](deployment/DEPLOY_BATCHER_ANALYSIS.md) -- DeployBatcher architecture
34
+ - [Deploy Bucketing Analysis](deployment/DEPLOY_BUCKETING_ANALYSIS.md) -- Bucketing capability report
35
+ - [Qwen3.5 / llama.cpp](deployment/QWEN35_LLAMA_CPP.md) -- Local LLM deployment with LoRA fine-tuning
35
36
 
36
37
  ## Integrations
37
38
 
38
- - [MCP Router](integrations/MCP_ROUTER_SETUP.md) - 98% token reduction via meta-tool routing
39
- - [RTK Integration](integrations/RTK_INTEGRATION.md) - Rust Token Killer CLI proxy analysis
39
+ - [MCP Router](integrations/MCP_ROUTER_SETUP.md) -- 98% token reduction via meta-tool routing
40
+ - [RTK Integration](integrations/RTK_INTEGRATION.md) -- Rust Token Killer CLI proxy
40
41
 
41
42
  ## Benchmarks
42
43
 
43
- - [Validation Plan](benchmarks/VALIDATION_PLAN.md) - Benchmark methodology and test cases
44
- - [Validation Results](benchmarks/VALIDATION_RESULTS.md) - Benchmark results (49.7% token reduction)
45
- - [Token Optimization](benchmarks/TOKEN_OPTIMIZATION.md) - Per-feature token savings analysis
46
- - [Accuracy Analysis](benchmarks/ACCURACY_ANALYSIS.md) - Internal vs Terminal-Bench comparison
44
+ - [Validation Plan](benchmarks/VALIDATION_PLAN.md) -- Benchmark methodology and test cases
45
+ - [Validation Results](benchmarks/VALIDATION_RESULTS.md) -- Benchmark results
46
+ - [Token Optimization](benchmarks/TOKEN_OPTIMIZATION.md) -- Per-feature token savings analysis
47
+ - [Accuracy Analysis](benchmarks/ACCURACY_ANALYSIS.md) -- Internal vs Terminal-Bench comparison
47
48
 
48
49
  ## Research
49
50
 
50
- - [Memory Systems Comparison](research/MEMORY_SYSTEMS_COMPARISON.md) - MemGPT, LangGraph, Mem0, A-MEM analysis
51
- - [Behavioral Patterns](research/BEHAVIORAL_PATTERNS.md) - Pattern analysis from 54-task Terminal-Bench
52
- - [Terminal-Bench Learnings](research/TERMINAL_BENCH_LEARNINGS.md) - Universal agent patterns discovered
53
- - [Performance Analysis](research/PERFORMANCE_ANALYSIS_2026-01-18.md) - UAP v1.0.2 vs baseline benchmarking
54
- - [Pattern Analysis](research/PATTERN_ANALYSIS_2026-01-18.md) - v1.1.0 deep failure study
55
- - [Performance Test Plan](research/PERFORMANCE_TEST_PLAN.md) - Vanilla vs UAP-enhanced droid test plan
56
- - [Domain Strategies](research/DOMAIN_STRATEGIES.md) - CoreWars, specialized task guides
51
+ - [Memory Systems Comparison](research/MEMORY_SYSTEMS_COMPARISON.md) -- MemGPT, LangGraph, Mem0, A-MEM analysis
52
+ - [Behavioral Patterns](research/BEHAVIORAL_PATTERNS.md) -- Pattern analysis from Terminal-Bench
53
+ - [Terminal-Bench Learnings](research/TERMINAL_BENCH_LEARNINGS.md) -- Universal agent patterns discovered
54
+ - [Performance Analysis](research/PERFORMANCE_ANALYSIS_2026-01-18.md) -- UAP vs baseline benchmarking
55
+ - [Pattern Analysis](research/PATTERN_ANALYSIS_2026-01-18.md) -- Deep failure study
56
+ - [Performance Test Plan](research/PERFORMANCE_TEST_PLAN.md) -- Vanilla vs UAP-enhanced test plan
57
+ - [Domain Strategies](research/DOMAIN_STRATEGIES.md) -- CoreWars, specialized task guides
57
58
 
58
59
  ## Operations
59
60
 
60
- - [Troubleshooting](operations/TROUBLESHOOTING.md) - Common issues, recovery procedures, debugging
61
+ - [Troubleshooting](operations/TROUBLESHOOTING.md) -- Common issues, recovery procedures, debugging
61
62
 
62
63
  ---
63
64
 
64
65
  ## Archive
65
66
 
66
- Historical documents preserved for reference in [archive/](archive/). These are superseded or point-in-time documents that are no longer actively maintained.
67
+ Historical documents preserved for reference in [archive/](archive/).
package/package.json CHANGED
@@ -1,13 +1,12 @@
1
1
  {
2
2
  "name": "@miller-tech/uap",
3
- "version": "1.9.1",
3
+ "version": "1.10.0",
4
4
  "description": "Autonomous AI agent memory system with CLAUDE.md protocol enforcement",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "bin": {
9
9
  "uap": "./dist/bin/cli.js",
10
- "uap-tool-calls": "./dist/bin/tool-calls.js",
11
10
  "uap-tool-call-test": "./tools/agents/scripts/tool_call_test.py",
12
11
  "uap-tool-call-wrapper": "./tools/agents/scripts/tool_call_wrapper.py",
13
12
  "uap-template-verify": "./tools/agents/scripts/chat_template_verifier.py",
@@ -25,19 +24,17 @@
25
24
  "lint": "eslint src --ext .ts",
26
25
  "lint:fix": "eslint src --ext .ts --fix",
27
26
  "format": "prettier --write src/**/*.ts",
28
- "prepare": "npm run build",
29
27
  "prepublishOnly": "npm run build && npm test",
30
- "install:web": "bash scripts/install-web.sh",
31
- "install:desktop": "bash scripts/install-desktop.sh",
32
- "install:all": "bash scripts/install.sh",
33
- "install:cloakbrowser": "tsx scripts/install-cloakbrowser.ts",
34
- "postinstall": "echo '\n✨ Run: npx universal-agent-protocol init --interactive'",
28
+ "install:web": "bash scripts/setup/install-web.sh",
29
+ "install:desktop": "bash scripts/setup/install-desktop.sh",
30
+ "install:cloakbrowser": "tsx scripts/setup/install-cloakbrowser.ts",
31
+ "postinstall": "echo '\n✨ Run: npx @miller-tech/uap init --interactive'",
35
32
  "version:patch": "bash scripts/version-bump.sh patch",
36
33
  "version:minor": "bash scripts/version-bump.sh minor",
37
34
  "version:major": "bash scripts/version-bump.sh major",
38
- "update-uap": "bash scripts/update-uap-compliance.sh",
39
- "verify-uap": "bash scripts/verify-compliance.sh",
40
- "check-claude": "bash scripts/verify-compliance.sh"
35
+ "update-uap": "bash scripts/maintenance/update-uap-compliance.sh",
36
+ "verify-uap": "bash scripts/maintenance/verify-compliance.sh",
37
+ "check-claude": "bash scripts/maintenance/verify-compliance.sh"
41
38
  },
42
39
  "keywords": [
43
40
  "claude",
@@ -107,11 +104,13 @@
107
104
  "files": [
108
105
  "dist",
109
106
  "docs",
110
- "benchmark-results",
107
+ "config",
111
108
  "templates",
112
109
  "tools/agents",
113
- "scripts/install-cloakbrowser.ts",
114
- "scripts/convert-policy-to-claude.ts",
110
+ "scripts/setup",
111
+ "scripts/version-bump.sh",
112
+ "scripts/validate-build.sh",
113
+ "scripts/maintenance",
115
114
  "README.md",
116
115
  "LICENSE"
117
116
  ]
@@ -0,0 +1,82 @@
1
+ #!/bin/bash
2
+ # Quick NPM Publish Script - Triggers GitHub Actions Workflow
3
+
4
+ set -e
5
+
6
+ VERSION=$(node -p 'require("./package.json").version' 2>/dev/null || echo "unknown")
7
+ echo "=========================================="
8
+ echo " Universal Agent Protocol v${VERSION}"
9
+ echo " Publishing to NPM..."
10
+ echo "=========================================="
11
+ echo ""
12
+
13
+ REPO="DammianMiller/universal-agent-protocol"
14
+ WORKFLOW_ID="deploy-publish.yml"
15
+
16
+ # Check if gh CLI is installed
17
+ if ! command -v gh &> /dev/null; then
18
+ echo "❌ GitHub CLI (gh) not found!"
19
+ echo ""
20
+ echo "Install it first:"
21
+ echo " macOS: brew install gh"
22
+ echo " Linux: https://cli.github.com/"
23
+ echo " Windows: winget install github.cli"
24
+ echo ""
25
+ echo "Then run this script again."
26
+ exit 1
27
+ fi
28
+
29
+ # Check if logged in to GitHub
30
+ if ! gh auth status &> /dev/null; then
31
+ echo "❌ Not logged in to GitHub!"
32
+ echo ""
33
+ echo "Login first:"
34
+ echo " gh auth login"
35
+ echo ""
36
+ echo "Use -H flag for HTTP host if needed."
37
+ exit 1
38
+ fi
39
+
40
+ echo "✅ GitHub CLI authenticated"
41
+ echo ""
42
+
43
+ # Get workflow ID
44
+ echo "🔄 Fetching workflow information..."
45
+ WORKFLOW_ID=$(gh api "/repos/$REPO/actions/workflows" \
46
+ --jq '.workflows[] | select(.name == "Build, Test & Publish to NPM") | .id')
47
+
48
+ if [ -z "$WORKFLOW_ID" ]; then
49
+ echo "❌ Could not find workflow: $WORKFLOW_ID"
50
+ exit 1
51
+ fi
52
+
53
+ echo "✅ Found workflow ID: $WORKFLOW_ID"
54
+ echo ""
55
+
56
+ # Trigger the workflow
57
+ echo "🚀 Triggering publish workflow..."
58
+ RESPONSE=$(gh api \
59
+ --method POST \
60
+ "/repos/$REPO/actions/workflows/${WORKFLOW_ID}/dispatches" \
61
+ -f ref="master" \
62
+ -f inputs='{"publish":"true","dry_run":"false"}')
63
+
64
+ echo "$RESPONSE" | jq '.workflow_run.id' > /tmp/run_id.txt
65
+ RUN_ID=$(cat /tmp/run_id.txt)
66
+
67
+ if [ -z "$RUN_ID" ]; then
68
+ echo "❌ Failed to trigger workflow"
69
+ exit 1
70
+ fi
71
+
72
+ echo ""
73
+ echo "✅ Workflow triggered successfully!"
74
+ echo ""
75
+ echo "📊 Run ID: $RUN_ID"
76
+ echo ""
77
+ echo "Monitor progress at:"
78
+ echo "https://github.com/$REPO/actions/runs/$RUN_ID"
79
+ echo ""
80
+ echo "=========================================="
81
+ echo " Your NPM publish is in progress!"
82
+ echo "=========================================="
@@ -0,0 +1,29 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ echo "🚀 Publishing universal-agent-protocol to npm..."
5
+
6
+ # Check if NPM_TOKEN is set
7
+ if [ -z "$NPM_TOKEN" ]; then
8
+ echo "❌ Error: NPM_TOKEN environment variable is not set"
9
+ echo " Please set it before running this script"
10
+ exit 1
11
+ fi
12
+
13
+ # Build the project
14
+ echo "📦 Building project..."
15
+ npm run build
16
+
17
+ # Run tests
18
+ echo "🧪 Running tests..."
19
+ npm test
20
+
21
+ # Run lint
22
+ echo "🔍 Running lint..."
23
+ npm run lint
24
+
25
+ # Publish to npm
26
+ echo "📤 Publishing to npm..."
27
+ npm publish --access public
28
+
29
+ echo "✅ Published successfully!"
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env python3
2
+ """Update all droids with v2.3.0 compatibility headers."""
3
+
4
+ import os
5
+
6
+ DROIDS_DIR = os.path.join(
7
+ os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))),
8
+ ".factory",
9
+ "droids",
10
+ )
11
+
12
+ droids = [
13
+ "code-quality-guardian",
14
+ "debug-expert",
15
+ "documentation-expert",
16
+ "ml-training-expert",
17
+ "performance-optimizer",
18
+ "security-auditor",
19
+ "sysadmin-expert",
20
+ "terminal-bench-optimizer",
21
+ ]
22
+
23
+
24
+ def update_droid_file(droid_name):
25
+ droid_file = os.path.join(DROIDS_DIR, f"{droid_name}.md")
26
+
27
+ if not os.path.exists(droid_file):
28
+ print(f" ✗ {droid_name}: File not found")
29
+ return False
30
+
31
+ with open(droid_file, "r", encoding="utf-8") as f:
32
+ content = f.read()
33
+
34
+ if "CLAUDE.md v2.3.0" in content and "@Skill:" in content:
35
+ print(f" - {droid_name}: Already current")
36
+ return True
37
+
38
+ lines = content.split("\n")
39
+
40
+ title_idx = None
41
+ for i, line in enumerate(lines):
42
+ if line.startswith("# ") or line.startswith("## "):
43
+ title_idx = i
44
+ break
45
+
46
+ if title_idx is None:
47
+ print(f" ⚠ {droid_name}: No heading found")
48
+ return False
49
+
50
+ compat_note = f"""> **Compatibility**: CLAUDE.md v2.3.0+
51
+ > **Integration**: Invoked via `Task(subagent_type: "{droid_name}", prompt: "...")` in PARALLEL REVIEW PROTOCOL
52
+ > **Skill Loading**: This droid can load domain-specific guidance via `@Skill:<skill-name>.md` when applicable
53
+ """
54
+
55
+ lines.insert(title_idx + 1, compat_note)
56
+
57
+ if "MANDATORY" not in content:
58
+ for i, line in enumerate(lines):
59
+ if line.startswith("## ") and i > title_idx + 3:
60
+ before_section = lines[:i]
61
+ after_section = lines[i:]
62
+
63
+ mandatory_check = """
64
+ ### MANDATORY Pre-Checks
65
+
66
+ Before applying this droid's guidance:
67
+
68
+ - [ ] **MANDATORY**: Worktree created (`uam worktree create <slug>`)
69
+ - [ ] Schema diff gate completed (if tests involved)
70
+ - [ ] Environment check performed
71
+ - [ ] Memory queried for relevant past failures
72
+ - [ ] Parallel review protocol followed
73
+
74
+ """
75
+ lines = before_section + [mandatory_check] + after_section
76
+ break
77
+
78
+ with open(droid_file, "w", encoding="utf-8") as f:
79
+ f.write("\n".join(lines))
80
+
81
+ print(f" ✓ {droid_name}: Updated")
82
+ return True
83
+
84
+
85
+ print("=== Updating Droids for CLAUDE.md v2.3.0 ===\n")
86
+
87
+ updated = 0
88
+ for droid in droids:
89
+ if update_droid_file(droid):
90
+ updated += 1
91
+
92
+ print(f"\n=== Summary ===")
93
+ print(f"Updated: {updated}/{len(droids)} droids")
@@ -0,0 +1,148 @@
1
+ #!/usr/bin/env python3
2
+ """Update all skills with v2.3.0 compatibility headers and protocol references."""
3
+
4
+ import os
5
+ from pathlib import Path
6
+
7
+ SKILLS_DIR = os.path.join(
8
+ os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))),
9
+ ".factory",
10
+ "skills",
11
+ )
12
+
13
+ skills_to_update = {
14
+ "chess-engine": ("Game AI", ["chess", "engine", "analysis", "game"]),
15
+ "codebase-navigator": (
16
+ "Navigation",
17
+ ["navigate", "codebase", "explore", "understand"],
18
+ ),
19
+ "compression": ("Algorithms", ["compress", "optimize", "size", "minify"]),
20
+ "git-forensics": ("Git", ["git", "history", "forensics", "recover", "blame"]),
21
+ "near-miss": ("Debugging", ["near miss", "bug", "error", "debug", "fix"]),
22
+ "polyglot": ("Localization", ["polyglot", "i18n", "l10n", "translation", "locale"]),
23
+ "service-config": ("Configuration", ["config", "configuration", "settings", "env"]),
24
+ "terminal-bench-strategies": (
25
+ "Benchmarking",
26
+ ["terminal-bench", "benchmark", "test", "evaluate"],
27
+ ),
28
+ }
29
+
30
+
31
+ def add_rtk_header(content, skill_name):
32
+ rtk_addition = f"""---
33
+ name: {skill_name}
34
+ version: "2.0.0"
35
+ compatibility: CLAUDE.md v2.3.0+
36
+ ---
37
+
38
+ > **RTK Integration**: Supports `@hooks-session-start.md`, `@PreCompact.md`
39
+
40
+ """
41
+ if content.startswith("---"):
42
+ end_frontmatter = content.find("---", 3)
43
+ if end_frontmatter > 0:
44
+ return (
45
+ content[: end_frontmatter + 3]
46
+ + rtk_addition
47
+ + content[end_frontmatter + 3 :]
48
+ )
49
+ return rtk_addition + content
50
+
51
+
52
+ def add_decision_loop_ref(content, skill_name):
53
+ decision_loop = f"""
54
+ ## Protocol Integration
55
+
56
+ ### DECISION LOOP Position
57
+
58
+ This skill applies at **step 5** of the DECISION LOOP:
59
+
60
+ ```
61
+ 1. CLASSIFY -> complexity? backup needed? tools?
62
+ 2. PROTECT -> cp file file.bak (for configs, DBs)
63
+ 3. MEMORY -> query relevant context + past failures
64
+ 4. AGENTS -> check overlaps (if multi-agent)
65
+ 5. SKILLS -> @Skill:{skill_name}.md for domain-specific guidance
66
+ 6. WORK -> implement (ALWAYS use worktree for ANY file changes)
67
+ 7. REVIEW -> self-review diff before testing
68
+ 8. TEST -> completion gates pass
69
+ 9. LEARN -> store outcome in memory
70
+ ```
71
+ """
72
+ if "# " in content:
73
+ first_heading = content.find("# ")
74
+ return content[:first_heading] + decision_loop + content[first_heading:]
75
+ return content
76
+
77
+
78
+ def add_uam_compliance(content):
79
+ uam_section = """
80
+ ## UAM Protocol Compliance
81
+
82
+ ### MANDATORY Worktree Enforcement
83
+
84
+ Before applying this skill:
85
+ - [ ] **MANDATORY**: Worktree created (`uam worktree create <slug>`)
86
+ - [ ] Schema diff gate completed (if tests involved)
87
+ - [ ] Environment check performed
88
+ - [ ] Memory queried for relevant past failures
89
+
90
+ ### Completion Gates Checklist
91
+
92
+ ```
93
+ [x] Schema diffed against test expectations
94
+ [x] Tests: X/Y (must be 100%, run 3+ times)
95
+ [x] Outputs verified: ls -la
96
+ [x] Worktree created and PR prepared
97
+ [x] MANDATORY cleanup after PR merge
98
+ ```
99
+ """
100
+ if "## Common Pitfalls" in content:
101
+ return content.replace(
102
+ "## Common Pitfalls", uam_section + "\n## Common Pitfalls"
103
+ )
104
+ if "## References" in content:
105
+ return content.replace("## References", uam_section + "\n## References")
106
+ return content + "\n\n" + uam_section
107
+
108
+
109
+ def update_skill_file(skill_dir, skill_name):
110
+ skill_file = os.path.join(skill_dir, "SKILL.md")
111
+
112
+ if not os.path.exists(skill_file):
113
+ print(f" ✗ {skill_name}: SKILL.md not found")
114
+ return False
115
+
116
+ with open(skill_file, "r", encoding="utf-8") as f:
117
+ content = f.read()
118
+
119
+ original_content = content
120
+ content = add_rtk_header(content, skill_name)
121
+ content = add_decision_loop_ref(content, skill_name)
122
+ content = add_uam_compliance(content)
123
+
124
+ if content != original_content:
125
+ with open(skill_file, "w", encoding="utf-8") as f:
126
+ f.write(content)
127
+ print(f" ✓ {skill_name}: Updated")
128
+ return True
129
+
130
+ print(f" - {skill_name}: Already updated")
131
+ return False
132
+
133
+
134
+ print("=== Updating Skills for CLAUDE.md v2.3.0 ===\n")
135
+
136
+ updated = 0
137
+ for skill_name, (category, triggers) in skills_to_update.items():
138
+ skill_dir = os.path.join(SKILLS_DIR, skill_name)
139
+
140
+ if not os.path.exists(skill_dir):
141
+ print(f" ✗ {skill_name}: Directory not found")
142
+ continue
143
+
144
+ if update_skill_file(skill_dir, skill_name):
145
+ updated += 1
146
+
147
+ print(f"\n=== Summary ===")
148
+ print(f"Updated: {updated}/{len(skills_to_update)} skills")