spidersan 0.6.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 +42 -52
- package/README.md +238 -3
- 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 +260 -277
- 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 -41
- 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/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 +134 -63
- package/dist/commands/pulse.js.map +1 -1
- package/dist/commands/queen.d.ts.map +1 -1
- package/dist/commands/queen.js +11 -7
- 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/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/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/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/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/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 +11 -0
- package/dist/lib/security.d.ts.map +1 -1
- package/dist/lib/security.js +24 -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/git-messages.d.ts +53 -0
- package/dist/storage/git-messages.d.ts.map +1 -0
- package/dist/storage/git-messages.js +376 -0
- package/dist/storage/git-messages.js.map +1 -0
- package/dist/storage/index.d.ts +5 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +5 -0
- 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-messages.d.ts +37 -0
- package/dist/storage/local-messages.d.ts.map +1 -0
- package/dist/storage/local-messages.js +151 -0
- package/dist/storage/local-messages.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/message-adapter.d.ts +86 -0
- package/dist/storage/message-adapter.d.ts.map +1 -0
- package/dist/storage/message-adapter.js +28 -0
- package/dist/storage/message-adapter.js.map +1 -0
- package/dist/storage/message-factory.d.ts +36 -0
- package/dist/storage/message-factory.d.ts.map +1 -0
- package/dist/storage/message-factory.js +99 -0
- package/dist/storage/message-factory.js.map +1 -0
- package/dist/storage/mycmail-adapter.d.ts +38 -0
- package/dist/storage/mycmail-adapter.d.ts.map +1 -0
- package/dist/storage/mycmail-adapter.js +300 -0
- package/dist/storage/mycmail-adapter.js.map +1 -0
- 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 +92 -90
package/CHANGELOG.md
CHANGED
|
@@ -5,68 +5,58 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [0.9.0] - 2026-05-11
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **`spidersan pulse --remote-drift`** — proactive remote drift detection. Fetches `origin`, identifies the drift zone (files touched by remote commits local doesn't have), cross-references against (a) the registered branch file list with tier classification and (b) unstaged working-tree files (rebase-continue blocker risk). Gracefully degrades when offline, detached HEAD, mid-rebase, or no remote branch. Supports `--json`, `--hub-sync` (post to Hub on risk), `--strict` (exit 1 on overlap). Pre-push hook integration: `spidersan pulse --remote-drift --strict`. Closes the proactive gap exposed by the 2026-05-11 rebase-sync-chaos incident — 7 sangit gold pairs cover the reactive patterns; this command warns before the first push attempt.
|
|
13
|
+
- **`src/lib/remote-drift.ts`** — pure library exporting `getDriftZone`, `getUnstagedTrackedFiles`, `classifyDriftZone`, `computeDriftResult`. Extracted so `watch --fetch-poll` can reuse the primitives without importing from the command layer.
|
|
14
|
+
- **Architecture DEEPENING-8** — contract at `docs/arch/contracts/DEEPENING-8-remote-drift.md`; 15 new tests in `tests/remote-drift.test.ts`.
|
|
15
|
+
|
|
16
|
+
### Architecture (DEEPENING series — all in this release cycle)
|
|
17
|
+
|
|
18
|
+
- **DEEPENING-3: `src/lib/conflict-analyzer.ts`** — pure `analyzeConflicts() → ConflictReport`; `classifierSource` enum and `useSymbolAware` flag as H10 affordances. `conflicts.ts` reduced from 68 to 2 `console.log` calls.
|
|
19
|
+
- **DEEPENING-4: `src/lib/git.ts`** — canonical git operations module; `getCurrentBranch` deduplication (8× → 1), plus `getChangedFiles`, `getFileAtRef`, `getRemoteHead`, `getAheadBehind`, `GitError`. All git calls use `execFileSync` argv arrays.
|
|
20
|
+
- **DEEPENING-5: `src/lib/hub.ts`** — single `HubClient` with injectable `HubAdapter`; `HUB_URL` defined once (was in 3+ files). Stray `HUB_URL` in `torrent.ts` also removed.
|
|
21
|
+
- **DEEPENING-6: `src/lib/conflict-renderer.ts`** — pure `renderConflictReport()` → `string`; zero side effects; makes conflict detection testable without stdout capture.
|
|
22
|
+
- **DEEPENING-7: `src/lib/graph.ts`** — pure `buildConflictGraph`, `topologicalSort`, `calculateBlockingCounts`; first test coverage for merge-order logic (11 tests).
|
|
23
|
+
- **DEEPENING-1: `src/storage/` split** — `BranchRegistryStore` + `JsonBranchRegistryStore` + `MemoryBranchRegistryStore` (test double) + `SupabaseRegistrySyncClient`. `StorageAdapter` kept as `@deprecated` composing shim; on-disk JSON format unchanged.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
11
26
|
|
|
12
|
-
|
|
13
|
-
|
|
27
|
+
- `vitest.config.ts` — excludes `conflict-tier.test.ts` (uses `node:test` runner, not vitest)
|
|
28
|
+
|
|
29
|
+
### Tests
|
|
30
|
+
|
|
31
|
+
- **139 tests, 31 test files** — up from 84 tests / ~20 files before this cycle. All pass.
|
|
32
|
+
|
|
33
|
+
— 4 new tables on treebird-runtime staging (`spider_decision_stream`, `spider_pattern_weights`, `spider_pattern_corrections`, `spider_agent_trust`). HMAC gate trigger on decision stream, optimistic version lock + weight ceiling (≤0.95) triggers on pattern weights, SECURITY DEFINER functions for decay/tombstone/resurface/trust-upsert. `last_promoted_at` column on `spider_pattern_weights` (SANGIT-08 curriculum sync). Migration: `20260504000000_realtime_apprenticeship.sql` · commit `7392776`.
|
|
34
|
+
- **pg_cron schedules for decay + tombstone** — `spider-decay-daily` (03:00 UTC daily) and `spider-tombstone-weekly` (04:00 UTC Sunday) registered on staging. Idempotent unschedule guard. Migration: `20260509000001_pg_cron_spider_decay_tombstone.sql` · authored by watsan-m5 · commit `d8d09f9`.
|
|
14
35
|
|
|
15
36
|
### Fixed
|
|
16
|
-
- **RLS:
|
|
37
|
+
- **RLS: FOR ALL → per-op split** — `service_role_write_patterns` and `service_role_write_trust` were `FOR ALL`; replaced with separate INSERT / UPDATE / DELETE policies per table (migration `20260509000000_sangit02_rls_and_uniqueness_fixes.sql` · commit `9843107`).
|
|
38
|
+
- **NULL uniqueness gap on `spider_agent_trust`** — `UNIQUE(actor_machine, repo)` did not prevent duplicate rows when `repo IS NULL` (PostgreSQL NULL ≠ NULL in UNIQUE constraints). `ON CONFLICT(actor_machine, repo)` silently skipped upsert for cross-repo trust rows. Fix: dropped composite constraint, replaced with two partial unique indexes (`idx_sat_machine_repo_scoped WHERE repo IS NOT NULL`, `idx_sat_machine_repo_global WHERE repo IS NULL`). Updated `spider_update_agent_trust` to branch on `p_repo IS NULL` with correct partial-index conflict targets.
|
|
39
|
+
- **`spider_apply_decay` RETURNING bug** — was returning post-update `base_weight` for both `old_weight` and `new_weight`. Fixed with CTE to capture pre-update weight before the UPDATE fires.
|
|
40
|
+
- **`SET search_path = ''`** added to all 4 SECURITY DEFINER functions and all 3 trigger functions (consistent hardening; prevents schema injection).
|
|
17
41
|
|
|
18
|
-
|
|
42
|
+
|
|
43
|
+
- **CI: Security tests failing silently** — Added `git config user.name/email` so git-messages and git-injection tests pass in CI
|
|
44
|
+
- **CI: Lint failures swallowed** — Removed `|| true` and `continue-on-error: true` from lint step; lint now blocks CI
|
|
45
|
+
- **Publish: No tests before npm publish** — Added `npm test -- --run` to publish workflow so broken releases cannot ship
|
|
46
|
+
- **Publish: Bad version input ignored** — Removed `continue-on-error` from `npm version` step; invalid semver now fails the workflow
|
|
19
47
|
|
|
20
48
|
### Added
|
|
21
|
-
- **
|
|
22
|
-
- **
|
|
23
|
-
- **
|
|
24
|
-
- **
|
|
25
|
-
- **Daily bridge**: `spidersan daily` — branch-aware daily collab entry bridge (L2)
|
|
26
|
-
- **PR conflict detection**: `spidersan conflicts --pr <num>` — detect conflicts against a specific open PR
|
|
27
|
-
- **Stale auto-cleanup**: `spidersan stale --auto-cleanup` — non-interactive batch branch removal
|
|
28
|
-
- **Cross-machine registry sync**: `spidersan registry-sync` — push/pull branch registry to/from Supabase (F1/F3)
|
|
29
|
-
- **GitHub branch inventory**: `spidersan github-sync` — fetch branch/PR/CI status from GitHub (F2/F4)
|
|
30
|
-
- **Sync advisor**: `spidersan sync-advisor` — scan repos and recommend push/pull actions
|
|
31
|
-
- **TUI Dashboard** (Phase A): 4-panel blessed UI with ecosystem overview, conflict map, activity feed, and merge queue
|
|
32
|
-
- **MCP Wave 3 ecosystem tools**: additional MCP server tools for ecosystem-level operations
|
|
33
|
-
- **Toak MCP**: toak MCP server now loads correctly in Copilot CLI via `scripts/toak-mcp-wrapper.sh`
|
|
34
|
-
- **Dawn script**: `bin/dawn.sh` — fleet agent session startup (git sync, vault, colony, inbox)
|
|
35
|
-
- **Close script**: `bin/close.sh` — session close ceremony with pending task generation
|
|
36
|
-
- **`.myctoak/registry.json`**: spidersan table ownership declaration for MycToak
|
|
49
|
+
- **CI: Node.js version matrix** — Tests now run on Node 18, 20, and 22
|
|
50
|
+
- **CI: npm audit step** — `npm audit --audit-level=high` runs on every build
|
|
51
|
+
- **CI: MCP server test job** — New `test-mcp` job builds and tests the MCP server in CI
|
|
52
|
+
- **Publish: Dry-run verification** — `npm publish --dry-run` validates package contents before actual publish
|
|
37
53
|
|
|
38
54
|
### Changed
|
|
39
|
-
- **
|
|
40
|
-
- **Privacy**: `homedir()` fallback in `conflicts.ts`, `queen.ts`, `watch.ts` — safe to publish to npm
|
|
41
|
-
- **TOAK_AGENT_ID**: now auto-injected via vault key — no manual prefix required
|
|
42
|
-
- **ready-check**: WIP markers are advisory only; only branch file conflicts block merges
|
|
43
|
-
- **Colony vars**: falls back to `SUPABASE_URL`/`SUPABASE_KEY` if `COLONY_*` vars not set
|
|
44
|
-
- **Sync**: remote branches included in orphan detection
|
|
45
|
-
|
|
46
|
-
### Performance
|
|
47
|
-
- **O(1) file overlap**: Set pre-computation in `buildConflictGraph`, `watch`, `torrent`, `ready-check` (was O(n²))
|
|
48
|
-
- **AST traversal ~6× speedup**: TreeCursor-based traversal replacing recursive walk
|
|
49
|
-
- **N+1 elimination**: `conflicts --wake` branchMap pre-fetch; `cleanup` bulk patch
|
|
50
|
-
- **Batch Supabase**: `pushRegistry` batched upserts; stale notifications batched
|
|
51
|
-
- **`findByFiles` optimization**: Array intersection via Set lookup in local storage
|
|
55
|
+
- **auto-register workflow**: Deduplicated `spidersan init` calls (3 → 1)
|
|
52
56
|
|
|
53
|
-
###
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
- Colony subscriber: TypeScript strict type fixes; `agent_label` added to `ColonySignalRow`
|
|
57
|
-
- Sync advisor: suppress git stderr noise; include remote branches
|
|
58
|
-
- Doctor: ignore comments in `.env` Supabase check; add `*.key` to `.gitignore`
|
|
59
|
-
- `rebase-helper` command registered in CLI
|
|
60
|
-
- Migrations: idempotent for shared DB deployment
|
|
61
|
-
- Conflicts: exclude `node_modules` and build dirs from scan
|
|
62
|
-
|
|
63
|
-
### Security
|
|
64
|
-
- **Path traversal**: `stale`, `rescue`, storage utilities — second-order path validation
|
|
65
|
-
- **Command injection**: `git-messages.ts` hardened with `execFileSync`/argument arrays; `git shell executions` sanitized (#67)
|
|
66
|
-
- **TUI markup injection**: `escapeBlessed()` applied throughout dashboard
|
|
67
|
-
- **Input validation**: `register`, `conflicts --cleanup`, `rescue --symbols` — all input sources validated
|
|
68
|
-
- **Prototype pollution**: `deepMerge` throws on `__proto__`/`constructor` keys
|
|
69
|
-
- **execSync→execFileSync**: `register.ts` fully refactored; remaining `execSync` instances replaced
|
|
57
|
+
### Documentation
|
|
58
|
+
- Test coverage analysis (`docs/TEST_COVERAGE_ANALYSIS.md`)
|
|
59
|
+
- CI/CD workflow coverage analysis (`docs/CI_CD_COVERAGE_ANALYSIS.md`)
|
|
70
60
|
|
|
71
61
|
## [0.4.5] - 2026-02-18
|
|
72
62
|
### Added
|
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
## 🎯 The Problem
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
Multi-agent teams working across branches inevitably collide — overlapping files, unclear merge order, rogue abandoned branches. The bigger the fleet, the worse the chaos.
|
|
23
23
|
|
|
24
24
|
## 🕷️ The Solution
|
|
25
25
|
|
|
@@ -106,6 +106,68 @@ spidersan merge-order
|
|
|
106
106
|
| `spidersan log` | Show branch operation history (local activity log) |
|
|
107
107
|
| `spidersan daily` | Show branch-relevant entries from daily collab logs |
|
|
108
108
|
| `spidersan rebase-helper` | Detect and guide through local git rebase states |
|
|
109
|
+
| `spidersan git-watch` | Subscribe to GitHub webhook events — cross-machine push/PR/create/delete with AI conflict routing |
|
|
110
|
+
|
|
111
|
+
### 🧠 AI Commands (Gemma 4 / LM Studio)
|
|
112
|
+
|
|
113
|
+
Ask spidersan questions about your repo state — powered by a local LLM with an embedded gitops playbook.
|
|
114
|
+
|
|
115
|
+
| Command | Description |
|
|
116
|
+
|---------|-------------|
|
|
117
|
+
| `spidersan context` | Build full repo context (registry, conflicts, colony, git) |
|
|
118
|
+
| `spidersan ask "<question>"` | Ask a question — get actionable gitops advice with commands |
|
|
119
|
+
| `spidersan advise` | Get proactive recommendations based on current repo state |
|
|
120
|
+
| `spidersan explain <branch>` | Explain what a branch does, its risk, and next steps |
|
|
121
|
+
| `spidersan ai-ping` | Test LLM connectivity and latency |
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Get AI-powered advice
|
|
125
|
+
spidersan ask "I have 3 branches touching auth.ts — what should I do?"
|
|
126
|
+
|
|
127
|
+
# Proactive recommendations
|
|
128
|
+
spidersan advise
|
|
129
|
+
|
|
130
|
+
# Understand a mystery branch
|
|
131
|
+
spidersan explain feat/strange-refactor
|
|
132
|
+
|
|
133
|
+
# Flags
|
|
134
|
+
spidersan context --json --verbose --repo ~/Dev/other-repo
|
|
135
|
+
spidersan ask "merge strategy?" --provider copilot
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Features:**
|
|
139
|
+
- 🏠 **Local-first**: Defaults to Gemma 4 26B on LM Studio (no API key needed)
|
|
140
|
+
- 🔒 **Privacy**: Code context never leaves your machine unless you opt into remote providers
|
|
141
|
+
- 📋 **18-scenario playbook**: PHC-optimized command reference covering all spidersan workflows
|
|
142
|
+
- 🔧 **MCP integration**: All AI commands available as MCP tools (27 total)
|
|
143
|
+
- 🧠 **Training data**: Use `/spidersan-gold` skill to mine gold pairs for fine-tuning — see [spidersan-ai](https://github.com/treebird7/spidersan-ai)
|
|
144
|
+
|
|
145
|
+
### 🤖 Remote Bot (Cross-Machine Git Operations)
|
|
146
|
+
|
|
147
|
+
Trigger git operations on a remote machine from any agent — no SSH needed.
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# Start the bot daemon (listens for /commands via smalltoak)
|
|
151
|
+
envoak vault inject --key GIT_BOT_ENABLED -- spidersan bot
|
|
152
|
+
|
|
153
|
+
# One-shot: process pending commands and exit (good for cron)
|
|
154
|
+
spidersan bot --once
|
|
155
|
+
|
|
156
|
+
# Manage watched repos
|
|
157
|
+
spidersan bot add myrepo --path ~/Dev/myrepo --branch main --push src/
|
|
158
|
+
spidersan bot repos
|
|
159
|
+
spidersan bot remove myrepo
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**How it works:** An agent on M2 wants to push `spidersan-ai` from M5. They send `/push spidersan-ai` via smalltoak. The bot running on M5 picks it up, executes `git push`, and replies with the result. Tier-based permissions gate which agents can trigger which operations.
|
|
163
|
+
|
|
164
|
+
| Command | Description |
|
|
165
|
+
|---------|-------------|
|
|
166
|
+
| `spidersan bot` | Start remote git ops daemon (polls smalltoak) |
|
|
167
|
+
| `spidersan bot --once` | Process pending commands once and exit |
|
|
168
|
+
| `spidersan bot add` | Register a repo for bot management |
|
|
169
|
+
| `spidersan bot repos` | List managed repos |
|
|
170
|
+
| `spidersan bot remove` | Unregister a repo |
|
|
109
171
|
|
|
110
172
|
### 🌐 Multi-Repo & Cloud Commands
|
|
111
173
|
|
|
@@ -118,8 +180,38 @@ spidersan merge-order
|
|
|
118
180
|
| `spidersan cross-conflicts` | Detect file conflicts across machines via Supabase |
|
|
119
181
|
| `spidersan github-sync` | Fetch branch/PR/CI status from GitHub for configured repos |
|
|
120
182
|
| `spidersan pulse` | Sync from Colony then show active conflicts (quick health-check) |
|
|
183
|
+
| `spidersan pulse --remote-drift` | Fetch origin + detect remote drift zone; cross-ref against registry and unstaged files |
|
|
184
|
+
|
|
185
|
+
### 📡 Remote Drift Detection
|
|
186
|
+
|
|
187
|
+
`spidersan pulse --remote-drift` closes the gap between registry-level conflict detection and single-agent divergence:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# Check if origin has advanced past local HEAD
|
|
191
|
+
spidersan pulse --remote-drift
|
|
192
|
+
|
|
193
|
+
# Machine-readable output
|
|
194
|
+
spidersan pulse --remote-drift --json
|
|
195
|
+
|
|
196
|
+
# Post alert to Hub if registered or unstaged files are in the drift zone
|
|
197
|
+
spidersan pulse --remote-drift --hub-sync
|
|
198
|
+
|
|
199
|
+
# Exit 1 if any drift risk — use as a pre-push gate
|
|
200
|
+
spidersan pulse --remote-drift --strict
|
|
201
|
+
|
|
202
|
+
# As a pre-push hook:
|
|
203
|
+
# .git/hooks/pre-push
|
|
204
|
+
spidersan pulse --remote-drift --strict || { echo "Fetch + resolve drift first"; exit 1; }
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**What it detects:**
|
|
208
|
+
- 📥 Remote commits that local doesn't have (the *drift zone*)
|
|
209
|
+
- 🟠/🔴 Registered files in the drift zone → rebase conflict risk, classified by tier
|
|
210
|
+
- ⚠️ Unstaged tracked files in the drift zone → `git rebase --continue` blocker risk (even after resolving conflict markers — fix: `git checkout HEAD -- <file>`)
|
|
211
|
+
|
|
212
|
+
**Graceful degradation:** offline, detached HEAD, mid-rebase, no remote branch — all print a warning and continue without exit 1.
|
|
213
|
+
|
|
121
214
|
|
|
122
|
-
### 👑 Queen Mode (Parallel Dispatch)
|
|
123
215
|
|
|
124
216
|
Dispatch sub-spidersans to run ground jobs across multiple repos in parallel:
|
|
125
217
|
|
|
@@ -194,7 +286,74 @@ spidersan auto status
|
|
|
194
286
|
spidersan auto stop
|
|
195
287
|
```
|
|
196
288
|
|
|
197
|
-
###
|
|
289
|
+
### 🔔 git-watch — GitHub Webhook Notifications
|
|
290
|
+
|
|
291
|
+
Cross-machine push/delete notifications via a GitHub org webhook → Supabase edge function → `spidersan_git_events` table. Each machine runs a polling daemon that reacts to events: auto-abandons deleted branches in the registry, warns to `spidersan pulse` on pushes.
|
|
292
|
+
|
|
293
|
+
**Infrastructure (one-time setup):**
|
|
294
|
+
|
|
295
|
+
1. **Deploy edge function** to your Supabase runtime project:
|
|
296
|
+
```bash
|
|
297
|
+
supabase functions deploy spidersan-webhook --no-verify-jwt --project-ref <runtime-ref>
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
2. **Set edge function secret** (`SPIDERSAN_WEBHOOK_SECRET`) via the Supabase dashboard or CLI.
|
|
301
|
+
|
|
302
|
+
3. **Apply the migration** (`supabase/migrations/20260421000000_spidersan_git_events.sql`) to your runtime project.
|
|
303
|
+
|
|
304
|
+
4. **Create a GitHub org webhook:**
|
|
305
|
+
- URL: `https://<runtime-ref>.supabase.co/functions/v1/spidersan-webhook`
|
|
306
|
+
- Content type: `application/json`
|
|
307
|
+
- Secret: your `SPIDERSAN_WEBHOOK_SECRET` value
|
|
308
|
+
- Events: **Pushes**, **Pull requests**, **Branch or tag creation**, **Branch or tag deletion**
|
|
309
|
+
|
|
310
|
+
**Running the daemon on each machine:**
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
# One-shot catch-up (useful for cron / CI)
|
|
314
|
+
SUPABASE_URL=https://<runtime-ref>.supabase.co \
|
|
315
|
+
SUPABASE_KEY=<anon-key> \
|
|
316
|
+
spidersan git-watch --once
|
|
317
|
+
|
|
318
|
+
# Persistent daemon (poll every 30s)
|
|
319
|
+
SUPABASE_URL=https://<runtime-ref>.supabase.co \
|
|
320
|
+
SUPABASE_KEY=<anon-key> \
|
|
321
|
+
spidersan git-watch --interval 30000
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
**macOS LaunchAgent (keep-alive daemon):**
|
|
325
|
+
|
|
326
|
+
```xml
|
|
327
|
+
<!-- ~/Library/LaunchAgents/com.treebird.spidersan-git-watch.plist -->
|
|
328
|
+
<key>ProgramArguments</key>
|
|
329
|
+
<array>
|
|
330
|
+
<string>/usr/local/bin/node</string>
|
|
331
|
+
<string>/path/to/spidersan-oss/dist/bin/spidersan.js</string>
|
|
332
|
+
<string>git-watch</string>
|
|
333
|
+
<string>--interval</string>
|
|
334
|
+
<string>30000</string>
|
|
335
|
+
</array>
|
|
336
|
+
<key>EnvironmentVariables</key>
|
|
337
|
+
<dict>
|
|
338
|
+
<key>SUPABASE_URL</key><string>https://<runtime-ref>.supabase.co</string>
|
|
339
|
+
<key>SUPABASE_KEY</key><string><anon-key></string>
|
|
340
|
+
</dict>
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
launchctl load ~/Library/LaunchAgents/com.treebird.spidersan-git-watch.plist
|
|
345
|
+
tail -f /tmp/spidersan-git-watch.log
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
**What each event does:**
|
|
349
|
+
|
|
350
|
+
| Event | Action |
|
|
351
|
+
|-------|--------|
|
|
352
|
+
| `push` | Logs to `activity.jsonl`, warns to run `spidersan pulse`. Detects new gold pairs in `sql-tree/pairs/` and `ts-tree/pairs/` — emits `🌱 tree_pairs_ready` cue to `~/.spidersan/git-events-pending.jsonl` |
|
|
353
|
+
| `delete` | Marks branch `abandoned` in registry, archives to `~/.spidersan/archive.jsonl` |
|
|
354
|
+
| `pull_request` / `create` | Logged only |
|
|
355
|
+
|
|
356
|
+
### 🤖 GitHub Actions Auto-Register
|
|
198
357
|
|
|
199
358
|
**Zero-effort branch registration via GitHub workflow**
|
|
200
359
|
|
|
@@ -251,6 +410,82 @@ spidersan rescue --abandon path/to/file.ts
|
|
|
251
410
|
|
|
252
411
|
---
|
|
253
412
|
|
|
413
|
+
## 🪝 Claude Code Hook Recipes
|
|
414
|
+
|
|
415
|
+
Wire Spidersan into Claude Code's hook system so conflict checks, AI advice, and registry syncs happen **automatically** — no agent needs to remember to run them.
|
|
416
|
+
|
|
417
|
+
### How it works
|
|
418
|
+
|
|
419
|
+
Claude Code's `~/.claude/settings.json` supports `PreToolUse` hooks that fire before any Bash command and can hard-block execution (returning `continue: false`) or inject context back to the model. Spidersan's `--strict` flag exits with code `1` on TIER 2+ conflicts, making it a natural hard-stop gate.
|
|
420
|
+
|
|
421
|
+
### The full recipe
|
|
422
|
+
|
|
423
|
+
Add these hooks to `~/.claude/settings.json`:
|
|
424
|
+
|
|
425
|
+
```json
|
|
426
|
+
{
|
|
427
|
+
"hooks": {
|
|
428
|
+
"PreToolUse": [
|
|
429
|
+
{
|
|
430
|
+
"matcher": "Bash",
|
|
431
|
+
"hooks": [
|
|
432
|
+
{
|
|
433
|
+
"type": "command",
|
|
434
|
+
"command": "jq -r '.tool_input.command // empty' | grep -qE '\\brm\\b' && jq -n '{\"continue\":false,\"stopReason\":\"🛑 rm blocked — verify paths and request explicit permission.\"}' || echo '{}'"
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
"type": "command",
|
|
438
|
+
"command": "bash -c 'cmd=$(jq -r \".tool_input.command // empty\"); if echo \"$cmd\" | grep -qE \"\\\\bgit\\\\s+push\\\\b\"; then if ! spidersan conflicts --tier 2 --strict 2>/dev/null; then jq -n \"{\\\"continue\\\":false,\\\"stopReason\\\":\\\"🕷️ Spidersan: TIER 2+ conflict detected. Run spidersan conflicts to review before pushing.\\\"}\"; exit 0; fi; advice=$(spidersan advise 2>/dev/null | head -30); [ -n \"$advice\" ] && jq -n --arg a \"$advice\" \"{\\\"hookSpecificOutput\\\":{\\\"hookEventName\\\":\\\"PreToolUse\\\",\\\"additionalContext\\\":\\\"🕷️ Spidersan pre-push advice:\\\\n\\($a)\\\"}}\" || echo \"{}\"; elif echo \"$cmd\" | grep -qE \"\\\\bgit\\\\s+(merge|rebase)\\\\b\"; then if ! spidersan conflicts --tier 3 --strict 2>/dev/null; then jq -n \"{\\\"continue\\\":false,\\\"stopReason\\\":\\\"🕷️ Spidersan: TIER 3 critical conflict detected. Run spidersan conflicts --tier 3 before merging.\\\"}\"; exit 0; fi; echo \"{}\"; else echo \"{}\"; fi'"
|
|
439
|
+
}
|
|
440
|
+
]
|
|
441
|
+
}
|
|
442
|
+
],
|
|
443
|
+
"PostToolUse": [
|
|
444
|
+
{
|
|
445
|
+
"matcher": "Bash",
|
|
446
|
+
"hooks": [
|
|
447
|
+
{
|
|
448
|
+
"type": "command",
|
|
449
|
+
"command": "bash -c 'cmd=$(jq -r \".tool_input.command // empty\"); echo \"$cmd\" | grep -qE \"\\\\bgit\\\\s+push\\\\b\" && spidersan registry-sync --push 2>/dev/null &; echo \"{}\"'",
|
|
450
|
+
"async": true
|
|
451
|
+
}
|
|
452
|
+
]
|
|
453
|
+
}
|
|
454
|
+
]
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
### What each hook does
|
|
460
|
+
|
|
461
|
+
| Hook | Trigger | Action |
|
|
462
|
+
|------|---------|--------|
|
|
463
|
+
| `rm` guard | Any `rm` command | **Hard block** — requires explicit permission |
|
|
464
|
+
| Pre-push conflict check | `git push` | Runs `spidersan conflicts --tier 2 --strict` — **hard blocks** if TIER 2+ found |
|
|
465
|
+
| Pre-push AI advice | `git push` (after conflict check passes) | Runs `spidersan advise`, injects recommendations into model context |
|
|
466
|
+
| Pre-merge conflict check | `git merge` / `git rebase` | Runs `spidersan conflicts --tier 3 --strict` — **hard blocks** on critical files |
|
|
467
|
+
| Post-push registry sync | `git push` (success) | Runs `spidersan registry-sync --push` async — keeps fleet registry fresh |
|
|
468
|
+
|
|
469
|
+
### Conflict tiers
|
|
470
|
+
|
|
471
|
+
| Tier | Threshold | Example files | Gate used on |
|
|
472
|
+
|------|-----------|---------------|--------------|
|
|
473
|
+
| TIER 1 WARN | Low risk | `.md`, `.css`, `.json` | Not blocked |
|
|
474
|
+
| TIER 2 PAUSE | Medium risk | `package.json`, migrations, types | `git push` |
|
|
475
|
+
| TIER 3 BLOCK | Critical | `.env`, auth files, core lib | `git merge`, `git rebase` |
|
|
476
|
+
|
|
477
|
+
### Installing
|
|
478
|
+
|
|
479
|
+
```bash
|
|
480
|
+
# Merge into your global settings (preserves existing config)
|
|
481
|
+
cp ~/.claude/settings.json ~/.claude/settings.json.bak
|
|
482
|
+
# Then add the hooks block above — or use /update-config in Claude Code
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
The hooks are global (`~/.claude/settings.json`) so they apply across all projects automatically. Every agent on the machine benefits without per-repo setup.
|
|
486
|
+
|
|
487
|
+
---
|
|
488
|
+
|
|
254
489
|
## 📖 Documentation
|
|
255
490
|
|
|
256
491
|
- [Core Guide](docs/CORE.md) - Public feature set and core workflows
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spidersan.d.ts","sourceRoot":"","sources":["../../src/bin/spidersan.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"spidersan.d.ts","sourceRoot":"","sources":["../../src/bin/spidersan.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,eAAe,CAAC;AAyDvB,eAAO,MAAM,WAAW,eAAkB,CAAC"}
|
package/dist/bin/spidersan.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import 'dotenv/config';
|
|
8
8
|
import { Command } from 'commander';
|
|
9
9
|
import { createRequire } from 'module';
|
|
10
|
-
import { initCommand, registerCommand, listCommand, conflictsCommand, mergeOrderCommand, readyCheckCommand, dependsCommand, staleCommand, cleanupCommand, rescueCommand, abandonCommand, mergedCommand, syncCommand, watchCommand, doctorCommand, configCommand, autoCommand, welcomeCommand, registrySyncCommand, crossConflictsCommand, pulseCommand, torrentCommand, queenCommand, githubSyncCommand, syncAdvisorCommand, dashboardCommand, rebaseHelperCommand, logCommand, dailyCommand, loadEcosystemCommands, getEcosystemStatus, } from '../commands/index.js';
|
|
10
|
+
import { initCommand, registerCommand, listCommand, conflictsCommand, mergeOrderCommand, readyCheckCommand, dependsCommand, staleCommand, cleanupCommand, rescueCommand, abandonCommand, mergedCommand, syncCommand, watchCommand, doctorCommand, configCommand, autoCommand, welcomeCommand, registrySyncCommand, crossConflictsCommand, pulseCommand, gitWatchCommand, fleetStatusCommand, torrentCommand, queenCommand, botCommand, githubSyncCommand, syncAdvisorCommand, dashboardCommand, rebaseHelperCommand, logCommand, dailyCommand, contextCommand, askCommand, adviseCommand, explainCommand, aiPingCommand, aiSetupCommand, aiTelemetryCommand, checkOptOutCommand, loadEcosystemCommands, getEcosystemStatus, } from '../commands/index.js';
|
|
11
11
|
import { checkForUpdates } from '../lib/update-check.js';
|
|
12
12
|
// Read version from package.json dynamically
|
|
13
13
|
const require = createRequire(import.meta.url);
|
|
@@ -73,14 +73,26 @@ program.addCommand(welcomeCommand);
|
|
|
73
73
|
program.addCommand(registrySyncCommand);
|
|
74
74
|
program.addCommand(crossConflictsCommand);
|
|
75
75
|
program.addCommand(pulseCommand);
|
|
76
|
+
program.addCommand(gitWatchCommand);
|
|
77
|
+
program.addCommand(fleetStatusCommand);
|
|
76
78
|
program.addCommand(torrentCommand);
|
|
77
79
|
program.addCommand(queenCommand);
|
|
80
|
+
program.addCommand(botCommand);
|
|
78
81
|
program.addCommand(githubSyncCommand);
|
|
79
82
|
program.addCommand(syncAdvisorCommand());
|
|
80
83
|
program.addCommand(dashboardCommand);
|
|
81
84
|
program.addCommand(rebaseHelperCommand);
|
|
82
85
|
logCommand(program);
|
|
83
86
|
dailyCommand(program);
|
|
87
|
+
// AI Core commands
|
|
88
|
+
program.addCommand(contextCommand);
|
|
89
|
+
program.addCommand(askCommand);
|
|
90
|
+
program.addCommand(adviseCommand);
|
|
91
|
+
program.addCommand(explainCommand);
|
|
92
|
+
program.addCommand(aiPingCommand);
|
|
93
|
+
program.addCommand(aiSetupCommand);
|
|
94
|
+
program.addCommand(aiTelemetryCommand);
|
|
95
|
+
program.addCommand(checkOptOutCommand);
|
|
84
96
|
async function main() {
|
|
85
97
|
const ecosystemCommands = await loadEcosystemCommands();
|
|
86
98
|
ecosystemCommands.forEach((command) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spidersan.js","sourceRoot":"","sources":["../../src/bin/spidersan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spidersan.js","sourceRoot":"","sources":["../../src/bin/spidersan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abandon.d.ts","sourceRoot":"","sources":["../../src/commands/abandon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"abandon.d.ts","sourceRoot":"","sources":["../../src/commands/abandon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,cAAc,SAqCrB,CAAC"}
|
package/dist/commands/abandon.js
CHANGED
|
@@ -4,17 +4,9 @@
|
|
|
4
4
|
* Mark a branch as abandoned.
|
|
5
5
|
*/
|
|
6
6
|
import { Command } from 'commander';
|
|
7
|
-
import { execFileSync } from 'child_process';
|
|
8
7
|
import { getStorage } from '../storage/index.js';
|
|
9
8
|
import { logActivity } from '../lib/activity.js';
|
|
10
|
-
|
|
11
|
-
try {
|
|
12
|
-
return execFileSync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { encoding: 'utf-8' }).trim();
|
|
13
|
-
}
|
|
14
|
-
catch {
|
|
15
|
-
throw new Error('Not in a git repository');
|
|
16
|
-
}
|
|
17
|
-
}
|
|
9
|
+
import { getCurrentBranch } from '../lib/git.js';
|
|
18
10
|
export const abandonCommand = new Command('abandon')
|
|
19
11
|
.description('Mark a branch as abandoned')
|
|
20
12
|
.argument('[branch]', 'Branch to abandon (default: current)')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abandon.js","sourceRoot":"","sources":["../../src/commands/abandon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"abandon.js","sourceRoot":"","sources":["../../src/commands/abandon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KAC/C,WAAW,CAAC,4BAA4B,CAAC;KACzC,QAAQ,CAAC,UAAU,EAAE,sCAAsC,CAAC;KAC5D,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC;KAC1C,MAAM,CAAC,WAAW,EAAE,+CAA+C,CAAC;KACpE,MAAM,CAAC,KAAK,EAAE,SAA6B,EAAE,OAAO,EAAE,EAAE;IACrD,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IAEnC,IAAI,CAAC,MAAM,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,IAAI,gBAAgB,EAAE,CAAC;IAEnD,yBAAyB;IACzB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,aAAa,UAAU,0BAA0B,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,sBAAsB,UAAU,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;QAC9D,OAAO;IACX,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAErD,IAAI,OAAO,EAAE,CAAC;QACV,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,wBAAwB,UAAU,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* spidersan ask / advise / explain / ai-setup — AI-powered gitops reasoning
|
|
3
|
+
*
|
|
4
|
+
* Thin CLI wrappers over reason() from the AI core.
|
|
5
|
+
* Builds context, sends to LLM (Gemma 4 default), streams response.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
export declare const askCommand: Command;
|
|
9
|
+
export declare const adviseCommand: Command;
|
|
10
|
+
export declare const explainCommand: Command;
|
|
11
|
+
export declare const aiPingCommand: Command;
|
|
12
|
+
export declare const aiSetupCommand: Command;
|
|
13
|
+
export declare const aiTelemetryCommand: Command;
|
|
14
|
+
export declare const checkOptOutCommand: Command;
|
|
15
|
+
//# sourceMappingURL=ai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/commands/ai.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqCpC,eAAO,MAAM,UAAU,SAiCnB,CAAC;AAIL,eAAO,MAAM,aAAa,SA+BtB,CAAC;AAIL,eAAO,MAAM,cAAc,SA0BvB,CAAC;AAIL,eAAO,MAAM,aAAa,SAgBtB,CAAC;AAmGL,eAAO,MAAM,cAAc,SAsNvB,CAAC;AAIL,eAAO,MAAM,kBAAkB,SAkC3B,CAAC;AAML,eAAO,MAAM,kBAAkB,SAkC3B,CAAC"}
|