@creativeintelligence/abbie 0.1.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/bin/dev.js +61 -0
- package/bin/run.js +66 -0
- package/dist/cli/base-command.d.ts +71 -0
- package/dist/cli/base-command.d.ts.map +1 -0
- package/dist/cli/base-command.js +200 -0
- package/dist/cli/commands/agent/list.d.ts +12 -0
- package/dist/cli/commands/agent/list.d.ts.map +1 -0
- package/dist/cli/commands/agent/list.js +62 -0
- package/dist/cli/commands/annotation/ack.d.ts +18 -0
- package/dist/cli/commands/annotation/ack.d.ts.map +1 -0
- package/dist/cli/commands/annotation/ack.js +29 -0
- package/dist/cli/commands/annotation/create.d.ts +23 -0
- package/dist/cli/commands/annotation/create.d.ts.map +1 -0
- package/dist/cli/commands/annotation/create.js +58 -0
- package/dist/cli/commands/annotation/events.d.ts +18 -0
- package/dist/cli/commands/annotation/events.d.ts.map +1 -0
- package/dist/cli/commands/annotation/events.js +50 -0
- package/dist/cli/commands/annotation/export.d.ts +19 -0
- package/dist/cli/commands/annotation/export.d.ts.map +1 -0
- package/dist/cli/commands/annotation/export.js +56 -0
- package/dist/cli/commands/annotation/import.d.ts +21 -0
- package/dist/cli/commands/annotation/import.d.ts.map +1 -0
- package/dist/cli/commands/annotation/import.js +84 -0
- package/dist/cli/commands/annotation/ingest.d.ts +24 -0
- package/dist/cli/commands/annotation/ingest.d.ts.map +1 -0
- package/dist/cli/commands/annotation/ingest.js +95 -0
- package/dist/cli/commands/annotation/list.d.ts +18 -0
- package/dist/cli/commands/annotation/list.d.ts.map +1 -0
- package/dist/cli/commands/annotation/list.js +45 -0
- package/dist/cli/commands/annotation/reply.d.ts +20 -0
- package/dist/cli/commands/annotation/reply.d.ts.map +1 -0
- package/dist/cli/commands/annotation/reply.js +38 -0
- package/dist/cli/commands/annotation/resolve.d.ts +18 -0
- package/dist/cli/commands/annotation/resolve.d.ts.map +1 -0
- package/dist/cli/commands/annotation/resolve.js +29 -0
- package/dist/cli/commands/auto/index.d.ts +53 -0
- package/dist/cli/commands/auto/index.d.ts.map +1 -0
- package/dist/cli/commands/auto/index.js +609 -0
- package/dist/cli/commands/backlog/add.d.ts +22 -0
- package/dist/cli/commands/backlog/add.d.ts.map +1 -0
- package/dist/cli/commands/backlog/add.js +65 -0
- package/dist/cli/commands/backlog/claim.d.ts +19 -0
- package/dist/cli/commands/backlog/claim.d.ts.map +1 -0
- package/dist/cli/commands/backlog/claim.js +45 -0
- package/dist/cli/commands/backlog/complete.d.ts +18 -0
- package/dist/cli/commands/backlog/complete.d.ts.map +1 -0
- package/dist/cli/commands/backlog/complete.js +42 -0
- package/dist/cli/commands/backlog/list.d.ts +20 -0
- package/dist/cli/commands/backlog/list.d.ts.map +1 -0
- package/dist/cli/commands/backlog/list.js +91 -0
- package/dist/cli/commands/backlog/pick.d.ts +18 -0
- package/dist/cli/commands/backlog/pick.d.ts.map +1 -0
- package/dist/cli/commands/backlog/pick.js +42 -0
- package/dist/cli/commands/backlog/sync.d.ts +24 -0
- package/dist/cli/commands/backlog/sync.d.ts.map +1 -0
- package/dist/cli/commands/backlog/sync.js +109 -0
- package/dist/cli/commands/bootstrap.d.ts +20 -0
- package/dist/cli/commands/bootstrap.d.ts.map +1 -0
- package/dist/cli/commands/bootstrap.js +177 -0
- package/dist/cli/commands/bridge.d.ts +37 -0
- package/dist/cli/commands/bridge.d.ts.map +1 -0
- package/dist/cli/commands/bridge.js +208 -0
- package/dist/cli/commands/context/inject.d.ts +18 -0
- package/dist/cli/commands/context/inject.d.ts.map +1 -0
- package/dist/cli/commands/context/inject.js +89 -0
- package/dist/cli/commands/context/list.d.ts +19 -0
- package/dist/cli/commands/context/list.d.ts.map +1 -0
- package/dist/cli/commands/context/list.js +96 -0
- package/dist/cli/commands/context/publish.d.ts +23 -0
- package/dist/cli/commands/context/publish.d.ts.map +1 -0
- package/dist/cli/commands/context/publish.js +72 -0
- package/dist/cli/commands/context/read.d.ts +19 -0
- package/dist/cli/commands/context/read.d.ts.map +1 -0
- package/dist/cli/commands/context/read.js +74 -0
- package/dist/cli/commands/daemon.d.ts +56 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -0
- package/dist/cli/commands/daemon.js +1465 -0
- package/dist/cli/commands/digest/index.d.ts +47 -0
- package/dist/cli/commands/digest/index.d.ts.map +1 -0
- package/dist/cli/commands/digest/index.js +191 -0
- package/dist/cli/commands/docs/lint.d.ts +18 -0
- package/dist/cli/commands/docs/lint.d.ts.map +1 -0
- package/dist/cli/commands/docs/lint.js +82 -0
- package/dist/cli/commands/docs/sync.d.ts +19 -0
- package/dist/cli/commands/docs/sync.d.ts.map +1 -0
- package/dist/cli/commands/docs/sync.js +76 -0
- package/dist/cli/commands/doctor.d.ts +23 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +220 -0
- package/dist/cli/commands/find/index.d.ts +25 -0
- package/dist/cli/commands/find/index.d.ts.map +1 -0
- package/dist/cli/commands/find/index.js +266 -0
- package/dist/cli/commands/gc.d.ts +29 -0
- package/dist/cli/commands/gc.d.ts.map +1 -0
- package/dist/cli/commands/gc.js +211 -0
- package/dist/cli/commands/history/index.d.ts +49 -0
- package/dist/cli/commands/history/index.d.ts.map +1 -0
- package/dist/cli/commands/history/index.js +210 -0
- package/dist/cli/commands/hooks/guard.d.ts +20 -0
- package/dist/cli/commands/hooks/guard.d.ts.map +1 -0
- package/dist/cli/commands/hooks/guard.js +53 -0
- package/dist/cli/commands/hooks/list.d.ts +22 -0
- package/dist/cli/commands/hooks/list.d.ts.map +1 -0
- package/dist/cli/commands/hooks/list.js +97 -0
- package/dist/cli/commands/hooks/lock.d.ts +19 -0
- package/dist/cli/commands/hooks/lock.d.ts.map +1 -0
- package/dist/cli/commands/hooks/lock.js +36 -0
- package/dist/cli/commands/hooks/status.d.ts +22 -0
- package/dist/cli/commands/hooks/status.d.ts.map +1 -0
- package/dist/cli/commands/hooks/status.js +41 -0
- package/dist/cli/commands/hooks/test.d.ts +30 -0
- package/dist/cli/commands/hooks/test.d.ts.map +1 -0
- package/dist/cli/commands/hooks/test.js +153 -0
- package/dist/cli/commands/hooks/unlock.d.ts +22 -0
- package/dist/cli/commands/hooks/unlock.d.ts.map +1 -0
- package/dist/cli/commands/hooks/unlock.js +44 -0
- package/dist/cli/commands/index.d.ts +36 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +228 -0
- package/dist/cli/commands/list.d.ts +18 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.e2e.test.d.ts +1 -0
- package/dist/cli/commands/list.e2e.test.js +47 -0
- package/dist/cli/commands/list.js +75 -0
- package/dist/cli/commands/login.d.ts +36 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +201 -0
- package/dist/cli/commands/logout.d.ts +22 -0
- package/dist/cli/commands/logout.d.ts.map +1 -0
- package/dist/cli/commands/logout.js +30 -0
- package/dist/cli/commands/panes/broker.d.ts +17 -0
- package/dist/cli/commands/panes/broker.d.ts.map +1 -0
- package/dist/cli/commands/panes/broker.js +57 -0
- package/dist/cli/commands/panes/pipe-sink.d.ts +17 -0
- package/dist/cli/commands/panes/pipe-sink.d.ts.map +1 -0
- package/dist/cli/commands/panes/pipe-sink.js +90 -0
- package/dist/cli/commands/panes/snapshot.d.ts +20 -0
- package/dist/cli/commands/panes/snapshot.d.ts.map +1 -0
- package/dist/cli/commands/panes/snapshot.js +125 -0
- package/dist/cli/commands/plan.d.ts +21 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.e2e.test.d.ts +1 -0
- package/dist/cli/commands/plan.e2e.test.js +74 -0
- package/dist/cli/commands/plan.js +57 -0
- package/dist/cli/commands/preview/index.d.ts +38 -0
- package/dist/cli/commands/preview/index.d.ts.map +1 -0
- package/dist/cli/commands/preview/index.js +228 -0
- package/dist/cli/commands/preview/init.d.ts +25 -0
- package/dist/cli/commands/preview/init.d.ts.map +1 -0
- package/dist/cli/commands/preview/init.js +159 -0
- package/dist/cli/commands/preview/list.d.ts +19 -0
- package/dist/cli/commands/preview/list.d.ts.map +1 -0
- package/dist/cli/commands/preview/list.js +87 -0
- package/dist/cli/commands/preview/status.d.ts +21 -0
- package/dist/cli/commands/preview/status.d.ts.map +1 -0
- package/dist/cli/commands/preview/status.js +102 -0
- package/dist/cli/commands/preview/stop.d.ts +22 -0
- package/dist/cli/commands/preview/stop.d.ts.map +1 -0
- package/dist/cli/commands/preview/stop.js +127 -0
- package/dist/cli/commands/preview/sync.d.ts +23 -0
- package/dist/cli/commands/preview/sync.d.ts.map +1 -0
- package/dist/cli/commands/preview/sync.js +144 -0
- package/dist/cli/commands/preview/watch.d.ts +24 -0
- package/dist/cli/commands/preview/watch.d.ts.map +1 -0
- package/dist/cli/commands/preview/watch.js +153 -0
- package/dist/cli/commands/project/add.d.ts +19 -0
- package/dist/cli/commands/project/add.d.ts.map +1 -0
- package/dist/cli/commands/project/add.js +90 -0
- package/dist/cli/commands/project/list.d.ts +14 -0
- package/dist/cli/commands/project/list.d.ts.map +1 -0
- package/dist/cli/commands/project/list.js +113 -0
- package/dist/cli/commands/project/remove.d.ts +18 -0
- package/dist/cli/commands/project/remove.d.ts.map +1 -0
- package/dist/cli/commands/project/remove.js +46 -0
- package/dist/cli/commands/push.d.ts +24 -0
- package/dist/cli/commands/push.d.ts.map +1 -0
- package/dist/cli/commands/push.js +93 -0
- package/dist/cli/commands/reference/add.d.ts +20 -0
- package/dist/cli/commands/reference/add.d.ts.map +1 -0
- package/dist/cli/commands/reference/add.js +231 -0
- package/dist/cli/commands/reference/delete.d.ts +18 -0
- package/dist/cli/commands/reference/delete.d.ts.map +1 -0
- package/dist/cli/commands/reference/delete.js +59 -0
- package/dist/cli/commands/reference/extract.d.ts +22 -0
- package/dist/cli/commands/reference/extract.d.ts.map +1 -0
- package/dist/cli/commands/reference/extract.js +321 -0
- package/dist/cli/commands/reference/list.d.ts +19 -0
- package/dist/cli/commands/reference/list.d.ts.map +1 -0
- package/dist/cli/commands/reference/list.js +100 -0
- package/dist/cli/commands/reference/normalize.d.ts +19 -0
- package/dist/cli/commands/reference/normalize.d.ts.map +1 -0
- package/dist/cli/commands/reference/normalize.js +66 -0
- package/dist/cli/commands/reference/open.d.ts +20 -0
- package/dist/cli/commands/reference/open.d.ts.map +1 -0
- package/dist/cli/commands/reference/open.js +81 -0
- package/dist/cli/commands/reference/save.d.ts +22 -0
- package/dist/cli/commands/reference/save.d.ts.map +1 -0
- package/dist/cli/commands/reference/save.js +84 -0
- package/dist/cli/commands/reference/search.d.ts +18 -0
- package/dist/cli/commands/reference/search.d.ts.map +1 -0
- package/dist/cli/commands/reference/search.js +71 -0
- package/dist/cli/commands/reference/show.d.ts +19 -0
- package/dist/cli/commands/reference/show.d.ts.map +1 -0
- package/dist/cli/commands/reference/show.js +148 -0
- package/dist/cli/commands/reference/update-index.d.ts +16 -0
- package/dist/cli/commands/reference/update-index.d.ts.map +1 -0
- package/dist/cli/commands/reference/update-index.js +82 -0
- package/dist/cli/commands/reference/update.d.ts +23 -0
- package/dist/cli/commands/reference/update.d.ts.map +1 -0
- package/dist/cli/commands/reference/update.js +120 -0
- package/dist/cli/commands/report/blocked.d.ts +28 -0
- package/dist/cli/commands/report/blocked.d.ts.map +1 -0
- package/dist/cli/commands/report/blocked.js +145 -0
- package/dist/cli/commands/report/complete.d.ts +32 -0
- package/dist/cli/commands/report/complete.d.ts.map +1 -0
- package/dist/cli/commands/report/complete.js +163 -0
- package/dist/cli/commands/report/progress.d.ts +28 -0
- package/dist/cli/commands/report/progress.d.ts.map +1 -0
- package/dist/cli/commands/report/progress.js +128 -0
- package/dist/cli/commands/report/start.d.ts +26 -0
- package/dist/cli/commands/report/start.d.ts.map +1 -0
- package/dist/cli/commands/report/start.js +126 -0
- package/dist/cli/commands/resource/acquire.d.ts +21 -0
- package/dist/cli/commands/resource/acquire.d.ts.map +1 -0
- package/dist/cli/commands/resource/acquire.js +90 -0
- package/dist/cli/commands/resource/list.d.ts +15 -0
- package/dist/cli/commands/resource/list.d.ts.map +1 -0
- package/dist/cli/commands/resource/list.js +61 -0
- package/dist/cli/commands/resource/release.d.ts +18 -0
- package/dist/cli/commands/resource/release.d.ts.map +1 -0
- package/dist/cli/commands/resource/release.js +50 -0
- package/dist/cli/commands/resource/wait.d.ts +21 -0
- package/dist/cli/commands/resource/wait.d.ts.map +1 -0
- package/dist/cli/commands/resource/wait.js +73 -0
- package/dist/cli/commands/review.d.ts +27 -0
- package/dist/cli/commands/review.d.ts.map +1 -0
- package/dist/cli/commands/review.js +84 -0
- package/dist/cli/commands/session/attach.d.ts +32 -0
- package/dist/cli/commands/session/attach.d.ts.map +1 -0
- package/dist/cli/commands/session/attach.js +168 -0
- package/dist/cli/commands/session/await.d.ts +19 -0
- package/dist/cli/commands/session/await.d.ts.map +1 -0
- package/dist/cli/commands/session/await.js +68 -0
- package/dist/cli/commands/session/complete.d.ts +20 -0
- package/dist/cli/commands/session/complete.d.ts.map +1 -0
- package/dist/cli/commands/session/complete.js +83 -0
- package/dist/cli/commands/session/create.d.ts +20 -0
- package/dist/cli/commands/session/create.d.ts.map +1 -0
- package/dist/cli/commands/session/create.js +74 -0
- package/dist/cli/commands/session/heartbeat.d.ts +18 -0
- package/dist/cli/commands/session/heartbeat.d.ts.map +1 -0
- package/dist/cli/commands/session/heartbeat.js +49 -0
- package/dist/cli/commands/session/list.d.ts +25 -0
- package/dist/cli/commands/session/list.d.ts.map +1 -0
- package/dist/cli/commands/session/list.js +252 -0
- package/dist/cli/commands/session/mark-done.d.ts +20 -0
- package/dist/cli/commands/session/mark-done.d.ts.map +1 -0
- package/dist/cli/commands/session/mark-done.js +116 -0
- package/dist/cli/commands/session/mine.d.ts +22 -0
- package/dist/cli/commands/session/mine.d.ts.map +1 -0
- package/dist/cli/commands/session/mine.js +160 -0
- package/dist/cli/commands/session/replay.d.ts +84 -0
- package/dist/cli/commands/session/replay.d.ts.map +1 -0
- package/dist/cli/commands/session/replay.js +524 -0
- package/dist/cli/commands/session/run.d.ts +29 -0
- package/dist/cli/commands/session/run.d.ts.map +1 -0
- package/dist/cli/commands/session/run.js +38 -0
- package/dist/cli/commands/session/show.d.ts +23 -0
- package/dist/cli/commands/session/show.d.ts.map +1 -0
- package/dist/cli/commands/session/show.js +156 -0
- package/dist/cli/commands/session/start.d.ts +43 -0
- package/dist/cli/commands/session/start.d.ts.map +1 -0
- package/dist/cli/commands/session/start.js +515 -0
- package/dist/cli/commands/session/state/cleanup.d.ts +16 -0
- package/dist/cli/commands/session/state/cleanup.d.ts.map +1 -0
- package/dist/cli/commands/session/state/cleanup.js +49 -0
- package/dist/cli/commands/session/state/end.d.ts +16 -0
- package/dist/cli/commands/session/state/end.d.ts.map +1 -0
- package/dist/cli/commands/session/state/end.js +39 -0
- package/dist/cli/commands/session/state/get.d.ts +16 -0
- package/dist/cli/commands/session/state/get.d.ts.map +1 -0
- package/dist/cli/commands/session/state/get.js +52 -0
- package/dist/cli/commands/session/state/init.d.ts +17 -0
- package/dist/cli/commands/session/state/init.d.ts.map +1 -0
- package/dist/cli/commands/session/state/init.js +43 -0
- package/dist/cli/commands/session/state/list.d.ts +17 -0
- package/dist/cli/commands/session/state/list.d.ts.map +1 -0
- package/dist/cli/commands/session/state/list.js +52 -0
- package/dist/cli/commands/session/state/update.d.ts +17 -0
- package/dist/cli/commands/session/state/update.d.ts.map +1 -0
- package/dist/cli/commands/session/state/update.js +97 -0
- package/dist/cli/commands/session/stop.d.ts +20 -0
- package/dist/cli/commands/session/stop.d.ts.map +1 -0
- package/dist/cli/commands/session/stop.js +110 -0
- package/dist/cli/commands/session/view.d.ts +24 -0
- package/dist/cli/commands/session/view.d.ts.map +1 -0
- package/dist/cli/commands/session/view.js +145 -0
- package/dist/cli/commands/start.d.ts +36 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +228 -0
- package/dist/cli/commands/state/dump.d.ts +28 -0
- package/dist/cli/commands/state/dump.d.ts.map +1 -0
- package/dist/cli/commands/state/dump.js +314 -0
- package/dist/cli/commands/status.d.ts +56 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +200 -0
- package/dist/cli/commands/sync.d.ts +38 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +153 -0
- package/dist/cli/commands/trace/export.d.ts +22 -0
- package/dist/cli/commands/trace/export.d.ts.map +1 -0
- package/dist/cli/commands/trace/export.js +212 -0
- package/dist/cli/commands/triage/claim.d.ts +23 -0
- package/dist/cli/commands/triage/claim.d.ts.map +1 -0
- package/dist/cli/commands/triage/claim.js +186 -0
- package/dist/cli/commands/triage/list.d.ts +22 -0
- package/dist/cli/commands/triage/list.d.ts.map +1 -0
- package/dist/cli/commands/triage/list.js +112 -0
- package/dist/cli/commands/triage/next.d.ts +18 -0
- package/dist/cli/commands/triage/next.d.ts.map +1 -0
- package/dist/cli/commands/triage/next.js +63 -0
- package/dist/cli/commands/triage/pull.d.ts +19 -0
- package/dist/cli/commands/triage/pull.d.ts.map +1 -0
- package/dist/cli/commands/triage/pull.js +82 -0
- package/dist/cli/commands/triage/stats.d.ts +16 -0
- package/dist/cli/commands/triage/stats.d.ts.map +1 -0
- package/dist/cli/commands/triage/stats.js +69 -0
- package/dist/cli/commands/tunnel/list.d.ts +16 -0
- package/dist/cli/commands/tunnel/list.d.ts.map +1 -0
- package/dist/cli/commands/tunnel/list.js +98 -0
- package/dist/cli/commands/tunnel/start.d.ts +24 -0
- package/dist/cli/commands/tunnel/start.d.ts.map +1 -0
- package/dist/cli/commands/tunnel/start.js +107 -0
- package/dist/cli/commands/tunnel/stop.d.ts +20 -0
- package/dist/cli/commands/tunnel/stop.d.ts.map +1 -0
- package/dist/cli/commands/tunnel/stop.js +90 -0
- package/dist/cli/commands/tunnel/url.d.ts +21 -0
- package/dist/cli/commands/tunnel/url.d.ts.map +1 -0
- package/dist/cli/commands/tunnel/url.js +70 -0
- package/dist/cli/commands/web/start.d.ts +20 -0
- package/dist/cli/commands/web/start.d.ts.map +1 -0
- package/dist/cli/commands/web/start.js +110 -0
- package/dist/cli/commands/windows/context.d.ts +18 -0
- package/dist/cli/commands/windows/context.d.ts.map +1 -0
- package/dist/cli/commands/windows/context.js +326 -0
- package/dist/cli/commands/windows/focus.d.ts +17 -0
- package/dist/cli/commands/windows/focus.d.ts.map +1 -0
- package/dist/cli/commands/windows/focus.js +103 -0
- package/dist/cli/commands/windows/list.d.ts +21 -0
- package/dist/cli/commands/windows/list.d.ts.map +1 -0
- package/dist/cli/commands/windows/list.js +172 -0
- package/dist/cli/commands/windows/map.d.ts +17 -0
- package/dist/cli/commands/windows/map.d.ts.map +1 -0
- package/dist/cli/commands/windows/map.js +168 -0
- package/dist/cli/commands/windows/read.d.ts +21 -0
- package/dist/cli/commands/windows/read.d.ts.map +1 -0
- package/dist/cli/commands/windows/read.js +241 -0
- package/dist/cli/commands/windows/search.d.ts +24 -0
- package/dist/cli/commands/windows/search.d.ts.map +1 -0
- package/dist/cli/commands/windows/search.js +171 -0
- package/dist/cli/commands/windows/show.d.ts +19 -0
- package/dist/cli/commands/windows/show.d.ts.map +1 -0
- package/dist/cli/commands/windows/show.js +165 -0
- package/dist/cli/commands/windows/watch.d.ts +19 -0
- package/dist/cli/commands/windows/watch.d.ts.map +1 -0
- package/dist/cli/commands/windows/watch.js +241 -0
- package/dist/lib/active-sessions.d.ts +278 -0
- package/dist/lib/active-sessions.d.ts.map +1 -0
- package/dist/lib/active-sessions.js +1165 -0
- package/dist/lib/agent-adapters.d.ts +89 -0
- package/dist/lib/agent-adapters.d.ts.map +1 -0
- package/dist/lib/agent-adapters.js +296 -0
- package/dist/lib/agent-sessions.d.ts +126 -0
- package/dist/lib/agent-sessions.d.ts.map +1 -0
- package/dist/lib/agent-sessions.js +566 -0
- package/dist/lib/agent-trace.d.ts +84 -0
- package/dist/lib/agent-trace.d.ts.map +1 -0
- package/dist/lib/agent-trace.js +377 -0
- package/dist/lib/analytics.d.ts +55 -0
- package/dist/lib/analytics.d.ts.map +1 -0
- package/dist/lib/analytics.js +155 -0
- package/dist/lib/annotations-convex.d.ts +33 -0
- package/dist/lib/annotations-convex.d.ts.map +1 -0
- package/dist/lib/annotations-convex.js +246 -0
- package/dist/lib/annotations.d.ts +247 -0
- package/dist/lib/annotations.d.ts.map +1 -0
- package/dist/lib/annotations.js +564 -0
- package/dist/lib/auto/discover.d.ts +45 -0
- package/dist/lib/auto/discover.d.ts.map +1 -0
- package/dist/lib/auto/discover.js +426 -0
- package/dist/lib/auto/ideate.d.ts +72 -0
- package/dist/lib/auto/ideate.d.ts.map +1 -0
- package/dist/lib/auto/ideate.js +299 -0
- package/dist/lib/auto/spawn.d.ts +55 -0
- package/dist/lib/auto/spawn.d.ts.map +1 -0
- package/dist/lib/auto/spawn.js +434 -0
- package/dist/lib/auto/workspace.d.ts +62 -0
- package/dist/lib/auto/workspace.d.ts.map +1 -0
- package/dist/lib/auto/workspace.js +229 -0
- package/dist/lib/backlog.d.ts +140 -0
- package/dist/lib/backlog.d.ts.map +1 -0
- package/dist/lib/backlog.js +317 -0
- package/dist/lib/backlog.test.d.ts +1 -0
- package/dist/lib/backlog.test.js +162 -0
- package/dist/lib/config-loader.d.ts +68 -0
- package/dist/lib/config-loader.d.ts.map +1 -0
- package/dist/lib/config-loader.js +323 -0
- package/dist/lib/config-sync/adapters/claude.d.ts +32 -0
- package/dist/lib/config-sync/adapters/claude.d.ts.map +1 -0
- package/dist/lib/config-sync/adapters/claude.js +66 -0
- package/dist/lib/config-sync/adapters/codex.d.ts +23 -0
- package/dist/lib/config-sync/adapters/codex.d.ts.map +1 -0
- package/dist/lib/config-sync/adapters/codex.js +117 -0
- package/dist/lib/config-sync/adapters/copilot.d.ts +37 -0
- package/dist/lib/config-sync/adapters/copilot.d.ts.map +1 -0
- package/dist/lib/config-sync/adapters/copilot.js +72 -0
- package/dist/lib/config-sync/adapters/gemini.d.ts +29 -0
- package/dist/lib/config-sync/adapters/gemini.d.ts.map +1 -0
- package/dist/lib/config-sync/adapters/gemini.js +62 -0
- package/dist/lib/config-sync/adapters/index.d.ts +16 -0
- package/dist/lib/config-sync/adapters/index.d.ts.map +1 -0
- package/dist/lib/config-sync/adapters/index.js +32 -0
- package/dist/lib/config-sync/adapters/opencode.d.ts +28 -0
- package/dist/lib/config-sync/adapters/opencode.d.ts.map +1 -0
- package/dist/lib/config-sync/adapters/opencode.js +83 -0
- package/dist/lib/config-sync/index.d.ts +74 -0
- package/dist/lib/config-sync/index.d.ts.map +1 -0
- package/dist/lib/config-sync/index.js +309 -0
- package/dist/lib/config-sync/types.d.ts +78 -0
- package/dist/lib/config-sync/types.d.ts.map +1 -0
- package/dist/lib/config-sync/types.js +5 -0
- package/dist/lib/config-sync/writer.d.ts +43 -0
- package/dist/lib/config-sync/writer.d.ts.map +1 -0
- package/dist/lib/config-sync/writer.js +159 -0
- package/dist/lib/content-sync/index.d.ts +103 -0
- package/dist/lib/content-sync/index.d.ts.map +1 -0
- package/dist/lib/content-sync/index.js +723 -0
- package/dist/lib/content-sync/types.d.ts +100 -0
- package/dist/lib/content-sync/types.d.ts.map +1 -0
- package/dist/lib/content-sync/types.js +5 -0
- package/dist/lib/contracts.d.ts +82 -0
- package/dist/lib/contracts.d.ts.map +1 -0
- package/dist/lib/contracts.js +119 -0
- package/dist/lib/convex.d.ts +16 -0
- package/dist/lib/convex.d.ts.map +1 -0
- package/dist/lib/convex.js +43 -0
- package/dist/lib/device.d.ts +10 -0
- package/dist/lib/device.d.ts.map +1 -0
- package/dist/lib/device.js +38 -0
- package/dist/lib/digest/index.d.ts +71 -0
- package/dist/lib/digest/index.d.ts.map +1 -0
- package/dist/lib/digest/index.js +428 -0
- package/dist/lib/docs/lint.d.ts +33 -0
- package/dist/lib/docs/lint.d.ts.map +1 -0
- package/dist/lib/docs/lint.js +249 -0
- package/dist/lib/docs/lint.test.d.ts +1 -0
- package/dist/lib/docs/lint.test.js +120 -0
- package/dist/lib/docs/sync.d.ts +22 -0
- package/dist/lib/docs/sync.d.ts.map +1 -0
- package/dist/lib/docs/sync.js +153 -0
- package/dist/lib/doctor/index.d.ts +70 -0
- package/dist/lib/doctor/index.d.ts.map +1 -0
- package/dist/lib/doctor/index.js +547 -0
- package/dist/lib/doctor/repos.d.ts +49 -0
- package/dist/lib/doctor/repos.d.ts.map +1 -0
- package/dist/lib/doctor/repos.js +322 -0
- package/dist/lib/doctor/templates.d.ts +20 -0
- package/dist/lib/doctor/templates.d.ts.map +1 -0
- package/dist/lib/doctor/templates.js +180 -0
- package/dist/lib/errors.d.ts +46 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +99 -0
- package/dist/lib/events.d.ts +206 -0
- package/dist/lib/events.d.ts.map +1 -0
- package/dist/lib/events.js +227 -0
- package/dist/lib/heartbeat.d.ts +106 -0
- package/dist/lib/heartbeat.d.ts.map +1 -0
- package/dist/lib/heartbeat.js +230 -0
- package/dist/lib/heartbeat.test.d.ts +1 -0
- package/dist/lib/heartbeat.test.js +124 -0
- package/dist/lib/hooks/adapters/claude.d.ts +28 -0
- package/dist/lib/hooks/adapters/claude.d.ts.map +1 -0
- package/dist/lib/hooks/adapters/claude.js +85 -0
- package/dist/lib/hooks/adapters/codex.d.ts +20 -0
- package/dist/lib/hooks/adapters/codex.d.ts.map +1 -0
- package/dist/lib/hooks/adapters/codex.js +77 -0
- package/dist/lib/hooks/adapters/copilot.d.ts +29 -0
- package/dist/lib/hooks/adapters/copilot.d.ts.map +1 -0
- package/dist/lib/hooks/adapters/copilot.js +110 -0
- package/dist/lib/hooks/context.d.ts +45 -0
- package/dist/lib/hooks/context.d.ts.map +1 -0
- package/dist/lib/hooks/context.js +155 -0
- package/dist/lib/hooks/index.d.ts +12 -0
- package/dist/lib/hooks/index.d.ts.map +1 -0
- package/dist/lib/hooks/index.js +15 -0
- package/dist/lib/hooks/registry.d.ts +30 -0
- package/dist/lib/hooks/registry.d.ts.map +1 -0
- package/dist/lib/hooks/registry.js +80 -0
- package/dist/lib/hooks/runner.d.ts +18 -0
- package/dist/lib/hooks/runner.d.ts.map +1 -0
- package/dist/lib/hooks/runner.js +188 -0
- package/dist/lib/hooks/types.d.ts +76 -0
- package/dist/lib/hooks/types.d.ts.map +1 -0
- package/dist/lib/hooks/types.js +2 -0
- package/dist/lib/index.test.d.ts +1 -0
- package/dist/lib/index.test.js +334 -0
- package/dist/lib/managed-session.d.ts +27 -0
- package/dist/lib/managed-session.d.ts.map +1 -0
- package/dist/lib/managed-session.js +105 -0
- package/dist/lib/math.d.ts +21 -0
- package/dist/lib/math.d.ts.map +1 -0
- package/dist/lib/math.js +109 -0
- package/dist/lib/math.test.d.ts +1 -0
- package/dist/lib/math.test.js +238 -0
- package/dist/lib/ngrok.d.ts +157 -0
- package/dist/lib/ngrok.d.ts.map +1 -0
- package/dist/lib/ngrok.js +339 -0
- package/dist/lib/nvim/discovery.d.ts +44 -0
- package/dist/lib/nvim/discovery.d.ts.map +1 -0
- package/dist/lib/nvim/discovery.js +140 -0
- package/dist/lib/nvim/discovery.test.d.ts +1 -0
- package/dist/lib/nvim/discovery.test.js +131 -0
- package/dist/lib/nvim/index.d.ts +7 -0
- package/dist/lib/nvim/index.d.ts.map +1 -0
- package/dist/lib/nvim/index.js +8 -0
- package/dist/lib/nvim/remote.d.ts +81 -0
- package/dist/lib/nvim/remote.d.ts.map +1 -0
- package/dist/lib/nvim/remote.js +136 -0
- package/dist/lib/nvim/remote.test.d.ts +1 -0
- package/dist/lib/nvim/remote.test.js +18 -0
- package/dist/lib/panes/broker.d.ts +130 -0
- package/dist/lib/panes/broker.d.ts.map +1 -0
- package/dist/lib/panes/broker.js +97 -0
- package/dist/lib/panes/index.d.ts +2 -0
- package/dist/lib/panes/index.d.ts.map +1 -0
- package/dist/lib/panes/index.js +1 -0
- package/dist/lib/panes/server.d.ts +17 -0
- package/dist/lib/panes/server.d.ts.map +1 -0
- package/dist/lib/panes/server.js +308 -0
- package/dist/lib/preview/detect.d.ts +21 -0
- package/dist/lib/preview/detect.d.ts.map +1 -0
- package/dist/lib/preview/detect.js +147 -0
- package/dist/lib/preview/index.d.ts +2 -0
- package/dist/lib/preview/index.d.ts.map +1 -0
- package/dist/lib/preview/index.js +1 -0
- package/dist/lib/preview/manager.d.ts +77 -0
- package/dist/lib/preview/manager.d.ts.map +1 -0
- package/dist/lib/preview/manager.js +369 -0
- package/dist/lib/preview/schema.d.ts +2 -0
- package/dist/lib/preview/schema.d.ts.map +1 -0
- package/dist/lib/preview/schema.js +32 -0
- package/dist/lib/preview/sprite.d.ts +85 -0
- package/dist/lib/preview/sprite.d.ts.map +1 -0
- package/dist/lib/preview/sprite.js +321 -0
- package/dist/lib/preview/watcher.d.ts +63 -0
- package/dist/lib/preview/watcher.d.ts.map +1 -0
- package/dist/lib/preview/watcher.js +185 -0
- package/dist/lib/process/index.d.ts +6 -0
- package/dist/lib/process/index.d.ts.map +1 -0
- package/dist/lib/process/index.js +5 -0
- package/dist/lib/process/snapshot.d.ts +48 -0
- package/dist/lib/process/snapshot.d.ts.map +1 -0
- package/dist/lib/process/snapshot.js +210 -0
- package/dist/lib/process/snapshot.test.d.ts +1 -0
- package/dist/lib/process/snapshot.test.js +127 -0
- package/dist/lib/project-identity.d.ts +16 -0
- package/dist/lib/project-identity.d.ts.map +1 -0
- package/dist/lib/project-identity.js +75 -0
- package/dist/lib/references.d.ts +146 -0
- package/dist/lib/references.d.ts.map +1 -0
- package/dist/lib/references.js +344 -0
- package/dist/lib/report.d.ts +129 -0
- package/dist/lib/report.d.ts.map +1 -0
- package/dist/lib/report.js +686 -0
- package/dist/lib/resources.d.ts +105 -0
- package/dist/lib/resources.d.ts.map +1 -0
- package/dist/lib/resources.js +321 -0
- package/dist/lib/resources.test.d.ts +1 -0
- package/dist/lib/resources.test.js +94 -0
- package/dist/lib/runner.d.ts +55 -0
- package/dist/lib/runner.d.ts.map +1 -0
- package/dist/lib/runner.js +1034 -0
- package/dist/lib/runner.test.d.ts +1 -0
- package/dist/lib/runner.test.js +234 -0
- package/dist/lib/session-artifacts.d.ts +46 -0
- package/dist/lib/session-artifacts.d.ts.map +1 -0
- package/dist/lib/session-artifacts.js +138 -0
- package/dist/lib/session-manager.d.ts +24 -0
- package/dist/lib/session-manager.d.ts.map +1 -0
- package/dist/lib/session-manager.js +119 -0
- package/dist/lib/session-manager.test.d.ts +1 -0
- package/dist/lib/session-manager.test.js +310 -0
- package/dist/lib/session-result.d.ts +40 -0
- package/dist/lib/session-result.d.ts.map +1 -0
- package/dist/lib/session-result.js +180 -0
- package/dist/lib/session-state.d.ts +77 -0
- package/dist/lib/session-state.d.ts.map +1 -0
- package/dist/lib/session-state.js +350 -0
- package/dist/lib/slack-workspace.d.ts +8 -0
- package/dist/lib/slack-workspace.d.ts.map +1 -0
- package/dist/lib/slack-workspace.js +20 -0
- package/dist/lib/tmux/bridge.d.ts +133 -0
- package/dist/lib/tmux/bridge.d.ts.map +1 -0
- package/dist/lib/tmux/bridge.js +315 -0
- package/dist/lib/tmux/context.d.ts +82 -0
- package/dist/lib/tmux/context.d.ts.map +1 -0
- package/dist/lib/tmux/context.js +239 -0
- package/dist/lib/tmux/context.test.d.ts +1 -0
- package/dist/lib/tmux/context.test.js +215 -0
- package/dist/lib/tmux/index.d.ts +8 -0
- package/dist/lib/tmux/index.d.ts.map +1 -0
- package/dist/lib/tmux/index.js +11 -0
- package/dist/lib/tmux/map.d.ts +57 -0
- package/dist/lib/tmux/map.d.ts.map +1 -0
- package/dist/lib/tmux/map.js +198 -0
- package/dist/lib/tmux/map.test.d.ts +1 -0
- package/dist/lib/tmux/map.test.js +80 -0
- package/dist/lib/tmux/panes.d.ts +27 -0
- package/dist/lib/tmux/panes.d.ts.map +1 -0
- package/dist/lib/tmux/panes.js +151 -0
- package/dist/lib/tmux/redaction.d.ts +57 -0
- package/dist/lib/tmux/redaction.d.ts.map +1 -0
- package/dist/lib/tmux/redaction.js +152 -0
- package/dist/lib/tmux/redaction.test.d.ts +1 -0
- package/dist/lib/tmux/redaction.test.js +183 -0
- package/dist/lib/triage-llm.d.ts +23 -0
- package/dist/lib/triage-llm.d.ts.map +1 -0
- package/dist/lib/triage-llm.js +269 -0
- package/dist/lib/triage-tracker.d.ts +72 -0
- package/dist/lib/triage-tracker.d.ts.map +1 -0
- package/dist/lib/triage-tracker.js +301 -0
- package/dist/lib/triage.d.ts +176 -0
- package/dist/lib/triage.d.ts.map +1 -0
- package/dist/lib/triage.js +487 -0
- package/dist/lib/types.d.ts +56 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +51 -0
- package/dist/lib/web/analytics.d.ts +63 -0
- package/dist/lib/web/analytics.js +168 -0
- package/dist/lib/web/server.d.ts +26 -0
- package/dist/lib/web/server.js +697 -0
- package/dist/lib/web/tmux-bridge.d.ts +7 -0
- package/dist/lib/web/tmux-bridge.js +7 -0
- package/dist/lib/windows/index.d.ts +3 -0
- package/dist/lib/windows/index.d.ts.map +1 -0
- package/dist/lib/windows/index.js +2 -0
- package/dist/lib/windows/inventory.d.ts +21 -0
- package/dist/lib/windows/inventory.d.ts.map +1 -0
- package/dist/lib/windows/inventory.js +263 -0
- package/dist/lib/windows/inventory.test.d.ts +1 -0
- package/dist/lib/windows/inventory.test.js +292 -0
- package/dist/lib/windows/types.d.ts +46 -0
- package/dist/lib/windows/types.d.ts.map +1 -0
- package/dist/lib/windows/types.js +1 -0
- package/dist/lib.d.ts +91 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +106 -0
- package/dist/web/app/@overlay/default.d.ts +1 -0
- package/dist/web/app/@overlay/default.js +3 -0
- package/dist/web/app/about/page.d.ts +1 -0
- package/dist/web/app/about/page.js +6 -0
- package/dist/web/app/layout.d.ts +7 -0
- package/dist/web/app/layout.js +19 -0
- package/dist/web/app/page.d.ts +1 -0
- package/dist/web/app/page.js +38 -0
- package/dist/web/app/settings/page.d.ts +1 -0
- package/dist/web/app/settings/page.js +6 -0
- package/dist/web/app/shortcuts/page.d.ts +1 -0
- package/dist/web/app/shortcuts/page.js +6 -0
- package/dist/web/atoms/sidebar.d.ts +16 -0
- package/dist/web/atoms/sidebar.js +58 -0
- package/dist/web/atoms/state.d.ts +24 -0
- package/dist/web/atoms/state.js +43 -0
- package/dist/web/components/command-palette.d.ts +6 -0
- package/dist/web/components/command-palette.js +297 -0
- package/dist/web/components/main-view.d.ts +1 -0
- package/dist/web/components/main-view.js +93 -0
- package/dist/web/components/overlay/page-overlay.d.ts +16 -0
- package/dist/web/components/overlay/page-overlay.js +84 -0
- package/dist/web/components/pane-view.d.ts +5 -0
- package/dist/web/components/pane-view.js +168 -0
- package/dist/web/components/project-files-view.d.ts +6 -0
- package/dist/web/components/project-files-view.js +205 -0
- package/dist/web/components/project-planning-view.d.ts +6 -0
- package/dist/web/components/project-planning-view.js +146 -0
- package/dist/web/components/session-view.d.ts +6 -0
- package/dist/web/components/session-view.js +211 -0
- package/dist/web/components/sessions-list-view.d.ts +1 -0
- package/dist/web/components/sessions-list-view.js +118 -0
- package/dist/web/components/sidebar/index.d.ts +9 -0
- package/dist/web/components/sidebar/index.js +29 -0
- package/dist/web/components/sidebar/kbd.d.ts +17 -0
- package/dist/web/components/sidebar/kbd.js +47 -0
- package/dist/web/components/sidebar/nav-group.d.ts +22 -0
- package/dist/web/components/sidebar/nav-group.js +43 -0
- package/dist/web/components/sidebar/nav-item.d.ts +17 -0
- package/dist/web/components/sidebar/nav-item.js +38 -0
- package/dist/web/components/sidebar/sidebar-header.d.ts +9 -0
- package/dist/web/components/sidebar/sidebar-header.js +18 -0
- package/dist/web/components/sidebar/sidebar-nav.d.ts +7 -0
- package/dist/web/components/sidebar/sidebar-nav.js +505 -0
- package/dist/web/components/sidebar/sidebar-search.d.ts +7 -0
- package/dist/web/components/sidebar/sidebar-search.js +18 -0
- package/dist/web/components/sidebar/sidebar-settings.d.ts +4 -0
- package/dist/web/components/sidebar/sidebar-settings.js +28 -0
- package/dist/web/components/sidebar/sidebar-transition.d.ts +12 -0
- package/dist/web/components/sidebar/sidebar-transition.js +58 -0
- package/dist/web/components/status-bar.d.ts +1 -0
- package/dist/web/components/status-bar.js +53 -0
- package/dist/web/components/terminal.d.ts +4 -0
- package/dist/web/components/terminal.js +324 -0
- package/dist/web/components/toast.d.ts +7 -0
- package/dist/web/components/toast.js +72 -0
- package/dist/web/hooks/use-keybindings.d.ts +30 -0
- package/dist/web/hooks/use-keybindings.js +322 -0
- package/dist/web/hooks/use-state.d.ts +11 -0
- package/dist/web/hooks/use-state.js +84 -0
- package/dist/web/lib/api.d.ts +179 -0
- package/dist/web/lib/api.js +79 -0
- package/dist/web/lib/paths.d.ts +2 -0
- package/dist/web/lib/paths.js +26 -0
- package/dist/web/lib/utils.d.ts +2 -0
- package/dist/web/lib/utils.js +5 -0
- package/dist/web/lib/ws.d.ts +18 -0
- package/dist/web/lib/ws.js +138 -0
- package/dist/web/next.config.d.ts +3 -0
- package/dist/web/next.config.js +9 -0
- package/extensions/abbie/index.ts +646 -0
- package/extensions/abbie/package.json +9 -0
- package/oclif.manifest.json +11676 -0
- package/package.json +101 -0
- package/scripts/generate-manifest.ts +44 -0
- package/src/cli/base-command.ts +233 -0
- package/src/cli/commands/__tests__/annotations.test.ts +704 -0
- package/src/cli/commands/__tests__/bridge.test.ts +101 -0
- package/src/cli/commands/__tests__/daemon.test.ts +79 -0
- package/src/cli/commands/agent/list.ts +75 -0
- package/src/cli/commands/annotation/ack.ts +37 -0
- package/src/cli/commands/annotation/create.ts +67 -0
- package/src/cli/commands/annotation/events.ts +63 -0
- package/src/cli/commands/annotation/export.ts +67 -0
- package/src/cli/commands/annotation/import.ts +98 -0
- package/src/cli/commands/annotation/ingest.ts +112 -0
- package/src/cli/commands/annotation/list.ts +57 -0
- package/src/cli/commands/annotation/reply.ts +46 -0
- package/src/cli/commands/annotation/resolve.ts +37 -0
- package/src/cli/commands/auto/index.ts +755 -0
- package/src/cli/commands/backlog/add.ts +74 -0
- package/src/cli/commands/backlog/claim.ts +53 -0
- package/src/cli/commands/backlog/complete.ts +51 -0
- package/src/cli/commands/backlog/list.ts +107 -0
- package/src/cli/commands/backlog/pick.ts +50 -0
- package/src/cli/commands/backlog/sync.ts +131 -0
- package/src/cli/commands/bootstrap.ts +205 -0
- package/src/cli/commands/bridge.ts +233 -0
- package/src/cli/commands/context/inject.ts +103 -0
- package/src/cli/commands/context/list.ts +112 -0
- package/src/cli/commands/context/publish.ts +83 -0
- package/src/cli/commands/context/read.ts +85 -0
- package/src/cli/commands/daemon.ts +1809 -0
- package/src/cli/commands/digest/index.ts +245 -0
- package/src/cli/commands/docs/lint.ts +93 -0
- package/src/cli/commands/docs/sync.ts +90 -0
- package/src/cli/commands/doctor.ts +267 -0
- package/src/cli/commands/find/index.ts +313 -0
- package/src/cli/commands/history/index.ts +257 -0
- package/src/cli/commands/hooks/guard.ts +71 -0
- package/src/cli/commands/hooks/list.ts +139 -0
- package/src/cli/commands/hooks/lock.ts +47 -0
- package/src/cli/commands/hooks/status.ts +56 -0
- package/src/cli/commands/hooks/test.ts +190 -0
- package/src/cli/commands/hooks/unlock.ts +56 -0
- package/src/cli/commands/list.e2e.test.ts +58 -0
- package/src/cli/commands/list.ts +96 -0
- package/src/cli/commands/login.ts +236 -0
- package/src/cli/commands/logout.ts +45 -0
- package/src/cli/commands/panes/broker.ts +68 -0
- package/src/cli/commands/panes/pipe-sink.ts +101 -0
- package/src/cli/commands/panes/snapshot.ts +156 -0
- package/src/cli/commands/plan.e2e.test.ts +90 -0
- package/src/cli/commands/plan.ts +68 -0
- package/src/cli/commands/preview/index.ts +282 -0
- package/src/cli/commands/preview/list.ts +116 -0
- package/src/cli/commands/preview/status.ts +137 -0
- package/src/cli/commands/preview/stop.ts +165 -0
- package/src/cli/commands/project/add.ts +110 -0
- package/src/cli/commands/project/list.ts +136 -0
- package/src/cli/commands/project/remove.ts +60 -0
- package/src/cli/commands/push.ts +115 -0
- package/src/cli/commands/reference/add.ts +266 -0
- package/src/cli/commands/reference/delete.ts +67 -0
- package/src/cli/commands/reference/extract.ts +389 -0
- package/src/cli/commands/reference/list.ts +117 -0
- package/src/cli/commands/reference/normalize.ts +90 -0
- package/src/cli/commands/reference/open.ts +92 -0
- package/src/cli/commands/reference/save.ts +103 -0
- package/src/cli/commands/reference/search.ts +85 -0
- package/src/cli/commands/reference/show.ts +174 -0
- package/src/cli/commands/reference/update-index.ts +103 -0
- package/src/cli/commands/reference/update.ts +136 -0
- package/src/cli/commands/report/blocked.ts +165 -0
- package/src/cli/commands/report/complete.ts +179 -0
- package/src/cli/commands/report/progress.ts +142 -0
- package/src/cli/commands/report/start.ts +140 -0
- package/src/cli/commands/resource/acquire.ts +116 -0
- package/src/cli/commands/resource/list.ts +77 -0
- package/src/cli/commands/resource/release.ts +64 -0
- package/src/cli/commands/resource/wait.ts +93 -0
- package/src/cli/commands/review.ts +105 -0
- package/src/cli/commands/session/attach.ts +200 -0
- package/src/cli/commands/session/await.ts +83 -0
- package/src/cli/commands/session/complete.ts +100 -0
- package/src/cli/commands/session/create.ts +92 -0
- package/src/cli/commands/session/heartbeat.ts +63 -0
- package/src/cli/commands/session/list.ts +281 -0
- package/src/cli/commands/session/mark-done.ts +132 -0
- package/src/cli/commands/session/mine.ts +189 -0
- package/src/cli/commands/session/replay.ts +659 -0
- package/src/cli/commands/session/run.ts +44 -0
- package/src/cli/commands/session/show.ts +177 -0
- package/src/cli/commands/session/start.ts +580 -0
- package/src/cli/commands/session/state/cleanup.ts +61 -0
- package/src/cli/commands/session/state/end.ts +47 -0
- package/src/cli/commands/session/state/get.ts +65 -0
- package/src/cli/commands/session/state/init.ts +50 -0
- package/src/cli/commands/session/state/list.ts +68 -0
- package/src/cli/commands/session/state/update.ts +108 -0
- package/src/cli/commands/session/stop.ts +134 -0
- package/src/cli/commands/session/view.ts +186 -0
- package/src/cli/commands/start.ts +250 -0
- package/src/cli/commands/state/dump.ts +449 -0
- package/src/cli/commands/status.ts +244 -0
- package/src/cli/commands/sync.ts +174 -0
- package/src/cli/commands/trace/export.ts +255 -0
- package/src/cli/commands/triage/claim.ts +203 -0
- package/src/cli/commands/triage/list.ts +137 -0
- package/src/cli/commands/triage/next.ts +73 -0
- package/src/cli/commands/triage/pull.ts +97 -0
- package/src/cli/commands/triage/stats.ts +82 -0
- package/src/cli/commands/tunnel/list.ts +113 -0
- package/src/cli/commands/tunnel/start.ts +122 -0
- package/src/cli/commands/tunnel/stop.ts +108 -0
- package/src/cli/commands/tunnel/url.ts +82 -0
- package/src/cli/commands/web/start.ts +125 -0
- package/src/cli/commands/windows/context.ts +439 -0
- package/src/cli/commands/windows/focus.ts +130 -0
- package/src/cli/commands/windows/list.ts +213 -0
- package/src/cli/commands/windows/map.ts +223 -0
- package/src/cli/commands/windows/read.ts +279 -0
- package/src/cli/commands/windows/search.ts +219 -0
- package/src/cli/commands/windows/show.ts +188 -0
- package/src/cli/commands/windows/watch.ts +262 -0
- package/src/lib/__tests__/annotations-convex.test.ts +104 -0
- package/src/lib/active-sessions.ts +1486 -0
- package/src/lib/agent-adapters.ts +412 -0
- package/src/lib/agent-sessions.ts +671 -0
- package/src/lib/agent-trace.test.ts +296 -0
- package/src/lib/agent-trace.ts +513 -0
- package/src/lib/analytics.ts +178 -0
- package/src/lib/annotations-convex.ts +296 -0
- package/src/lib/annotations.test.ts +274 -0
- package/src/lib/annotations.ts +836 -0
- package/src/lib/auto/discover.ts +545 -0
- package/src/lib/auto/ideate.ts +412 -0
- package/src/lib/auto/spawn.ts +549 -0
- package/src/lib/auto/workspace.ts +282 -0
- package/src/lib/backlog.test.ts +194 -0
- package/src/lib/backlog.ts +428 -0
- package/src/lib/config-loader.ts +391 -0
- package/src/lib/config-sync/adapters/claude.ts +91 -0
- package/src/lib/config-sync/adapters/codex.ts +135 -0
- package/src/lib/config-sync/adapters/copilot.ts +98 -0
- package/src/lib/config-sync/adapters/gemini.ts +86 -0
- package/src/lib/config-sync/adapters/index.ts +39 -0
- package/src/lib/config-sync/adapters/opencode.ts +94 -0
- package/src/lib/config-sync/index.ts +399 -0
- package/src/lib/config-sync/types.ts +92 -0
- package/src/lib/config-sync/writer.ts +188 -0
- package/src/lib/content-sync/index.ts +882 -0
- package/src/lib/content-sync/types.ts +104 -0
- package/src/lib/contracts.test.ts +186 -0
- package/src/lib/contracts.ts +195 -0
- package/src/lib/convex.ts +54 -0
- package/src/lib/device.ts +41 -0
- package/src/lib/digest/index.ts +529 -0
- package/src/lib/docs/lint.test.ts +135 -0
- package/src/lib/docs/lint.ts +310 -0
- package/src/lib/docs/sync.ts +184 -0
- package/src/lib/doctor/index.ts +647 -0
- package/src/lib/doctor/repos.ts +381 -0
- package/src/lib/doctor/templates.ts +191 -0
- package/src/lib/errors.ts +111 -0
- package/src/lib/events.ts +479 -0
- package/src/lib/heartbeat.test.ts +164 -0
- package/src/lib/heartbeat.ts +326 -0
- package/src/lib/hooks/adapters/claude.ts +115 -0
- package/src/lib/hooks/adapters/codex.ts +92 -0
- package/src/lib/hooks/adapters/copilot.ts +141 -0
- package/src/lib/hooks/context.ts +174 -0
- package/src/lib/hooks/index.ts +39 -0
- package/src/lib/hooks/registry.ts +101 -0
- package/src/lib/hooks/runner.ts +208 -0
- package/src/lib/hooks/types.ts +89 -0
- package/src/lib/index.test.ts +426 -0
- package/src/lib/managed-session.ts +117 -0
- package/src/lib/math.test.ts +299 -0
- package/src/lib/math.ts +120 -0
- package/src/lib/ngrok.ts +441 -0
- package/src/lib/nvim/discovery.test.ts +157 -0
- package/src/lib/nvim/discovery.ts +181 -0
- package/src/lib/nvim/index.ts +28 -0
- package/src/lib/nvim/remote.test.ts +21 -0
- package/src/lib/nvim/remote.ts +184 -0
- package/src/lib/panes/README.md +20 -0
- package/src/lib/panes/broker.ts +261 -0
- package/src/lib/panes/index.ts +1 -0
- package/src/lib/panes/server.ts +379 -0
- package/src/lib/preview/detect.ts +184 -0
- package/src/lib/preview/index.ts +1 -0
- package/src/lib/process/index.ts +16 -0
- package/src/lib/process/snapshot.test.ts +188 -0
- package/src/lib/process/snapshot.ts +257 -0
- package/src/lib/references.ts +481 -0
- package/src/lib/report.ts +973 -0
- package/src/lib/resources.test.ts +132 -0
- package/src/lib/resources.ts +429 -0
- package/src/lib/runner.test.ts +288 -0
- package/src/lib/runner.ts +1223 -0
- package/src/lib/session-artifacts.test.ts +107 -0
- package/src/lib/session-artifacts.ts +193 -0
- package/src/lib/session-manager.test.ts +402 -0
- package/src/lib/session-manager.ts +150 -0
- package/src/lib/session-result.test.ts +98 -0
- package/src/lib/session-result.ts +262 -0
- package/src/lib/session-state.ts +470 -0
- package/src/lib/slack-workspace.ts +25 -0
- package/src/lib/tmux/bridge.ts +439 -0
- package/src/lib/tmux/context.test.ts +242 -0
- package/src/lib/tmux/context.ts +380 -0
- package/src/lib/tmux/index.ts +46 -0
- package/src/lib/tmux/map.test.ts +99 -0
- package/src/lib/tmux/map.ts +252 -0
- package/src/lib/tmux/panes.ts +170 -0
- package/src/lib/tmux/redaction.test.ts +231 -0
- package/src/lib/tmux/redaction.ts +201 -0
- package/src/lib/triage-llm.ts +312 -0
- package/src/lib/triage-tracker.ts +400 -0
- package/src/lib/triage.ts +655 -0
- package/src/lib/types.ts +61 -0
- package/src/lib/windows/index.ts +2 -0
- package/src/lib/windows/inventory.test.ts +370 -0
- package/src/lib/windows/inventory.ts +352 -0
- package/src/lib/windows/types.ts +46 -0
- package/src/lib.ts +260 -0
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
import { execSync, spawn } from "node:child_process";
|
|
2
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { createEvent, EventStore } from "./events.js";
|
|
5
|
+
/**
|
|
6
|
+
* ngrok local API base URL.
|
|
7
|
+
* The agent exposes this API with no authentication.
|
|
8
|
+
* @see https://ngrok.com/docs/agent/api
|
|
9
|
+
*/
|
|
10
|
+
const NGROK_API_BASE = "http://127.0.0.1:4040/api";
|
|
11
|
+
/**
|
|
12
|
+
* Check if ngrok agent is running.
|
|
13
|
+
* Uses the status endpoint for lightweight health check.
|
|
14
|
+
*/
|
|
15
|
+
export async function isAgentRunning() {
|
|
16
|
+
try {
|
|
17
|
+
const response = await fetch(`${NGROK_API_BASE}/status`);
|
|
18
|
+
return response.ok;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get ngrok agent status.
|
|
26
|
+
*/
|
|
27
|
+
export async function getAgentStatus() {
|
|
28
|
+
try {
|
|
29
|
+
const response = await fetch(`${NGROK_API_BASE}/status`);
|
|
30
|
+
if (!response.ok)
|
|
31
|
+
return undefined;
|
|
32
|
+
return (await response.json());
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* List all active tunnels via ngrok API.
|
|
40
|
+
* @see GET /api/tunnels
|
|
41
|
+
*/
|
|
42
|
+
export async function listTunnels() {
|
|
43
|
+
try {
|
|
44
|
+
const response = await fetch(`${NGROK_API_BASE}/tunnels`);
|
|
45
|
+
if (!response.ok)
|
|
46
|
+
return [];
|
|
47
|
+
const data = (await response.json());
|
|
48
|
+
return data.tunnels || [];
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get a specific tunnel by name.
|
|
56
|
+
* @see GET /api/tunnels/:name
|
|
57
|
+
*/
|
|
58
|
+
export async function getTunnel(name) {
|
|
59
|
+
try {
|
|
60
|
+
const response = await fetch(`${NGROK_API_BASE}/tunnels/${encodeURIComponent(name)}`);
|
|
61
|
+
if (!response.ok)
|
|
62
|
+
return undefined;
|
|
63
|
+
return (await response.json());
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Start a new tunnel via ngrok API.
|
|
71
|
+
* Requires ngrok agent to be running.
|
|
72
|
+
* @see POST /api/tunnels
|
|
73
|
+
*/
|
|
74
|
+
export async function startTunnel(port, name) {
|
|
75
|
+
const tunnelName = name || `port-${port}`;
|
|
76
|
+
try {
|
|
77
|
+
const response = await fetch(`${NGROK_API_BASE}/tunnels`, {
|
|
78
|
+
method: "POST",
|
|
79
|
+
headers: { "Content-Type": "application/json" },
|
|
80
|
+
body: JSON.stringify({
|
|
81
|
+
name: tunnelName,
|
|
82
|
+
addr: port.toString(),
|
|
83
|
+
proto: "http",
|
|
84
|
+
}),
|
|
85
|
+
});
|
|
86
|
+
if (response.status === 201 || response.ok) {
|
|
87
|
+
return (await response.json());
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Stop a tunnel by name.
|
|
97
|
+
* @see DELETE /api/tunnels/:name
|
|
98
|
+
*/
|
|
99
|
+
export async function stopTunnel(name) {
|
|
100
|
+
try {
|
|
101
|
+
const response = await fetch(`${NGROK_API_BASE}/tunnels/${encodeURIComponent(name)}`, {
|
|
102
|
+
method: "DELETE",
|
|
103
|
+
});
|
|
104
|
+
return response.status === 204 || response.ok;
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Start ngrok agent in background if not running.
|
|
112
|
+
* This starts the agent without any tunnels - tunnels are created via API.
|
|
113
|
+
*/
|
|
114
|
+
export async function ensureAgentRunning() {
|
|
115
|
+
if (await isAgentRunning()) {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
// Start ngrok agent with no tunnels (just the API)
|
|
119
|
+
const ngrok = spawn("ngrok", ["start", "--none"], {
|
|
120
|
+
detached: true,
|
|
121
|
+
stdio: "ignore",
|
|
122
|
+
});
|
|
123
|
+
ngrok.unref();
|
|
124
|
+
// Wait for agent to be ready (up to 10s)
|
|
125
|
+
for (let i = 0; i < 20; i++) {
|
|
126
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
127
|
+
if (await isAgentRunning()) {
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Find tunnel by port number.
|
|
135
|
+
*/
|
|
136
|
+
export async function findTunnelByPort(port) {
|
|
137
|
+
const tunnels = await listTunnels();
|
|
138
|
+
return tunnels.find((t) => {
|
|
139
|
+
const addr = t.config?.addr || "";
|
|
140
|
+
return addr === port.toString() || addr.endsWith(`:${port}`);
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get public URL for a port, creating tunnel if needed.
|
|
145
|
+
* This is the main high-level function for getting a public URL.
|
|
146
|
+
*/
|
|
147
|
+
export async function getPublicUrl(port) {
|
|
148
|
+
// Ensure agent is running
|
|
149
|
+
if (!(await ensureAgentRunning())) {
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
// Check for existing tunnel
|
|
153
|
+
const existing = await findTunnelByPort(port);
|
|
154
|
+
if (existing) {
|
|
155
|
+
return existing.public_url;
|
|
156
|
+
}
|
|
157
|
+
// Create new tunnel
|
|
158
|
+
const tunnel = await startTunnel(port);
|
|
159
|
+
return tunnel?.public_url;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Kill all ngrok processes.
|
|
163
|
+
*/
|
|
164
|
+
export function killNgrok() {
|
|
165
|
+
try {
|
|
166
|
+
execSync('pkill -f "ngrok"', { stdio: "ignore" });
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// No processes to kill
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* NgrokManager - higher-level manager with session tracking and events.
|
|
174
|
+
*/
|
|
175
|
+
export class NgrokManager {
|
|
176
|
+
basePath;
|
|
177
|
+
eventStore;
|
|
178
|
+
constructor(basePath = "~/.abbie/ngrok", eventStore) {
|
|
179
|
+
this.basePath = basePath.replace("~", process.env.HOME || "");
|
|
180
|
+
this.eventStore = eventStore || new EventStore();
|
|
181
|
+
if (!existsSync(this.basePath)) {
|
|
182
|
+
mkdirSync(this.basePath, { recursive: true });
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Get stored tunnel metadata path.
|
|
187
|
+
*/
|
|
188
|
+
getMetadataPath(name) {
|
|
189
|
+
return join(this.basePath, `${name}.json`);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Store tunnel metadata.
|
|
193
|
+
*/
|
|
194
|
+
storeMetadata(tunnel) {
|
|
195
|
+
writeFileSync(this.getMetadataPath(tunnel.name), JSON.stringify(tunnel, null, 2));
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Load tunnel metadata.
|
|
199
|
+
*/
|
|
200
|
+
loadMetadata(name) {
|
|
201
|
+
const path = this.getMetadataPath(name);
|
|
202
|
+
if (!existsSync(path))
|
|
203
|
+
return undefined;
|
|
204
|
+
return JSON.parse(readFileSync(path, "utf-8"));
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Remove tunnel metadata.
|
|
208
|
+
*/
|
|
209
|
+
removeMetadata(name) {
|
|
210
|
+
const path = this.getMetadataPath(name);
|
|
211
|
+
if (existsSync(path)) {
|
|
212
|
+
unlinkSync(path);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Start a tunnel with session tracking.
|
|
217
|
+
*/
|
|
218
|
+
async start(port, sessionId, name) {
|
|
219
|
+
// Ensure agent is running
|
|
220
|
+
if (!(await ensureAgentRunning())) {
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
const tunnelName = name || `${sessionId.split("-")[0]}-${port}`;
|
|
224
|
+
// Check for existing tunnel on this port
|
|
225
|
+
const existing = await findTunnelByPort(port);
|
|
226
|
+
if (existing) {
|
|
227
|
+
return { tunnel: existing, public_url: existing.public_url };
|
|
228
|
+
}
|
|
229
|
+
// Create tunnel via API
|
|
230
|
+
const tunnel = await startTunnel(port, tunnelName);
|
|
231
|
+
if (!tunnel) {
|
|
232
|
+
return undefined;
|
|
233
|
+
}
|
|
234
|
+
// Store metadata
|
|
235
|
+
this.storeMetadata({
|
|
236
|
+
name: tunnel.name,
|
|
237
|
+
session_id: sessionId,
|
|
238
|
+
port,
|
|
239
|
+
created_at: new Date().toISOString(),
|
|
240
|
+
});
|
|
241
|
+
// Log event
|
|
242
|
+
this.eventStore.append(createEvent.previewCreated(sessionId, "system", {
|
|
243
|
+
url: tunnel.public_url,
|
|
244
|
+
port,
|
|
245
|
+
subdomain: tunnel.name,
|
|
246
|
+
}));
|
|
247
|
+
return { tunnel, public_url: tunnel.public_url };
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Stop a tunnel by name.
|
|
251
|
+
*/
|
|
252
|
+
async stop(name) {
|
|
253
|
+
const stopped = await stopTunnel(name);
|
|
254
|
+
if (stopped) {
|
|
255
|
+
this.removeMetadata(name);
|
|
256
|
+
}
|
|
257
|
+
return stopped;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Stop all tunnels for a session.
|
|
261
|
+
*/
|
|
262
|
+
async stopSession(sessionId) {
|
|
263
|
+
const files = existsSync(this.basePath) ? readdirSync(this.basePath) : [];
|
|
264
|
+
let stopped = 0;
|
|
265
|
+
for (const file of files) {
|
|
266
|
+
if (!file.endsWith(".json"))
|
|
267
|
+
continue;
|
|
268
|
+
const name = file.replace(".json", "");
|
|
269
|
+
const metadata = this.loadMetadata(name);
|
|
270
|
+
if (metadata?.session_id === sessionId) {
|
|
271
|
+
if (await this.stop(name)) {
|
|
272
|
+
stopped++;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return stopped;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* List all tunnels with metadata.
|
|
280
|
+
*/
|
|
281
|
+
async list() {
|
|
282
|
+
const tunnels = await listTunnels();
|
|
283
|
+
return tunnels.map((tunnel) => ({
|
|
284
|
+
...tunnel,
|
|
285
|
+
metadata: this.loadMetadata(tunnel.name),
|
|
286
|
+
}));
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Cleanup stale metadata (tunnels that no longer exist).
|
|
290
|
+
*/
|
|
291
|
+
async cleanup() {
|
|
292
|
+
if (!existsSync(this.basePath))
|
|
293
|
+
return 0;
|
|
294
|
+
const files = readdirSync(this.basePath);
|
|
295
|
+
const activeTunnels = await listTunnels();
|
|
296
|
+
const activeNames = new Set(activeTunnels.map((t) => t.name));
|
|
297
|
+
let cleaned = 0;
|
|
298
|
+
for (const file of files) {
|
|
299
|
+
if (!file.endsWith(".json"))
|
|
300
|
+
continue;
|
|
301
|
+
const name = file.replace(".json", "");
|
|
302
|
+
if (!activeNames.has(name)) {
|
|
303
|
+
this.removeMetadata(name);
|
|
304
|
+
cleaned++;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return cleaned;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Create an NgrokManager with default path.
|
|
312
|
+
*/
|
|
313
|
+
export function createNgrokManager(eventStore) {
|
|
314
|
+
return new NgrokManager("~/.abbie/ngrok", eventStore);
|
|
315
|
+
}
|
|
316
|
+
// Unix pipe helpers - these output to stdout for piping
|
|
317
|
+
/**
|
|
318
|
+
* Print public URL to stdout.
|
|
319
|
+
* Usage: abbie tunnel url 3000 | xargs open
|
|
320
|
+
*/
|
|
321
|
+
export async function printPublicUrl(port) {
|
|
322
|
+
const url = await getPublicUrl(port);
|
|
323
|
+
if (url) {
|
|
324
|
+
process.stdout.write(`${url}\n`);
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
process.exit(1);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Print all tunnel URLs to stdout.
|
|
332
|
+
* Usage: abbie tunnel urls | xargs -I{} curl {}
|
|
333
|
+
*/
|
|
334
|
+
export async function printAllUrls() {
|
|
335
|
+
const tunnels = await listTunnels();
|
|
336
|
+
for (const tunnel of tunnels) {
|
|
337
|
+
process.stdout.write(`${tunnel.public_url}\n`);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Socket discovery for Neovim instances.
|
|
3
|
+
* Finds nvim processes and discovers their RPC server addresses.
|
|
4
|
+
*/
|
|
5
|
+
import { type ProcessInfo } from "../process/snapshot.js";
|
|
6
|
+
export interface NvimInstance {
|
|
7
|
+
pid: number;
|
|
8
|
+
serverAddr: string | null;
|
|
9
|
+
discoveryMethod: "argv" | "lsof" | null;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Find the nvim PID running under a pane (prefer deepest nested).
|
|
13
|
+
*/
|
|
14
|
+
export declare function findNvimPidForWindow(panePid: number, snapshot: Map<number, ProcessInfo>, tree: Map<number, number[]>): number | null;
|
|
15
|
+
/**
|
|
16
|
+
* Discover nvim server address from process argv.
|
|
17
|
+
* This is the most reliable method when nvim was started with --listen.
|
|
18
|
+
*/
|
|
19
|
+
export declare function discoverFromArgv(nvimPid: number, snapshot: Map<number, ProcessInfo>): string | null;
|
|
20
|
+
/**
|
|
21
|
+
* Discover nvim server address using lsof to find UNIX sockets.
|
|
22
|
+
* Fallback when --listen wasn't used but nvim created a socket.
|
|
23
|
+
*/
|
|
24
|
+
export declare function discoverFromLsof(nvimPid: number): Promise<string | null>;
|
|
25
|
+
/**
|
|
26
|
+
* Discover the server address for an nvim PID.
|
|
27
|
+
* Tries multiple strategies in order of reliability:
|
|
28
|
+
* 1. Parse --listen from argv
|
|
29
|
+
* 2. Find UNIX socket via lsof
|
|
30
|
+
*/
|
|
31
|
+
export declare function discoverNvimServerAddress(nvimPid: number, snapshot: Map<number, ProcessInfo>): Promise<{
|
|
32
|
+
addr: string;
|
|
33
|
+
method: "argv" | "lsof";
|
|
34
|
+
} | null>;
|
|
35
|
+
/**
|
|
36
|
+
* Get the nvim instance for a window (pane).
|
|
37
|
+
* Combines process discovery and server address discovery.
|
|
38
|
+
*/
|
|
39
|
+
export declare function getNvimInstanceForWindow(panePid: number, snapshot: Map<number, ProcessInfo>, tree: Map<number, number[]>): Promise<NvimInstance | null>;
|
|
40
|
+
/**
|
|
41
|
+
* Find all nvim instances in the process snapshot.
|
|
42
|
+
*/
|
|
43
|
+
export declare function findAllNvimInstances(snapshot: Map<number, ProcessInfo>): number[];
|
|
44
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/lib/nvim/discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAwC,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEhG,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACzC;AA0BD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC1B,MAAM,GAAG,IAAI,CAEf;AAkBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GACjC,MAAM,GAAG,IAAI,CAKf;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgC9E;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GACjC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAc3D;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC1B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAe9B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,MAAM,EAAE,CAUjF"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Socket discovery for Neovim instances.
|
|
3
|
+
* Finds nvim processes and discovers their RPC server addresses.
|
|
4
|
+
*/
|
|
5
|
+
import { spawn } from "node:child_process";
|
|
6
|
+
import { findDeepestDescendant, isNvimProcess } from "../process/snapshot.js";
|
|
7
|
+
/**
|
|
8
|
+
* Execute a command and return stdout.
|
|
9
|
+
*/
|
|
10
|
+
async function exec(command, args) {
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
const proc = spawn(command, args, { stdio: ["ignore", "pipe", "pipe"] });
|
|
13
|
+
let stdout = "";
|
|
14
|
+
proc.stdout.on("data", (data) => {
|
|
15
|
+
stdout += data.toString();
|
|
16
|
+
});
|
|
17
|
+
proc.on("close", (code) => {
|
|
18
|
+
if (code === 0) {
|
|
19
|
+
resolve(stdout);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
reject(new Error(`${command} failed with code ${code}`));
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
proc.on("error", reject);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Find the nvim PID running under a pane (prefer deepest nested).
|
|
30
|
+
*/
|
|
31
|
+
export function findNvimPidForWindow(panePid, snapshot, tree) {
|
|
32
|
+
return findDeepestDescendant(panePid, tree, snapshot, isNvimProcess);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Parse --listen argument from nvim command line.
|
|
36
|
+
* Handles both `--listen <addr>` and `--listen=<addr>` forms.
|
|
37
|
+
*/
|
|
38
|
+
function parseListenFromArgs(args) {
|
|
39
|
+
// Match --listen followed by space and address
|
|
40
|
+
const spaceMatch = args.match(/--listen\s+([^\s]+)/);
|
|
41
|
+
if (spaceMatch)
|
|
42
|
+
return spaceMatch[1];
|
|
43
|
+
// Match --listen=address
|
|
44
|
+
const eqMatch = args.match(/--listen=([^\s]+)/);
|
|
45
|
+
if (eqMatch)
|
|
46
|
+
return eqMatch[1];
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Discover nvim server address from process argv.
|
|
51
|
+
* This is the most reliable method when nvim was started with --listen.
|
|
52
|
+
*/
|
|
53
|
+
export function discoverFromArgv(nvimPid, snapshot) {
|
|
54
|
+
const info = snapshot.get(nvimPid);
|
|
55
|
+
if (!info)
|
|
56
|
+
return null;
|
|
57
|
+
return parseListenFromArgs(info.args);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Discover nvim server address using lsof to find UNIX sockets.
|
|
61
|
+
* Fallback when --listen wasn't used but nvim created a socket.
|
|
62
|
+
*/
|
|
63
|
+
export async function discoverFromLsof(nvimPid) {
|
|
64
|
+
try {
|
|
65
|
+
// lsof -a -p PID -U shows UNIX sockets for the process
|
|
66
|
+
const output = await exec("lsof", ["-a", "-p", String(nvimPid), "-U", "-F", "n"]);
|
|
67
|
+
// Parse lsof output - lines starting with 'n' contain the socket path
|
|
68
|
+
const lines = output.split("\n");
|
|
69
|
+
for (const line of lines) {
|
|
70
|
+
if (line.startsWith("n")) {
|
|
71
|
+
const path = line.slice(1); // Remove 'n' prefix
|
|
72
|
+
// Look for nvim-like socket paths
|
|
73
|
+
// Common patterns:
|
|
74
|
+
// - /tmp/nvim.USER/XXXXX/nvim.PID.0
|
|
75
|
+
// - /var/folders/.../nvim.USER/.../nvim.PID.0
|
|
76
|
+
// - ~/.local/state/nvim/...
|
|
77
|
+
if (path.includes("nvim") &&
|
|
78
|
+
(path.startsWith("/tmp/") ||
|
|
79
|
+
path.startsWith("/var/folders/") ||
|
|
80
|
+
path.includes(".local/state/nvim") ||
|
|
81
|
+
path.includes("/run/"))) {
|
|
82
|
+
return path;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// lsof failed, return null
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Discover the server address for an nvim PID.
|
|
94
|
+
* Tries multiple strategies in order of reliability:
|
|
95
|
+
* 1. Parse --listen from argv
|
|
96
|
+
* 2. Find UNIX socket via lsof
|
|
97
|
+
*/
|
|
98
|
+
export async function discoverNvimServerAddress(nvimPid, snapshot) {
|
|
99
|
+
// Strategy 1: Check argv for --listen
|
|
100
|
+
const argvAddr = discoverFromArgv(nvimPid, snapshot);
|
|
101
|
+
if (argvAddr) {
|
|
102
|
+
return { addr: argvAddr, method: "argv" };
|
|
103
|
+
}
|
|
104
|
+
// Strategy 2: Find UNIX socket via lsof
|
|
105
|
+
const lsofAddr = await discoverFromLsof(nvimPid);
|
|
106
|
+
if (lsofAddr) {
|
|
107
|
+
return { addr: lsofAddr, method: "lsof" };
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get the nvim instance for a window (pane).
|
|
113
|
+
* Combines process discovery and server address discovery.
|
|
114
|
+
*/
|
|
115
|
+
export async function getNvimInstanceForWindow(panePid, snapshot, tree) {
|
|
116
|
+
// Find nvim PID under the pane
|
|
117
|
+
const nvimPid = findNvimPidForWindow(panePid, snapshot, tree);
|
|
118
|
+
if (!nvimPid) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
// Discover server address
|
|
122
|
+
const discovery = await discoverNvimServerAddress(nvimPid, snapshot);
|
|
123
|
+
return {
|
|
124
|
+
pid: nvimPid,
|
|
125
|
+
serverAddr: discovery?.addr ?? null,
|
|
126
|
+
discoveryMethod: discovery?.method ?? null,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Find all nvim instances in the process snapshot.
|
|
131
|
+
*/
|
|
132
|
+
export function findAllNvimInstances(snapshot) {
|
|
133
|
+
const nvimPids = [];
|
|
134
|
+
for (const [pid, info] of snapshot) {
|
|
135
|
+
if (isNvimProcess(info)) {
|
|
136
|
+
nvimPids.push(pid);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return nvimPids;
|
|
140
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { describe, it, expect } from 'bun:test';
|
|
2
|
+
import { buildProcessTree } from '../process/snapshot.js';
|
|
3
|
+
import { findNvimPidForWindow, discoverFromArgv, discoverNvimServerAddress, findAllNvimInstances, } from './discovery.js';
|
|
4
|
+
// Mock process snapshot for testing pure functions
|
|
5
|
+
function createMockSnapshot() {
|
|
6
|
+
const snapshot = new Map();
|
|
7
|
+
// tmux(100) → zsh(200) → nvim(300) with --listen
|
|
8
|
+
snapshot.set(100, { pid: 100, ppid: 1, tty: '??', cmd: 'tmux', args: 'tmux new -s work' });
|
|
9
|
+
snapshot.set(200, {
|
|
10
|
+
pid: 200,
|
|
11
|
+
ppid: 100,
|
|
12
|
+
tty: 'ttys001',
|
|
13
|
+
cmd: 'zsh',
|
|
14
|
+
args: '-zsh',
|
|
15
|
+
});
|
|
16
|
+
snapshot.set(300, {
|
|
17
|
+
pid: 300,
|
|
18
|
+
ppid: 200,
|
|
19
|
+
tty: 'ttys001',
|
|
20
|
+
cmd: 'nvim',
|
|
21
|
+
args: 'nvim --listen /tmp/nvim.300.sock src/app.ts',
|
|
22
|
+
});
|
|
23
|
+
// Another pane: zsh(250) → nvim(350) without --listen
|
|
24
|
+
snapshot.set(250, {
|
|
25
|
+
pid: 250,
|
|
26
|
+
ppid: 100,
|
|
27
|
+
tty: 'ttys002',
|
|
28
|
+
cmd: 'zsh',
|
|
29
|
+
args: '-zsh',
|
|
30
|
+
});
|
|
31
|
+
snapshot.set(350, {
|
|
32
|
+
pid: 350,
|
|
33
|
+
ppid: 250,
|
|
34
|
+
tty: 'ttys002',
|
|
35
|
+
cmd: 'nvim',
|
|
36
|
+
args: 'nvim src/other.ts',
|
|
37
|
+
});
|
|
38
|
+
// Nested nvim: zsh(400) → nvim(410) → nvim(420)
|
|
39
|
+
snapshot.set(400, {
|
|
40
|
+
pid: 400,
|
|
41
|
+
ppid: 100,
|
|
42
|
+
tty: 'ttys003',
|
|
43
|
+
cmd: 'zsh',
|
|
44
|
+
args: '-zsh',
|
|
45
|
+
});
|
|
46
|
+
snapshot.set(410, {
|
|
47
|
+
pid: 410,
|
|
48
|
+
ppid: 400,
|
|
49
|
+
tty: 'ttys003',
|
|
50
|
+
cmd: 'nvim',
|
|
51
|
+
args: 'nvim outer.ts',
|
|
52
|
+
});
|
|
53
|
+
snapshot.set(420, {
|
|
54
|
+
pid: 420,
|
|
55
|
+
ppid: 410,
|
|
56
|
+
tty: 'ttys003',
|
|
57
|
+
cmd: 'nvim',
|
|
58
|
+
args: 'nvim --listen=/tmp/nested.sock inner.ts',
|
|
59
|
+
});
|
|
60
|
+
return snapshot;
|
|
61
|
+
}
|
|
62
|
+
describe('nvim discovery', () => {
|
|
63
|
+
describe('findNvimPidForWindow', () => {
|
|
64
|
+
it('finds nvim under pane', () => {
|
|
65
|
+
const snapshot = createMockSnapshot();
|
|
66
|
+
const tree = buildProcessTree(snapshot);
|
|
67
|
+
const nvimPid = findNvimPidForWindow(200, snapshot, tree);
|
|
68
|
+
expect(nvimPid).toBe(300);
|
|
69
|
+
});
|
|
70
|
+
it('prefers deepest nested nvim', () => {
|
|
71
|
+
const snapshot = createMockSnapshot();
|
|
72
|
+
const tree = buildProcessTree(snapshot);
|
|
73
|
+
// Starting from zsh(400), should find the nested nvim(420), not outer nvim(410)
|
|
74
|
+
const nvimPid = findNvimPidForWindow(400, snapshot, tree);
|
|
75
|
+
expect(nvimPid).toBe(420);
|
|
76
|
+
});
|
|
77
|
+
it('returns null when no nvim found', () => {
|
|
78
|
+
const snapshot = createMockSnapshot();
|
|
79
|
+
const tree = buildProcessTree(snapshot);
|
|
80
|
+
// tmux(100) has no direct nvim child (nvim is under zsh)
|
|
81
|
+
// but findDeepestDescendant searches all descendants
|
|
82
|
+
const nvimPid = findNvimPidForWindow(100, snapshot, tree);
|
|
83
|
+
// Should find one of the nvims under tmux
|
|
84
|
+
expect(nvimPid).not.toBeNull();
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
describe('discoverFromArgv', () => {
|
|
88
|
+
it('parses --listen with space', () => {
|
|
89
|
+
const snapshot = createMockSnapshot();
|
|
90
|
+
const addr = discoverFromArgv(300, snapshot);
|
|
91
|
+
expect(addr).toBe('/tmp/nvim.300.sock');
|
|
92
|
+
});
|
|
93
|
+
it('parses --listen= form', () => {
|
|
94
|
+
const snapshot = createMockSnapshot();
|
|
95
|
+
const addr = discoverFromArgv(420, snapshot);
|
|
96
|
+
expect(addr).toBe('/tmp/nested.sock');
|
|
97
|
+
});
|
|
98
|
+
it('returns null when no --listen', () => {
|
|
99
|
+
const snapshot = createMockSnapshot();
|
|
100
|
+
const addr = discoverFromArgv(350, snapshot);
|
|
101
|
+
expect(addr).toBeNull();
|
|
102
|
+
});
|
|
103
|
+
it('returns null for unknown PID', () => {
|
|
104
|
+
const snapshot = createMockSnapshot();
|
|
105
|
+
const addr = discoverFromArgv(9999, snapshot);
|
|
106
|
+
expect(addr).toBeNull();
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
describe('discoverNvimServerAddress', () => {
|
|
110
|
+
it('uses argv when --listen present', async () => {
|
|
111
|
+
const snapshot = createMockSnapshot();
|
|
112
|
+
const result = await discoverNvimServerAddress(300, snapshot);
|
|
113
|
+
expect(result).toEqual({ addr: '/tmp/nvim.300.sock', method: 'argv' });
|
|
114
|
+
});
|
|
115
|
+
// Note: lsof fallback tests require actual system state or dependency injection.
|
|
116
|
+
// These are integration tests that would need a real nvim process.
|
|
117
|
+
// For unit testing the lsof path, we'd need to refactor discovery.ts
|
|
118
|
+
// to accept an executor function as a parameter.
|
|
119
|
+
});
|
|
120
|
+
describe('findAllNvimInstances', () => {
|
|
121
|
+
it('finds all nvim PIDs', () => {
|
|
122
|
+
const snapshot = createMockSnapshot();
|
|
123
|
+
const nvimPids = findAllNvimInstances(snapshot);
|
|
124
|
+
expect(nvimPids).toContain(300);
|
|
125
|
+
expect(nvimPids).toContain(350);
|
|
126
|
+
expect(nvimPids).toContain(410);
|
|
127
|
+
expect(nvimPids).toContain(420);
|
|
128
|
+
expect(nvimPids).toHaveLength(4);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Neovim integration module.
|
|
3
|
+
* Provides RPC communication and socket discovery.
|
|
4
|
+
*/
|
|
5
|
+
export { discoverFromArgv, discoverFromLsof, discoverNvimServerAddress, findAllNvimInstances, findNvimPidForWindow, getNvimInstanceForWindow, type NvimInstance, } from "./discovery.js";
|
|
6
|
+
export { getBufferLines, getCurrentBuffer, getCurrentBufferInfo, getVisibleRange, isServerReachable, listBuffers, type NvimBufferInfo, remoteExpr, remoteExprJson, type WindowRange, } from "./remote.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/nvim/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,KAAK,cAAc,EACnB,UAAU,EACV,cAAc,EACd,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Neovim integration module.
|
|
3
|
+
* Provides RPC communication and socket discovery.
|
|
4
|
+
*/
|
|
5
|
+
// Socket discovery
|
|
6
|
+
export { discoverFromArgv, discoverFromLsof, discoverNvimServerAddress, findAllNvimInstances, findNvimPidForWindow, getNvimInstanceForWindow, } from "./discovery.js";
|
|
7
|
+
// RPC layer
|
|
8
|
+
export { getBufferLines, getCurrentBuffer, getCurrentBufferInfo, getVisibleRange, isServerReachable, listBuffers, remoteExpr, remoteExprJson, } from "./remote.js";
|