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.
- package/CHANGELOG.md +46 -48
- package/README.md +241 -4
- package/dist/bin/spidersan.d.ts.map +1 -1
- package/dist/bin/spidersan.js +13 -1
- package/dist/bin/spidersan.js.map +1 -1
- package/dist/commands/abandon.d.ts.map +1 -1
- package/dist/commands/abandon.js +1 -9
- package/dist/commands/abandon.js.map +1 -1
- package/dist/commands/ai.d.ts +15 -0
- package/dist/commands/ai.d.ts.map +1 -0
- package/dist/commands/ai.js +498 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/auto.d.ts.map +1 -1
- package/dist/commands/auto.js +2 -1
- package/dist/commands/auto.js.map +1 -1
- package/dist/commands/bot.d.ts +16 -0
- package/dist/commands/bot.d.ts.map +1 -0
- package/dist/commands/bot.js +398 -0
- package/dist/commands/bot.js.map +1 -0
- package/dist/commands/conflicts.d.ts.map +1 -1
- package/dist/commands/conflicts.js +264 -313
- package/dist/commands/conflicts.js.map +1 -1
- package/dist/commands/context.d.ts +8 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +104 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/cross-conflicts.d.ts.map +1 -1
- package/dist/commands/cross-conflicts.js +1 -38
- package/dist/commands/cross-conflicts.js.map +1 -1
- package/dist/commands/depends.d.ts.map +1 -1
- package/dist/commands/depends.js +1 -9
- package/dist/commands/depends.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +117 -59
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/fleet-status.d.ts +14 -0
- package/dist/commands/fleet-status.d.ts.map +1 -0
- package/dist/commands/fleet-status.js +127 -0
- package/dist/commands/fleet-status.js.map +1 -0
- package/dist/commands/git-watch.d.ts +24 -0
- package/dist/commands/git-watch.d.ts.map +1 -0
- package/dist/commands/git-watch.js +84 -0
- package/dist/commands/git-watch.js.map +1 -0
- package/dist/commands/index.d.ts +5 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +7 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/merge-order.d.ts.map +1 -1
- package/dist/commands/merge-order.js +18 -67
- package/dist/commands/merge-order.js.map +1 -1
- package/dist/commands/merged.d.ts.map +1 -1
- package/dist/commands/merged.js +1 -9
- package/dist/commands/merged.js.map +1 -1
- package/dist/commands/pulse.d.ts.map +1 -1
- package/dist/commands/pulse.js +137 -74
- package/dist/commands/pulse.js.map +1 -1
- package/dist/commands/queen.d.ts.map +1 -1
- package/dist/commands/queen.js +36 -19
- package/dist/commands/queen.js.map +1 -1
- package/dist/commands/ready-check.d.ts +2 -1
- package/dist/commands/ready-check.d.ts.map +1 -1
- package/dist/commands/ready-check.js +6 -30
- package/dist/commands/ready-check.js.map +1 -1
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +7 -29
- package/dist/commands/register.js.map +1 -1
- package/dist/commands/stale.d.ts +1 -9
- package/dist/commands/stale.d.ts.map +1 -1
- package/dist/commands/stale.js +1 -42
- package/dist/commands/stale.js.map +1 -1
- package/dist/commands/torrent.d.ts.map +1 -1
- package/dist/commands/torrent.js +29 -18
- package/dist/commands/torrent.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +13 -34
- package/dist/commands/watch.js.map +1 -1
- package/dist/lib/agent-errors.js +2 -2
- package/dist/lib/agent-errors.js.map +1 -1
- package/dist/lib/ai/context-builder.d.ts +16 -0
- package/dist/lib/ai/context-builder.d.ts.map +1 -0
- package/dist/lib/ai/context-builder.js +216 -0
- package/dist/lib/ai/context-builder.js.map +1 -0
- package/dist/lib/ai/event-handler.d.ts +21 -0
- package/dist/lib/ai/event-handler.d.ts.map +1 -0
- package/dist/lib/ai/event-handler.js +98 -0
- package/dist/lib/ai/event-handler.js.map +1 -0
- package/dist/lib/ai/index.d.ts +13 -0
- package/dist/lib/ai/index.d.ts.map +1 -0
- package/dist/lib/ai/index.js +11 -0
- package/dist/lib/ai/index.js.map +1 -0
- package/dist/lib/ai/llm-client.d.ts +37 -0
- package/dist/lib/ai/llm-client.d.ts.map +1 -0
- package/dist/lib/ai/llm-client.js +225 -0
- package/dist/lib/ai/llm-client.js.map +1 -0
- package/dist/lib/ai/reasoner.d.ts +11 -0
- package/dist/lib/ai/reasoner.d.ts.map +1 -0
- package/dist/lib/ai/reasoner.js +246 -0
- package/dist/lib/ai/reasoner.js.map +1 -0
- package/dist/lib/ai/setup.d.ts +40 -0
- package/dist/lib/ai/setup.d.ts.map +1 -0
- package/dist/lib/ai/setup.js +154 -0
- package/dist/lib/ai/setup.js.map +1 -0
- package/dist/lib/ai/types.d.ts +135 -0
- package/dist/lib/ai/types.d.ts.map +1 -0
- package/dist/lib/ai/types.js +39 -0
- package/dist/lib/ai/types.js.map +1 -0
- package/dist/lib/colony-subscriber.d.ts +15 -12
- package/dist/lib/colony-subscriber.d.ts.map +1 -1
- package/dist/lib/colony-subscriber.js +146 -65
- package/dist/lib/colony-subscriber.js.map +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +18 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/conflict-analyzer.d.ts +33 -0
- package/dist/lib/conflict-analyzer.d.ts.map +1 -0
- package/dist/lib/conflict-analyzer.js +114 -0
- package/dist/lib/conflict-analyzer.js.map +1 -0
- package/dist/lib/conflict-renderer.d.ts +7 -0
- package/dist/lib/conflict-renderer.d.ts.map +1 -0
- package/dist/lib/conflict-renderer.js +162 -0
- package/dist/lib/conflict-renderer.js.map +1 -0
- package/dist/lib/conflict-tier.d.ts +20 -0
- package/dist/lib/conflict-tier.d.ts.map +1 -0
- package/dist/lib/conflict-tier.js +49 -0
- package/dist/lib/conflict-tier.js.map +1 -0
- package/dist/lib/crypto.js +1 -1
- package/dist/lib/crypto.js.map +1 -1
- package/dist/lib/daily-bridge.d.ts.map +1 -1
- package/dist/lib/daily-bridge.js +3 -2
- package/dist/lib/daily-bridge.js.map +1 -1
- package/dist/lib/git-events-subscriber.d.ts +59 -0
- package/dist/lib/git-events-subscriber.d.ts.map +1 -0
- package/dist/lib/git-events-subscriber.js +779 -0
- package/dist/lib/git-events-subscriber.js.map +1 -0
- package/dist/lib/git.d.ts +15 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +180 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +14 -9
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/graph.d.ts +23 -0
- package/dist/lib/graph.d.ts.map +1 -0
- package/dist/lib/graph.js +134 -0
- package/dist/lib/graph.js.map +1 -0
- package/dist/lib/hub.d.ts +31 -0
- package/dist/lib/hub.d.ts.map +1 -0
- package/dist/lib/hub.js +92 -0
- package/dist/lib/hub.js.map +1 -0
- package/dist/lib/regex-utils.d.ts +6 -0
- package/dist/lib/regex-utils.d.ts.map +1 -0
- package/dist/lib/regex-utils.js +24 -0
- package/dist/lib/regex-utils.js.map +1 -0
- package/dist/lib/remote-drift.d.ts +60 -0
- package/dist/lib/remote-drift.d.ts.map +1 -0
- package/dist/lib/remote-drift.js +225 -0
- package/dist/lib/remote-drift.js.map +1 -0
- package/dist/lib/repo-scanner.d.ts +0 -4
- package/dist/lib/repo-scanner.d.ts.map +1 -1
- package/dist/lib/repo-scanner.js +2 -1
- package/dist/lib/repo-scanner.js.map +1 -1
- package/dist/lib/salvage-analyzer.d.ts.map +1 -1
- package/dist/lib/salvage-analyzer.js +2 -3
- package/dist/lib/salvage-analyzer.js.map +1 -1
- package/dist/lib/security.d.ts +17 -0
- package/dist/lib/security.d.ts.map +1 -1
- package/dist/lib/security.js +34 -1
- package/dist/lib/security.js.map +1 -1
- package/dist/lib/session-logger.d.ts +54 -0
- package/dist/lib/session-logger.d.ts.map +1 -0
- package/dist/lib/session-logger.js +136 -0
- package/dist/lib/session-logger.js.map +1 -0
- package/dist/storage/adapter.d.ts +4 -0
- package/dist/storage/adapter.d.ts.map +1 -1
- package/dist/storage/branch-registry-store.d.ts +13 -0
- package/dist/storage/branch-registry-store.d.ts.map +1 -0
- package/dist/storage/branch-registry-store.js +2 -0
- package/dist/storage/branch-registry-store.js.map +1 -0
- package/dist/storage/factory.d.ts +4 -0
- package/dist/storage/factory.d.ts.map +1 -1
- package/dist/storage/factory.js +25 -9
- package/dist/storage/factory.js.map +1 -1
- package/dist/storage/index.d.ts +5 -5
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +5 -6
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/json-branch-registry-store.d.ts +19 -0
- package/dist/storage/json-branch-registry-store.d.ts.map +1 -0
- package/dist/storage/json-branch-registry-store.js +112 -0
- package/dist/storage/json-branch-registry-store.js.map +1 -0
- package/dist/storage/local.d.ts +2 -6
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/local.js +13 -76
- package/dist/storage/local.js.map +1 -1
- package/dist/storage/memory-branch-registry-store.d.ts +16 -0
- package/dist/storage/memory-branch-registry-store.d.ts.map +1 -0
- package/dist/storage/memory-branch-registry-store.js +65 -0
- package/dist/storage/memory-branch-registry-store.js.map +1 -0
- package/dist/storage/mycmail-adapter.d.ts.map +1 -1
- package/dist/storage/mycmail-adapter.js +4 -6
- package/dist/storage/mycmail-adapter.js.map +1 -1
- package/dist/storage/supabase-registry-sync-client-impl.d.ts +46 -0
- package/dist/storage/supabase-registry-sync-client-impl.d.ts.map +1 -0
- package/dist/storage/supabase-registry-sync-client-impl.js +322 -0
- package/dist/storage/supabase-registry-sync-client-impl.js.map +1 -0
- package/dist/storage/supabase-registry-sync-client.d.ts +9 -0
- package/dist/storage/supabase-registry-sync-client.d.ts.map +1 -0
- package/dist/storage/supabase-registry-sync-client.js +2 -0
- package/dist/storage/supabase-registry-sync-client.js.map +1 -0
- package/dist/storage/supabase.d.ts +8 -46
- package/dist/storage/supabase.d.ts.map +1 -1
- package/dist/storage/supabase.js +30 -342
- package/dist/storage/supabase.js.map +1 -1
- package/dist/tui/screen.d.ts.map +1 -1
- package/dist/tui/screen.js +5 -3
- package/dist/tui/screen.js.map +1 -1
- 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
|
|
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
|
-
* -
|
|
13
|
-
*
|
|
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
|
|
34
|
-
*
|
|
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
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
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
|
|
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"}
|