@smilintux/skcapstone 0.4.6 → 0.5.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 (77) hide show
  1. package/.github/workflows/publish.yml +8 -1
  2. package/docs/CUSTOM_AGENT.md +184 -0
  3. package/docs/GETTING_STARTED.md +3 -0
  4. package/launchd/com.skcapstone.daemon.plist +52 -0
  5. package/launchd/com.skcapstone.memory-compress.plist +45 -0
  6. package/launchd/com.skcapstone.skcomm-heartbeat.plist +33 -0
  7. package/launchd/com.skcapstone.skcomm-queue-drain.plist +34 -0
  8. package/launchd/install-launchd.sh +156 -0
  9. package/package.json +1 -1
  10. package/pyproject.toml +1 -1
  11. package/scripts/archive-sessions.sh +88 -0
  12. package/scripts/install.sh +39 -8
  13. package/scripts/notion-api.py +259 -0
  14. package/scripts/nvidia-proxy.mjs +878 -0
  15. package/scripts/proxy-monitor.sh +89 -0
  16. package/scripts/refresh-anthropic-token.sh +94 -0
  17. package/scripts/skgateway.mjs +856 -0
  18. package/scripts/telegram-catchup-all.sh +136 -0
  19. package/scripts/watch-anthropic-token.sh +117 -0
  20. package/src/skcapstone/__init__.py +1 -1
  21. package/src/skcapstone/_cli_monolith.py +4 -4
  22. package/src/skcapstone/api.py +36 -35
  23. package/src/skcapstone/auction.py +8 -8
  24. package/src/skcapstone/blueprint_registry.py +2 -2
  25. package/src/skcapstone/blueprints/builtins/itil-operations.yaml +40 -0
  26. package/src/skcapstone/brain_first.py +238 -0
  27. package/src/skcapstone/chat.py +4 -4
  28. package/src/skcapstone/cli/__init__.py +2 -0
  29. package/src/skcapstone/cli/agents_spawner.py +5 -2
  30. package/src/skcapstone/cli/chat.py +5 -2
  31. package/src/skcapstone/cli/consciousness.py +5 -2
  32. package/src/skcapstone/cli/daemon.py +116 -41
  33. package/src/skcapstone/cli/itil.py +434 -0
  34. package/src/skcapstone/cli/memory.py +4 -4
  35. package/src/skcapstone/cli/skills_cmd.py +2 -2
  36. package/src/skcapstone/cli/soul.py +5 -2
  37. package/src/skcapstone/cli/status.py +11 -8
  38. package/src/skcapstone/cli/upgrade_cmd.py +7 -4
  39. package/src/skcapstone/cli/watch_cmd.py +9 -6
  40. package/src/skcapstone/config_validator.py +7 -4
  41. package/src/skcapstone/consciousness_config.py +27 -0
  42. package/src/skcapstone/consciousness_loop.py +20 -18
  43. package/src/skcapstone/coordination.py +6 -2
  44. package/src/skcapstone/daemon.py +51 -42
  45. package/src/skcapstone/dashboard.py +8 -8
  46. package/src/skcapstone/defaults/lumina/config/claude-hooks.md +42 -0
  47. package/src/skcapstone/doctor.py +5 -2
  48. package/src/skcapstone/dreaming.py +1440 -0
  49. package/src/skcapstone/emotion_tracker.py +2 -2
  50. package/src/skcapstone/export.py +2 -2
  51. package/src/skcapstone/fuse_mount.py +21 -13
  52. package/src/skcapstone/heartbeat.py +33 -29
  53. package/src/skcapstone/itil.py +1104 -0
  54. package/src/skcapstone/launchd.py +426 -0
  55. package/src/skcapstone/mcp_server.py +306 -4
  56. package/src/skcapstone/mcp_tools/__init__.py +4 -0
  57. package/src/skcapstone/mcp_tools/_helpers.py +2 -2
  58. package/src/skcapstone/mcp_tools/ansible_tools.py +7 -4
  59. package/src/skcapstone/mcp_tools/brain_first_tools.py +90 -0
  60. package/src/skcapstone/mcp_tools/capauth_tools.py +7 -4
  61. package/src/skcapstone/mcp_tools/coord_tools.py +8 -4
  62. package/src/skcapstone/mcp_tools/did_tools.py +9 -6
  63. package/src/skcapstone/mcp_tools/gtd_tools.py +1 -1
  64. package/src/skcapstone/mcp_tools/itil_tools.py +657 -0
  65. package/src/skcapstone/mcp_tools/memory_tools.py +6 -2
  66. package/src/skcapstone/mcp_tools/soul_tools.py +6 -2
  67. package/src/skcapstone/mdns_discovery.py +2 -2
  68. package/src/skcapstone/metrics.py +8 -8
  69. package/src/skcapstone/migrate_memories.py +2 -2
  70. package/src/skcapstone/models.py +14 -0
  71. package/src/skcapstone/onboard.py +137 -14
  72. package/src/skcapstone/peer_directory.py +2 -2
  73. package/src/skcapstone/providers/docker.py +2 -2
  74. package/src/skcapstone/scheduled_tasks.py +107 -0
  75. package/src/skcapstone/service_health.py +83 -4
  76. package/src/skcapstone/sync_watcher.py +2 -2
  77. package/src/skcapstone/systemd.py +17 -0
@@ -16,6 +16,7 @@ Usage:
16
16
  from __future__ import annotations
17
17
 
18
18
  import logging
19
+ import platform
19
20
  import shutil
20
21
  import subprocess
21
22
  from dataclasses import dataclass, field
@@ -24,6 +25,14 @@ from typing import Optional
24
25
 
25
26
  logger = logging.getLogger("skcapstone.systemd")
26
27
 
28
+
29
+ def _require_linux() -> None:
30
+ """Raise RuntimeError if not running on Linux."""
31
+ if platform.system() != "Linux":
32
+ raise RuntimeError(
33
+ "systemd is only available on Linux. Use launchd on macOS."
34
+ )
35
+
27
36
  SERVICE_NAME = "skcapstone.service"
28
37
  SOCKET_NAME = "skcapstone-api.socket"
29
38
  HEARTBEAT_SERVICE = "skcomm-heartbeat.service"
@@ -93,7 +102,11 @@ def _systemctl(*args: str) -> subprocess.CompletedProcess:
93
102
 
94
103
  Returns:
95
104
  CompletedProcess result.
105
+
106
+ Raises:
107
+ RuntimeError: If not running on Linux.
96
108
  """
109
+ _require_linux()
97
110
  return _run(["systemctl", "--user", *args])
98
111
 
99
112
 
@@ -127,6 +140,7 @@ def install_service(
127
140
  Returns:
128
141
  dict: Result with 'installed', 'enabled', 'started' bools.
129
142
  """
143
+ _require_linux()
130
144
  target = unit_dir or SYSTEMD_USER_DIR
131
145
  source = source_dir or BUNDLED_DIR
132
146
 
@@ -184,6 +198,7 @@ def uninstall_service(unit_dir: Optional[Path] = None) -> dict:
184
198
  Returns:
185
199
  dict: Result with 'stopped', 'disabled', 'removed' bools.
186
200
  """
201
+ _require_linux()
187
202
  target = unit_dir or SYSTEMD_USER_DIR
188
203
  result = {"stopped": False, "disabled": False, "removed": False}
189
204
 
@@ -214,6 +229,7 @@ def service_status() -> ServiceStatus:
214
229
  Returns:
215
230
  ServiceStatus: Detailed status information.
216
231
  """
232
+ _require_linux()
217
233
  status = ServiceStatus()
218
234
 
219
235
  unit_path = SYSTEMD_USER_DIR / SERVICE_NAME
@@ -264,6 +280,7 @@ def service_logs(lines: int = 50, follow: bool = False) -> str:
264
280
  Returns:
265
281
  str: Log output or the follow command.
266
282
  """
283
+ _require_linux()
267
284
  if follow:
268
285
  return f"journalctl --user -u {SERVICE_NAME} -f"
269
286