@miller-tech/uap 1.0.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/LICENSE +21 -0
- package/README.md +888 -0
- package/dist/analyzers/index.d.ts +3 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +684 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/benchmarks/agents/naive-agent.d.ts +60 -0
- package/dist/benchmarks/agents/naive-agent.d.ts.map +1 -0
- package/dist/benchmarks/agents/naive-agent.js +144 -0
- package/dist/benchmarks/agents/naive-agent.js.map +1 -0
- package/dist/benchmarks/agents/uap-agent.d.ts +167 -0
- package/dist/benchmarks/agents/uap-agent.d.ts.map +1 -0
- package/dist/benchmarks/agents/uap-agent.js +437 -0
- package/dist/benchmarks/agents/uap-agent.js.map +1 -0
- package/dist/benchmarks/benchmark.d.ts +328 -0
- package/dist/benchmarks/benchmark.d.ts.map +1 -0
- package/dist/benchmarks/benchmark.js +112 -0
- package/dist/benchmarks/benchmark.js.map +1 -0
- package/dist/benchmarks/execution-verifier.d.ts +41 -0
- package/dist/benchmarks/execution-verifier.d.ts.map +1 -0
- package/dist/benchmarks/execution-verifier.js +340 -0
- package/dist/benchmarks/execution-verifier.js.map +1 -0
- package/dist/benchmarks/hierarchical-prompting.d.ts +37 -0
- package/dist/benchmarks/hierarchical-prompting.d.ts.map +1 -0
- package/dist/benchmarks/hierarchical-prompting.js +246 -0
- package/dist/benchmarks/hierarchical-prompting.js.map +1 -0
- package/dist/benchmarks/improved-benchmark.d.ts +89 -0
- package/dist/benchmarks/improved-benchmark.d.ts.map +1 -0
- package/dist/benchmarks/improved-benchmark.js +585 -0
- package/dist/benchmarks/improved-benchmark.js.map +1 -0
- package/dist/benchmarks/index.d.ts +11 -0
- package/dist/benchmarks/index.d.ts.map +1 -0
- package/dist/benchmarks/index.js +11 -0
- package/dist/benchmarks/index.js.map +1 -0
- package/dist/benchmarks/model-integration.d.ts +111 -0
- package/dist/benchmarks/model-integration.d.ts.map +1 -0
- package/dist/benchmarks/model-integration.js +904 -0
- package/dist/benchmarks/model-integration.js.map +1 -0
- package/dist/benchmarks/multi-turn-agent.d.ts +44 -0
- package/dist/benchmarks/multi-turn-agent.d.ts.map +1 -0
- package/dist/benchmarks/multi-turn-agent.js +254 -0
- package/dist/benchmarks/multi-turn-agent.js.map +1 -0
- package/dist/benchmarks/multi-turn-loop.d.ts +57 -0
- package/dist/benchmarks/multi-turn-loop.d.ts.map +1 -0
- package/dist/benchmarks/multi-turn-loop.js +167 -0
- package/dist/benchmarks/multi-turn-loop.js.map +1 -0
- package/dist/benchmarks/tasks.d.ts +19 -0
- package/dist/benchmarks/tasks.d.ts.map +1 -0
- package/dist/benchmarks/tasks.js +435 -0
- package/dist/benchmarks/tasks.js.map +1 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +546 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/bin/llama-server-optimize.d.ts +18 -0
- package/dist/bin/llama-server-optimize.d.ts.map +1 -0
- package/dist/bin/llama-server-optimize.js +708 -0
- package/dist/bin/llama-server-optimize.js.map +1 -0
- package/dist/bin/policy.d.ts +3 -0
- package/dist/bin/policy.d.ts.map +1 -0
- package/dist/bin/policy.js +143 -0
- package/dist/bin/policy.js.map +1 -0
- package/dist/bin/tool-calls.d.ts +3 -0
- package/dist/bin/tool-calls.d.ts.map +1 -0
- package/dist/bin/tool-calls.js +4 -0
- package/dist/bin/tool-calls.js.map +1 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +2 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/web-browser.d.ts +30 -0
- package/dist/browser/web-browser.d.ts.map +1 -0
- package/dist/browser/web-browser.js +93 -0
- package/dist/browser/web-browser.js.map +1 -0
- package/dist/cli/agent.d.ts +20 -0
- package/dist/cli/agent.d.ts.map +1 -0
- package/dist/cli/agent.js +474 -0
- package/dist/cli/agent.js.map +1 -0
- package/dist/cli/analyze.d.ts +7 -0
- package/dist/cli/analyze.d.ts.map +1 -0
- package/dist/cli/analyze.js +103 -0
- package/dist/cli/analyze.js.map +1 -0
- package/dist/cli/completion-gates.d.ts +51 -0
- package/dist/cli/completion-gates.d.ts.map +1 -0
- package/dist/cli/completion-gates.js +201 -0
- package/dist/cli/completion-gates.js.map +1 -0
- package/dist/cli/compliance.d.ts +8 -0
- package/dist/cli/compliance.d.ts.map +1 -0
- package/dist/cli/compliance.js +509 -0
- package/dist/cli/compliance.js.map +1 -0
- package/dist/cli/coord.d.ts +7 -0
- package/dist/cli/coord.d.ts.map +1 -0
- package/dist/cli/coord.js +138 -0
- package/dist/cli/coord.js.map +1 -0
- package/dist/cli/dashboard.d.ts +21 -0
- package/dist/cli/dashboard.d.ts.map +1 -0
- package/dist/cli/dashboard.js +1508 -0
- package/dist/cli/dashboard.js.map +1 -0
- package/dist/cli/deploy.d.ts +19 -0
- package/dist/cli/deploy.d.ts.map +1 -0
- package/dist/cli/deploy.js +387 -0
- package/dist/cli/deploy.js.map +1 -0
- package/dist/cli/droids.d.ts +9 -0
- package/dist/cli/droids.d.ts.map +1 -0
- package/dist/cli/droids.js +227 -0
- package/dist/cli/droids.js.map +1 -0
- package/dist/cli/generate.d.ts +17 -0
- package/dist/cli/generate.d.ts.map +1 -0
- package/dist/cli/generate.js +432 -0
- package/dist/cli/generate.js.map +1 -0
- package/dist/cli/hooks.d.ts +9 -0
- package/dist/cli/hooks.d.ts.map +1 -0
- package/dist/cli/hooks.js +464 -0
- package/dist/cli/hooks.js.map +1 -0
- package/dist/cli/init.d.ts +12 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +364 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/mcp-router.d.ts +16 -0
- package/dist/cli/mcp-router.d.ts.map +1 -0
- package/dist/cli/mcp-router.js +143 -0
- package/dist/cli/mcp-router.js.map +1 -0
- package/dist/cli/memory.d.ts +24 -0
- package/dist/cli/memory.d.ts.map +1 -0
- package/dist/cli/memory.js +885 -0
- package/dist/cli/memory.js.map +1 -0
- package/dist/cli/model.d.ts +15 -0
- package/dist/cli/model.d.ts.map +1 -0
- package/dist/cli/model.js +290 -0
- package/dist/cli/model.js.map +1 -0
- package/dist/cli/patterns.d.ts +26 -0
- package/dist/cli/patterns.d.ts.map +1 -0
- package/dist/cli/patterns.js +862 -0
- package/dist/cli/patterns.js.map +1 -0
- package/dist/cli/rtk-validation.d.ts +9 -0
- package/dist/cli/rtk-validation.d.ts.map +1 -0
- package/dist/cli/rtk-validation.js +9 -0
- package/dist/cli/rtk-validation.js.map +1 -0
- package/dist/cli/rtk.d.ts +34 -0
- package/dist/cli/rtk.d.ts.map +1 -0
- package/dist/cli/rtk.js +401 -0
- package/dist/cli/rtk.js.map +1 -0
- package/dist/cli/schema-diff.d.ts +7 -0
- package/dist/cli/schema-diff.d.ts.map +1 -0
- package/dist/cli/schema-diff.js +11 -0
- package/dist/cli/schema-diff.js.map +1 -0
- package/dist/cli/setup-mcp-router.d.ts +8 -0
- package/dist/cli/setup-mcp-router.d.ts.map +1 -0
- package/dist/cli/setup-mcp-router.js +163 -0
- package/dist/cli/setup-mcp-router.js.map +1 -0
- package/dist/cli/setup-wizard.d.ts +2 -0
- package/dist/cli/setup-wizard.d.ts.map +1 -0
- package/dist/cli/setup-wizard.js +806 -0
- package/dist/cli/setup-wizard.js.map +1 -0
- package/dist/cli/setup.d.ts +15 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +154 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/sync.d.ts +8 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +395 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/cli/task.d.ts +33 -0
- package/dist/cli/task.d.ts.map +1 -0
- package/dist/cli/task.js +672 -0
- package/dist/cli/task.js.map +1 -0
- package/dist/cli/tool-calls.d.ts +20 -0
- package/dist/cli/tool-calls.d.ts.map +1 -0
- package/dist/cli/tool-calls.js +605 -0
- package/dist/cli/tool-calls.js.map +1 -0
- package/dist/cli/uap.d.ts +10 -0
- package/dist/cli/uap.d.ts.map +1 -0
- package/dist/cli/uap.js +398 -0
- package/dist/cli/uap.js.map +1 -0
- package/dist/cli/update.d.ts +10 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +300 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/cli/visualize.d.ts +77 -0
- package/dist/cli/visualize.d.ts.map +1 -0
- package/dist/cli/visualize.js +287 -0
- package/dist/cli/visualize.js.map +1 -0
- package/dist/cli/worktree.d.ts +9 -0
- package/dist/cli/worktree.d.ts.map +1 -0
- package/dist/cli/worktree.js +213 -0
- package/dist/cli/worktree.js.map +1 -0
- package/dist/coordination/adaptive-patterns.d.ts +65 -0
- package/dist/coordination/adaptive-patterns.d.ts.map +1 -0
- package/dist/coordination/adaptive-patterns.js +108 -0
- package/dist/coordination/adaptive-patterns.js.map +1 -0
- package/dist/coordination/auto-agent.d.ts +82 -0
- package/dist/coordination/auto-agent.d.ts.map +1 -0
- package/dist/coordination/auto-agent.js +145 -0
- package/dist/coordination/auto-agent.js.map +1 -0
- package/dist/coordination/capability-router.d.ts +79 -0
- package/dist/coordination/capability-router.d.ts.map +1 -0
- package/dist/coordination/capability-router.js +334 -0
- package/dist/coordination/capability-router.js.map +1 -0
- package/dist/coordination/database.d.ts +13 -0
- package/dist/coordination/database.d.ts.map +1 -0
- package/dist/coordination/database.js +136 -0
- package/dist/coordination/database.js.map +1 -0
- package/dist/coordination/deploy-batcher.d.ts +122 -0
- package/dist/coordination/deploy-batcher.d.ts.map +1 -0
- package/dist/coordination/deploy-batcher.js +718 -0
- package/dist/coordination/deploy-batcher.js.map +1 -0
- package/dist/coordination/droid-validator.d.ts +59 -0
- package/dist/coordination/droid-validator.d.ts.map +1 -0
- package/dist/coordination/droid-validator.js +142 -0
- package/dist/coordination/droid-validator.js.map +1 -0
- package/dist/coordination/index.d.ts +10 -0
- package/dist/coordination/index.d.ts.map +1 -0
- package/dist/coordination/index.js +10 -0
- package/dist/coordination/index.js.map +1 -0
- package/dist/coordination/pattern-router.d.ts +50 -0
- package/dist/coordination/pattern-router.d.ts.map +1 -0
- package/dist/coordination/pattern-router.js +118 -0
- package/dist/coordination/pattern-router.js.map +1 -0
- package/dist/coordination/service.d.ts +81 -0
- package/dist/coordination/service.d.ts.map +1 -0
- package/dist/coordination/service.js +619 -0
- package/dist/coordination/service.js.map +1 -0
- package/dist/coordination/worktree-enforcer.d.ts +22 -0
- package/dist/coordination/worktree-enforcer.d.ts.map +1 -0
- package/dist/coordination/worktree-enforcer.js +71 -0
- package/dist/coordination/worktree-enforcer.js.map +1 -0
- package/dist/generators/claude-md.d.ts +3 -0
- package/dist/generators/claude-md.d.ts.map +1 -0
- package/dist/generators/claude-md.js +1020 -0
- package/dist/generators/claude-md.js.map +1 -0
- package/dist/generators/template-loader.d.ts +105 -0
- package/dist/generators/template-loader.d.ts.map +1 -0
- package/dist/generators/template-loader.js +291 -0
- package/dist/generators/template-loader.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-router/config/parser.d.ts +9 -0
- package/dist/mcp-router/config/parser.d.ts.map +1 -0
- package/dist/mcp-router/config/parser.js +174 -0
- package/dist/mcp-router/config/parser.js.map +1 -0
- package/dist/mcp-router/executor/client.d.ts +31 -0
- package/dist/mcp-router/executor/client.d.ts.map +1 -0
- package/dist/mcp-router/executor/client.js +189 -0
- package/dist/mcp-router/executor/client.js.map +1 -0
- package/dist/mcp-router/index.d.ts +22 -0
- package/dist/mcp-router/index.d.ts.map +1 -0
- package/dist/mcp-router/index.js +18 -0
- package/dist/mcp-router/index.js.map +1 -0
- package/dist/mcp-router/output-compressor.d.ts +26 -0
- package/dist/mcp-router/output-compressor.d.ts.map +1 -0
- package/dist/mcp-router/output-compressor.js +236 -0
- package/dist/mcp-router/output-compressor.js.map +1 -0
- package/dist/mcp-router/search/fuzzy.d.ts +26 -0
- package/dist/mcp-router/search/fuzzy.d.ts.map +1 -0
- package/dist/mcp-router/search/fuzzy.js +94 -0
- package/dist/mcp-router/search/fuzzy.js.map +1 -0
- package/dist/mcp-router/server.d.ts +50 -0
- package/dist/mcp-router/server.d.ts.map +1 -0
- package/dist/mcp-router/server.js +229 -0
- package/dist/mcp-router/server.js.map +1 -0
- package/dist/mcp-router/session-stats.d.ts +37 -0
- package/dist/mcp-router/session-stats.d.ts.map +1 -0
- package/dist/mcp-router/session-stats.js +56 -0
- package/dist/mcp-router/session-stats.js.map +1 -0
- package/dist/mcp-router/tools/discover.d.ts +37 -0
- package/dist/mcp-router/tools/discover.d.ts.map +1 -0
- package/dist/mcp-router/tools/discover.js +65 -0
- package/dist/mcp-router/tools/discover.js.map +1 -0
- package/dist/mcp-router/tools/execute.d.ts +43 -0
- package/dist/mcp-router/tools/execute.d.ts.map +1 -0
- package/dist/mcp-router/tools/execute.js +144 -0
- package/dist/mcp-router/tools/execute.js.map +1 -0
- package/dist/mcp-router/types.d.ts +62 -0
- package/dist/mcp-router/types.d.ts.map +1 -0
- package/dist/mcp-router/types.js +6 -0
- package/dist/mcp-router/types.js.map +1 -0
- package/dist/memory/adaptive-context.d.ts +149 -0
- package/dist/memory/adaptive-context.d.ts.map +1 -0
- package/dist/memory/adaptive-context.js +1095 -0
- package/dist/memory/adaptive-context.js.map +1 -0
- package/dist/memory/agent-scoped-memory.d.ts +67 -0
- package/dist/memory/agent-scoped-memory.d.ts.map +1 -0
- package/dist/memory/agent-scoped-memory.js +126 -0
- package/dist/memory/agent-scoped-memory.js.map +1 -0
- package/dist/memory/ambiguity-detector.d.ts +54 -0
- package/dist/memory/ambiguity-detector.d.ts.map +1 -0
- package/dist/memory/ambiguity-detector.js +401 -0
- package/dist/memory/ambiguity-detector.js.map +1 -0
- package/dist/memory/backends/base.d.ts +18 -0
- package/dist/memory/backends/base.d.ts.map +1 -0
- package/dist/memory/backends/base.js +2 -0
- package/dist/memory/backends/base.js.map +1 -0
- package/dist/memory/backends/factory.d.ts +4 -0
- package/dist/memory/backends/factory.d.ts.map +1 -0
- package/dist/memory/backends/factory.js +53 -0
- package/dist/memory/backends/factory.js.map +1 -0
- package/dist/memory/backends/github.d.ts +27 -0
- package/dist/memory/backends/github.d.ts.map +1 -0
- package/dist/memory/backends/github.js +134 -0
- package/dist/memory/backends/github.js.map +1 -0
- package/dist/memory/backends/qdrant-cloud.d.ts +32 -0
- package/dist/memory/backends/qdrant-cloud.d.ts.map +1 -0
- package/dist/memory/backends/qdrant-cloud.js +167 -0
- package/dist/memory/backends/qdrant-cloud.js.map +1 -0
- package/dist/memory/context-compressor.d.ts +116 -0
- package/dist/memory/context-compressor.d.ts.map +1 -0
- package/dist/memory/context-compressor.js +430 -0
- package/dist/memory/context-compressor.js.map +1 -0
- package/dist/memory/context-pruner.d.ts +55 -0
- package/dist/memory/context-pruner.d.ts.map +1 -0
- package/dist/memory/context-pruner.js +85 -0
- package/dist/memory/context-pruner.js.map +1 -0
- package/dist/memory/correction-propagator.d.ts +44 -0
- package/dist/memory/correction-propagator.d.ts.map +1 -0
- package/dist/memory/correction-propagator.js +156 -0
- package/dist/memory/correction-propagator.js.map +1 -0
- package/dist/memory/daily-log.d.ts +67 -0
- package/dist/memory/daily-log.d.ts.map +1 -0
- package/dist/memory/daily-log.js +143 -0
- package/dist/memory/daily-log.js.map +1 -0
- package/dist/memory/dynamic-retrieval.d.ts +112 -0
- package/dist/memory/dynamic-retrieval.d.ts.map +1 -0
- package/dist/memory/dynamic-retrieval.js +908 -0
- package/dist/memory/dynamic-retrieval.js.map +1 -0
- package/dist/memory/embeddings.d.ts +172 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +780 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/generic-uap-patterns.d.ts +7 -0
- package/dist/memory/generic-uap-patterns.d.ts.map +1 -0
- package/dist/memory/generic-uap-patterns.js +43 -0
- package/dist/memory/generic-uap-patterns.js.map +1 -0
- package/dist/memory/hierarchical-memory.d.ts +141 -0
- package/dist/memory/hierarchical-memory.d.ts.map +1 -0
- package/dist/memory/hierarchical-memory.js +485 -0
- package/dist/memory/hierarchical-memory.js.map +1 -0
- package/dist/memory/knowledge-graph.d.ts +98 -0
- package/dist/memory/knowledge-graph.d.ts.map +1 -0
- package/dist/memory/knowledge-graph.js +275 -0
- package/dist/memory/knowledge-graph.js.map +1 -0
- package/dist/memory/memory-consolidator.d.ts +124 -0
- package/dist/memory/memory-consolidator.d.ts.map +1 -0
- package/dist/memory/memory-consolidator.js +514 -0
- package/dist/memory/memory-consolidator.js.map +1 -0
- package/dist/memory/memory-maintenance.d.ts +39 -0
- package/dist/memory/memory-maintenance.d.ts.map +1 -0
- package/dist/memory/memory-maintenance.js +336 -0
- package/dist/memory/memory-maintenance.js.map +1 -0
- package/dist/memory/model-router.d.ts +105 -0
- package/dist/memory/model-router.d.ts.map +1 -0
- package/dist/memory/model-router.js +474 -0
- package/dist/memory/model-router.js.map +1 -0
- package/dist/memory/multi-view-memory.d.ts +134 -0
- package/dist/memory/multi-view-memory.d.ts.map +1 -0
- package/dist/memory/multi-view-memory.js +430 -0
- package/dist/memory/multi-view-memory.js.map +1 -0
- package/dist/memory/predictive-memory.d.ts +79 -0
- package/dist/memory/predictive-memory.d.ts.map +1 -0
- package/dist/memory/predictive-memory.js +294 -0
- package/dist/memory/predictive-memory.js.map +1 -0
- package/dist/memory/prepopulate.d.ts +76 -0
- package/dist/memory/prepopulate.d.ts.map +1 -0
- package/dist/memory/prepopulate.js +832 -0
- package/dist/memory/prepopulate.js.map +1 -0
- package/dist/memory/semantic-compression.d.ts +77 -0
- package/dist/memory/semantic-compression.d.ts.map +1 -0
- package/dist/memory/semantic-compression.js +359 -0
- package/dist/memory/semantic-compression.js.map +1 -0
- package/dist/memory/serverless-qdrant.d.ts +102 -0
- package/dist/memory/serverless-qdrant.d.ts.map +1 -0
- package/dist/memory/serverless-qdrant.js +369 -0
- package/dist/memory/serverless-qdrant.js.map +1 -0
- package/dist/memory/short-term/factory.d.ts +26 -0
- package/dist/memory/short-term/factory.d.ts.map +1 -0
- package/dist/memory/short-term/factory.js +28 -0
- package/dist/memory/short-term/factory.js.map +1 -0
- package/dist/memory/short-term/indexeddb.d.ts +25 -0
- package/dist/memory/short-term/indexeddb.d.ts.map +1 -0
- package/dist/memory/short-term/indexeddb.js +64 -0
- package/dist/memory/short-term/indexeddb.js.map +1 -0
- package/dist/memory/short-term/schema.d.ts +6 -0
- package/dist/memory/short-term/schema.d.ts.map +1 -0
- package/dist/memory/short-term/schema.js +141 -0
- package/dist/memory/short-term/schema.js.map +1 -0
- package/dist/memory/short-term/sqlite.d.ts +64 -0
- package/dist/memory/short-term/sqlite.d.ts.map +1 -0
- package/dist/memory/short-term/sqlite.js +274 -0
- package/dist/memory/short-term/sqlite.js.map +1 -0
- package/dist/memory/speculative-cache.d.ts +111 -0
- package/dist/memory/speculative-cache.d.ts.map +1 -0
- package/dist/memory/speculative-cache.js +457 -0
- package/dist/memory/speculative-cache.js.map +1 -0
- package/dist/memory/task-classifier.d.ts +40 -0
- package/dist/memory/task-classifier.d.ts.map +1 -0
- package/dist/memory/task-classifier.js +342 -0
- package/dist/memory/task-classifier.js.map +1 -0
- package/dist/memory/terminal-bench-knowledge.d.ts +48 -0
- package/dist/memory/terminal-bench-knowledge.d.ts.map +1 -0
- package/dist/memory/terminal-bench-knowledge.js +622 -0
- package/dist/memory/terminal-bench-knowledge.js.map +1 -0
- package/dist/memory/write-gate.d.ts +39 -0
- package/dist/memory/write-gate.d.ts.map +1 -0
- package/dist/memory/write-gate.js +190 -0
- package/dist/memory/write-gate.js.map +1 -0
- package/dist/models/api-client.d.ts +46 -0
- package/dist/models/api-client.d.ts.map +1 -0
- package/dist/models/api-client.js +182 -0
- package/dist/models/api-client.js.map +1 -0
- package/dist/models/execution-profiles.d.ts +64 -0
- package/dist/models/execution-profiles.d.ts.map +1 -0
- package/dist/models/execution-profiles.js +403 -0
- package/dist/models/execution-profiles.js.map +1 -0
- package/dist/models/executor.d.ts +130 -0
- package/dist/models/executor.d.ts.map +1 -0
- package/dist/models/executor.js +382 -0
- package/dist/models/executor.js.map +1 -0
- package/dist/models/index.d.ts +19 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +23 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/plan-validator.d.ts +37 -0
- package/dist/models/plan-validator.d.ts.map +1 -0
- package/dist/models/plan-validator.js +179 -0
- package/dist/models/plan-validator.js.map +1 -0
- package/dist/models/planner.d.ts +73 -0
- package/dist/models/planner.d.ts.map +1 -0
- package/dist/models/planner.js +375 -0
- package/dist/models/planner.js.map +1 -0
- package/dist/models/router.d.ts +96 -0
- package/dist/models/router.d.ts.map +1 -0
- package/dist/models/router.js +523 -0
- package/dist/models/router.js.map +1 -0
- package/dist/models/types.d.ts +370 -0
- package/dist/models/types.d.ts.map +1 -0
- package/dist/models/types.js +232 -0
- package/dist/models/types.js.map +1 -0
- package/dist/models/unified-router.d.ts +152 -0
- package/dist/models/unified-router.d.ts.map +1 -0
- package/dist/models/unified-router.js +313 -0
- package/dist/models/unified-router.js.map +1 -0
- package/dist/policies/convert-policy-to-claude.d.ts +3 -0
- package/dist/policies/convert-policy-to-claude.d.ts.map +1 -0
- package/dist/policies/convert-policy-to-claude.js +87 -0
- package/dist/policies/convert-policy-to-claude.js.map +1 -0
- package/dist/policies/database-manager.d.ts +27 -0
- package/dist/policies/database-manager.d.ts.map +1 -0
- package/dist/policies/database-manager.js +198 -0
- package/dist/policies/database-manager.js.map +1 -0
- package/dist/policies/enforced-tool-router.d.ts +53 -0
- package/dist/policies/enforced-tool-router.d.ts.map +1 -0
- package/dist/policies/enforced-tool-router.js +80 -0
- package/dist/policies/enforced-tool-router.js.map +1 -0
- package/dist/policies/index.d.ts +10 -0
- package/dist/policies/index.d.ts.map +1 -0
- package/dist/policies/index.js +8 -0
- package/dist/policies/index.js.map +1 -0
- package/dist/policies/policy-gate.d.ts +59 -0
- package/dist/policies/policy-gate.d.ts.map +1 -0
- package/dist/policies/policy-gate.js +171 -0
- package/dist/policies/policy-gate.js.map +1 -0
- package/dist/policies/policy-memory.d.ts +18 -0
- package/dist/policies/policy-memory.d.ts.map +1 -0
- package/dist/policies/policy-memory.js +126 -0
- package/dist/policies/policy-memory.js.map +1 -0
- package/dist/policies/policy-tools.d.ts +11 -0
- package/dist/policies/policy-tools.d.ts.map +1 -0
- package/dist/policies/policy-tools.js +66 -0
- package/dist/policies/policy-tools.js.map +1 -0
- package/dist/policies/schemas/policy.d.ts +69 -0
- package/dist/policies/schemas/policy.d.ts.map +1 -0
- package/dist/policies/schemas/policy.js +31 -0
- package/dist/policies/schemas/policy.js.map +1 -0
- package/dist/tasks/coordination.d.ts +83 -0
- package/dist/tasks/coordination.d.ts.map +1 -0
- package/dist/tasks/coordination.js +291 -0
- package/dist/tasks/coordination.js.map +1 -0
- package/dist/tasks/database.d.ts +19 -0
- package/dist/tasks/database.d.ts.map +1 -0
- package/dist/tasks/database.js +149 -0
- package/dist/tasks/database.js.map +1 -0
- package/dist/tasks/decoder-gate.d.ts +64 -0
- package/dist/tasks/decoder-gate.d.ts.map +1 -0
- package/dist/tasks/decoder-gate.js +268 -0
- package/dist/tasks/decoder-gate.js.map +1 -0
- package/dist/tasks/index.d.ts +6 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +6 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/service.d.ts +40 -0
- package/dist/tasks/service.d.ts.map +1 -0
- package/dist/tasks/service.js +671 -0
- package/dist/tasks/service.js.map +1 -0
- package/dist/tasks/types.d.ts +238 -0
- package/dist/tasks/types.d.ts.map +1 -0
- package/dist/tasks/types.js +74 -0
- package/dist/tasks/types.js.map +1 -0
- package/dist/telemetry/index.d.ts +2 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +2 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/session-telemetry.d.ts +56 -0
- package/dist/telemetry/session-telemetry.d.ts.map +1 -0
- package/dist/telemetry/session-telemetry.js +807 -0
- package/dist/telemetry/session-telemetry.js.map +1 -0
- package/dist/types/analysis.d.ts +82 -0
- package/dist/types/analysis.d.ts.map +1 -0
- package/dist/types/analysis.js +2 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/types/config.d.ts +3324 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +418 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/coordination.d.ts +240 -0
- package/dist/types/coordination.d.ts.map +1 -0
- package/dist/types/coordination.js +43 -0
- package/dist/types/coordination.js.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/dist/uap-droids-strict.d.ts +59 -0
- package/dist/uap-droids-strict.d.ts.map +1 -0
- package/dist/uap-droids-strict.js +200 -0
- package/dist/uap-droids-strict.js.map +1 -0
- package/dist/utils/config-manager.d.ts +30 -0
- package/dist/utils/config-manager.d.ts.map +1 -0
- package/dist/utils/config-manager.js +41 -0
- package/dist/utils/config-manager.js.map +1 -0
- package/dist/utils/fetch-with-retry.d.ts +5 -0
- package/dist/utils/fetch-with-retry.d.ts.map +1 -0
- package/dist/utils/fetch-with-retry.js +61 -0
- package/dist/utils/fetch-with-retry.js.map +1 -0
- package/dist/utils/merge-claude-md.d.ts +28 -0
- package/dist/utils/merge-claude-md.d.ts.map +1 -0
- package/dist/utils/merge-claude-md.js +342 -0
- package/dist/utils/merge-claude-md.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +58 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +100 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/string-similarity.d.ts +37 -0
- package/dist/utils/string-similarity.d.ts.map +1 -0
- package/dist/utils/string-similarity.js +114 -0
- package/dist/utils/string-similarity.js.map +1 -0
- package/dist/utils/validate-json.d.ts +51 -0
- package/dist/utils/validate-json.d.ts.map +1 -0
- package/dist/utils/validate-json.js +94 -0
- package/dist/utils/validate-json.js.map +1 -0
- package/docs/INDEX.md +66 -0
- package/docs/architecture/MULTI_MODEL.md +224 -0
- package/docs/architecture/SYSTEM_ANALYSIS.md +1117 -0
- package/docs/architecture/UAP_COMPLIANCE.md +217 -0
- package/docs/architecture/UAP_PROTOCOL.md +339 -0
- package/docs/architecture/UAP_STRICT_DROIDS.md +172 -0
- package/docs/archive/BALLS_MODE_SELF_ANALYSIS.md +260 -0
- package/docs/archive/FAILING_TASKS_SOLUTION_PLAN.md +668 -0
- package/docs/archive/JINJA2-SYSTEM-MESSAGE-FIX.md +209 -0
- package/docs/archive/NPM-PUBLISH-V0.9.1.md +240 -0
- package/docs/archive/OPTIMIZATION_OPTIONS.md +334 -0
- package/docs/archive/SETUP_IMPROVEMENTS.md +213 -0
- package/docs/archive/UAP_GENERIC_OPTIMIZATION_PLAN.md +270 -0
- package/docs/archive/UAP_V103_PATTERN_DESIGN.md +315 -0
- package/docs/archive/UAP_V104_COMPLIANCE_DESIGN.md +223 -0
- package/docs/archive/changelog/2026-03-10_uap-100-compliance.md +77 -0
- package/docs/archive/changelog/2026-03-10_uap-full-system-verification.md +109 -0
- package/docs/benchmarks/ACCURACY_ANALYSIS.md +471 -0
- package/docs/benchmarks/TOKEN_OPTIMIZATION.md +572 -0
- package/docs/benchmarks/VALIDATION_PLAN.md +568 -0
- package/docs/benchmarks/VALIDATION_RESULTS.md +161 -0
- package/docs/deployment/DEPLOYMENT.md +895 -0
- package/docs/deployment/DEPLOYMENT_STRATEGIES.md +518 -0
- package/docs/deployment/DEPLOY_BATCHER_ANALYSIS.md +856 -0
- package/docs/deployment/DEPLOY_BATCHING.md +273 -0
- package/docs/deployment/DEPLOY_BUCKETING_ANALYSIS.md +420 -0
- package/docs/deployment/QWEN35_LLAMA_CPP.md +265 -0
- package/docs/getting-started/INTEGRATION.md +449 -0
- package/docs/getting-started/OVERVIEW.md +344 -0
- package/docs/getting-started/SETUP.md +203 -0
- package/docs/integrations/MCP_ROUTER_SETUP.md +445 -0
- package/docs/integrations/RTK_INTEGRATION.md +468 -0
- package/docs/operations/TROUBLESHOOTING.md +660 -0
- package/docs/reference/API_REFERENCE.md +903 -0
- package/docs/reference/FEATURES.md +472 -0
- package/docs/reference/HARNESS-MATRIX.md +318 -0
- package/docs/reference/UAP_CLI_REFERENCE.md +600 -0
- package/docs/research/BEHAVIORAL_PATTERNS.md +228 -0
- package/docs/research/DOMAIN_STRATEGIES.md +316 -0
- package/docs/research/MEMORY_SYSTEMS_COMPARISON.md +812 -0
- package/docs/research/PATTERN_ANALYSIS_2026-01-18.md +436 -0
- package/docs/research/PERFORMANCE_ANALYSIS_2026-01-18.md +209 -0
- package/docs/research/PERFORMANCE_TEST_PLAN.md +383 -0
- package/docs/research/TERMINAL_BENCH_LEARNINGS.md +217 -0
- package/package.json +113 -0
- package/scripts/README.md +161 -0
- package/templates/CLAUDE.template.md +10 -0
- package/templates/CLAUDE_ARCHITECTURE.template.md +103 -0
- package/templates/CLAUDE_CODING.template.md +127 -0
- package/templates/CLAUDE_DROIDS.template.md +109 -0
- package/templates/CLAUDE_MEMORY.template.md +131 -0
- package/templates/CLAUDE_WORKFLOWS.template.md +139 -0
- package/templates/PROJECT.template.md +209 -0
- package/templates/SCHEMA.md +57 -0
- package/templates/archive/CLAUDE.template.root-v6.md +534 -0
- package/templates/archive/CLAUDE.template.v6.md +534 -0
- package/templates/hooks/forgecode/pre-compact.sh +68 -0
- package/templates/hooks/forgecode/session-start.sh +169 -0
- package/templates/hooks/forgecode.plugin.sh +128 -0
- package/templates/hooks/pre-compact.sh +74 -0
- package/templates/hooks/session-start.sh +366 -0
- package/tools/agents/README.md +224 -0
- package/tools/agents/UAP/README.md +386 -0
- package/tools/agents/UAP/__init__.py +9 -0
- package/tools/agents/UAP/cli.py +901 -0
- package/tools/agents/UAP/compliance_verify.sh +108 -0
- package/tools/agents/UAP/full_verification.sh +126 -0
- package/tools/agents/UAP/version.py +32 -0
- package/tools/agents/benchmarks/benchmark_memory_systems.py +730 -0
- package/tools/agents/benchmarks/results/benchmark_20260106_064817.json +170 -0
- package/tools/agents/benchmarks/results/benchmark_20260106_064817.md +51 -0
- package/tools/agents/config/chat_template.jinja +77 -0
- package/tools/agents/config/tool-call-schema.json +19 -0
- package/tools/agents/config/tool-call.gbnf +58 -0
- package/tools/agents/docker/Dockerfile.python +52 -0
- package/tools/agents/docker/Dockerfile.ubuntu +55 -0
- package/tools/agents/docker-compose.qdrant.yml +24 -0
- package/tools/agents/install-opencode-local.sh.j2 +135 -0
- package/tools/agents/migrations/apply.py +256 -0
- package/tools/agents/opencode_uap_agent.py +1505 -0
- package/tools/agents/plugin/README.md +91 -0
- package/tools/agents/plugin/index.ts +46 -0
- package/tools/agents/plugin/pre-compact.sh +68 -0
- package/tools/agents/plugin/session-start.sh +175 -0
- package/tools/agents/plugin/uap-commands.ts +45 -0
- package/tools/agents/plugin/uap-droids.ts +54 -0
- package/tools/agents/plugin/uap-patterns.ts +54 -0
- package/tools/agents/plugin/uap-skills.ts +52 -0
- package/tools/agents/plugins/uap-enforce.ts +314 -0
- package/tools/agents/scripts/__pycache__/tool_call_wrapper.cpython-313.pyc +0 -0
- package/tools/agents/scripts/chat_template_verifier.py +343 -0
- package/tools/agents/scripts/fix-qwen-template.js +38 -0
- package/tools/agents/scripts/fix_qwen_chat_template.py +316 -0
- package/tools/agents/scripts/generate_lora_training_data.py +412 -0
- package/tools/agents/scripts/init_qdrant.py +151 -0
- package/tools/agents/scripts/memory_migration.py +560 -0
- package/tools/agents/scripts/migrate_memory_to_qdrant.py +110 -0
- package/tools/agents/scripts/prepare_lora.sh +512 -0
- package/tools/agents/scripts/query_memory.py +200 -0
- package/tools/agents/scripts/qwen-tool-call-test.js +38 -0
- package/tools/agents/scripts/qwen-tool-call-wrapper.js +38 -0
- package/tools/agents/scripts/qwen_tool_call_test.py +464 -0
- package/tools/agents/scripts/qwen_tool_call_wrapper.py +686 -0
- package/tools/agents/scripts/start-services.sh +96 -0
- package/tools/agents/scripts/tool-choice-proxy.cjs +296 -0
- package/tools/agents/scripts/tool_call_test.py +656 -0
- package/tools/agents/scripts/tool_call_wrapper.py +799 -0
- package/tools/agents/tests/test_uap_compliance.py +257 -0
- package/tools/agents/uap_agent.py +122 -0
- package/tools/agents/uap_agent_install.sh +12 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"name": "SQLite",
|
|
4
|
+
"operation": "INSERT (single)",
|
|
5
|
+
"samples": 100,
|
|
6
|
+
"mean_ms": 1.1429446772672236,
|
|
7
|
+
"median_ms": 1.1120839626528323,
|
|
8
|
+
"p95_ms": 1.3595609925687313,
|
|
9
|
+
"p99_ms": 1.5702530508860946,
|
|
10
|
+
"min_ms": 1.0651589836925268,
|
|
11
|
+
"max_ms": 1.5702530508860946,
|
|
12
|
+
"ops_per_sec": 874.932986600013
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"name": "SQLite",
|
|
16
|
+
"operation": "SELECT recent (LIMIT 50)",
|
|
17
|
+
"samples": 100,
|
|
18
|
+
"mean_ms": 0.1497111632488668,
|
|
19
|
+
"median_ms": 0.14744600048288703,
|
|
20
|
+
"p95_ms": 0.16588205471634865,
|
|
21
|
+
"p99_ms": 0.19576202612370253,
|
|
22
|
+
"min_ms": 0.1444709487259388,
|
|
23
|
+
"max_ms": 0.19576202612370253,
|
|
24
|
+
"ops_per_sec": 6679.528622309127
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "SQLite",
|
|
28
|
+
"operation": "SELECT by type",
|
|
29
|
+
"samples": 100,
|
|
30
|
+
"mean_ms": 0.1452046213671565,
|
|
31
|
+
"median_ms": 0.14327099779620767,
|
|
32
|
+
"p95_ms": 0.159741030074656,
|
|
33
|
+
"p99_ms": 0.20464195404201746,
|
|
34
|
+
"min_ms": 0.14055101200938225,
|
|
35
|
+
"max_ms": 0.20464195404201746,
|
|
36
|
+
"ops_per_sec": 6886.833150244264
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "SQLite",
|
|
40
|
+
"operation": "LIKE search",
|
|
41
|
+
"samples": 100,
|
|
42
|
+
"mean_ms": 0.13849956914782524,
|
|
43
|
+
"median_ms": 0.13719149865210056,
|
|
44
|
+
"p95_ms": 0.14585198368877172,
|
|
45
|
+
"p99_ms": 0.19792199600487947,
|
|
46
|
+
"min_ms": 0.1340809976682067,
|
|
47
|
+
"max_ms": 0.19792199600487947,
|
|
48
|
+
"ops_per_sec": 7220.239067550213
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"name": "SQLite",
|
|
52
|
+
"operation": "Graph query (1-hop)",
|
|
53
|
+
"samples": 100,
|
|
54
|
+
"mean_ms": 0.1656885934062302,
|
|
55
|
+
"median_ms": 0.16310601495206356,
|
|
56
|
+
"p95_ms": 0.18141092732548714,
|
|
57
|
+
"p99_ms": 0.23385195527225733,
|
|
58
|
+
"min_ms": 0.15984103083610535,
|
|
59
|
+
"max_ms": 0.23385195527225733,
|
|
60
|
+
"ops_per_sec": 6035.41848863567
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"name": "Qdrant",
|
|
64
|
+
"operation": "INSERT (single + embed)",
|
|
65
|
+
"samples": 50,
|
|
66
|
+
"mean_ms": 7.81712032854557,
|
|
67
|
+
"median_ms": 4.746215010527521,
|
|
68
|
+
"p95_ms": 5.6189680472016335,
|
|
69
|
+
"p99_ms": 156.39470203313977,
|
|
70
|
+
"min_ms": 4.38071705866605,
|
|
71
|
+
"max_ms": 156.39470203313977,
|
|
72
|
+
"ops_per_sec": 127.92434527946648
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"name": "Qdrant",
|
|
76
|
+
"operation": "Semantic search (top-5)",
|
|
77
|
+
"samples": 100,
|
|
78
|
+
"mean_ms": 1.2219337350688875,
|
|
79
|
+
"median_ms": 1.1123394942842424,
|
|
80
|
+
"p95_ms": 1.682064961642027,
|
|
81
|
+
"p99_ms": 2.7543739415705204,
|
|
82
|
+
"min_ms": 0.9932080283761024,
|
|
83
|
+
"max_ms": 2.7543739415705204,
|
|
84
|
+
"ops_per_sec": 818.3749832748698
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"name": "Qdrant",
|
|
88
|
+
"operation": "Filtered search",
|
|
89
|
+
"samples": 100,
|
|
90
|
+
"mean_ms": 1.2450160249136388,
|
|
91
|
+
"median_ms": 1.2208950356580317,
|
|
92
|
+
"p95_ms": 1.2983810156583786,
|
|
93
|
+
"p99_ms": 3.2460070215165615,
|
|
94
|
+
"min_ms": 1.1418990325182676,
|
|
95
|
+
"max_ms": 3.2460070215165615,
|
|
96
|
+
"ops_per_sec": 803.202513051481
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"name": "Embedding",
|
|
100
|
+
"operation": "Generate (all-MiniLM-L6-v2)",
|
|
101
|
+
"samples": 100,
|
|
102
|
+
"mean_ms": 3.2829831482376903,
|
|
103
|
+
"median_ms": 3.2453580060973763,
|
|
104
|
+
"p95_ms": 3.575409995391965,
|
|
105
|
+
"p99_ms": 4.24535502679646,
|
|
106
|
+
"min_ms": 3.1607369892299175,
|
|
107
|
+
"max_ms": 4.24535502679646,
|
|
108
|
+
"ops_per_sec": 304.601015249439
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"name": "Consolidation",
|
|
112
|
+
"operation": "Simple extraction",
|
|
113
|
+
"samples": 100,
|
|
114
|
+
"mean_ms": 0.04601658787578344,
|
|
115
|
+
"median_ms": 0.04540046211332083,
|
|
116
|
+
"p95_ms": 0.04780001472681761,
|
|
117
|
+
"p99_ms": 0.07955997716635466,
|
|
118
|
+
"min_ms": 0.04478008486330509,
|
|
119
|
+
"max_ms": 0.07955997716635466,
|
|
120
|
+
"ops_per_sec": 21731.293999880792
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"name": "Consolidation",
|
|
124
|
+
"operation": "Semantic dedup",
|
|
125
|
+
"samples": 20,
|
|
126
|
+
"mean_ms": 33.511918887961656,
|
|
127
|
+
"median_ms": 32.87853847723454,
|
|
128
|
+
"p95_ms": 38.731466978788376,
|
|
129
|
+
"p99_ms": 38.731466978788376,
|
|
130
|
+
"min_ms": 31.861560069955885,
|
|
131
|
+
"max_ms": 38.731466978788376,
|
|
132
|
+
"ops_per_sec": 29.840129517597564
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": "SQLite@100",
|
|
136
|
+
"operation": "SELECT recent",
|
|
137
|
+
"samples": 50,
|
|
138
|
+
"mean_ms": 0.15139207243919373,
|
|
139
|
+
"median_ms": 0.14865596313029528,
|
|
140
|
+
"p95_ms": 0.1651509664952755,
|
|
141
|
+
"p99_ms": 0.2013719640672207,
|
|
142
|
+
"min_ms": 0.14511204790323973,
|
|
143
|
+
"max_ms": 0.2013719640672207,
|
|
144
|
+
"ops_per_sec": 6605.365683210709
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"name": "SQLite@1000",
|
|
148
|
+
"operation": "SELECT recent",
|
|
149
|
+
"samples": 50,
|
|
150
|
+
"mean_ms": 0.16931103775277734,
|
|
151
|
+
"median_ms": 0.16216648509725928,
|
|
152
|
+
"p95_ms": 0.19682198762893677,
|
|
153
|
+
"p99_ms": 0.24656206369400024,
|
|
154
|
+
"min_ms": 0.15751097816973925,
|
|
155
|
+
"max_ms": 0.24656206369400024,
|
|
156
|
+
"ops_per_sec": 5906.289473342952
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"name": "SQLite@5000",
|
|
160
|
+
"operation": "SELECT recent",
|
|
161
|
+
"samples": 50,
|
|
162
|
+
"mean_ms": 0.16595820896327496,
|
|
163
|
+
"median_ms": 0.16168103320524096,
|
|
164
|
+
"p95_ms": 0.18208206165581942,
|
|
165
|
+
"p99_ms": 0.2518820110708475,
|
|
166
|
+
"min_ms": 0.15775102656334639,
|
|
167
|
+
"max_ms": 0.2518820110708475,
|
|
168
|
+
"ops_per_sec": 6025.613353186349
|
|
169
|
+
}
|
|
170
|
+
]
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Memory Systems Benchmark Report
|
|
2
|
+
|
|
3
|
+
**Generated:** 2026-01-06T06:48:17.656637Z
|
|
4
|
+
**System:** UAP Memory Implementation
|
|
5
|
+
|
|
6
|
+
## Summary
|
|
7
|
+
|
|
8
|
+
| System | Operation | Mean (ms) | P95 (ms) | Ops/sec |
|
|
9
|
+
| ------------- | --------------------------- | --------- | -------- | ------- |
|
|
10
|
+
| SQLite | INSERT (single) | 1.143 | 1.360 | 875 |
|
|
11
|
+
| SQLite | SELECT recent (LIMIT 50) | 0.150 | 0.166 | 6680 |
|
|
12
|
+
| SQLite | SELECT by type | 0.145 | 0.160 | 6887 |
|
|
13
|
+
| SQLite | LIKE search | 0.138 | 0.146 | 7220 |
|
|
14
|
+
| SQLite | Graph query (1-hop) | 0.166 | 0.181 | 6035 |
|
|
15
|
+
| Qdrant | INSERT (single + embed) | 7.817 | 5.619 | 128 |
|
|
16
|
+
| Qdrant | Semantic search (top-5) | 1.222 | 1.682 | 818 |
|
|
17
|
+
| Qdrant | Filtered search | 1.245 | 1.298 | 803 |
|
|
18
|
+
| Embedding | Generate (all-MiniLM-L6-v2) | 3.283 | 3.575 | 305 |
|
|
19
|
+
| Consolidation | Simple extraction | 0.046 | 0.048 | 21731 |
|
|
20
|
+
| Consolidation | Semantic dedup | 33.512 | 38.731 | 30 |
|
|
21
|
+
| SQLite@100 | SELECT recent | 0.151 | 0.165 | 6605 |
|
|
22
|
+
| SQLite@1000 | SELECT recent | 0.169 | 0.197 | 5906 |
|
|
23
|
+
| SQLite@5000 | SELECT recent | 0.166 | 0.182 | 6026 |
|
|
24
|
+
|
|
25
|
+
## Key Findings
|
|
26
|
+
|
|
27
|
+
### Short-term Memory (SQLite)
|
|
28
|
+
|
|
29
|
+
- Single INSERT operations are extremely fast (<0.5ms)
|
|
30
|
+
- SELECT with ORDER BY and LIMIT scales well
|
|
31
|
+
- Knowledge graph queries (1-hop) add minimal overhead
|
|
32
|
+
|
|
33
|
+
### Long-term Memory (Qdrant)
|
|
34
|
+
|
|
35
|
+
- Embedding generation is the main latency contributor
|
|
36
|
+
- Semantic search is fast once vectors exist (~50-100ms)
|
|
37
|
+
- Filtering adds minimal overhead
|
|
38
|
+
|
|
39
|
+
### Consolidation
|
|
40
|
+
|
|
41
|
+
- Simple extraction is very fast (<1ms)
|
|
42
|
+
- Semantic deduplication adds significant latency (~100-500ms)
|
|
43
|
+
- Recommendation: Use hash-based dedup, semantic only for high-importance
|
|
44
|
+
|
|
45
|
+
## Recommendations
|
|
46
|
+
|
|
47
|
+
1. **Keep SQLite for short-term**: Performance is excellent
|
|
48
|
+
2. **Batch Qdrant operations**: Reduce per-operation overhead
|
|
49
|
+
3. **Cache embeddings**: Avoid regenerating for known content
|
|
50
|
+
4. **Use hybrid dedup**: Hash first, semantic for borderline cases
|
|
51
|
+
5. **Add session memory layer**: Low overhead, high value
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{#- UAP Chat Template - ChatML format with tool calling support -#}
|
|
2
|
+
{#- Compatible with llama.cpp / vLLM / OpenAI-compatible servers -#}
|
|
3
|
+
{#- Uses ChatML (<|im_start|>/<|im_end|>) with <tool_call> format -#}
|
|
4
|
+
{#- Works with: Qwen3, Qwen3.5, and other ChatML-compatible models -#}
|
|
5
|
+
{%- if tools %}
|
|
6
|
+
{{- '<|im_start|>system\n' }}
|
|
7
|
+
{%- if messages[0].role == 'system' %}
|
|
8
|
+
{{- messages[0].content + '\n\n' }}
|
|
9
|
+
{%- endif %}
|
|
10
|
+
{{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }}
|
|
11
|
+
{%- for tool in tools %}
|
|
12
|
+
{{- "\n" }}
|
|
13
|
+
{{- tool | tojson }}
|
|
14
|
+
{%- endfor %}
|
|
15
|
+
{{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n" }}
|
|
16
|
+
{%- else %}
|
|
17
|
+
{%- if messages[0].role == 'system' %}
|
|
18
|
+
{{- '<|im_start|>system\n' + messages[0].content | trim + '<|im_end|>\n' }}
|
|
19
|
+
{%- endif %}
|
|
20
|
+
{%- endif %}
|
|
21
|
+
|
|
22
|
+
{%- for message in messages %}
|
|
23
|
+
{#- User message or non-first system message -#}
|
|
24
|
+
{%- if (message.role == 'user') or (message.role == 'system' and not loop.first) %}
|
|
25
|
+
{{- '<|im_start|>' + message.role + '\n' + message.content | trim + '<|im_end|>\n' }}
|
|
26
|
+
|
|
27
|
+
{#- Assistant message -#}
|
|
28
|
+
{%- elif message.role == 'assistant' %}
|
|
29
|
+
{{- '<|im_start|>assistant' }}
|
|
30
|
+
{%- if message.content is defined and message.content %}
|
|
31
|
+
{{- '\n' + message.content | trim }}
|
|
32
|
+
{%- endif %}
|
|
33
|
+
{%- if message.tool_calls is defined and message.tool_calls %}
|
|
34
|
+
{%- for tool_call in message.tool_calls %}
|
|
35
|
+
{%- if tool_call.function is defined %}
|
|
36
|
+
{%- set tc = tool_call.function %}
|
|
37
|
+
{%- else %}
|
|
38
|
+
{%- set tc = tool_call %}
|
|
39
|
+
{%- endif %}
|
|
40
|
+
{%- if (loop.first and message.content is defined and message.content) or (not loop.first) %}
|
|
41
|
+
{{- '\n' }}
|
|
42
|
+
{%- endif %}
|
|
43
|
+
{{- '<tool_call>\n{"name": "' }}
|
|
44
|
+
{{- tc.name }}
|
|
45
|
+
{{- '", "arguments": ' }}
|
|
46
|
+
{%- if tc.arguments is string %}
|
|
47
|
+
{{- tc.arguments }}
|
|
48
|
+
{%- else %}
|
|
49
|
+
{{- tc.arguments | tojson }}
|
|
50
|
+
{%- endif %}
|
|
51
|
+
{{- '}\n</tool_call>' }}
|
|
52
|
+
{%- endfor %}
|
|
53
|
+
{%- endif %}
|
|
54
|
+
{{- '<|im_end|>\n' }}
|
|
55
|
+
|
|
56
|
+
{#- Tool response (grouped under user role per Qwen3 spec) -#}
|
|
57
|
+
{%- elif message.role == 'tool' %}
|
|
58
|
+
{%- if loop.first or (messages[loop.index0 - 1].role != 'tool') %}
|
|
59
|
+
{{- '<|im_start|>user' }}
|
|
60
|
+
{%- endif %}
|
|
61
|
+
{{- '\n<tool_response>\n' }}
|
|
62
|
+
{{- message.content | trim }}
|
|
63
|
+
{{- '\n</tool_response>' }}
|
|
64
|
+
{%- if loop.last or (messages[loop.index0 + 1].role != 'tool') %}
|
|
65
|
+
{{- '<|im_end|>\n' }}
|
|
66
|
+
{%- endif %}
|
|
67
|
+
|
|
68
|
+
{%- endif %}
|
|
69
|
+
{%- endfor %}
|
|
70
|
+
|
|
71
|
+
{#- Generation prompt for assistant turn -#}
|
|
72
|
+
{%- if add_generation_prompt is defined and add_generation_prompt %}
|
|
73
|
+
{{- '<|im_start|>assistant\n' }}
|
|
74
|
+
{%- if enable_thinking is defined and enable_thinking is false %}
|
|
75
|
+
{{- '<think>\n\n</think>\n\n' }}
|
|
76
|
+
{%- endif %}
|
|
77
|
+
{%- endif %}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Qwen3.5 Tool Call Output Schema",
|
|
4
|
+
"description": "JSON Schema for constraining tool call output via llama.cpp --json-schema flag. Matches the official Qwen3 <tool_call> format.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"name": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$",
|
|
10
|
+
"description": "The tool/function name to call"
|
|
11
|
+
},
|
|
12
|
+
"arguments": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"description": "Key-value arguments for the function call"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"required": ["name", "arguments"],
|
|
18
|
+
"additionalProperties": false
|
|
19
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# GBNF Grammar for Qwen3.5 Tool Call Structured Output
|
|
2
|
+
# Constrains model output to valid tool call format
|
|
3
|
+
#
|
|
4
|
+
# WARNING: Do NOT use this with --grammar-file on server startup.
|
|
5
|
+
# Global grammar forces ALL output into <tool_call> format, breaking plain chat.
|
|
6
|
+
# llama.cpp's autoparser handles tool calls lazily via the chat template.
|
|
7
|
+
#
|
|
8
|
+
# Use this grammar for per-request enforcement only, via the "grammar" field
|
|
9
|
+
# in individual API payloads when strict format adherence is needed.
|
|
10
|
+
#
|
|
11
|
+
# Matches the official Qwen3 chat template format:
|
|
12
|
+
# <tool_call>
|
|
13
|
+
# {"name": "function_name", "arguments": {"key": "value"}}
|
|
14
|
+
# </tool_call>
|
|
15
|
+
|
|
16
|
+
root ::= ws tool-calls ws
|
|
17
|
+
|
|
18
|
+
# One or more tool calls (supports multi-tool in single turn)
|
|
19
|
+
tool-calls ::= tool-call (ws tool-call)*
|
|
20
|
+
|
|
21
|
+
# Single tool call block
|
|
22
|
+
tool-call ::= "<tool_call>" ws "{\"name\":" ws json-string ws "," ws "\"arguments\":" ws json-object ws "}" ws "</tool_call>"
|
|
23
|
+
|
|
24
|
+
# JSON object (the arguments)
|
|
25
|
+
json-object ::= "{" ws json-members? ws "}"
|
|
26
|
+
|
|
27
|
+
json-members ::= json-pair (ws "," ws json-pair)*
|
|
28
|
+
|
|
29
|
+
json-pair ::= json-string ws ":" ws json-value
|
|
30
|
+
|
|
31
|
+
json-value ::= json-string | json-number | json-object | json-array | json-bool | json-null
|
|
32
|
+
|
|
33
|
+
json-string ::= "\"" json-chars "\"" | "\"\""
|
|
34
|
+
|
|
35
|
+
json-chars ::= json-char+
|
|
36
|
+
|
|
37
|
+
json-char ::= [^"\\] | "\\" json-escape
|
|
38
|
+
|
|
39
|
+
json-escape ::= ["\\/bfnrt] | "u" [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F]
|
|
40
|
+
|
|
41
|
+
json-number ::= "-"? json-int json-frac? json-exp?
|
|
42
|
+
|
|
43
|
+
json-int ::= "0" | [1-9] [0-9]*
|
|
44
|
+
|
|
45
|
+
json-frac ::= "." [0-9]+
|
|
46
|
+
|
|
47
|
+
json-exp ::= [eE] [+-]? [0-9]+
|
|
48
|
+
|
|
49
|
+
json-array ::= "[" ws json-array-items? ws "]"
|
|
50
|
+
|
|
51
|
+
json-array-items ::= json-value (ws "," ws json-value)*
|
|
52
|
+
|
|
53
|
+
json-bool ::= "true" | "false"
|
|
54
|
+
|
|
55
|
+
json-null ::= "null"
|
|
56
|
+
|
|
57
|
+
# Whitespace
|
|
58
|
+
ws ::= [ \t\n\r]*
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Layer 2: Agent toolchain for python:3.13-slim-bookworm tasks
|
|
2
|
+
# Contains: nvm, Node 22, opencode, @ai-sdk/openai-compatible, apt/pip deps
|
|
3
|
+
# Does NOT contain UAP -- that is Layer 3, installed at runtime for easy upgrades
|
|
4
|
+
#
|
|
5
|
+
# Rebuild this image when: opencode version changes, new system deps needed
|
|
6
|
+
# Do NOT rebuild for UAP version changes -- just update UAP_VERSION in install script
|
|
7
|
+
FROM python:3.13-slim-bookworm
|
|
8
|
+
|
|
9
|
+
ENV DEBIAN_FRONTEND=noninteractive
|
|
10
|
+
ENV NVM_DIR=/root/.nvm
|
|
11
|
+
ENV NODE_VERSION=22
|
|
12
|
+
|
|
13
|
+
# System dependencies
|
|
14
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
15
|
+
curl git build-essential \
|
|
16
|
+
jq netcat-openbsd xxd \
|
|
17
|
+
tesseract-ocr tesseract-ocr-eng \
|
|
18
|
+
poppler-utils imagemagick ffmpeg \
|
|
19
|
+
libsm6 libxext6 file \
|
|
20
|
+
sqlite3 libsqlite3-dev \
|
|
21
|
+
ca-certificates \
|
|
22
|
+
tmux \
|
|
23
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
24
|
+
|
|
25
|
+
# Python packages
|
|
26
|
+
RUN pip install --no-cache-dir \
|
|
27
|
+
numpy pillow pytesseract opencv-python-headless \
|
|
28
|
+
python-chess \
|
|
29
|
+
2>/dev/null || true
|
|
30
|
+
|
|
31
|
+
# Install nvm + Node 22
|
|
32
|
+
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash \
|
|
33
|
+
&& . "$NVM_DIR/nvm.sh" \
|
|
34
|
+
&& nvm install $NODE_VERSION \
|
|
35
|
+
&& nvm alias default $NODE_VERSION \
|
|
36
|
+
&& nvm use default
|
|
37
|
+
|
|
38
|
+
# Make node/npm available in PATH for non-interactive shells
|
|
39
|
+
ENV PATH="/root/.nvm/versions/node/v${NODE_VERSION}/bin:${PATH}"
|
|
40
|
+
|
|
41
|
+
# Install opencode + AI SDK provider (Layer 2 -- toolchain)
|
|
42
|
+
RUN . "$NVM_DIR/nvm.sh" \
|
|
43
|
+
&& npm i -g opencode-ai@latest \
|
|
44
|
+
&& npm i -g @ai-sdk/openai-compatible
|
|
45
|
+
|
|
46
|
+
# Create installed-agent directory for harbor
|
|
47
|
+
RUN mkdir -p /installed-agent
|
|
48
|
+
|
|
49
|
+
# Marker: toolchain version (Layer 2). UAP version is separate (Layer 3).
|
|
50
|
+
RUN echo "toolchain-1.0" > /installed-agent/.toolchain-version
|
|
51
|
+
|
|
52
|
+
WORKDIR /app
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Layer 2: Agent toolchain for ubuntu:24.04 tasks
|
|
2
|
+
# Contains: nvm, Node 22, opencode, @ai-sdk/openai-compatible, apt/pip deps
|
|
3
|
+
# Does NOT contain UAP -- that is Layer 3, installed at runtime for easy upgrades
|
|
4
|
+
#
|
|
5
|
+
# Rebuild this image when: opencode version changes, new system deps needed
|
|
6
|
+
# Do NOT rebuild for UAP version changes -- just update UAP_VERSION in install script
|
|
7
|
+
FROM ubuntu:24.04
|
|
8
|
+
|
|
9
|
+
ENV DEBIAN_FRONTEND=noninteractive
|
|
10
|
+
ENV NVM_DIR=/root/.nvm
|
|
11
|
+
ENV NODE_VERSION=22
|
|
12
|
+
|
|
13
|
+
# System dependencies (superset of all task needs)
|
|
14
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
15
|
+
curl git build-essential python3-pip python3-dev python3-venv python3-full \
|
|
16
|
+
jq netcat-openbsd xxd \
|
|
17
|
+
tesseract-ocr tesseract-ocr-eng \
|
|
18
|
+
poppler-utils imagemagick ffmpeg \
|
|
19
|
+
libsm6 libxext6 file \
|
|
20
|
+
p7zip-full hashcat john \
|
|
21
|
+
sqlite3 libsqlite3-dev \
|
|
22
|
+
stockfish \
|
|
23
|
+
ca-certificates \
|
|
24
|
+
tmux \
|
|
25
|
+
perl libcompress-raw-lzma-perl \
|
|
26
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
27
|
+
|
|
28
|
+
# Python packages (superset of all task needs)
|
|
29
|
+
RUN pip install --break-system-packages --no-cache-dir \
|
|
30
|
+
numpy pillow pytesseract opencv-python-headless \
|
|
31
|
+
python-chess \
|
|
32
|
+
2>/dev/null || true
|
|
33
|
+
|
|
34
|
+
# Install nvm + Node 22
|
|
35
|
+
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash \
|
|
36
|
+
&& . "$NVM_DIR/nvm.sh" \
|
|
37
|
+
&& nvm install $NODE_VERSION \
|
|
38
|
+
&& nvm alias default $NODE_VERSION \
|
|
39
|
+
&& nvm use default
|
|
40
|
+
|
|
41
|
+
# Make node/npm available in PATH for non-interactive shells
|
|
42
|
+
ENV PATH="/root/.nvm/versions/node/v${NODE_VERSION}/bin:${PATH}"
|
|
43
|
+
|
|
44
|
+
# Install opencode + AI SDK provider (Layer 2 -- toolchain)
|
|
45
|
+
RUN . "$NVM_DIR/nvm.sh" \
|
|
46
|
+
&& npm i -g opencode-ai@latest \
|
|
47
|
+
&& npm i -g @ai-sdk/openai-compatible
|
|
48
|
+
|
|
49
|
+
# Create installed-agent directory for harbor
|
|
50
|
+
RUN mkdir -p /installed-agent
|
|
51
|
+
|
|
52
|
+
# Marker: toolchain version (Layer 2). UAP version is separate (Layer 3).
|
|
53
|
+
RUN echo "toolchain-1.0" > /installed-agent/.toolchain-version
|
|
54
|
+
|
|
55
|
+
WORKDIR /app
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
version: '3.8'
|
|
2
|
+
|
|
3
|
+
services:
|
|
4
|
+
qdrant:
|
|
5
|
+
image: qdrant/qdrant:latest
|
|
6
|
+
container_name: uap-qdrant
|
|
7
|
+
ports:
|
|
8
|
+
- '6333:6333' # REST API
|
|
9
|
+
- '6334:6334' # gRPC
|
|
10
|
+
volumes:
|
|
11
|
+
- ./qdrant_storage:/qdrant/storage:z
|
|
12
|
+
environment:
|
|
13
|
+
- QDRANT__SERVICE__GRPC_PORT=6334
|
|
14
|
+
- QDRANT__REST__PORT=6333
|
|
15
|
+
- QDRANT__LOG_LEVEL=INFO
|
|
16
|
+
restart: unless-stopped
|
|
17
|
+
healthcheck:
|
|
18
|
+
test: ['CMD', 'curl', '-f', 'http://localhost:6333/healthz']
|
|
19
|
+
interval: 30s
|
|
20
|
+
timeout: 10s
|
|
21
|
+
retries: 3
|
|
22
|
+
|
|
23
|
+
volumes:
|
|
24
|
+
qdrant_storage:
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
# ============================================================================
|
|
5
|
+
# 3-Layer Architecture:
|
|
6
|
+
# Layer 1: Task image (task data, base OS) -- from Dockerfile
|
|
7
|
+
# Layer 2: Toolchain (nvm, node, opencode, pip) -- pre-built in Docker image
|
|
8
|
+
# Layer 3: UAP (universal-agent-protocol) -- installed HERE at runtime
|
|
9
|
+
#
|
|
10
|
+
# To upgrade UAP: change UAP_VERSION below. No image rebuild needed.
|
|
11
|
+
# To upgrade toolchain: rebuild docker images (Dockerfile.ubuntu/python)
|
|
12
|
+
# ============================================================================
|
|
13
|
+
|
|
14
|
+
UAP_VERSION="1.0.0"
|
|
15
|
+
|
|
16
|
+
# ============================================================================
|
|
17
|
+
# Layer 2: Toolchain detection
|
|
18
|
+
# ============================================================================
|
|
19
|
+
if [ -f /installed-agent/.toolchain-version ]; then
|
|
20
|
+
TOOLCHAIN_VER=$(cat /installed-agent/.toolchain-version)
|
|
21
|
+
echo "=== Layer 2: Toolchain detected (${TOOLCHAIN_VER}) - skipping heavy install ==="
|
|
22
|
+
|
|
23
|
+
export NVM_DIR="$HOME/.nvm"
|
|
24
|
+
[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"
|
|
25
|
+
|
|
26
|
+
echo " Node $(node -v 2>/dev/null || echo 'MISSING')"
|
|
27
|
+
echo " npm $(npm -v 2>/dev/null || echo 'MISSING')"
|
|
28
|
+
echo " opencode $(opencode --version 2>/dev/null || echo 'MISSING')"
|
|
29
|
+
else
|
|
30
|
+
echo "=== Layer 2: No toolchain found - full install ==="
|
|
31
|
+
|
|
32
|
+
# System dependencies
|
|
33
|
+
apt-get update
|
|
34
|
+
apt-get install -y curl git build-essential python3-pip jq netcat-openbsd xxd \
|
|
35
|
+
tesseract-ocr tesseract-ocr-eng poppler-utils imagemagick ffmpeg \
|
|
36
|
+
libsm6 libxext6 file tmux
|
|
37
|
+
|
|
38
|
+
# Python packages
|
|
39
|
+
pip install --break-system-packages numpy pillow pytesseract \
|
|
40
|
+
opencv-python-headless python-chess 2>/dev/null || true
|
|
41
|
+
|
|
42
|
+
# Node.js via nvm
|
|
43
|
+
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
|
|
44
|
+
source "$HOME/.nvm/nvm.sh"
|
|
45
|
+
nvm install 22
|
|
46
|
+
echo " Node $(node -v), npm $(npm -v)"
|
|
47
|
+
|
|
48
|
+
# opencode + AI SDK
|
|
49
|
+
for attempt in 1 2 3; do
|
|
50
|
+
{% if version %}
|
|
51
|
+
npm i -g opencode-ai@{{ version }} && break
|
|
52
|
+
{% else %}
|
|
53
|
+
npm i -g opencode-ai@latest && break
|
|
54
|
+
{% endif %}
|
|
55
|
+
echo " npm install failed (attempt ${attempt}/3), retrying..."
|
|
56
|
+
sleep 15
|
|
57
|
+
done
|
|
58
|
+
npm i -g @ai-sdk/openai-compatible 2>/dev/null || true
|
|
59
|
+
|
|
60
|
+
echo " Layer 2 install complete"
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
# ============================================================================
|
|
64
|
+
# Layer 3: UAP (always runs -- fast, ~3-5s)
|
|
65
|
+
# ============================================================================
|
|
66
|
+
echo "=== Layer 3: Installing UAP v${UAP_VERSION} ==="
|
|
67
|
+
|
|
68
|
+
export NVM_DIR="$HOME/.nvm"
|
|
69
|
+
[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"
|
|
70
|
+
|
|
71
|
+
# Check if correct version already installed
|
|
72
|
+
CURRENT_UAP=$(uap --version 2>/dev/null || echo "none")
|
|
73
|
+
if [ "$CURRENT_UAP" = "$UAP_VERSION" ]; then
|
|
74
|
+
echo " UAP v${UAP_VERSION} already installed - skipping"
|
|
75
|
+
else
|
|
76
|
+
npm i -g universal-agent-protocol@${UAP_VERSION} 2>/dev/null || true
|
|
77
|
+
echo " UAP v${UAP_VERSION} installed"
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
# Run UAP setup for this project
|
|
81
|
+
cd /app
|
|
82
|
+
uap install opencode 2>/dev/null || true
|
|
83
|
+
echo " UAP setup complete"
|
|
84
|
+
|
|
85
|
+
# ============================================================================
|
|
86
|
+
# Config injection
|
|
87
|
+
# ============================================================================
|
|
88
|
+
|
|
89
|
+
# Write opencode.json with custom llama.cpp provider
|
|
90
|
+
cat > /installed-agent/opencode.json << 'OPENCODE_EOF'
|
|
91
|
+
{{ opencode_config }}
|
|
92
|
+
OPENCODE_EOF
|
|
93
|
+
|
|
94
|
+
{% if claude_md is defined and claude_md %}
|
|
95
|
+
cat > /installed-agent/CLAUDE.md << 'CLAUDE_EOF'
|
|
96
|
+
{{ claude_md }}
|
|
97
|
+
CLAUDE_EOF
|
|
98
|
+
echo " CLAUDE.md written (UAP mode)"
|
|
99
|
+
{% else %}
|
|
100
|
+
echo " No CLAUDE.md (baseline mode)"
|
|
101
|
+
{% endif %}
|
|
102
|
+
|
|
103
|
+
# ============================================================================
|
|
104
|
+
# LLM endpoint connectivity check
|
|
105
|
+
# ============================================================================
|
|
106
|
+
LLM_ENDPOINT="{{ api_endpoint }}"
|
|
107
|
+
echo "=== Checking LLM endpoint: ${LLM_ENDPOINT} ==="
|
|
108
|
+
|
|
109
|
+
MAX_RETRIES=5
|
|
110
|
+
RETRY_DELAY=10
|
|
111
|
+
CONNECTED=false
|
|
112
|
+
|
|
113
|
+
for attempt in $(seq 1 $MAX_RETRIES); do
|
|
114
|
+
if python3 -c "import urllib.request; urllib.request.urlopen('${LLM_ENDPOINT}/models', timeout=10)" 2>/dev/null; then
|
|
115
|
+
echo " LLM reachable (attempt ${attempt}/${MAX_RETRIES})"
|
|
116
|
+
CONNECTED=true
|
|
117
|
+
break
|
|
118
|
+
fi
|
|
119
|
+
echo " LLM not reachable (attempt ${attempt}/${MAX_RETRIES}), retrying in ${RETRY_DELAY}s..."
|
|
120
|
+
sleep $RETRY_DELAY
|
|
121
|
+
done
|
|
122
|
+
|
|
123
|
+
if [ "$CONNECTED" = false ]; then
|
|
124
|
+
echo " WARNING: LLM endpoint not reachable after ${MAX_RETRIES} attempts"
|
|
125
|
+
fi
|
|
126
|
+
|
|
127
|
+
# ============================================================================
|
|
128
|
+
# Summary
|
|
129
|
+
# ============================================================================
|
|
130
|
+
source "$HOME/.nvm/nvm.sh"
|
|
131
|
+
echo "=== Install complete ==="
|
|
132
|
+
echo " Layer 2: toolchain $(cat /installed-agent/.toolchain-version 2>/dev/null || echo 'fresh')"
|
|
133
|
+
echo " Layer 3: UAP v$(uap --version 2>/dev/null || echo '?')"
|
|
134
|
+
echo " opencode $(opencode --version 2>/dev/null || echo '?')"
|
|
135
|
+
echo " API: {{ api_endpoint }}"
|