claude-nb 0.3.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 (65) hide show
  1. package/LICENSE +38 -0
  2. package/Makefile +60 -0
  3. package/README.md +63 -0
  4. package/VERSION +1 -0
  5. package/bin/_pip_entry.py +25 -0
  6. package/bin/board +287 -0
  7. package/bin/cnb +150 -0
  8. package/bin/cnb.js +33 -0
  9. package/bin/dispatcher +151 -0
  10. package/bin/dispatcher-watchdog +57 -0
  11. package/bin/doctor +328 -0
  12. package/bin/init +316 -0
  13. package/bin/registry +347 -0
  14. package/bin/swarm +896 -0
  15. package/lib/__init__.py +1 -0
  16. package/lib/board_admin.py +128 -0
  17. package/lib/board_bbs.py +99 -0
  18. package/lib/board_bug.py +161 -0
  19. package/lib/board_db.py +262 -0
  20. package/lib/board_lock.py +113 -0
  21. package/lib/board_mailbox.py +145 -0
  22. package/lib/board_maintenance.py +237 -0
  23. package/lib/board_msg.py +230 -0
  24. package/lib/board_task.py +200 -0
  25. package/lib/board_view.py +366 -0
  26. package/lib/board_vote.py +164 -0
  27. package/lib/build_lock.py +221 -0
  28. package/lib/cli.py +34 -0
  29. package/lib/common.py +285 -0
  30. package/lib/concerns/__init__.py +42 -0
  31. package/lib/concerns/adaptive_throttle.py +26 -0
  32. package/lib/concerns/base.py +25 -0
  33. package/lib/concerns/bug_sla_checker.py +32 -0
  34. package/lib/concerns/config.py +22 -0
  35. package/lib/concerns/coral_manager.py +61 -0
  36. package/lib/concerns/coral_poker.py +57 -0
  37. package/lib/concerns/file_watcher.py +127 -0
  38. package/lib/concerns/health_checker.py +72 -0
  39. package/lib/concerns/helpers.py +152 -0
  40. package/lib/concerns/idle_detector.py +56 -0
  41. package/lib/concerns/idle_killer.py +41 -0
  42. package/lib/concerns/idle_nudger.py +38 -0
  43. package/lib/concerns/inbox_nudger.py +34 -0
  44. package/lib/concerns/resource_monitor.py +47 -0
  45. package/lib/concerns/session_keepalive.py +23 -0
  46. package/lib/concerns/time_announcer.py +34 -0
  47. package/lib/crypto.py +92 -0
  48. package/lib/health.py +187 -0
  49. package/lib/inject.py +164 -0
  50. package/lib/migrate.py +109 -0
  51. package/lib/monitor.py +373 -0
  52. package/lib/panel.py +137 -0
  53. package/lib/resources.py +341 -0
  54. package/migrations/001_foreign_keys.sql +77 -0
  55. package/migrations/002_session_persona.sql +1 -0
  56. package/migrations/003_mailbox.sql +9 -0
  57. package/package.json +28 -0
  58. package/pyproject.toml +71 -0
  59. package/registry/0001-meridian.json +12 -0
  60. package/registry/0002-forge.json +12 -0
  61. package/registry/0003-lead.json +12 -0
  62. package/registry/0004-ms-encrypted-mailbox-live.json +12 -0
  63. package/registry/GENESIS.json +9 -0
  64. package/registry/pubkeys.json +5 -0
  65. package/schema.sql +138 -0
package/schema.sql ADDED
@@ -0,0 +1,138 @@
1
+ PRAGMA foreign_keys = ON;
2
+
3
+ CREATE TABLE IF NOT EXISTS sessions(
4
+ name TEXT PRIMARY KEY,
5
+ status TEXT DEFAULT '',
6
+ persona TEXT DEFAULT '',
7
+ updated_at TEXT DEFAULT (strftime('%Y-%m-%d %H:%M','now','localtime'))
8
+ );
9
+
10
+ CREATE TABLE IF NOT EXISTS messages(
11
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
12
+ ts TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M','now','localtime')),
13
+ sender TEXT NOT NULL,
14
+ recipient TEXT NOT NULL,
15
+ body TEXT NOT NULL,
16
+ attachment TEXT DEFAULT NULL
17
+ );
18
+ CREATE INDEX IF NOT EXISTS idx_msg_ts ON messages(ts);
19
+ CREATE INDEX IF NOT EXISTS idx_msg_to ON messages(recipient);
20
+ CREATE INDEX IF NOT EXISTS idx_msg_from ON messages(sender);
21
+
22
+ CREATE TABLE IF NOT EXISTS inbox(
23
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
24
+ session TEXT NOT NULL REFERENCES sessions(name) ON DELETE CASCADE,
25
+ message_id INTEGER NOT NULL REFERENCES messages(id) ON DELETE CASCADE,
26
+ delivered_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M','now','localtime')),
27
+ read INTEGER DEFAULT 0
28
+ );
29
+ CREATE INDEX IF NOT EXISTS idx_inbox ON inbox(session, read);
30
+
31
+ CREATE TABLE IF NOT EXISTS proposals(
32
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
33
+ number TEXT NOT NULL UNIQUE,
34
+ slug TEXT NOT NULL,
35
+ type TEXT DEFAULT 'A',
36
+ content TEXT NOT NULL,
37
+ status TEXT DEFAULT 'OPEN',
38
+ created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M','now','localtime')),
39
+ decided_at TEXT DEFAULT NULL
40
+ );
41
+
42
+ CREATE TABLE IF NOT EXISTS votes(
43
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
44
+ proposal_id INTEGER NOT NULL REFERENCES proposals(id) ON DELETE CASCADE,
45
+ voter TEXT NOT NULL,
46
+ decision TEXT NOT NULL,
47
+ reason TEXT DEFAULT '',
48
+ ts TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M','now','localtime')),
49
+ UNIQUE(proposal_id, voter)
50
+ );
51
+
52
+ CREATE TABLE IF NOT EXISTS files(
53
+ hash TEXT PRIMARY KEY,
54
+ original_name TEXT NOT NULL,
55
+ extension TEXT DEFAULT '',
56
+ sender TEXT NOT NULL,
57
+ stored_path TEXT NOT NULL,
58
+ ts TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M','now','localtime'))
59
+ );
60
+
61
+ CREATE TABLE IF NOT EXISTS bugs(
62
+ id TEXT PRIMARY KEY,
63
+ severity TEXT NOT NULL,
64
+ sla TEXT NOT NULL,
65
+ reporter TEXT NOT NULL,
66
+ assignee TEXT DEFAULT '',
67
+ status TEXT DEFAULT 'OPEN',
68
+ description TEXT NOT NULL,
69
+ reported_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M','now','localtime')),
70
+ fixed_at TEXT DEFAULT NULL,
71
+ evidence TEXT DEFAULT NULL
72
+ );
73
+ CREATE INDEX IF NOT EXISTS idx_bugs ON bugs(status);
74
+
75
+ CREATE TABLE IF NOT EXISTS threads(
76
+ id TEXT PRIMARY KEY,
77
+ title TEXT NOT NULL,
78
+ author TEXT NOT NULL,
79
+ created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M','now','localtime'))
80
+ );
81
+
82
+ CREATE TABLE IF NOT EXISTS thread_replies(
83
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
84
+ thread_id TEXT NOT NULL REFERENCES threads(id) ON DELETE CASCADE,
85
+ author TEXT NOT NULL,
86
+ body TEXT NOT NULL,
87
+ ts TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M','now','localtime'))
88
+ );
89
+ CREATE INDEX IF NOT EXISTS idx_replies ON thread_replies(thread_id);
90
+
91
+ CREATE TABLE IF NOT EXISTS kudos(
92
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
93
+ sender TEXT NOT NULL,
94
+ target TEXT NOT NULL,
95
+ reason TEXT NOT NULL,
96
+ evidence TEXT DEFAULT NULL,
97
+ ts TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M','now','localtime'))
98
+ );
99
+
100
+ CREATE TABLE IF NOT EXISTS suspended(
101
+ name TEXT PRIMARY KEY REFERENCES sessions(name) ON DELETE CASCADE,
102
+ suspended_by TEXT NOT NULL,
103
+ ts TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M','now','localtime'))
104
+ );
105
+
106
+ CREATE TABLE IF NOT EXISTS tasks(
107
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
108
+ session TEXT NOT NULL REFERENCES sessions(name) ON DELETE CASCADE,
109
+ description TEXT NOT NULL,
110
+ status TEXT DEFAULT 'pending',
111
+ priority INTEGER DEFAULT 0,
112
+ created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M','now','localtime')),
113
+ done_at TEXT DEFAULT NULL
114
+ );
115
+ CREATE INDEX IF NOT EXISTS idx_tasks ON tasks(session, status);
116
+
117
+ CREATE TABLE IF NOT EXISTS meta(
118
+ key TEXT PRIMARY KEY,
119
+ value TEXT NOT NULL
120
+ );
121
+
122
+ CREATE TABLE IF NOT EXISTS mailbox(
123
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
124
+ ts TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M','now','localtime')),
125
+ sender TEXT NOT NULL,
126
+ recipient TEXT NOT NULL,
127
+ encrypted_body TEXT NOT NULL,
128
+ read INTEGER DEFAULT 0
129
+ );
130
+ CREATE INDEX IF NOT EXISTS idx_mailbox ON mailbox(recipient, read);
131
+
132
+ CREATE TABLE IF NOT EXISTS git_locks(
133
+ id INTEGER PRIMARY KEY CHECK (id = 1),
134
+ session TEXT NOT NULL,
135
+ reason TEXT DEFAULT '',
136
+ acquired_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M:%S','now','localtime')),
137
+ expires_at INTEGER NOT NULL
138
+ );