spidersan 0.5.0 → 0.9.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 (217) hide show
  1. package/CHANGELOG.md +46 -48
  2. package/README.md +241 -4
  3. package/dist/bin/spidersan.d.ts.map +1 -1
  4. package/dist/bin/spidersan.js +13 -1
  5. package/dist/bin/spidersan.js.map +1 -1
  6. package/dist/commands/abandon.d.ts.map +1 -1
  7. package/dist/commands/abandon.js +1 -9
  8. package/dist/commands/abandon.js.map +1 -1
  9. package/dist/commands/ai.d.ts +15 -0
  10. package/dist/commands/ai.d.ts.map +1 -0
  11. package/dist/commands/ai.js +498 -0
  12. package/dist/commands/ai.js.map +1 -0
  13. package/dist/commands/auto.d.ts.map +1 -1
  14. package/dist/commands/auto.js +2 -1
  15. package/dist/commands/auto.js.map +1 -1
  16. package/dist/commands/bot.d.ts +16 -0
  17. package/dist/commands/bot.d.ts.map +1 -0
  18. package/dist/commands/bot.js +398 -0
  19. package/dist/commands/bot.js.map +1 -0
  20. package/dist/commands/conflicts.d.ts.map +1 -1
  21. package/dist/commands/conflicts.js +264 -313
  22. package/dist/commands/conflicts.js.map +1 -1
  23. package/dist/commands/context.d.ts +8 -0
  24. package/dist/commands/context.d.ts.map +1 -0
  25. package/dist/commands/context.js +104 -0
  26. package/dist/commands/context.js.map +1 -0
  27. package/dist/commands/cross-conflicts.d.ts.map +1 -1
  28. package/dist/commands/cross-conflicts.js +1 -38
  29. package/dist/commands/cross-conflicts.js.map +1 -1
  30. package/dist/commands/depends.d.ts.map +1 -1
  31. package/dist/commands/depends.js +1 -9
  32. package/dist/commands/depends.js.map +1 -1
  33. package/dist/commands/doctor.d.ts.map +1 -1
  34. package/dist/commands/doctor.js +117 -59
  35. package/dist/commands/doctor.js.map +1 -1
  36. package/dist/commands/fleet-status.d.ts +14 -0
  37. package/dist/commands/fleet-status.d.ts.map +1 -0
  38. package/dist/commands/fleet-status.js +127 -0
  39. package/dist/commands/fleet-status.js.map +1 -0
  40. package/dist/commands/git-watch.d.ts +24 -0
  41. package/dist/commands/git-watch.d.ts.map +1 -0
  42. package/dist/commands/git-watch.js +84 -0
  43. package/dist/commands/git-watch.js.map +1 -0
  44. package/dist/commands/index.d.ts +5 -0
  45. package/dist/commands/index.d.ts.map +1 -1
  46. package/dist/commands/index.js +7 -0
  47. package/dist/commands/index.js.map +1 -1
  48. package/dist/commands/merge-order.d.ts.map +1 -1
  49. package/dist/commands/merge-order.js +18 -67
  50. package/dist/commands/merge-order.js.map +1 -1
  51. package/dist/commands/merged.d.ts.map +1 -1
  52. package/dist/commands/merged.js +1 -9
  53. package/dist/commands/merged.js.map +1 -1
  54. package/dist/commands/pulse.d.ts.map +1 -1
  55. package/dist/commands/pulse.js +137 -74
  56. package/dist/commands/pulse.js.map +1 -1
  57. package/dist/commands/queen.d.ts.map +1 -1
  58. package/dist/commands/queen.js +36 -19
  59. package/dist/commands/queen.js.map +1 -1
  60. package/dist/commands/ready-check.d.ts +2 -1
  61. package/dist/commands/ready-check.d.ts.map +1 -1
  62. package/dist/commands/ready-check.js +6 -30
  63. package/dist/commands/ready-check.js.map +1 -1
  64. package/dist/commands/register.d.ts.map +1 -1
  65. package/dist/commands/register.js +7 -29
  66. package/dist/commands/register.js.map +1 -1
  67. package/dist/commands/stale.d.ts +1 -9
  68. package/dist/commands/stale.d.ts.map +1 -1
  69. package/dist/commands/stale.js +1 -42
  70. package/dist/commands/stale.js.map +1 -1
  71. package/dist/commands/torrent.d.ts.map +1 -1
  72. package/dist/commands/torrent.js +29 -18
  73. package/dist/commands/torrent.js.map +1 -1
  74. package/dist/commands/watch.d.ts.map +1 -1
  75. package/dist/commands/watch.js +13 -34
  76. package/dist/commands/watch.js.map +1 -1
  77. package/dist/lib/agent-errors.js +2 -2
  78. package/dist/lib/agent-errors.js.map +1 -1
  79. package/dist/lib/ai/context-builder.d.ts +16 -0
  80. package/dist/lib/ai/context-builder.d.ts.map +1 -0
  81. package/dist/lib/ai/context-builder.js +216 -0
  82. package/dist/lib/ai/context-builder.js.map +1 -0
  83. package/dist/lib/ai/event-handler.d.ts +21 -0
  84. package/dist/lib/ai/event-handler.d.ts.map +1 -0
  85. package/dist/lib/ai/event-handler.js +98 -0
  86. package/dist/lib/ai/event-handler.js.map +1 -0
  87. package/dist/lib/ai/index.d.ts +13 -0
  88. package/dist/lib/ai/index.d.ts.map +1 -0
  89. package/dist/lib/ai/index.js +11 -0
  90. package/dist/lib/ai/index.js.map +1 -0
  91. package/dist/lib/ai/llm-client.d.ts +37 -0
  92. package/dist/lib/ai/llm-client.d.ts.map +1 -0
  93. package/dist/lib/ai/llm-client.js +225 -0
  94. package/dist/lib/ai/llm-client.js.map +1 -0
  95. package/dist/lib/ai/reasoner.d.ts +11 -0
  96. package/dist/lib/ai/reasoner.d.ts.map +1 -0
  97. package/dist/lib/ai/reasoner.js +246 -0
  98. package/dist/lib/ai/reasoner.js.map +1 -0
  99. package/dist/lib/ai/setup.d.ts +40 -0
  100. package/dist/lib/ai/setup.d.ts.map +1 -0
  101. package/dist/lib/ai/setup.js +154 -0
  102. package/dist/lib/ai/setup.js.map +1 -0
  103. package/dist/lib/ai/types.d.ts +135 -0
  104. package/dist/lib/ai/types.d.ts.map +1 -0
  105. package/dist/lib/ai/types.js +39 -0
  106. package/dist/lib/ai/types.js.map +1 -0
  107. package/dist/lib/colony-subscriber.d.ts +15 -12
  108. package/dist/lib/colony-subscriber.d.ts.map +1 -1
  109. package/dist/lib/colony-subscriber.js +146 -65
  110. package/dist/lib/colony-subscriber.js.map +1 -1
  111. package/dist/lib/config.d.ts.map +1 -1
  112. package/dist/lib/config.js +18 -4
  113. package/dist/lib/config.js.map +1 -1
  114. package/dist/lib/conflict-analyzer.d.ts +33 -0
  115. package/dist/lib/conflict-analyzer.d.ts.map +1 -0
  116. package/dist/lib/conflict-analyzer.js +114 -0
  117. package/dist/lib/conflict-analyzer.js.map +1 -0
  118. package/dist/lib/conflict-renderer.d.ts +7 -0
  119. package/dist/lib/conflict-renderer.d.ts.map +1 -0
  120. package/dist/lib/conflict-renderer.js +162 -0
  121. package/dist/lib/conflict-renderer.js.map +1 -0
  122. package/dist/lib/conflict-tier.d.ts +20 -0
  123. package/dist/lib/conflict-tier.d.ts.map +1 -0
  124. package/dist/lib/conflict-tier.js +49 -0
  125. package/dist/lib/conflict-tier.js.map +1 -0
  126. package/dist/lib/crypto.js +1 -1
  127. package/dist/lib/crypto.js.map +1 -1
  128. package/dist/lib/daily-bridge.d.ts.map +1 -1
  129. package/dist/lib/daily-bridge.js +3 -2
  130. package/dist/lib/daily-bridge.js.map +1 -1
  131. package/dist/lib/git-events-subscriber.d.ts +59 -0
  132. package/dist/lib/git-events-subscriber.d.ts.map +1 -0
  133. package/dist/lib/git-events-subscriber.js +779 -0
  134. package/dist/lib/git-events-subscriber.js.map +1 -0
  135. package/dist/lib/git.d.ts +15 -0
  136. package/dist/lib/git.d.ts.map +1 -0
  137. package/dist/lib/git.js +180 -0
  138. package/dist/lib/git.js.map +1 -0
  139. package/dist/lib/github.d.ts.map +1 -1
  140. package/dist/lib/github.js +14 -9
  141. package/dist/lib/github.js.map +1 -1
  142. package/dist/lib/graph.d.ts +23 -0
  143. package/dist/lib/graph.d.ts.map +1 -0
  144. package/dist/lib/graph.js +134 -0
  145. package/dist/lib/graph.js.map +1 -0
  146. package/dist/lib/hub.d.ts +31 -0
  147. package/dist/lib/hub.d.ts.map +1 -0
  148. package/dist/lib/hub.js +92 -0
  149. package/dist/lib/hub.js.map +1 -0
  150. package/dist/lib/regex-utils.d.ts +6 -0
  151. package/dist/lib/regex-utils.d.ts.map +1 -0
  152. package/dist/lib/regex-utils.js +24 -0
  153. package/dist/lib/regex-utils.js.map +1 -0
  154. package/dist/lib/remote-drift.d.ts +60 -0
  155. package/dist/lib/remote-drift.d.ts.map +1 -0
  156. package/dist/lib/remote-drift.js +225 -0
  157. package/dist/lib/remote-drift.js.map +1 -0
  158. package/dist/lib/repo-scanner.d.ts +0 -4
  159. package/dist/lib/repo-scanner.d.ts.map +1 -1
  160. package/dist/lib/repo-scanner.js +2 -1
  161. package/dist/lib/repo-scanner.js.map +1 -1
  162. package/dist/lib/salvage-analyzer.d.ts.map +1 -1
  163. package/dist/lib/salvage-analyzer.js +2 -3
  164. package/dist/lib/salvage-analyzer.js.map +1 -1
  165. package/dist/lib/security.d.ts +17 -0
  166. package/dist/lib/security.d.ts.map +1 -1
  167. package/dist/lib/security.js +34 -1
  168. package/dist/lib/security.js.map +1 -1
  169. package/dist/lib/session-logger.d.ts +54 -0
  170. package/dist/lib/session-logger.d.ts.map +1 -0
  171. package/dist/lib/session-logger.js +136 -0
  172. package/dist/lib/session-logger.js.map +1 -0
  173. package/dist/storage/adapter.d.ts +4 -0
  174. package/dist/storage/adapter.d.ts.map +1 -1
  175. package/dist/storage/branch-registry-store.d.ts +13 -0
  176. package/dist/storage/branch-registry-store.d.ts.map +1 -0
  177. package/dist/storage/branch-registry-store.js +2 -0
  178. package/dist/storage/branch-registry-store.js.map +1 -0
  179. package/dist/storage/factory.d.ts +4 -0
  180. package/dist/storage/factory.d.ts.map +1 -1
  181. package/dist/storage/factory.js +25 -9
  182. package/dist/storage/factory.js.map +1 -1
  183. package/dist/storage/index.d.ts +5 -5
  184. package/dist/storage/index.d.ts.map +1 -1
  185. package/dist/storage/index.js +5 -6
  186. package/dist/storage/index.js.map +1 -1
  187. package/dist/storage/json-branch-registry-store.d.ts +19 -0
  188. package/dist/storage/json-branch-registry-store.d.ts.map +1 -0
  189. package/dist/storage/json-branch-registry-store.js +112 -0
  190. package/dist/storage/json-branch-registry-store.js.map +1 -0
  191. package/dist/storage/local.d.ts +2 -6
  192. package/dist/storage/local.d.ts.map +1 -1
  193. package/dist/storage/local.js +13 -76
  194. package/dist/storage/local.js.map +1 -1
  195. package/dist/storage/memory-branch-registry-store.d.ts +16 -0
  196. package/dist/storage/memory-branch-registry-store.d.ts.map +1 -0
  197. package/dist/storage/memory-branch-registry-store.js +65 -0
  198. package/dist/storage/memory-branch-registry-store.js.map +1 -0
  199. package/dist/storage/mycmail-adapter.d.ts.map +1 -1
  200. package/dist/storage/mycmail-adapter.js +4 -6
  201. package/dist/storage/mycmail-adapter.js.map +1 -1
  202. package/dist/storage/supabase-registry-sync-client-impl.d.ts +46 -0
  203. package/dist/storage/supabase-registry-sync-client-impl.d.ts.map +1 -0
  204. package/dist/storage/supabase-registry-sync-client-impl.js +322 -0
  205. package/dist/storage/supabase-registry-sync-client-impl.js.map +1 -0
  206. package/dist/storage/supabase-registry-sync-client.d.ts +9 -0
  207. package/dist/storage/supabase-registry-sync-client.d.ts.map +1 -0
  208. package/dist/storage/supabase-registry-sync-client.js +2 -0
  209. package/dist/storage/supabase-registry-sync-client.js.map +1 -0
  210. package/dist/storage/supabase.d.ts +8 -46
  211. package/dist/storage/supabase.d.ts.map +1 -1
  212. package/dist/storage/supabase.js +30 -342
  213. package/dist/storage/supabase.js.map +1 -1
  214. package/dist/tui/screen.d.ts.map +1 -1
  215. package/dist/tui/screen.js +5 -3
  216. package/dist/tui/screen.js.map +1 -1
  217. package/package.json +1 -1
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Spidersan AI Setup — tier config, server probe, BYOM URL validation
3
+ *
4
+ * Manages ~/.spidersan/config.json (AI-specific config, separate from .spidersanrc)
5
+ * Per spec: SPEC_spidersan_byom_telemetry.md §1.2, §1.3, §1.5, §2.1
6
+ */
7
+ import { readFile, writeFile, mkdir } from 'node:fs/promises';
8
+ import { existsSync } from 'node:fs';
9
+ import { join } from 'node:path';
10
+ import { homedir } from 'node:os';
11
+ import { HOSTED_API_BASE_URL } from './types.js';
12
+ // ─── Paths ──────────────────────────────────────────────────
13
+ const SPIDERSAN_HOME = join(homedir(), '.spidersan');
14
+ const CONFIG_PATH = join(SPIDERSAN_HOME, 'config.json');
15
+ const BYOM_AUDIT_PATH = join(SPIDERSAN_HOME, 'byom-audit.log');
16
+ // ─── Config persistence ─────────────────────────────────────
17
+ export async function loadAiConfig() {
18
+ if (!existsSync(CONFIG_PATH))
19
+ return null;
20
+ try {
21
+ const raw = await readFile(CONFIG_PATH, 'utf8');
22
+ return JSON.parse(raw);
23
+ }
24
+ catch {
25
+ return null;
26
+ }
27
+ }
28
+ export async function saveAiConfig(config) {
29
+ await mkdir(SPIDERSAN_HOME, { recursive: true });
30
+ const updated = {
31
+ ...config,
32
+ updatedAt: new Date().toISOString(),
33
+ setupAt: config.setupAt ?? new Date().toISOString(),
34
+ };
35
+ await writeFile(CONFIG_PATH, JSON.stringify(updated, null, 2), { mode: 0o600 });
36
+ }
37
+ // ─── BYOM audit log ─────────────────────────────────────────
38
+ export async function appendByomAudit(source, url, confirmed) {
39
+ const line = `${new Date().toISOString()} source=${source} url=${url} confirmed=${confirmed}\n`;
40
+ try {
41
+ await mkdir(SPIDERSAN_HOME, { recursive: true });
42
+ const { appendFile } = await import('node:fs/promises');
43
+ await appendFile(BYOM_AUDIT_PATH, line);
44
+ // Rotate at 1 MB
45
+ const { stat } = await import('node:fs/promises');
46
+ const stats = await stat(BYOM_AUDIT_PATH);
47
+ if (stats.size > 1_000_000) {
48
+ const existing = await readFile(BYOM_AUDIT_PATH, 'utf8');
49
+ const lines = existing.split('\n');
50
+ // Keep last 500 lines
51
+ await writeFile(BYOM_AUDIT_PATH, lines.slice(-500).join('\n'));
52
+ }
53
+ }
54
+ catch {
55
+ // Audit log failure is never fatal
56
+ }
57
+ }
58
+ const LOCAL_PROBE_TARGETS = [
59
+ { port: 8095, label: 'spidersan model (mlx_lm.server)' },
60
+ { port: 8082, label: 'LM Studio (custom port)' },
61
+ { port: 11434, label: 'Ollama' },
62
+ { port: 1234, label: 'LM Studio (default)' },
63
+ ];
64
+ export async function probeLocalServers(timeoutMs = 800) {
65
+ const results = await Promise.allSettled(LOCAL_PROBE_TARGETS.map(async ({ port, label }) => {
66
+ const url = `http://localhost:${port}/v1/models`;
67
+ const controller = new AbortController();
68
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
69
+ try {
70
+ const res = await fetch(url, {
71
+ signal: controller.signal,
72
+ headers: { Accept: 'application/json' },
73
+ });
74
+ clearTimeout(timer);
75
+ if (!res.ok) {
76
+ return { url: `http://localhost:${port}/v1`, port, label, responding: false };
77
+ }
78
+ let models;
79
+ try {
80
+ const body = (await res.json());
81
+ models = body.data?.map((m) => m.id).slice(0, 3);
82
+ }
83
+ catch {
84
+ // model list parse failure is non-fatal
85
+ }
86
+ return { url: `http://localhost:${port}/v1`, port, label, responding: true, models };
87
+ }
88
+ catch {
89
+ clearTimeout(timer);
90
+ return { url: `http://localhost:${port}/v1`, port, label, responding: false };
91
+ }
92
+ }));
93
+ return results.map((r) => (r.status === 'fulfilled' ? r.value : null)).filter(Boolean);
94
+ }
95
+ /** Probe the hosted API tier. Returns a ProbeResult. */
96
+ export async function probeHostedTier(apiKey, timeoutMs = 2000) {
97
+ const base = HOSTED_API_BASE_URL;
98
+ const url = `${base}/models`;
99
+ const label = 'Hosted API (spidersan-api-proxy)';
100
+ const controller = new AbortController();
101
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
102
+ try {
103
+ const res = await fetch(url, {
104
+ signal: controller.signal,
105
+ headers: {
106
+ Accept: 'application/json',
107
+ Authorization: `Bearer ${apiKey}`,
108
+ },
109
+ });
110
+ clearTimeout(timer);
111
+ if (res.status === 401) {
112
+ return { url: base, port: 443, label, responding: false };
113
+ }
114
+ if (!res.ok) {
115
+ return { url: base, port: 443, label, responding: false };
116
+ }
117
+ let models;
118
+ try {
119
+ const body = (await res.json());
120
+ models = body.data?.map((m) => m.id).slice(0, 3);
121
+ }
122
+ catch {
123
+ // non-fatal
124
+ }
125
+ return { url: base, port: 443, label, responding: true, models };
126
+ }
127
+ catch {
128
+ clearTimeout(timer);
129
+ return { url: base, port: 443, label, responding: false };
130
+ }
131
+ }
132
+ const LAN_PREFIXES = ['192.168.', '10.', '172.16.', '172.17.', '172.18.', '172.19.',
133
+ '172.20.', '172.21.', '172.22.', '172.23.', '172.24.', '172.25.', '172.26.',
134
+ '172.27.', '172.28.', '172.29.', '172.30.', '172.31.'];
135
+ export function classifyUrl(rawUrl) {
136
+ try {
137
+ const parsed = new URL(rawUrl);
138
+ const host = parsed.hostname;
139
+ if (host === 'localhost' || host === '127.0.0.1' || host === '::1')
140
+ return 'local';
141
+ if (host.endsWith('.local'))
142
+ return 'lan';
143
+ if (LAN_PREFIXES.some((prefix) => host.startsWith(prefix)))
144
+ return 'lan';
145
+ return 'external';
146
+ }
147
+ catch {
148
+ return 'external';
149
+ }
150
+ }
151
+ export function isLocalOrLan(url) {
152
+ return classifyUrl(url) !== 'external';
153
+ }
154
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/lib/ai/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Spidersan AI Core — Type Definitions
3
+ *
4
+ * Shared types for context aggregation, LLM reasoning, and event handling.
5
+ * Used by CLI (ask/advise/explain), MCP tools, webhook, and agent mode.
6
+ */
7
+ export interface BranchSummary {
8
+ name: string;
9
+ agent: string | null;
10
+ files: string[];
11
+ status: 'active' | 'merged' | 'abandoned' | 'completed';
12
+ lastUpdated: string;
13
+ commitsBehindMain: number;
14
+ }
15
+ export interface ConflictSummary {
16
+ branch: string;
17
+ otherBranch: string;
18
+ tier: 1 | 2 | 3;
19
+ files: string[];
20
+ agent: string | null;
21
+ otherAgent: string | null;
22
+ }
23
+ export interface WorkSignal {
24
+ agent: string;
25
+ task: string;
26
+ status: string;
27
+ lastHeartbeat: string;
28
+ }
29
+ export interface ActivityEntry {
30
+ event: string;
31
+ branch: string | null;
32
+ agent: string | null;
33
+ details: Record<string, unknown>;
34
+ timestamp: string;
35
+ }
36
+ export interface DailyEntry {
37
+ agent: string;
38
+ content: string;
39
+ timestamp: string;
40
+ }
41
+ export interface SpiderContext {
42
+ timestamp: string;
43
+ repo: string;
44
+ branch: string;
45
+ registry: {
46
+ active: number;
47
+ stale: number;
48
+ branches: BranchSummary[];
49
+ };
50
+ conflicts: {
51
+ tier1: number;
52
+ tier2: number;
53
+ tier3: number;
54
+ details: ConflictSummary[];
55
+ };
56
+ gitStatus: {
57
+ ahead: number;
58
+ behind: number;
59
+ dirty: string[];
60
+ };
61
+ colony: {
62
+ online: boolean;
63
+ activeAgents: string[];
64
+ inProgress: WorkSignal[];
65
+ };
66
+ activityLog?: ActivityEntry[];
67
+ dailyCollab?: DailyEntry[];
68
+ }
69
+ export type LLMProvider = 'lmstudio' | 'copilot' | 'ollama' | 'hosted';
70
+ export interface LLMConfig {
71
+ provider: LLMProvider;
72
+ model: string;
73
+ baseUrl: string;
74
+ apiKey?: string;
75
+ temperature: number;
76
+ maxTokens: number;
77
+ }
78
+ export interface LLMMessage {
79
+ role: 'system' | 'user' | 'assistant';
80
+ content: string;
81
+ }
82
+ export interface LLMResponse {
83
+ content: string;
84
+ model: string;
85
+ provider: LLMProvider;
86
+ promptTokens: number;
87
+ completionTokens: number;
88
+ }
89
+ export type ReasoningMode = 'ask' | 'advise' | 'explain';
90
+ export interface ReasoningRequest {
91
+ mode: ReasoningMode;
92
+ question?: string;
93
+ branch?: string;
94
+ context: SpiderContext;
95
+ verbose?: boolean;
96
+ }
97
+ export interface ReasoningResult {
98
+ advice: string;
99
+ commands: string[];
100
+ /** Commands suggested by the model that are not in the known spidersan CLI. Empty = all validated. */
101
+ unknownCommands: string[];
102
+ confidence: 'high' | 'medium' | 'low';
103
+ /** Numeric confidence score 0.0–1.0. Values below 0.7 trigger a "review manually" warning. */
104
+ confidenceScore: number;
105
+ mode: ReasoningMode;
106
+ provider: LLMProvider;
107
+ tokensUsed: number;
108
+ }
109
+ export type EventType = 'push' | 'pull_request' | 'colony_signal' | 'branch_register';
110
+ export interface EventPayload {
111
+ type: EventType;
112
+ repo: string;
113
+ branch?: string;
114
+ agent?: string;
115
+ files?: string[];
116
+ metadata?: Record<string, unknown>;
117
+ }
118
+ export interface Advice {
119
+ tier: 0 | 1 | 2 | 3;
120
+ action: 'info' | 'warn' | 'pause' | 'block';
121
+ message: string;
122
+ commands: string[];
123
+ escalateToLLM: boolean;
124
+ }
125
+ export interface AIConfig {
126
+ llm: LLMConfig;
127
+ enableColony: boolean;
128
+ enableMemoak: boolean;
129
+ enableDailyBridge: boolean;
130
+ playbookPath?: string;
131
+ }
132
+ /** Canonical hosted API base URL — shared between types, setup probe, and llm-client. */
133
+ export declare const HOSTED_API_BASE_URL = "https://api.spidersan.net/v1";
134
+ export declare const DEFAULT_LLM_CONFIGS: Record<LLMProvider, LLMConfig>;
135
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Spidersan AI Core — Type Definitions
3
+ *
4
+ * Shared types for context aggregation, LLM reasoning, and event handling.
5
+ * Used by CLI (ask/advise/explain), MCP tools, webhook, and agent mode.
6
+ */
7
+ /** Canonical hosted API base URL — shared between types, setup probe, and llm-client. */
8
+ export const HOSTED_API_BASE_URL = 'https://api.spidersan.net/v1';
9
+ export const DEFAULT_LLM_CONFIGS = {
10
+ lmstudio: {
11
+ provider: 'lmstudio',
12
+ model: 'gemma-4-26b-a4b-it',
13
+ baseUrl: 'http://127.0.0.1:1234/v1',
14
+ temperature: 0.4,
15
+ maxTokens: 800,
16
+ },
17
+ copilot: {
18
+ provider: 'copilot',
19
+ model: 'gpt-4o',
20
+ baseUrl: 'https://models.inference.ai.azure.com',
21
+ temperature: 0.4,
22
+ maxTokens: 800,
23
+ },
24
+ ollama: {
25
+ provider: 'ollama',
26
+ model: 'gemma3:4b',
27
+ baseUrl: 'http://localhost:11434',
28
+ temperature: 0.4,
29
+ maxTokens: 800,
30
+ },
31
+ hosted: {
32
+ provider: 'hosted',
33
+ model: 'spidersan-v1',
34
+ baseUrl: HOSTED_API_BASE_URL,
35
+ temperature: 0.4,
36
+ maxTokens: 800,
37
+ },
38
+ };
39
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/ai/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0JH,yFAAyF;AACzF,MAAM,CAAC,MAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAElE,MAAM,CAAC,MAAM,mBAAmB,GAAmC;IACjE,QAAQ,EAAE;QACR,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,oBAAoB;QAC3B,OAAO,EAAE,0BAA0B;QACnC,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,GAAG;KACf;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,uCAAuC;QAChD,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,GAAG;KACf;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,wBAAwB;QACjC,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,GAAG;KACf;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,mBAAmB;QAC5B,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,GAAG;KACf;CACF,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Colony Subscriber — reads Colony work_claim/work_release signals
2
+ * Colony Subscriber — reads Colony in-progress signals
3
3
  * and keeps the local Spidersan branch registry in sync.
4
4
  *
5
5
  * Design notes:
@@ -7,11 +7,17 @@
7
7
  * `is_stale` is already computed server-side.
8
8
  * - Credentials come from COLONY_SUPABASE_URL + COLONY_SUPABASE_KEY env vars
9
9
  * (the MycToak Supabase project, separate from Spidersan's own project).
10
+ * If env vars are absent, falls back to ~/.envoak/config.json + session files
11
+ * automatically (so `envoak vault login` is sufficient — no env vars needed).
12
+ * - Auth: COLONY_SESSION_JWT is required for RLS-scoped access to colony_state.
13
+ * Without it the query falls back to the anon key and will return 0 rows (RLS
14
+ * blocks unauthenticated reads of user-scoped signals).
15
+ * - Queries colony_state with status=in-progress — the status-based model
16
+ * replaces the old type=work_claim / type=work_release approach.
10
17
  * - Full offline fallback: any network/auth error returns offline=true and
11
18
  * the caller falls back to the local registry. Never throws.
12
- * - Agent label resolution: fetches all colony_state rows first to build a
13
- * agentKeyId agentLabel map, so labels are available even when the
14
- * work_claim row itself doesn't carry agent_label.
19
+ * - Field mapping: task (branch name), files (top-level column), agent_label
20
+ * (top-level from colony_state view no payload parsing needed).
15
21
  *
16
22
  * 🍄 hey tsan — the mycelium remembers. migration 025 opened the gradient.
17
23
  * your spiders can smell the pheromones now. — mycsan
@@ -30,20 +36,17 @@ export interface SyncResult {
30
36
  /**
31
37
  * Resolve a human-readable agent name from a Colony agent key ID.
32
38
  *
33
- * Uses the `agent_label` field already present on `colony_state` rows — no
34
- * UUID lookup table needed. Falls back to a truncated UUID when no label is
35
- * available.
39
+ * Uses the `agent_label` field already present on `colony_state` rows.
40
+ * Falls back to a truncated UUID when no label is available.
36
41
  */
37
42
  export declare function resolveAgentName(agentKeyId: string, agentLabel?: string): string;
38
43
  /**
39
44
  * Sync the local Spidersan branch registry from Colony signals.
40
45
  *
41
46
  * Steps:
42
- * 0. Build an agentKeyId agentLabel map from all current colony_state rows
43
- * (unfiltered) so labels are available even when work_claim rows lack them.
44
- * 1. Query `colony_state` for non-stale `work_claim` rows.
45
- * 2. Upsert each claimed branch into the local registry.
46
- * 3. Query `colony_state` for `work_release` rows and remove released branches.
47
+ * 1. Query `colony_state` VIEW for in-progress signals (one per agent, deduped).
48
+ * 2. Upsert each active branch into the local registry.
49
+ * 3. Sweep: remove local active branches absent from the colony in-progress set.
47
50
  * 4. Detect conflicts in the updated registry and return them.
48
51
  *
49
52
  * Returns `offline: true` and an empty conflicts list on any error so callers
@@ -1 +1 @@
1
- {"version":3,"file":"colony-subscriber.d.ts","sourceRoot":"","sources":["../../src/lib/colony-subscriber.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACvB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CACpB;AAgBD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAGhF;AAyCD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,CAkI1D"}
1
+ {"version":3,"file":"colony-subscriber.d.ts","sourceRoot":"","sources":["../../src/lib/colony-subscriber.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AASH,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACvB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CACpB;AAmBD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAIhF;AAiHD;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,CAwI1D"}