network-ai 4.15.3 → 5.1.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/INTEGRATION_GUIDE.md +12 -5
- package/QUICKSTART.md +32 -5
- package/README.md +42 -17
- package/bin/dashboard.ts +146 -0
- package/bin/mcp-server.ts +3 -2
- package/dist/adapters/adapter-registry.d.ts +33 -1
- package/dist/adapters/adapter-registry.d.ts.map +1 -1
- package/dist/adapters/adapter-registry.js +49 -0
- package/dist/adapters/adapter-registry.js.map +1 -1
- package/dist/adapters/anthropic-computer-use-adapter.d.ts +132 -0
- package/dist/adapters/anthropic-computer-use-adapter.d.ts.map +1 -0
- package/dist/adapters/anthropic-computer-use-adapter.js +180 -0
- package/dist/adapters/anthropic-computer-use-adapter.js.map +1 -0
- package/dist/adapters/browser-agent-adapter.d.ts +121 -0
- package/dist/adapters/browser-agent-adapter.d.ts.map +1 -0
- package/dist/adapters/browser-agent-adapter.js +219 -0
- package/dist/adapters/browser-agent-adapter.js.map +1 -0
- package/dist/adapters/copilot-adapter.d.ts +59 -0
- package/dist/adapters/copilot-adapter.d.ts.map +1 -0
- package/dist/adapters/copilot-adapter.js +132 -0
- package/dist/adapters/copilot-adapter.js.map +1 -0
- package/dist/adapters/custom-adapter.d.ts +1 -1
- package/dist/adapters/custom-adapter.js +1 -1
- package/dist/adapters/index.d.ts +17 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +25 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/langchain-adapter.js +1 -1
- package/dist/adapters/langchain-adapter.js.map +1 -1
- package/dist/adapters/langgraph-adapter.d.ts +70 -0
- package/dist/adapters/langgraph-adapter.d.ts.map +1 -0
- package/dist/adapters/langgraph-adapter.js +119 -0
- package/dist/adapters/langgraph-adapter.js.map +1 -0
- package/dist/adapters/mcp-adapter.d.ts +1 -1
- package/dist/adapters/mcp-adapter.js +3 -3
- package/dist/adapters/mcp-adapter.js.map +1 -1
- package/dist/adapters/openai-agents-adapter.d.ts +100 -0
- package/dist/adapters/openai-agents-adapter.d.ts.map +1 -0
- package/dist/adapters/openai-agents-adapter.js +118 -0
- package/dist/adapters/openai-agents-adapter.js.map +1 -0
- package/dist/adapters/openclaw-adapter.d.ts +1 -1
- package/dist/adapters/openclaw-adapter.js +3 -3
- package/dist/adapters/openclaw-adapter.js.map +1 -1
- package/dist/adapters/orchestrator-adapter.d.ts +118 -0
- package/dist/adapters/orchestrator-adapter.d.ts.map +1 -0
- package/dist/adapters/orchestrator-adapter.js +219 -0
- package/dist/adapters/orchestrator-adapter.js.map +1 -0
- package/dist/adapters/pydantic-ai-adapter.d.ts +104 -0
- package/dist/adapters/pydantic-ai-adapter.d.ts.map +1 -0
- package/dist/adapters/pydantic-ai-adapter.js +163 -0
- package/dist/adapters/pydantic-ai-adapter.js.map +1 -0
- package/dist/adapters/vertex-ai-adapter.d.ts +122 -0
- package/dist/adapters/vertex-ai-adapter.d.ts.map +1 -0
- package/dist/adapters/vertex-ai-adapter.js +166 -0
- package/dist/adapters/vertex-ai-adapter.js.map +1 -0
- package/dist/bin/dashboard.d.ts +11 -0
- package/dist/bin/dashboard.d.ts.map +1 -0
- package/dist/bin/dashboard.js +135 -0
- package/dist/bin/dashboard.js.map +1 -0
- package/dist/bin/mcp-server.js +3 -2
- package/dist/bin/mcp-server.js.map +1 -1
- package/dist/demo-control-plane.d.ts +12 -0
- package/dist/demo-control-plane.d.ts.map +1 -0
- package/dist/demo-control-plane.js +147 -0
- package/dist/demo-control-plane.js.map +1 -0
- package/dist/demo-worktree-dashboard.d.ts +2 -0
- package/dist/demo-worktree-dashboard.d.ts.map +1 -0
- package/dist/demo-worktree-dashboard.js +131 -0
- package/dist/demo-worktree-dashboard.js.map +1 -0
- package/dist/examples/01-hello-swarm.d.ts +13 -0
- package/dist/examples/01-hello-swarm.d.ts.map +1 -0
- package/dist/examples/01-hello-swarm.js +165 -0
- package/dist/examples/01-hello-swarm.js.map +1 -0
- package/dist/examples/02-fsm-pipeline.d.ts +20 -0
- package/dist/examples/02-fsm-pipeline.d.ts.map +1 -0
- package/dist/examples/02-fsm-pipeline.js +189 -0
- package/dist/examples/02-fsm-pipeline.js.map +1 -0
- package/dist/examples/03-parallel-agents.d.ts +21 -0
- package/dist/examples/03-parallel-agents.d.ts.map +1 -0
- package/dist/examples/03-parallel-agents.js +192 -0
- package/dist/examples/03-parallel-agents.js.map +1 -0
- package/dist/examples/05-code-review-swarm.d.ts +21 -0
- package/dist/examples/05-code-review-swarm.d.ts.map +1 -0
- package/dist/examples/05-code-review-swarm.js +1177 -0
- package/dist/examples/05-code-review-swarm.js.map +1 -0
- package/dist/examples/06-ai-pipeline-demo.d.ts +24 -0
- package/dist/examples/06-ai-pipeline-demo.d.ts.map +1 -0
- package/dist/examples/06-ai-pipeline-demo.js +263 -0
- package/dist/examples/06-ai-pipeline-demo.js.map +1 -0
- package/dist/examples/07-full-showcase.d.ts +27 -0
- package/dist/examples/07-full-showcase.d.ts.map +1 -0
- package/dist/examples/07-full-showcase.js +946 -0
- package/dist/examples/07-full-showcase.js.map +1 -0
- package/dist/examples/08-control-plane-stress-demo.d.ts +19 -0
- package/dist/examples/08-control-plane-stress-demo.d.ts.map +1 -0
- package/dist/examples/08-control-plane-stress-demo.js +186 -0
- package/dist/examples/08-control-plane-stress-demo.js.map +1 -0
- package/dist/examples/09-real-langchain.d.ts +19 -0
- package/dist/examples/09-real-langchain.d.ts.map +1 -0
- package/dist/examples/09-real-langchain.js +231 -0
- package/dist/examples/09-real-langchain.js.map +1 -0
- package/dist/examples/10-nemoclaw-sandbox-swarm.d.ts +16 -0
- package/dist/examples/10-nemoclaw-sandbox-swarm.d.ts.map +1 -0
- package/dist/examples/10-nemoclaw-sandbox-swarm.js +270 -0
- package/dist/examples/10-nemoclaw-sandbox-swarm.js.map +1 -0
- package/dist/examples/demo-runner.d.ts +2 -0
- package/dist/examples/demo-runner.d.ts.map +1 -0
- package/dist/examples/demo-runner.js +119 -0
- package/dist/examples/demo-runner.js.map +1 -0
- package/dist/index.d.ts +113 -559
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +310 -1074
- package/dist/index.js.map +1 -1
- package/dist/lib/adapter-test-harness.d.ts +88 -0
- package/dist/lib/adapter-test-harness.d.ts.map +1 -0
- package/dist/lib/adapter-test-harness.js +118 -0
- package/dist/lib/adapter-test-harness.js.map +1 -0
- package/dist/lib/agent-conversation.d.ts +115 -0
- package/dist/lib/agent-conversation.d.ts.map +1 -0
- package/dist/lib/agent-conversation.js +155 -0
- package/dist/lib/agent-conversation.js.map +1 -0
- package/dist/lib/agent-debate.d.ts +115 -0
- package/dist/lib/agent-debate.d.ts.map +1 -0
- package/dist/lib/agent-debate.js +146 -0
- package/dist/lib/agent-debate.js.map +1 -0
- package/dist/lib/agent-memory.d.ts +157 -0
- package/dist/lib/agent-memory.d.ts.map +1 -0
- package/dist/lib/agent-memory.js +336 -0
- package/dist/lib/agent-memory.js.map +1 -0
- package/dist/lib/agent-vcr.d.ts +133 -0
- package/dist/lib/agent-vcr.d.ts.map +1 -0
- package/dist/lib/agent-vcr.js +218 -0
- package/dist/lib/agent-vcr.js.map +1 -0
- package/dist/lib/anomaly-detector.d.ts +112 -0
- package/dist/lib/anomaly-detector.d.ts.map +1 -0
- package/dist/lib/anomaly-detector.js +178 -0
- package/dist/lib/anomaly-detector.js.map +1 -0
- package/dist/lib/approval-inbox.d.ts +147 -0
- package/dist/lib/approval-inbox.d.ts.map +1 -0
- package/dist/lib/approval-inbox.js +385 -0
- package/dist/lib/approval-inbox.js.map +1 -0
- package/dist/lib/auth-guardian.d.ts +170 -0
- package/dist/lib/auth-guardian.d.ts.map +1 -0
- package/dist/lib/auth-guardian.js +604 -0
- package/dist/lib/auth-guardian.js.map +1 -0
- package/dist/lib/auth-validator.d.ts +70 -0
- package/dist/lib/auth-validator.d.ts.map +1 -0
- package/dist/lib/auth-validator.js +32 -0
- package/dist/lib/auth-validator.js.map +1 -0
- package/dist/lib/blackboard-validator.d.ts +56 -0
- package/dist/lib/blackboard-validator.d.ts.map +1 -1
- package/dist/lib/blackboard-validator.js +181 -4
- package/dist/lib/blackboard-validator.js.map +1 -1
- package/dist/lib/comparison-runner.d.ts +99 -0
- package/dist/lib/comparison-runner.d.ts.map +1 -0
- package/dist/lib/comparison-runner.js +138 -0
- package/dist/lib/comparison-runner.js.map +1 -0
- package/dist/lib/config-watcher.d.ts +109 -0
- package/dist/lib/config-watcher.d.ts.map +1 -0
- package/dist/lib/config-watcher.js +215 -0
- package/dist/lib/config-watcher.js.map +1 -0
- package/dist/lib/control-plane.d.ts +128 -0
- package/dist/lib/control-plane.d.ts.map +1 -0
- package/dist/lib/control-plane.js +527 -0
- package/dist/lib/control-plane.js.map +1 -0
- package/dist/lib/cost-governor.d.ts +105 -0
- package/dist/lib/cost-governor.d.ts.map +1 -0
- package/dist/lib/cost-governor.js +128 -0
- package/dist/lib/cost-governor.js.map +1 -0
- package/dist/lib/cost-heatmap.d.ts +104 -0
- package/dist/lib/cost-heatmap.d.ts.map +1 -0
- package/dist/lib/cost-heatmap.js +161 -0
- package/dist/lib/cost-heatmap.js.map +1 -0
- package/dist/lib/coverage-reporter.d.ts +92 -0
- package/dist/lib/coverage-reporter.d.ts.map +1 -0
- package/dist/lib/coverage-reporter.js +177 -0
- package/dist/lib/coverage-reporter.js.map +1 -0
- package/dist/lib/dashboard-server.d.ts +71 -0
- package/dist/lib/dashboard-server.d.ts.map +1 -0
- package/dist/lib/dashboard-server.js +403 -0
- package/dist/lib/dashboard-server.js.map +1 -0
- package/dist/lib/dry-run.d.ts +73 -0
- package/dist/lib/dry-run.d.ts.map +1 -0
- package/dist/lib/dry-run.js +130 -0
- package/dist/lib/dry-run.js.map +1 -0
- package/dist/lib/errors.d.ts +15 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +38 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/event-bus.d.ts +167 -0
- package/dist/lib/event-bus.d.ts.map +1 -0
- package/dist/lib/event-bus.js +229 -0
- package/dist/lib/event-bus.js.map +1 -0
- package/dist/lib/explainability.d.ts +85 -0
- package/dist/lib/explainability.d.ts.map +1 -0
- package/dist/lib/explainability.js +102 -0
- package/dist/lib/explainability.js.map +1 -0
- package/dist/lib/goal-dsl.d.ts +157 -0
- package/dist/lib/goal-dsl.d.ts.map +1 -0
- package/dist/lib/goal-dsl.js +391 -0
- package/dist/lib/goal-dsl.js.map +1 -0
- package/dist/lib/job-queue.d.ts +183 -0
- package/dist/lib/job-queue.d.ts.map +1 -0
- package/dist/lib/job-queue.js +310 -0
- package/dist/lib/job-queue.js.map +1 -0
- package/dist/lib/learning-loop.d.ts +113 -0
- package/dist/lib/learning-loop.d.ts.map +1 -0
- package/dist/lib/learning-loop.js +181 -0
- package/dist/lib/learning-loop.js.map +1 -0
- package/dist/lib/lifecycle-hooks.d.ts +116 -0
- package/dist/lib/lifecycle-hooks.d.ts.map +1 -0
- package/dist/lib/lifecycle-hooks.js +148 -0
- package/dist/lib/lifecycle-hooks.js.map +1 -0
- package/dist/lib/locked-blackboard.d.ts.map +1 -1
- package/dist/lib/locked-blackboard.js +9 -5
- package/dist/lib/locked-blackboard.js.map +1 -1
- package/dist/lib/mcp-tool-consumer.d.ts +153 -0
- package/dist/lib/mcp-tool-consumer.d.ts.map +1 -0
- package/dist/lib/mcp-tool-consumer.js +320 -0
- package/dist/lib/mcp-tool-consumer.js.map +1 -0
- package/dist/lib/metrics.d.ts +119 -0
- package/dist/lib/metrics.d.ts.map +1 -0
- package/dist/lib/metrics.js +284 -0
- package/dist/lib/metrics.js.map +1 -0
- package/dist/lib/orchestrator-types.d.ts +309 -0
- package/dist/lib/orchestrator-types.d.ts.map +1 -0
- package/dist/lib/orchestrator-types.js +61 -0
- package/dist/lib/orchestrator-types.js.map +1 -0
- package/dist/lib/otel-bridge.d.ts +74 -0
- package/dist/lib/otel-bridge.d.ts.map +1 -0
- package/dist/lib/otel-bridge.js +167 -0
- package/dist/lib/otel-bridge.js.map +1 -0
- package/dist/lib/playground.d.ts +76 -0
- package/dist/lib/playground.d.ts.map +1 -0
- package/dist/lib/playground.js +224 -0
- package/dist/lib/playground.js.map +1 -0
- package/dist/lib/quadtree.d.ts +114 -0
- package/dist/lib/quadtree.d.ts.map +1 -0
- package/dist/lib/quadtree.js +259 -0
- package/dist/lib/quadtree.js.map +1 -0
- package/dist/lib/shared-blackboard.d.ts +101 -0
- package/dist/lib/shared-blackboard.d.ts.map +1 -0
- package/dist/lib/shared-blackboard.js +249 -0
- package/dist/lib/shared-blackboard.js.map +1 -0
- package/dist/lib/speculative-executor.d.ts +89 -0
- package/dist/lib/speculative-executor.d.ts.map +1 -0
- package/dist/lib/speculative-executor.js +107 -0
- package/dist/lib/speculative-executor.js.map +1 -0
- package/dist/lib/swarm-transport.d.ts +150 -0
- package/dist/lib/swarm-transport.d.ts.map +1 -0
- package/dist/lib/swarm-transport.js +307 -0
- package/dist/lib/swarm-transport.js.map +1 -0
- package/dist/lib/task-decomposer.d.ts +41 -0
- package/dist/lib/task-decomposer.d.ts.map +1 -0
- package/dist/lib/task-decomposer.js +272 -0
- package/dist/lib/task-decomposer.js.map +1 -0
- package/dist/lib/timeline-scrubber.d.ts +84 -0
- package/dist/lib/timeline-scrubber.d.ts.map +1 -0
- package/dist/lib/timeline-scrubber.js +173 -0
- package/dist/lib/timeline-scrubber.js.map +1 -0
- package/dist/lib/topology.d.ts +361 -0
- package/dist/lib/topology.d.ts.map +1 -0
- package/dist/lib/topology.js +591 -0
- package/dist/lib/topology.js.map +1 -0
- package/dist/lib/work-tree-dashboard.d.ts +130 -0
- package/dist/lib/work-tree-dashboard.d.ts.map +1 -0
- package/dist/lib/work-tree-dashboard.js +583 -0
- package/dist/lib/work-tree-dashboard.js.map +1 -0
- package/dist/lib/work-tree-ui.d.ts +107 -0
- package/dist/lib/work-tree-ui.d.ts.map +1 -0
- package/dist/lib/work-tree-ui.js +333 -0
- package/dist/lib/work-tree-ui.js.map +1 -0
- package/dist/lib/work-tree.d.ts +184 -0
- package/dist/lib/work-tree.d.ts.map +1 -0
- package/dist/lib/work-tree.js +480 -0
- package/dist/lib/work-tree.js.map +1 -0
- package/dist/security.d.ts +95 -0
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +267 -4
- package/dist/security.js.map +1 -1
- package/package.json +8 -6
- package/types/agent-adapter.d.ts +5 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared type definitions, configuration, and default profiles for the
|
|
4
|
+
* SwarmOrchestrator engine.
|
|
5
|
+
*
|
|
6
|
+
* Extracted from index.ts to break the god-file pattern. All types are
|
|
7
|
+
* re-exported from the main index.ts barrel.
|
|
8
|
+
*
|
|
9
|
+
* @module OrchestratorTypes
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.DEFAULT_AGENT_TRUST = exports.DEFAULT_RESOURCE_PROFILES = exports.CONFIG = void 0;
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// CONFIGURATION
|
|
15
|
+
// ============================================================================
|
|
16
|
+
exports.CONFIG = {
|
|
17
|
+
blackboardPath: './swarm-blackboard.md',
|
|
18
|
+
maxParallelAgents: Infinity,
|
|
19
|
+
defaultTimeout: 30000,
|
|
20
|
+
enableTracing: true,
|
|
21
|
+
grantTokenTTL: 300000, // 5 minutes in milliseconds
|
|
22
|
+
maxBlackboardValueSize: 1024 * 1024, // 1 MB max per entry
|
|
23
|
+
auditLogPath: './data/audit_log.jsonl',
|
|
24
|
+
trustConfigPath: './data/trust_levels.json',
|
|
25
|
+
};
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// DEFAULT RESOURCE PROFILES -- Universal, domain-agnostic
|
|
28
|
+
// Users can override/extend these for any domain (coding, finance, devops, etc.)
|
|
29
|
+
// ============================================================================
|
|
30
|
+
exports.DEFAULT_RESOURCE_PROFILES = {
|
|
31
|
+
// --- Financial / Enterprise ---
|
|
32
|
+
SAP_API: { baseRisk: 0.5, defaultRestrictions: ['read_only', 'max_records:100'], description: 'SAP enterprise API' },
|
|
33
|
+
FINANCIAL_API: { baseRisk: 0.7, defaultRestrictions: ['read_only', 'no_pii_fields', 'audit_required'], description: 'Financial data API' },
|
|
34
|
+
DATA_EXPORT: { baseRisk: 0.6, defaultRestrictions: ['anonymize_pii', 'local_only'], description: 'Data export operations' },
|
|
35
|
+
// --- Coding / Development ---
|
|
36
|
+
FILE_SYSTEM: { baseRisk: 0.5, defaultRestrictions: ['workspace_only', 'no_system_dirs', 'max_file_size:10mb'], description: 'Read/write files in workspace' },
|
|
37
|
+
SHELL_EXEC: { baseRisk: 0.8, defaultRestrictions: ['sandbox_only', 'no_sudo', 'timeout:30s', 'audit_required'], description: 'Execute shell commands' },
|
|
38
|
+
GIT: { baseRisk: 0.4, defaultRestrictions: ['local_repo_only', 'no_force_push'], description: 'Git operations' },
|
|
39
|
+
PACKAGE_MANAGER: { baseRisk: 0.6, defaultRestrictions: ['audit_required', 'no_global_install', 'lockfile_required'], description: 'npm/pip/cargo package management' },
|
|
40
|
+
BUILD_TOOL: { baseRisk: 0.5, defaultRestrictions: ['workspace_only', 'timeout:120s'], description: 'Build and compilation' },
|
|
41
|
+
// --- Infrastructure / DevOps ---
|
|
42
|
+
DOCKER: { baseRisk: 0.7, defaultRestrictions: ['no_privileged', 'no_host_network', 'audit_required'], description: 'Container operations' },
|
|
43
|
+
CLOUD_DEPLOY: { baseRisk: 0.9, defaultRestrictions: ['staging_only', 'approval_required', 'rollback_ready'], description: 'Cloud deployment' },
|
|
44
|
+
DATABASE: { baseRisk: 0.6, defaultRestrictions: ['read_only', 'max_records:1000', 'no_schema_changes'], description: 'Database access' },
|
|
45
|
+
// --- Communication / External ---
|
|
46
|
+
EXTERNAL_SERVICE: { baseRisk: 0.4, defaultRestrictions: ['rate_limit:10_per_minute'], description: 'External API calls' },
|
|
47
|
+
EMAIL: { baseRisk: 0.5, defaultRestrictions: ['rate_limit:5_per_minute', 'no_attachments'], description: 'Email sending' },
|
|
48
|
+
WEBHOOK: { baseRisk: 0.4, defaultRestrictions: ['allowed_domains_only', 'no_credentials'], description: 'Webhook dispatch' },
|
|
49
|
+
};
|
|
50
|
+
exports.DEFAULT_AGENT_TRUST = [
|
|
51
|
+
{ agentId: 'orchestrator', trustLevel: 0.9, allowedNamespaces: ['*'], allowedResources: ['*'] },
|
|
52
|
+
{ agentId: 'data_analyst', trustLevel: 0.8, allowedNamespaces: ['task:', 'analytics:', 'agent:'], allowedResources: ['SAP_API', 'DATABASE', 'DATA_EXPORT', 'EXTERNAL_SERVICE'] },
|
|
53
|
+
{ agentId: 'strategy_advisor', trustLevel: 0.7, allowedNamespaces: ['task:', 'strategy:'], allowedResources: ['EXTERNAL_SERVICE', 'DATA_EXPORT'] },
|
|
54
|
+
{ agentId: 'risk_assessor', trustLevel: 0.85, allowedNamespaces: ['task:', 'risk:', 'analytics:'], allowedResources: ['EXTERNAL_SERVICE', 'DATABASE'] },
|
|
55
|
+
// Coding agents
|
|
56
|
+
{ agentId: 'code_writer', trustLevel: 0.75, allowedNamespaces: ['task:', 'code:', 'build:'], allowedResources: ['FILE_SYSTEM', 'GIT', 'BUILD_TOOL', 'PACKAGE_MANAGER'] },
|
|
57
|
+
{ agentId: 'code_reviewer', trustLevel: 0.8, allowedNamespaces: ['task:', 'code:', 'review:'], allowedResources: ['FILE_SYSTEM', 'GIT'] },
|
|
58
|
+
{ agentId: 'test_runner', trustLevel: 0.75, allowedNamespaces: ['task:', 'test:', 'build:'], allowedResources: ['FILE_SYSTEM', 'SHELL_EXEC', 'BUILD_TOOL'] },
|
|
59
|
+
{ agentId: 'devops_agent', trustLevel: 0.7, allowedNamespaces: ['task:', 'deploy:', 'infra:'], allowedResources: ['DOCKER', 'SHELL_EXEC', 'CLOUD_DEPLOY', 'GIT'] },
|
|
60
|
+
];
|
|
61
|
+
//# sourceMappingURL=orchestrator-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator-types.js","sourceRoot":"","sources":["../../lib/orchestrator-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OTelBridge — Zero-dependency OpenTelemetry bridge (BYOC pattern).
|
|
3
|
+
*
|
|
4
|
+
* Users inject their own OTel `Tracer` instance; the bridge wraps agent
|
|
5
|
+
* executions, blackboard operations, and permission checks in proper OTel
|
|
6
|
+
* spans with semantic attributes. If no tracer is provided, all calls are
|
|
7
|
+
* no-ops (zero overhead).
|
|
8
|
+
*
|
|
9
|
+
* @module OTelBridge
|
|
10
|
+
*/
|
|
11
|
+
/** Minimal subset of OTel SpanStatusCode */
|
|
12
|
+
export declare enum SpanStatus {
|
|
13
|
+
UNSET = 0,
|
|
14
|
+
OK = 1,
|
|
15
|
+
ERROR = 2
|
|
16
|
+
}
|
|
17
|
+
/** Minimal span interface matching @opentelemetry/api Span */
|
|
18
|
+
export interface OTelSpan {
|
|
19
|
+
setAttribute(key: string, value: string | number | boolean): this;
|
|
20
|
+
setStatus(status: {
|
|
21
|
+
code: SpanStatus;
|
|
22
|
+
message?: string;
|
|
23
|
+
}): this;
|
|
24
|
+
recordException(error: Error | string): this;
|
|
25
|
+
end(): void;
|
|
26
|
+
}
|
|
27
|
+
/** Minimal span options */
|
|
28
|
+
export interface OTelSpanOptions {
|
|
29
|
+
attributes?: Record<string, string | number | boolean>;
|
|
30
|
+
}
|
|
31
|
+
/** Minimal tracer interface matching @opentelemetry/api Tracer */
|
|
32
|
+
export interface OTelTracer {
|
|
33
|
+
startSpan(name: string, options?: OTelSpanOptions): OTelSpan;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Wraps orchestrator operations in OTel spans.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* import { trace } from '@opentelemetry/api';
|
|
41
|
+
* const bridge = new OTelBridge(trace.getTracer('network-ai'));
|
|
42
|
+
*
|
|
43
|
+
* // Or zero-config (no-op):
|
|
44
|
+
* const bridge = new OTelBridge();
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare class OTelBridge {
|
|
48
|
+
private tracer;
|
|
49
|
+
constructor(tracer?: OTelTracer);
|
|
50
|
+
/** Replace the tracer at runtime (e.g. after late initialization). */
|
|
51
|
+
setTracer(tracer: OTelTracer): void;
|
|
52
|
+
/** Whether a real tracer (not no-op) is configured. */
|
|
53
|
+
get isEnabled(): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Wrap an async function in a span. Automatically sets status and records
|
|
56
|
+
* exceptions on failure.
|
|
57
|
+
*/
|
|
58
|
+
trace<T>(spanName: string, attributes: Record<string, string | number | boolean>, fn: (span: OTelSpan) => Promise<T>): Promise<T>;
|
|
59
|
+
/**
|
|
60
|
+
* Wrap a synchronous function in a span.
|
|
61
|
+
*/
|
|
62
|
+
traceSync<T>(spanName: string, attributes: Record<string, string | number | boolean>, fn: (span: OTelSpan) => T): T;
|
|
63
|
+
/** Start a span for an agent delegation. Returns the span for manual end(). */
|
|
64
|
+
startDelegation(sourceAgent: string, targetAgent: string, taskId: string): OTelSpan;
|
|
65
|
+
/** Start a span for adapter execution. */
|
|
66
|
+
startAdapterExecution(adapterId: string, agentId: string): OTelSpan;
|
|
67
|
+
/** Start a span for a blackboard operation. */
|
|
68
|
+
startBlackboardOp(operation: string, key: string, agentId: string): OTelSpan;
|
|
69
|
+
/** Start a span for a permission check. */
|
|
70
|
+
startPermissionCheck(agentId: string, resourceType: string): OTelSpan;
|
|
71
|
+
/** Start a span for quality gate validation. */
|
|
72
|
+
startQualityGate(agentId: string, key: string): OTelSpan;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=otel-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel-bridge.d.ts","sourceRoot":"","sources":["../../lib/otel-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,4CAA4C;AAC5C,oBAAY,UAAU;IACpB,KAAK,IAAI;IACT,EAAE,IAAI;IACN,KAAK,IAAI;CACV;AAED,8DAA8D;AAC9D,MAAM,WAAW,QAAQ;IACvB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IAClE,SAAS,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChE,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7C,GAAG,IAAI,IAAI,CAAC;CACb;AAED,2BAA2B;AAC3B,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACxD;AAED,kEAAkE;AAClE,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,CAAC;CAC9D;AAyBD;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,CAAC,EAAE,UAAU;IAI/B,sEAAsE;IACtE,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAInC,uDAAuD;IACvD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;OAGG;IACG,KAAK,CAAC,CAAC,EACX,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EACrD,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,CAAC,CAAC;IAoBb;;OAEG;IACH,SAAS,CAAC,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EACrD,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,CAAC,GACxB,CAAC;IAwBJ,+EAA+E;IAC/E,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ;IAUnF,0CAA0C;IAC1C,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ;IASnE,+CAA+C;IAC/C,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ;IAU5E,2CAA2C;IAC3C,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ;IASrE,gDAAgD;IAChD,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ;CAQzD"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OTelBridge — Zero-dependency OpenTelemetry bridge (BYOC pattern).
|
|
4
|
+
*
|
|
5
|
+
* Users inject their own OTel `Tracer` instance; the bridge wraps agent
|
|
6
|
+
* executions, blackboard operations, and permission checks in proper OTel
|
|
7
|
+
* spans with semantic attributes. If no tracer is provided, all calls are
|
|
8
|
+
* no-ops (zero overhead).
|
|
9
|
+
*
|
|
10
|
+
* @module OTelBridge
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.OTelBridge = exports.SpanStatus = void 0;
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// BYOC Tracer Interface (subset of @opentelemetry/api)
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/** Minimal subset of OTel SpanStatusCode */
|
|
18
|
+
var SpanStatus;
|
|
19
|
+
(function (SpanStatus) {
|
|
20
|
+
SpanStatus[SpanStatus["UNSET"] = 0] = "UNSET";
|
|
21
|
+
SpanStatus[SpanStatus["OK"] = 1] = "OK";
|
|
22
|
+
SpanStatus[SpanStatus["ERROR"] = 2] = "ERROR";
|
|
23
|
+
})(SpanStatus || (exports.SpanStatus = SpanStatus = {}));
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// NO-OP IMPLEMENTATION
|
|
26
|
+
// ============================================================================
|
|
27
|
+
class NoOpSpan {
|
|
28
|
+
setAttribute() { return this; }
|
|
29
|
+
setStatus() { return this; }
|
|
30
|
+
recordException() { return this; }
|
|
31
|
+
end() { }
|
|
32
|
+
}
|
|
33
|
+
const NOOP_SPAN = new NoOpSpan();
|
|
34
|
+
class NoOpTracer {
|
|
35
|
+
startSpan() { return NOOP_SPAN; }
|
|
36
|
+
}
|
|
37
|
+
const NOOP_TRACER = new NoOpTracer();
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// BRIDGE
|
|
40
|
+
// ============================================================================
|
|
41
|
+
/**
|
|
42
|
+
* Wraps orchestrator operations in OTel spans.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* import { trace } from '@opentelemetry/api';
|
|
47
|
+
* const bridge = new OTelBridge(trace.getTracer('network-ai'));
|
|
48
|
+
*
|
|
49
|
+
* // Or zero-config (no-op):
|
|
50
|
+
* const bridge = new OTelBridge();
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
class OTelBridge {
|
|
54
|
+
tracer;
|
|
55
|
+
constructor(tracer) {
|
|
56
|
+
this.tracer = tracer ?? NOOP_TRACER;
|
|
57
|
+
}
|
|
58
|
+
/** Replace the tracer at runtime (e.g. after late initialization). */
|
|
59
|
+
setTracer(tracer) {
|
|
60
|
+
this.tracer = tracer;
|
|
61
|
+
}
|
|
62
|
+
/** Whether a real tracer (not no-op) is configured. */
|
|
63
|
+
get isEnabled() {
|
|
64
|
+
return this.tracer !== NOOP_TRACER;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Wrap an async function in a span. Automatically sets status and records
|
|
68
|
+
* exceptions on failure.
|
|
69
|
+
*/
|
|
70
|
+
async trace(spanName, attributes, fn) {
|
|
71
|
+
const span = this.tracer.startSpan(spanName, { attributes });
|
|
72
|
+
try {
|
|
73
|
+
const result = await fn(span);
|
|
74
|
+
span.setStatus({ code: SpanStatus.OK });
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
span.setStatus({
|
|
79
|
+
code: SpanStatus.ERROR,
|
|
80
|
+
message: error instanceof Error ? error.message : String(error),
|
|
81
|
+
});
|
|
82
|
+
if (error instanceof Error) {
|
|
83
|
+
span.recordException(error);
|
|
84
|
+
}
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
span.end();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Wrap a synchronous function in a span.
|
|
93
|
+
*/
|
|
94
|
+
traceSync(spanName, attributes, fn) {
|
|
95
|
+
const span = this.tracer.startSpan(spanName, { attributes });
|
|
96
|
+
try {
|
|
97
|
+
const result = fn(span);
|
|
98
|
+
span.setStatus({ code: SpanStatus.OK });
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
span.setStatus({
|
|
103
|
+
code: SpanStatus.ERROR,
|
|
104
|
+
message: error instanceof Error ? error.message : String(error),
|
|
105
|
+
});
|
|
106
|
+
if (error instanceof Error) {
|
|
107
|
+
span.recordException(error);
|
|
108
|
+
}
|
|
109
|
+
throw error;
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
span.end();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// -----------------------------------------------------------------------
|
|
116
|
+
// Pre-built span helpers for common orchestrator operations
|
|
117
|
+
// -----------------------------------------------------------------------
|
|
118
|
+
/** Start a span for an agent delegation. Returns the span for manual end(). */
|
|
119
|
+
startDelegation(sourceAgent, targetAgent, taskId) {
|
|
120
|
+
return this.tracer.startSpan('agent.delegation', {
|
|
121
|
+
attributes: {
|
|
122
|
+
'agent.source': sourceAgent,
|
|
123
|
+
'agent.target': targetAgent,
|
|
124
|
+
'task.id': taskId,
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/** Start a span for adapter execution. */
|
|
129
|
+
startAdapterExecution(adapterId, agentId) {
|
|
130
|
+
return this.tracer.startSpan('adapter.execute', {
|
|
131
|
+
attributes: {
|
|
132
|
+
'adapter.id': adapterId,
|
|
133
|
+
'agent.id': agentId,
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/** Start a span for a blackboard operation. */
|
|
138
|
+
startBlackboardOp(operation, key, agentId) {
|
|
139
|
+
return this.tracer.startSpan(`blackboard.${operation}`, {
|
|
140
|
+
attributes: {
|
|
141
|
+
'blackboard.operation': operation,
|
|
142
|
+
'blackboard.key': key,
|
|
143
|
+
'agent.id': agentId,
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
/** Start a span for a permission check. */
|
|
148
|
+
startPermissionCheck(agentId, resourceType) {
|
|
149
|
+
return this.tracer.startSpan('auth.permission_check', {
|
|
150
|
+
attributes: {
|
|
151
|
+
'agent.id': agentId,
|
|
152
|
+
'auth.resource_type': resourceType,
|
|
153
|
+
},
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/** Start a span for quality gate validation. */
|
|
157
|
+
startQualityGate(agentId, key) {
|
|
158
|
+
return this.tracer.startSpan('quality.gate', {
|
|
159
|
+
attributes: {
|
|
160
|
+
'agent.id': agentId,
|
|
161
|
+
'quality.key': key,
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
exports.OTelBridge = OTelBridge;
|
|
167
|
+
//# sourceMappingURL=otel-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel-bridge.js","sourceRoot":"","sources":["../../lib/otel-bridge.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,+EAA+E;AAC/E,uDAAuD;AACvD,+EAA+E;AAE/E,4CAA4C;AAC5C,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,6CAAS,CAAA;IACT,uCAAM,CAAA;IACN,6CAAS,CAAA;AACX,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB;AAoBD,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,MAAM,QAAQ;IACZ,YAAY,KAAW,OAAO,IAAI,CAAC,CAAC,CAAC;IACrC,SAAS,KAAW,OAAO,IAAI,CAAC,CAAC,CAAC;IAClC,eAAe,KAAW,OAAO,IAAI,CAAC,CAAC,CAAC;IACxC,GAAG,KAAuB,CAAC;CAC5B;AAED,MAAM,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;AAEjC,MAAM,UAAU;IACd,SAAS,KAAe,OAAO,SAAS,CAAC,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC;AAErC,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E;;;;;;;;;;;GAWG;AACH,MAAa,UAAU;IACb,MAAM,CAAa;IAE3B,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,WAAW,CAAC;IACtC,CAAC;IAED,sEAAsE;IACtE,SAAS,CAAC,MAAkB;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,uDAAuD;IACvD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CACT,QAAgB,EAChB,UAAqD,EACrD,EAAkC;QAElC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,UAAU,CAAC,KAAK;gBACtB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,CAAC,CAAC;YACH,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CACP,QAAgB,EAChB,UAAqD,EACrD,EAAyB;QAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,UAAU,CAAC,KAAK;gBACtB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,CAAC,CAAC;YACH,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,4DAA4D;IAC5D,0EAA0E;IAE1E,+EAA+E;IAC/E,eAAe,CAAC,WAAmB,EAAE,WAAmB,EAAE,MAAc;QACtE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE;YAC/C,UAAU,EAAE;gBACV,cAAc,EAAE,WAAW;gBAC3B,cAAc,EAAE,WAAW;gBAC3B,SAAS,EAAE,MAAM;aAClB;SACF,CAAC,CAAC;IACL,CAAC;IAED,0CAA0C;IAC1C,qBAAqB,CAAC,SAAiB,EAAE,OAAe;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAC9C,UAAU,EAAE;gBACV,YAAY,EAAE,SAAS;gBACvB,UAAU,EAAE,OAAO;aACpB;SACF,CAAC,CAAC;IACL,CAAC;IAED,+CAA+C;IAC/C,iBAAiB,CAAC,SAAiB,EAAE,GAAW,EAAE,OAAe;QAC/D,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,SAAS,EAAE,EAAE;YACtD,UAAU,EAAE;gBACV,sBAAsB,EAAE,SAAS;gBACjC,gBAAgB,EAAE,GAAG;gBACrB,UAAU,EAAE,OAAO;aACpB;SACF,CAAC,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,oBAAoB,CAAC,OAAe,EAAE,YAAoB;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,EAAE;YACpD,UAAU,EAAE;gBACV,UAAU,EAAE,OAAO;gBACnB,oBAAoB,EAAE,YAAY;aACnC;SACF,CAAC,CAAC;IACL,CAAC;IAED,gDAAgD;IAChD,gBAAgB,CAAC,OAAe,EAAE,GAAW;QAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE;YAC3C,UAAU,EAAE;gBACV,UAAU,EAAE,OAAO;gBACnB,aAAa,EAAE,GAAG;aACnB;SACF,CAAC,CAAC;IACL,CAAC;CACF;AA/HD,gCA+HC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Playground — Interactive REPL sandbox for Network-AI
|
|
3
|
+
*
|
|
4
|
+
* Provides an in-process REPL environment with pre-configured mock adapters,
|
|
5
|
+
* a blackboard, budget, auth guardian, and orchestrator — ready to experiment
|
|
6
|
+
* with immediately.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Pre-wired SwarmOrchestrator with mock CustomAdapter
|
|
10
|
+
* - LockedBlackboard with in-memory backend
|
|
11
|
+
* - AuthGuardian with default trust levels
|
|
12
|
+
* - FederatedBudget with generous defaults
|
|
13
|
+
* - REPL context exposes all key objects
|
|
14
|
+
* - Helper functions: delegate(), bb(), budget(), agents()
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* import { startPlayground } from 'network-ai';
|
|
18
|
+
* await startPlayground();
|
|
19
|
+
*
|
|
20
|
+
* CLI:
|
|
21
|
+
* npx network-ai playground
|
|
22
|
+
*
|
|
23
|
+
* @module Playground
|
|
24
|
+
* @version 1.0.0
|
|
25
|
+
*/
|
|
26
|
+
import { EventEmitter } from 'events';
|
|
27
|
+
/** Configuration for the playground environment */
|
|
28
|
+
export interface PlaygroundConfig {
|
|
29
|
+
/** Welcome banner (set to '' to disable) */
|
|
30
|
+
banner?: string;
|
|
31
|
+
/** REPL prompt string (default: 'swarm> ') */
|
|
32
|
+
prompt?: string;
|
|
33
|
+
/** Pre-register mock agent handlers (name → response) */
|
|
34
|
+
mockAgents?: Record<string, (input: string) => string | Promise<string>>;
|
|
35
|
+
/** Budget ceiling (default: 100) */
|
|
36
|
+
budgetCeiling?: number;
|
|
37
|
+
/** Whether to show tips on startup (default: true) */
|
|
38
|
+
showTips?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/** Playground instance — provides access to all sandbox objects */
|
|
41
|
+
export interface PlaygroundInstance {
|
|
42
|
+
/** The playground event emitter */
|
|
43
|
+
emitter: EventEmitter;
|
|
44
|
+
/** Stop the playground */
|
|
45
|
+
stop: () => void;
|
|
46
|
+
/** Whether the playground is running */
|
|
47
|
+
isRunning: boolean;
|
|
48
|
+
}
|
|
49
|
+
/** Simple mock agent registry for the playground */
|
|
50
|
+
export declare class MockAgentRegistry {
|
|
51
|
+
private handlers;
|
|
52
|
+
private callLog;
|
|
53
|
+
/** Register a mock agent */
|
|
54
|
+
register(name: string, handler: (input: string) => string | Promise<string>): void;
|
|
55
|
+
/** List registered mock agents */
|
|
56
|
+
list(): string[];
|
|
57
|
+
/** Call a mock agent */
|
|
58
|
+
call(name: string, input: string): Promise<string>;
|
|
59
|
+
/** Get call history */
|
|
60
|
+
history(): ReadonlyArray<{
|
|
61
|
+
agentId: string;
|
|
62
|
+
input: string;
|
|
63
|
+
output: string;
|
|
64
|
+
timestamp: number;
|
|
65
|
+
}>;
|
|
66
|
+
/** Clear call history */
|
|
67
|
+
clearHistory(): void;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Start an interactive playground REPL with mock adapters.
|
|
71
|
+
*
|
|
72
|
+
* All key Network-AI objects are available in the REPL context.
|
|
73
|
+
* Mock agents respond instantly with deterministic outputs.
|
|
74
|
+
*/
|
|
75
|
+
export declare function startPlayground(config?: PlaygroundConfig): PlaygroundInstance;
|
|
76
|
+
//# sourceMappingURL=playground.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../../lib/playground.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC,mDAAmD;AACnD,MAAM,WAAW,gBAAgB;IAC/B,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,OAAO,EAAE,YAAY,CAAC;IACtB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,wCAAwC;IACxC,SAAS,EAAE,OAAO,CAAC;CACpB;AAMD,oDAAoD;AACpD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAkE;IAClF,OAAO,CAAC,OAAO,CAAoF;IAEnG,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IAIlF,kCAAkC;IAClC,IAAI,IAAI,MAAM,EAAE;IAIhB,wBAAwB;IAClB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUxD,uBAAuB;IACvB,OAAO,IAAI,aAAa,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAI/F,yBAAyB;IACzB,YAAY,IAAI,IAAI;CAGrB;AAiDD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,GAAE,gBAAqB,GAAG,kBAAkB,CAgFjF"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Playground — Interactive REPL sandbox for Network-AI
|
|
4
|
+
*
|
|
5
|
+
* Provides an in-process REPL environment with pre-configured mock adapters,
|
|
6
|
+
* a blackboard, budget, auth guardian, and orchestrator — ready to experiment
|
|
7
|
+
* with immediately.
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - Pre-wired SwarmOrchestrator with mock CustomAdapter
|
|
11
|
+
* - LockedBlackboard with in-memory backend
|
|
12
|
+
* - AuthGuardian with default trust levels
|
|
13
|
+
* - FederatedBudget with generous defaults
|
|
14
|
+
* - REPL context exposes all key objects
|
|
15
|
+
* - Helper functions: delegate(), bb(), budget(), agents()
|
|
16
|
+
*
|
|
17
|
+
* Usage:
|
|
18
|
+
* import { startPlayground } from 'network-ai';
|
|
19
|
+
* await startPlayground();
|
|
20
|
+
*
|
|
21
|
+
* CLI:
|
|
22
|
+
* npx network-ai playground
|
|
23
|
+
*
|
|
24
|
+
* @module Playground
|
|
25
|
+
* @version 1.0.0
|
|
26
|
+
*/
|
|
27
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
28
|
+
if (k2 === undefined) k2 = k;
|
|
29
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
30
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
31
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
32
|
+
}
|
|
33
|
+
Object.defineProperty(o, k2, desc);
|
|
34
|
+
}) : (function(o, m, k, k2) {
|
|
35
|
+
if (k2 === undefined) k2 = k;
|
|
36
|
+
o[k2] = m[k];
|
|
37
|
+
}));
|
|
38
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
39
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
40
|
+
}) : function(o, v) {
|
|
41
|
+
o["default"] = v;
|
|
42
|
+
});
|
|
43
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
44
|
+
var ownKeys = function(o) {
|
|
45
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
46
|
+
var ar = [];
|
|
47
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
48
|
+
return ar;
|
|
49
|
+
};
|
|
50
|
+
return ownKeys(o);
|
|
51
|
+
};
|
|
52
|
+
return function (mod) {
|
|
53
|
+
if (mod && mod.__esModule) return mod;
|
|
54
|
+
var result = {};
|
|
55
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
56
|
+
__setModuleDefault(result, mod);
|
|
57
|
+
return result;
|
|
58
|
+
};
|
|
59
|
+
})();
|
|
60
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
61
|
+
exports.MockAgentRegistry = void 0;
|
|
62
|
+
exports.startPlayground = startPlayground;
|
|
63
|
+
const repl = __importStar(require("repl"));
|
|
64
|
+
const events_1 = require("events");
|
|
65
|
+
// ============================================================================
|
|
66
|
+
// MOCK HELPERS
|
|
67
|
+
// ============================================================================
|
|
68
|
+
/** Simple mock agent registry for the playground */
|
|
69
|
+
class MockAgentRegistry {
|
|
70
|
+
handlers = new Map();
|
|
71
|
+
callLog = [];
|
|
72
|
+
/** Register a mock agent */
|
|
73
|
+
register(name, handler) {
|
|
74
|
+
this.handlers.set(name, handler);
|
|
75
|
+
}
|
|
76
|
+
/** List registered mock agents */
|
|
77
|
+
list() {
|
|
78
|
+
return Array.from(this.handlers.keys());
|
|
79
|
+
}
|
|
80
|
+
/** Call a mock agent */
|
|
81
|
+
async call(name, input) {
|
|
82
|
+
const handler = this.handlers.get(name);
|
|
83
|
+
if (!handler) {
|
|
84
|
+
throw new Error(`No mock agent '${name}'. Available: ${this.list().join(', ')}`);
|
|
85
|
+
}
|
|
86
|
+
const output = await handler(input);
|
|
87
|
+
this.callLog.push({ agentId: name, input, output, timestamp: Date.now() });
|
|
88
|
+
return output;
|
|
89
|
+
}
|
|
90
|
+
/** Get call history */
|
|
91
|
+
history() {
|
|
92
|
+
return this.callLog;
|
|
93
|
+
}
|
|
94
|
+
/** Clear call history */
|
|
95
|
+
clearHistory() {
|
|
96
|
+
this.callLog = [];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.MockAgentRegistry = MockAgentRegistry;
|
|
100
|
+
// ============================================================================
|
|
101
|
+
// DEFAULT MOCKS
|
|
102
|
+
// ============================================================================
|
|
103
|
+
function createDefaultMocks() {
|
|
104
|
+
return {
|
|
105
|
+
echo: (input) => `Echo: ${input}`,
|
|
106
|
+
upper: (input) => input.toUpperCase(),
|
|
107
|
+
reverse: (input) => input.split('').reverse().join(''),
|
|
108
|
+
count: (input) => `Words: ${input.split(/\s+/).filter(Boolean).length}`,
|
|
109
|
+
json: (input) => JSON.stringify({ input, processed: true, timestamp: Date.now() }),
|
|
110
|
+
summarize: (input) => {
|
|
111
|
+
const words = input.split(/\s+/);
|
|
112
|
+
return words.length <= 10 ? input : words.slice(0, 10).join(' ') + '...';
|
|
113
|
+
},
|
|
114
|
+
sentiment: (input) => {
|
|
115
|
+
const positive = /good|great|excellent|happy|love|amazing|wonderful/i;
|
|
116
|
+
const negative = /bad|terrible|awful|hate|horrible|worst/i;
|
|
117
|
+
if (positive.test(input))
|
|
118
|
+
return 'positive';
|
|
119
|
+
if (negative.test(input))
|
|
120
|
+
return 'negative';
|
|
121
|
+
return 'neutral';
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
// ============================================================================
|
|
126
|
+
// PLAYGROUND
|
|
127
|
+
// ============================================================================
|
|
128
|
+
const DEFAULT_BANNER = `
|
|
129
|
+
\x1b[36m\x1b[1m╔══════════════════════════════════════════════════╗
|
|
130
|
+
║ Network-AI Playground (REPL) ║
|
|
131
|
+
╚══════════════════════════════════════════════════╝\x1b[0m
|
|
132
|
+
|
|
133
|
+
\x1b[33mPre-loaded objects:\x1b[0m
|
|
134
|
+
\x1b[32mmocks\x1b[0m — MockAgentRegistry (register/call/list/history)
|
|
135
|
+
\x1b[32mdelegate\x1b[0m — Call a mock agent: delegate('echo', 'hello')
|
|
136
|
+
\x1b[32magents\x1b[0m — List available mock agents
|
|
137
|
+
\x1b[32mhistory\x1b[0m — View call history
|
|
138
|
+
|
|
139
|
+
\x1b[33mTips:\x1b[0m
|
|
140
|
+
• Type \x1b[32m.help\x1b[0m for REPL commands
|
|
141
|
+
• Type \x1b[32magents()\x1b[0m to see available agents
|
|
142
|
+
• Type \x1b[32mdelegate('echo', 'hello world')\x1b[0m to test
|
|
143
|
+
• Type \x1b[32m.exit\x1b[0m to quit
|
|
144
|
+
`;
|
|
145
|
+
/**
|
|
146
|
+
* Start an interactive playground REPL with mock adapters.
|
|
147
|
+
*
|
|
148
|
+
* All key Network-AI objects are available in the REPL context.
|
|
149
|
+
* Mock agents respond instantly with deterministic outputs.
|
|
150
|
+
*/
|
|
151
|
+
function startPlayground(config = {}) {
|
|
152
|
+
const emitter = new events_1.EventEmitter();
|
|
153
|
+
let running = true;
|
|
154
|
+
const banner = config.banner ?? DEFAULT_BANNER;
|
|
155
|
+
const prompt = config.prompt ?? 'swarm> ';
|
|
156
|
+
// Set up mocks
|
|
157
|
+
const mocks = new MockAgentRegistry();
|
|
158
|
+
const defaultMocks = createDefaultMocks();
|
|
159
|
+
for (const [name, handler] of Object.entries(defaultMocks)) {
|
|
160
|
+
mocks.register(name, handler);
|
|
161
|
+
}
|
|
162
|
+
if (config.mockAgents) {
|
|
163
|
+
for (const [name, handler] of Object.entries(config.mockAgents)) {
|
|
164
|
+
mocks.register(name, handler);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// Print banner
|
|
168
|
+
if (banner) {
|
|
169
|
+
console.log(banner);
|
|
170
|
+
}
|
|
171
|
+
// Create REPL
|
|
172
|
+
const server = repl.start({
|
|
173
|
+
prompt,
|
|
174
|
+
useColors: true,
|
|
175
|
+
ignoreUndefined: true,
|
|
176
|
+
});
|
|
177
|
+
// Expose objects in REPL context
|
|
178
|
+
server.context['mocks'] = mocks;
|
|
179
|
+
server.context['delegate'] = async (agentId, input) => {
|
|
180
|
+
try {
|
|
181
|
+
const result = await mocks.call(agentId, input);
|
|
182
|
+
console.log(`\x1b[32m✓\x1b[0m ${result}`);
|
|
183
|
+
return result;
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
console.log(`\x1b[31m✗\x1b[0m ${err instanceof Error ? err.message : String(err)}`);
|
|
187
|
+
return undefined;
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
server.context['agents'] = () => {
|
|
191
|
+
const list = mocks.list();
|
|
192
|
+
console.log(`\x1b[36mAvailable agents (${list.length}):\x1b[0m`);
|
|
193
|
+
for (const name of list) {
|
|
194
|
+
console.log(` • ${name}`);
|
|
195
|
+
}
|
|
196
|
+
return list;
|
|
197
|
+
};
|
|
198
|
+
server.context['history'] = () => {
|
|
199
|
+
const hist = mocks.history();
|
|
200
|
+
if (hist.length === 0) {
|
|
201
|
+
console.log('\x1b[33mNo calls yet.\x1b[0m');
|
|
202
|
+
return [];
|
|
203
|
+
}
|
|
204
|
+
for (const entry of hist) {
|
|
205
|
+
const time = new Date(entry.timestamp).toLocaleTimeString();
|
|
206
|
+
console.log(` [${time}] ${entry.agentId}("${entry.input}") → "${entry.output}"`);
|
|
207
|
+
}
|
|
208
|
+
return hist;
|
|
209
|
+
};
|
|
210
|
+
server.on('exit', () => {
|
|
211
|
+
running = false;
|
|
212
|
+
emitter.emit('exit');
|
|
213
|
+
});
|
|
214
|
+
emitter.emit('started');
|
|
215
|
+
return {
|
|
216
|
+
emitter,
|
|
217
|
+
stop: () => {
|
|
218
|
+
running = false;
|
|
219
|
+
server.close();
|
|
220
|
+
},
|
|
221
|
+
get isRunning() { return running; },
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=playground.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playground.js","sourceRoot":"","sources":["../../lib/playground.ts"],"names":[],"mappings":"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"}
|