nucleus-mcp 1.0.7 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/package.json +2 -4
  2. package/.github/workflows/ci.yml +0 -72
  3. package/.smithery/shttp/module.js +0 -3
  4. package/.smithery/shttp/module.js.map +0 -7
  5. package/.smithery/stdio/index.cjs +0 -74
  6. package/.smithery/stdio/index.cjs.map +0 -7
  7. package/CHANGELOG.md +0 -65
  8. package/CODE_OF_CONDUCT.md +0 -34
  9. package/COMPARISON.md +0 -20
  10. package/CONTRIBUTING.md +0 -137
  11. package/DEVELOPMENT.md +0 -109
  12. package/LICENSE +0 -21
  13. package/README.md +0 -319
  14. package/ROADMAP.md +0 -24
  15. package/SECURITY.md +0 -88
  16. package/docs/COMMUNITY_FAQ.md +0 -48
  17. package/docs/COMPETITIVE_ANALYSIS.md +0 -90
  18. package/docs/DEMO_SCRIPT.md +0 -86
  19. package/docs/ENTERPRISE.md +0 -169
  20. package/docs/FAQ.md +0 -228
  21. package/docs/QUICK_START.md +0 -155
  22. package/docs/README.md +0 -67
  23. package/docs/RECURSIVE_SNAP_DEMO.gif +0 -0
  24. package/docs/social-preview-hq.png +0 -0
  25. package/docs/social-preview.png +0 -0
  26. package/examples/basic_usage.py +0 -84
  27. package/package.json.real +0 -24
  28. package/pyproject.toml +0 -50
  29. package/registry-server.json +0 -20
  30. package/scripts/demo_governance.py +0 -109
  31. package/scripts/sse_bridge.py +0 -87
  32. package/scripts/verify_windows_paths.py +0 -48
  33. package/server.json +0 -20
  34. package/src/mcp_server_nucleus/__init__.py +0 -8583
  35. package/src/mcp_server_nucleus/__main__.py +0 -9
  36. package/src/mcp_server_nucleus/cli.py +0 -1225
  37. package/src/mcp_server_nucleus/commitment_core.py +0 -146
  38. package/src/mcp_server_nucleus/commitment_ledger.py +0 -841
  39. package/src/mcp_server_nucleus/core/__init__.py +0 -6
  40. package/src/mcp_server_nucleus/core/orchestrator.py +0 -9
  41. package/src/mcp_server_nucleus/core/tool_registration_impl.py +0 -99
  42. package/src/mcp_server_nucleus/daemon/safety/lock.py +0 -121
  43. package/src/mcp_server_nucleus/deployment/render_integration.py +0 -4
  44. package/src/mcp_server_nucleus/hypervisor/__init__.py +0 -0
  45. package/src/mcp_server_nucleus/hypervisor/injector.py +0 -83
  46. package/src/mcp_server_nucleus/hypervisor/locker.py +0 -130
  47. package/src/mcp_server_nucleus/hypervisor/watchdog.py +0 -71
  48. package/src/mcp_server_nucleus/runtime/__init__.py +0 -58
  49. package/src/mcp_server_nucleus/runtime/agent.py +0 -517
  50. package/src/mcp_server_nucleus/runtime/agent_pool.py +0 -797
  51. package/src/mcp_server_nucleus/runtime/agents/base.py +0 -34
  52. package/src/mcp_server_nucleus/runtime/agents/oracle/manifest.json +0 -28
  53. package/src/mcp_server_nucleus/runtime/auth.py +0 -98
  54. package/src/mcp_server_nucleus/runtime/autopilot.py +0 -1057
  55. package/src/mcp_server_nucleus/runtime/broker.py +0 -126
  56. package/src/mcp_server_nucleus/runtime/budget.py +0 -153
  57. package/src/mcp_server_nucleus/runtime/capabilities/base.py +0 -20
  58. package/src/mcp_server_nucleus/runtime/capabilities/brain_ops.py +0 -253
  59. package/src/mcp_server_nucleus/runtime/capabilities/code_ops.py +0 -192
  60. package/src/mcp_server_nucleus/runtime/capabilities/depth_tracker.py +0 -81
  61. package/src/mcp_server_nucleus/runtime/capabilities/feature_map.py +0 -274
  62. package/src/mcp_server_nucleus/runtime/capabilities/marketing_engine.py +0 -205
  63. package/src/mcp_server_nucleus/runtime/capabilities/memory_ops.py +0 -79
  64. package/src/mcp_server_nucleus/runtime/capabilities/proof_system.py +0 -127
  65. package/src/mcp_server_nucleus/runtime/capabilities/render_ops.py +0 -80
  66. package/src/mcp_server_nucleus/runtime/capabilities/render_poller_cap.py +0 -266
  67. package/src/mcp_server_nucleus/runtime/capabilities/self_healing.py +0 -110
  68. package/src/mcp_server_nucleus/runtime/capabilities/strategy.py +0 -138
  69. package/src/mcp_server_nucleus/runtime/capabilities/synthesizer.py +0 -134
  70. package/src/mcp_server_nucleus/runtime/capabilities/web_ops.py +0 -94
  71. package/src/mcp_server_nucleus/runtime/common.py +0 -134
  72. package/src/mcp_server_nucleus/runtime/context_manager.py +0 -342
  73. package/src/mcp_server_nucleus/runtime/context_rules.json +0 -86
  74. package/src/mcp_server_nucleus/runtime/crdt_task_store.py +0 -349
  75. package/src/mcp_server_nucleus/runtime/critic.py +0 -150
  76. package/src/mcp_server_nucleus/runtime/daemon.py +0 -142
  77. package/src/mcp_server_nucleus/runtime/dashboard.py +0 -1087
  78. package/src/mcp_server_nucleus/runtime/depth_ops.py +0 -339
  79. package/src/mcp_server_nucleus/runtime/event_ops.py +0 -103
  80. package/src/mcp_server_nucleus/runtime/event_stream.py +0 -213
  81. package/src/mcp_server_nucleus/runtime/export.py +0 -64
  82. package/src/mcp_server_nucleus/runtime/factory.py +0 -594
  83. package/src/mcp_server_nucleus/runtime/federation.py +0 -1040
  84. package/src/mcp_server_nucleus/runtime/fetcher.py +0 -92
  85. package/src/mcp_server_nucleus/runtime/file_monitor.py +0 -208
  86. package/src/mcp_server_nucleus/runtime/firestore_bridge.py +0 -91
  87. package/src/mcp_server_nucleus/runtime/gcloud_ops.py +0 -186
  88. package/src/mcp_server_nucleus/runtime/hooks.py +0 -246
  89. package/src/mcp_server_nucleus/runtime/identity/gatekeeper.py +0 -106
  90. package/src/mcp_server_nucleus/runtime/identity/keygen.py +0 -147
  91. package/src/mcp_server_nucleus/runtime/identity/manifest.py +0 -62
  92. package/src/mcp_server_nucleus/runtime/identity/trust.py +0 -27
  93. package/src/mcp_server_nucleus/runtime/inspector.py +0 -74
  94. package/src/mcp_server_nucleus/runtime/installer.py +0 -81
  95. package/src/mcp_server_nucleus/runtime/ipc_auth.py +0 -377
  96. package/src/mcp_server_nucleus/runtime/lifecycle.py +0 -129
  97. package/src/mcp_server_nucleus/runtime/llm_client.py +0 -408
  98. package/src/mcp_server_nucleus/runtime/llm_tiers.json +0 -88
  99. package/src/mcp_server_nucleus/runtime/locking.py +0 -228
  100. package/src/mcp_server_nucleus/runtime/loops/fixer.py +0 -110
  101. package/src/mcp_server_nucleus/runtime/memory.py +0 -158
  102. package/src/mcp_server_nucleus/runtime/mounter.py +0 -210
  103. package/src/mcp_server_nucleus/runtime/mounter_ops.py +0 -250
  104. package/src/mcp_server_nucleus/runtime/nuke_protocol.py +0 -147
  105. package/src/mcp_server_nucleus/runtime/orchestrator.py +0 -370
  106. package/src/mcp_server_nucleus/runtime/orchestrator_unified.py +0 -263
  107. package/src/mcp_server_nucleus/runtime/orchestrator_v3.py +0 -617
  108. package/src/mcp_server_nucleus/runtime/plugin_loader.py +0 -84
  109. package/src/mcp_server_nucleus/runtime/policy.py +0 -117
  110. package/src/mcp_server_nucleus/runtime/profiling.py +0 -219
  111. package/src/mcp_server_nucleus/runtime/prometheus.py +0 -286
  112. package/src/mcp_server_nucleus/runtime/proposals.py +0 -101
  113. package/src/mcp_server_nucleus/runtime/publisher.py +0 -109
  114. package/src/mcp_server_nucleus/runtime/pulse.py +0 -516
  115. package/src/mcp_server_nucleus/runtime/registry.py +0 -82
  116. package/src/mcp_server_nucleus/runtime/render_ops.py +0 -83
  117. package/src/mcp_server_nucleus/runtime/schema_gen.py +0 -140
  118. package/src/mcp_server_nucleus/runtime/session_ops.py +0 -224
  119. package/src/mcp_server_nucleus/runtime/stdio_server.py +0 -633
  120. package/src/mcp_server_nucleus/runtime/storage.py +0 -83
  121. package/src/mcp_server_nucleus/runtime/strategy.py +0 -91
  122. package/src/mcp_server_nucleus/runtime/swarm.py +0 -170
  123. package/src/mcp_server_nucleus/runtime/sync_ops.py +0 -878
  124. package/src/mcp_server_nucleus/runtime/task_ingestion.py +0 -1020
  125. package/src/mcp_server_nucleus/runtime/task_ops.py +0 -449
  126. package/src/mcp_server_nucleus/runtime/task_scheduler.py +0 -488
  127. package/src/mcp_server_nucleus/runtime/team.py +0 -59
  128. package/src/mcp_server_nucleus/runtime/triggers.py +0 -237
  129. package/src/mcp_server_nucleus/runtime/vector_store.py +0 -125
  130. package/src/mcp_server_nucleus/runtime/watcher.py +0 -112
  131. package/src/mcp_server_nucleus/tool_tiers.py +0 -243
  132. package/tests/__init__.py +0 -1
  133. package/tests/conftest.py +0 -42
  134. package/tests/test_core.py +0 -235
  135. package/tests/test_search.py +0 -69
@@ -1,34 +0,0 @@
1
- from typing import List, Any, Optional
2
- from pydantic import BaseModel, Field
3
-
4
- class TrustProfile(BaseModel):
5
- """
6
- Security and Trust metadata for an Agent.
7
- Defines what the agent is allowed to do and who verified it.
8
- """
9
- tier: str = Field(default="genesis", description="Trust Tier: genesis, verified, community, untrusted")
10
- verification_hash: Optional[str] = Field(None, description="Cryptographic hash of the agent's code")
11
- capabilities: List[str] = Field(default_factory=list, description="High-level capability grants (e.g. 'fs_read', 'net_out')")
12
- maintainer: str = Field(default="@nucleus-core", description="Entity responsible for this agent")
13
-
14
- class SovereignAgent(BaseModel):
15
- """
16
- Base class for all Nucleus Sovereign Agents.
17
- Wraps existing MCP capabilities into a standardized Agent interface.
18
- """
19
- name: str = Field(..., description="The unique handle of the agent (e.g., @nucleus/librarian)")
20
- description: str = Field(..., description="Human-readable description of the agent's purpose")
21
- instructions: str = Field(..., description="System prompt or behavioral instructions for the agent")
22
- tools: List[Any] = Field(default_factory=list, description="List of MCP tools exposed by this agent")
23
- trust: TrustProfile = Field(default_factory=TrustProfile, description="Security profile for the agent")
24
-
25
- def run(self, input_text: str) -> str:
26
- """
27
- Syntactic sugar for 'running' the agent.
28
- In reality, Agents are tool containers, but this allows for simple testing.
29
- """
30
- return f"Agent {self.name} received: {input_text}"
31
-
32
- class Config:
33
- arbitrary_types_allowed = True
34
-
@@ -1,28 +0,0 @@
1
- {
2
- "manifest_version": "1.0.0",
3
- "agent": {
4
- "id": "nucleus.core.oracle",
5
- "name": "The Oracle",
6
- "version": "1.0.0",
7
- "description": "The Antifragile Co-Founder. Governance Entity responsible for strategic simulation and protocol evolution.",
8
- "author": "Nucleus Genesis",
9
- "license": "MIT"
10
- },
11
- "capabilities": [
12
- {
13
- "scope": "strategy",
14
- "reason": "Required to read protocols, run simulations, and evolve the master strategy.",
15
- "paths": [
16
- "${BRAIN_PATH}/strategy",
17
- "${BRAIN_PATH}/PROTOCOL_THE_ORACLE.md",
18
- "${BRAIN_PATH}/IMPLEMENTATION_PLAN_PHASE61.md",
19
- "${BRAIN_PATH}/decisions"
20
- ],
21
- "mode": "read_write"
22
- }
23
- ],
24
- "lifecycle": {
25
- "persistence": "immortal",
26
- "cleanup": "none"
27
- }
28
- }
@@ -1,98 +0,0 @@
1
- """
2
- AuthManager: The Keyring.
3
- Manages access to Private Repositories via Environment Variables.
4
-
5
- Strategic Role:
6
- - EXTERNAL CONFIG: Never stores secrets in Brain. Only maps URLs to Env Vars.
7
- - INJECTION: Dynamically adds credentials to Git URLs for the Fetcher.
8
- - SCOPING: defaults to 'oauth2' username for GitHub PATs.
9
- """
10
-
11
- import os
12
- import json
13
- import logging
14
- from typing import List, Optional
15
- from pathlib import Path
16
- from pydantic import BaseModel, Field
17
- from urllib.parse import urlparse, urlunparse
18
-
19
- logger = logging.getLogger("AUTH")
20
-
21
- class PrivateSource(BaseModel):
22
- domain: str = Field(..., description="Git Domain (e.g. github.com)")
23
- org: Optional[str] = Field(None, description="Optional Organization Scope")
24
- token_env: str = Field(..., description="Name of Env Var holding the Token")
25
- username: str = Field("oauth2", description="Username for HTTP Basic Auth")
26
-
27
- class Credentials(BaseModel):
28
- username: str
29
- token: str
30
-
31
- class AuthManager:
32
- def __init__(self, brain_path: Path):
33
- self.brain_path = brain_path
34
- self.config_path = brain_path / "config" / "auth.json"
35
-
36
- self.sources: List[PrivateSource] = []
37
- self._load_config()
38
-
39
- def _load_config(self):
40
- if self.config_path.exists():
41
- try:
42
- data = json.loads(self.config_path.read_text())
43
- for item in data.get("sources", []):
44
- self.sources.append(PrivateSource(**item))
45
- except Exception as e:
46
- logger.error(f"Failed to load auth config: {e}")
47
-
48
- def get_credentials(self, repo_url: str) -> Optional[Credentials]:
49
- """
50
- Match URL against configured sources to find credentials.
51
- """
52
- parsed = urlparse(repo_url)
53
- domain = parsed.netloc
54
- path = parsed.path.strip("/")
55
-
56
- # Find best match
57
- # 1. Match Domain + Org
58
- for source in self.sources:
59
- if source.domain == domain and source.org:
60
- if path.startswith(source.org + "/"):
61
- return self._resolve_env(source)
62
-
63
- # 2. Match Domain Only
64
- for source in self.sources:
65
- if source.domain == domain and not source.org:
66
- return self._resolve_env(source)
67
-
68
- return None
69
-
70
- def _resolve_env(self, source: PrivateSource) -> Optional[Credentials]:
71
- token = os.environ.get(source.token_env)
72
- if token:
73
- return Credentials(username=source.username, token=token)
74
- logger.warning(f"Auth configured for {source.domain} but {source.token_env} is missing.")
75
- return None
76
-
77
- def inject_credentials(self, repo_url: str) -> str:
78
- """
79
- If credentials exist for this URL, inject them into the URL string.
80
- Returns original URL if no creds found.
81
- """
82
- creds = self.get_credentials(repo_url)
83
- if not creds:
84
- return repo_url
85
-
86
- parsed = urlparse(repo_url)
87
-
88
- # Reconstruct with auth
89
- # netloc = username:password@hostname
90
- netloc = f"{creds.username}:{creds.token}@{parsed.hostname}"
91
-
92
- # Handle port if present
93
- if parsed.port:
94
- netloc += f":{parsed.port}"
95
-
96
- # Replace netloc
97
- new_parsed = parsed._replace(netloc=netloc)
98
- return urlunparse(new_parsed)