@creativeintelligence/abbie 0.1.4 → 0.1.5
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/dist/cli/commands/start.js +2 -1
- package/oclif.manifest.json +1 -1
- package/package.json +9 -5
- package/dist/cli/base-command.d.ts.map +0 -1
- package/dist/cli/commands/agent/list.d.ts.map +0 -1
- package/dist/cli/commands/annotation/ack.d.ts.map +0 -1
- package/dist/cli/commands/annotation/create.d.ts.map +0 -1
- package/dist/cli/commands/annotation/events.d.ts.map +0 -1
- package/dist/cli/commands/annotation/export.d.ts.map +0 -1
- package/dist/cli/commands/annotation/import.d.ts.map +0 -1
- package/dist/cli/commands/annotation/ingest.d.ts.map +0 -1
- package/dist/cli/commands/annotation/list.d.ts.map +0 -1
- package/dist/cli/commands/annotation/reply.d.ts.map +0 -1
- package/dist/cli/commands/annotation/resolve.d.ts.map +0 -1
- package/dist/cli/commands/auto/index.d.ts.map +0 -1
- package/dist/cli/commands/backlog/add.d.ts.map +0 -1
- package/dist/cli/commands/backlog/claim.d.ts.map +0 -1
- package/dist/cli/commands/backlog/complete.d.ts.map +0 -1
- package/dist/cli/commands/backlog/list.d.ts.map +0 -1
- package/dist/cli/commands/backlog/pick.d.ts.map +0 -1
- package/dist/cli/commands/backlog/sync.d.ts.map +0 -1
- package/dist/cli/commands/bootstrap.d.ts.map +0 -1
- package/dist/cli/commands/bridge.d.ts.map +0 -1
- package/dist/cli/commands/context/inject.d.ts.map +0 -1
- package/dist/cli/commands/context/list.d.ts.map +0 -1
- package/dist/cli/commands/context/publish.d.ts.map +0 -1
- package/dist/cli/commands/context/read.d.ts.map +0 -1
- package/dist/cli/commands/daemon.d.ts.map +0 -1
- package/dist/cli/commands/digest/index.d.ts.map +0 -1
- package/dist/cli/commands/docs/lint.d.ts.map +0 -1
- package/dist/cli/commands/docs/sync.d.ts.map +0 -1
- package/dist/cli/commands/doctor.d.ts.map +0 -1
- package/dist/cli/commands/find/index.d.ts.map +0 -1
- package/dist/cli/commands/gc.d.ts.map +0 -1
- package/dist/cli/commands/history/index.d.ts.map +0 -1
- package/dist/cli/commands/hooks/guard.d.ts.map +0 -1
- package/dist/cli/commands/hooks/list.d.ts.map +0 -1
- package/dist/cli/commands/hooks/lock.d.ts.map +0 -1
- package/dist/cli/commands/hooks/status.d.ts.map +0 -1
- package/dist/cli/commands/hooks/test.d.ts.map +0 -1
- package/dist/cli/commands/hooks/unlock.d.ts.map +0 -1
- package/dist/cli/commands/index.d.ts.map +0 -1
- package/dist/cli/commands/list.d.ts.map +0 -1
- package/dist/cli/commands/list.e2e.test.d.ts +0 -1
- package/dist/cli/commands/list.e2e.test.js +0 -47
- package/dist/cli/commands/login.d.ts.map +0 -1
- package/dist/cli/commands/logout.d.ts.map +0 -1
- package/dist/cli/commands/panes/broker.d.ts.map +0 -1
- package/dist/cli/commands/panes/pipe-sink.d.ts.map +0 -1
- package/dist/cli/commands/panes/snapshot.d.ts.map +0 -1
- package/dist/cli/commands/plan.d.ts.map +0 -1
- package/dist/cli/commands/plan.e2e.test.d.ts +0 -1
- package/dist/cli/commands/plan.e2e.test.js +0 -74
- package/dist/cli/commands/preview/index.d.ts.map +0 -1
- package/dist/cli/commands/preview/init.d.ts.map +0 -1
- package/dist/cli/commands/preview/list.d.ts.map +0 -1
- package/dist/cli/commands/preview/status.d.ts.map +0 -1
- package/dist/cli/commands/preview/stop.d.ts.map +0 -1
- package/dist/cli/commands/preview/sync.d.ts.map +0 -1
- package/dist/cli/commands/preview/watch.d.ts.map +0 -1
- package/dist/cli/commands/project/add.d.ts.map +0 -1
- package/dist/cli/commands/project/list.d.ts.map +0 -1
- package/dist/cli/commands/project/remove.d.ts.map +0 -1
- package/dist/cli/commands/push.d.ts.map +0 -1
- package/dist/cli/commands/reference/add.d.ts.map +0 -1
- package/dist/cli/commands/reference/delete.d.ts.map +0 -1
- package/dist/cli/commands/reference/extract.d.ts.map +0 -1
- package/dist/cli/commands/reference/list.d.ts.map +0 -1
- package/dist/cli/commands/reference/normalize.d.ts.map +0 -1
- package/dist/cli/commands/reference/open.d.ts.map +0 -1
- package/dist/cli/commands/reference/save.d.ts.map +0 -1
- package/dist/cli/commands/reference/search.d.ts.map +0 -1
- package/dist/cli/commands/reference/show.d.ts.map +0 -1
- package/dist/cli/commands/reference/update-index.d.ts.map +0 -1
- package/dist/cli/commands/reference/update.d.ts.map +0 -1
- package/dist/cli/commands/report/blocked.d.ts.map +0 -1
- package/dist/cli/commands/report/complete.d.ts.map +0 -1
- package/dist/cli/commands/report/progress.d.ts.map +0 -1
- package/dist/cli/commands/report/start.d.ts.map +0 -1
- package/dist/cli/commands/resource/acquire.d.ts.map +0 -1
- package/dist/cli/commands/resource/list.d.ts.map +0 -1
- package/dist/cli/commands/resource/release.d.ts.map +0 -1
- package/dist/cli/commands/resource/wait.d.ts.map +0 -1
- package/dist/cli/commands/review.d.ts.map +0 -1
- package/dist/cli/commands/session/attach.d.ts.map +0 -1
- package/dist/cli/commands/session/await.d.ts.map +0 -1
- package/dist/cli/commands/session/complete.d.ts.map +0 -1
- package/dist/cli/commands/session/create.d.ts.map +0 -1
- package/dist/cli/commands/session/heartbeat.d.ts.map +0 -1
- package/dist/cli/commands/session/list.d.ts.map +0 -1
- package/dist/cli/commands/session/mark-done.d.ts.map +0 -1
- package/dist/cli/commands/session/mine.d.ts.map +0 -1
- package/dist/cli/commands/session/replay.d.ts.map +0 -1
- package/dist/cli/commands/session/run.d.ts.map +0 -1
- package/dist/cli/commands/session/show.d.ts.map +0 -1
- package/dist/cli/commands/session/start.d.ts.map +0 -1
- package/dist/cli/commands/session/state/cleanup.d.ts.map +0 -1
- package/dist/cli/commands/session/state/end.d.ts.map +0 -1
- package/dist/cli/commands/session/state/get.d.ts.map +0 -1
- package/dist/cli/commands/session/state/init.d.ts.map +0 -1
- package/dist/cli/commands/session/state/list.d.ts.map +0 -1
- package/dist/cli/commands/session/state/update.d.ts.map +0 -1
- package/dist/cli/commands/session/stop.d.ts.map +0 -1
- package/dist/cli/commands/session/view.d.ts.map +0 -1
- package/dist/cli/commands/start.d.ts.map +0 -1
- package/dist/cli/commands/state/dump.d.ts.map +0 -1
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/sync.d.ts.map +0 -1
- package/dist/cli/commands/trace/export.d.ts.map +0 -1
- package/dist/cli/commands/triage/claim.d.ts.map +0 -1
- package/dist/cli/commands/triage/list.d.ts.map +0 -1
- package/dist/cli/commands/triage/next.d.ts.map +0 -1
- package/dist/cli/commands/triage/pull.d.ts.map +0 -1
- package/dist/cli/commands/triage/stats.d.ts.map +0 -1
- package/dist/cli/commands/tunnel/list.d.ts.map +0 -1
- package/dist/cli/commands/tunnel/start.d.ts.map +0 -1
- package/dist/cli/commands/tunnel/stop.d.ts.map +0 -1
- package/dist/cli/commands/tunnel/url.d.ts.map +0 -1
- package/dist/cli/commands/web/start.d.ts.map +0 -1
- package/dist/cli/commands/windows/context.d.ts.map +0 -1
- package/dist/cli/commands/windows/focus.d.ts.map +0 -1
- package/dist/cli/commands/windows/list.d.ts.map +0 -1
- package/dist/cli/commands/windows/map.d.ts.map +0 -1
- package/dist/cli/commands/windows/read.d.ts.map +0 -1
- package/dist/cli/commands/windows/search.d.ts.map +0 -1
- package/dist/cli/commands/windows/show.d.ts.map +0 -1
- package/dist/cli/commands/windows/watch.d.ts.map +0 -1
- package/dist/lib/active-sessions.d.ts.map +0 -1
- package/dist/lib/agent-adapters.d.ts.map +0 -1
- package/dist/lib/agent-sessions.d.ts.map +0 -1
- package/dist/lib/agent-trace.d.ts.map +0 -1
- package/dist/lib/analytics.d.ts.map +0 -1
- package/dist/lib/annotations-convex.d.ts.map +0 -1
- package/dist/lib/annotations.d.ts.map +0 -1
- package/dist/lib/auto/discover.d.ts.map +0 -1
- package/dist/lib/auto/ideate.d.ts.map +0 -1
- package/dist/lib/auto/spawn.d.ts.map +0 -1
- package/dist/lib/auto/workspace.d.ts.map +0 -1
- package/dist/lib/backlog.d.ts.map +0 -1
- package/dist/lib/backlog.test.d.ts +0 -1
- package/dist/lib/backlog.test.js +0 -162
- package/dist/lib/config-loader.d.ts.map +0 -1
- package/dist/lib/config-sync/adapters/claude.d.ts.map +0 -1
- package/dist/lib/config-sync/adapters/codex.d.ts.map +0 -1
- package/dist/lib/config-sync/adapters/copilot.d.ts.map +0 -1
- package/dist/lib/config-sync/adapters/gemini.d.ts.map +0 -1
- package/dist/lib/config-sync/adapters/index.d.ts.map +0 -1
- package/dist/lib/config-sync/adapters/opencode.d.ts.map +0 -1
- package/dist/lib/config-sync/index.d.ts.map +0 -1
- package/dist/lib/config-sync/types.d.ts.map +0 -1
- package/dist/lib/config-sync/writer.d.ts.map +0 -1
- package/dist/lib/content-sync/index.d.ts.map +0 -1
- package/dist/lib/content-sync/types.d.ts.map +0 -1
- package/dist/lib/contracts.d.ts.map +0 -1
- package/dist/lib/convex.d.ts.map +0 -1
- package/dist/lib/device.d.ts.map +0 -1
- package/dist/lib/digest/index.d.ts.map +0 -1
- package/dist/lib/docs/lint.d.ts.map +0 -1
- package/dist/lib/docs/lint.test.d.ts +0 -1
- package/dist/lib/docs/lint.test.js +0 -120
- package/dist/lib/docs/sync.d.ts.map +0 -1
- package/dist/lib/doctor/index.d.ts.map +0 -1
- package/dist/lib/doctor/repos.d.ts.map +0 -1
- package/dist/lib/doctor/templates.d.ts.map +0 -1
- package/dist/lib/errors.d.ts.map +0 -1
- package/dist/lib/events.d.ts.map +0 -1
- package/dist/lib/heartbeat.d.ts.map +0 -1
- package/dist/lib/heartbeat.test.d.ts +0 -1
- package/dist/lib/heartbeat.test.js +0 -124
- package/dist/lib/hooks/adapters/claude.d.ts.map +0 -1
- package/dist/lib/hooks/adapters/codex.d.ts.map +0 -1
- package/dist/lib/hooks/adapters/copilot.d.ts.map +0 -1
- package/dist/lib/hooks/context.d.ts.map +0 -1
- package/dist/lib/hooks/index.d.ts.map +0 -1
- package/dist/lib/hooks/registry.d.ts.map +0 -1
- package/dist/lib/hooks/runner.d.ts.map +0 -1
- package/dist/lib/hooks/types.d.ts.map +0 -1
- package/dist/lib/index.test.d.ts +0 -1
- package/dist/lib/index.test.js +0 -334
- package/dist/lib/managed-session.d.ts.map +0 -1
- package/dist/lib/math.d.ts.map +0 -1
- package/dist/lib/math.test.d.ts +0 -1
- package/dist/lib/math.test.js +0 -238
- package/dist/lib/ngrok.d.ts.map +0 -1
- package/dist/lib/nvim/discovery.d.ts.map +0 -1
- package/dist/lib/nvim/discovery.test.d.ts +0 -1
- package/dist/lib/nvim/discovery.test.js +0 -131
- package/dist/lib/nvim/index.d.ts.map +0 -1
- package/dist/lib/nvim/remote.d.ts.map +0 -1
- package/dist/lib/nvim/remote.test.d.ts +0 -1
- package/dist/lib/nvim/remote.test.js +0 -18
- package/dist/lib/panes/broker.d.ts.map +0 -1
- package/dist/lib/panes/index.d.ts.map +0 -1
- package/dist/lib/panes/server.d.ts.map +0 -1
- package/dist/lib/preview/detect.d.ts.map +0 -1
- package/dist/lib/preview/index.d.ts.map +0 -1
- package/dist/lib/preview/manager.d.ts.map +0 -1
- package/dist/lib/preview/schema.d.ts.map +0 -1
- package/dist/lib/preview/sprite.d.ts.map +0 -1
- package/dist/lib/preview/watcher.d.ts.map +0 -1
- package/dist/lib/process/index.d.ts.map +0 -1
- package/dist/lib/process/snapshot.d.ts.map +0 -1
- package/dist/lib/process/snapshot.test.d.ts +0 -1
- package/dist/lib/process/snapshot.test.js +0 -127
- package/dist/lib/project-identity.d.ts.map +0 -1
- package/dist/lib/provider-auth.d.ts.map +0 -1
- package/dist/lib/references.d.ts.map +0 -1
- package/dist/lib/report.d.ts.map +0 -1
- package/dist/lib/resources.d.ts.map +0 -1
- package/dist/lib/resources.test.d.ts +0 -1
- package/dist/lib/resources.test.js +0 -94
- package/dist/lib/runner.d.ts.map +0 -1
- package/dist/lib/runner.test.d.ts +0 -1
- package/dist/lib/runner.test.js +0 -234
- package/dist/lib/session-artifacts.d.ts.map +0 -1
- package/dist/lib/session-manager.d.ts.map +0 -1
- package/dist/lib/session-manager.test.d.ts +0 -1
- package/dist/lib/session-manager.test.js +0 -310
- package/dist/lib/session-result.d.ts.map +0 -1
- package/dist/lib/session-state.d.ts.map +0 -1
- package/dist/lib/slack-workspace.d.ts.map +0 -1
- package/dist/lib/tmux/bridge.d.ts.map +0 -1
- package/dist/lib/tmux/context.d.ts.map +0 -1
- package/dist/lib/tmux/context.test.d.ts +0 -1
- package/dist/lib/tmux/context.test.js +0 -215
- package/dist/lib/tmux/index.d.ts.map +0 -1
- package/dist/lib/tmux/map.d.ts.map +0 -1
- package/dist/lib/tmux/map.test.d.ts +0 -1
- package/dist/lib/tmux/map.test.js +0 -80
- package/dist/lib/tmux/panes.d.ts.map +0 -1
- package/dist/lib/tmux/redaction.d.ts.map +0 -1
- package/dist/lib/tmux/redaction.test.d.ts +0 -1
- package/dist/lib/tmux/redaction.test.js +0 -183
- package/dist/lib/triage-llm.d.ts.map +0 -1
- package/dist/lib/triage-tracker.d.ts.map +0 -1
- package/dist/lib/triage.d.ts.map +0 -1
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/windows/index.d.ts.map +0 -1
- package/dist/lib/windows/inventory.d.ts.map +0 -1
- package/dist/lib/windows/inventory.test.d.ts +0 -1
- package/dist/lib/windows/inventory.test.js +0 -292
- package/dist/lib/windows/types.d.ts.map +0 -1
- package/dist/lib.d.ts.map +0 -1
- package/dist/web/app/@overlay/default.d.ts +0 -1
- package/dist/web/app/@overlay/default.js +0 -3
- package/dist/web/app/about/page.d.ts +0 -1
- package/dist/web/app/about/page.js +0 -6
- package/dist/web/app/layout.d.ts +0 -7
- package/dist/web/app/layout.js +0 -19
- package/dist/web/app/page.d.ts +0 -1
- package/dist/web/app/page.js +0 -38
- package/dist/web/app/settings/page.d.ts +0 -1
- package/dist/web/app/settings/page.js +0 -6
- package/dist/web/app/shortcuts/page.d.ts +0 -1
- package/dist/web/app/shortcuts/page.js +0 -6
- package/dist/web/atoms/sidebar.d.ts +0 -16
- package/dist/web/atoms/sidebar.js +0 -58
- package/dist/web/atoms/state.d.ts +0 -24
- package/dist/web/atoms/state.js +0 -43
- package/dist/web/components/command-palette.d.ts +0 -6
- package/dist/web/components/command-palette.js +0 -297
- package/dist/web/components/main-view.d.ts +0 -1
- package/dist/web/components/main-view.js +0 -93
- package/dist/web/components/overlay/page-overlay.d.ts +0 -16
- package/dist/web/components/overlay/page-overlay.js +0 -84
- package/dist/web/components/pane-view.d.ts +0 -5
- package/dist/web/components/pane-view.js +0 -168
- package/dist/web/components/project-files-view.d.ts +0 -6
- package/dist/web/components/project-files-view.js +0 -205
- package/dist/web/components/project-planning-view.d.ts +0 -6
- package/dist/web/components/project-planning-view.js +0 -146
- package/dist/web/components/session-view.d.ts +0 -6
- package/dist/web/components/session-view.js +0 -211
- package/dist/web/components/sessions-list-view.d.ts +0 -1
- package/dist/web/components/sessions-list-view.js +0 -118
- package/dist/web/components/sidebar/index.d.ts +0 -9
- package/dist/web/components/sidebar/index.js +0 -29
- package/dist/web/components/sidebar/kbd.d.ts +0 -17
- package/dist/web/components/sidebar/kbd.js +0 -47
- package/dist/web/components/sidebar/nav-group.d.ts +0 -22
- package/dist/web/components/sidebar/nav-group.js +0 -43
- package/dist/web/components/sidebar/nav-item.d.ts +0 -17
- package/dist/web/components/sidebar/nav-item.js +0 -38
- package/dist/web/components/sidebar/sidebar-header.d.ts +0 -9
- package/dist/web/components/sidebar/sidebar-header.js +0 -18
- package/dist/web/components/sidebar/sidebar-nav.d.ts +0 -7
- package/dist/web/components/sidebar/sidebar-nav.js +0 -505
- package/dist/web/components/sidebar/sidebar-search.d.ts +0 -7
- package/dist/web/components/sidebar/sidebar-search.js +0 -18
- package/dist/web/components/sidebar/sidebar-settings.d.ts +0 -4
- package/dist/web/components/sidebar/sidebar-settings.js +0 -28
- package/dist/web/components/sidebar/sidebar-transition.d.ts +0 -12
- package/dist/web/components/sidebar/sidebar-transition.js +0 -58
- package/dist/web/components/status-bar.d.ts +0 -1
- package/dist/web/components/status-bar.js +0 -53
- package/dist/web/components/terminal.d.ts +0 -4
- package/dist/web/components/terminal.js +0 -324
- package/dist/web/components/toast.d.ts +0 -7
- package/dist/web/components/toast.js +0 -72
- package/dist/web/hooks/use-keybindings.d.ts +0 -30
- package/dist/web/hooks/use-keybindings.js +0 -322
- package/dist/web/hooks/use-state.d.ts +0 -11
- package/dist/web/hooks/use-state.js +0 -84
- package/dist/web/lib/api.d.ts +0 -179
- package/dist/web/lib/api.js +0 -79
- package/dist/web/lib/paths.d.ts +0 -2
- package/dist/web/lib/paths.js +0 -26
- package/dist/web/lib/utils.d.ts +0 -2
- package/dist/web/lib/utils.js +0 -5
- package/dist/web/lib/ws.d.ts +0 -18
- package/dist/web/lib/ws.js +0 -138
- package/dist/web/next.config.d.ts +0 -3
- package/dist/web/next.config.js +0 -9
- package/scripts/generate-manifest.ts +0 -44
- package/src/cli/base-command.ts +0 -233
- package/src/cli/commands/__tests__/annotations.test.ts +0 -704
- package/src/cli/commands/__tests__/bridge.test.ts +0 -101
- package/src/cli/commands/__tests__/daemon.test.ts +0 -79
- package/src/cli/commands/agent/list.ts +0 -75
- package/src/cli/commands/annotation/ack.ts +0 -37
- package/src/cli/commands/annotation/create.ts +0 -67
- package/src/cli/commands/annotation/events.ts +0 -63
- package/src/cli/commands/annotation/export.ts +0 -67
- package/src/cli/commands/annotation/import.ts +0 -98
- package/src/cli/commands/annotation/ingest.ts +0 -112
- package/src/cli/commands/annotation/list.ts +0 -57
- package/src/cli/commands/annotation/reply.ts +0 -46
- package/src/cli/commands/annotation/resolve.ts +0 -37
- package/src/cli/commands/auto/index.ts +0 -755
- package/src/cli/commands/backlog/add.ts +0 -74
- package/src/cli/commands/backlog/claim.ts +0 -53
- package/src/cli/commands/backlog/complete.ts +0 -51
- package/src/cli/commands/backlog/list.ts +0 -107
- package/src/cli/commands/backlog/pick.ts +0 -50
- package/src/cli/commands/backlog/sync.ts +0 -131
- package/src/cli/commands/bootstrap.ts +0 -205
- package/src/cli/commands/bridge.ts +0 -233
- package/src/cli/commands/context/inject.ts +0 -103
- package/src/cli/commands/context/list.ts +0 -112
- package/src/cli/commands/context/publish.ts +0 -83
- package/src/cli/commands/context/read.ts +0 -85
- package/src/cli/commands/daemon.ts +0 -1809
- package/src/cli/commands/digest/index.ts +0 -245
- package/src/cli/commands/docs/lint.ts +0 -93
- package/src/cli/commands/docs/sync.ts +0 -90
- package/src/cli/commands/doctor.ts +0 -267
- package/src/cli/commands/find/index.ts +0 -313
- package/src/cli/commands/history/index.ts +0 -269
- package/src/cli/commands/hooks/guard.ts +0 -71
- package/src/cli/commands/hooks/list.ts +0 -139
- package/src/cli/commands/hooks/lock.ts +0 -47
- package/src/cli/commands/hooks/status.ts +0 -56
- package/src/cli/commands/hooks/test.ts +0 -190
- package/src/cli/commands/hooks/unlock.ts +0 -56
- package/src/cli/commands/list.e2e.test.ts +0 -58
- package/src/cli/commands/list.ts +0 -96
- package/src/cli/commands/login.ts +0 -236
- package/src/cli/commands/logout.ts +0 -45
- package/src/cli/commands/panes/broker.ts +0 -68
- package/src/cli/commands/panes/pipe-sink.ts +0 -101
- package/src/cli/commands/panes/snapshot.ts +0 -156
- package/src/cli/commands/plan.e2e.test.ts +0 -90
- package/src/cli/commands/plan.ts +0 -68
- package/src/cli/commands/preview/index.ts +0 -282
- package/src/cli/commands/preview/list.ts +0 -116
- package/src/cli/commands/preview/status.ts +0 -137
- package/src/cli/commands/preview/stop.ts +0 -165
- package/src/cli/commands/project/add.ts +0 -110
- package/src/cli/commands/project/list.ts +0 -136
- package/src/cli/commands/project/remove.ts +0 -60
- package/src/cli/commands/push.ts +0 -115
- package/src/cli/commands/reference/add.ts +0 -266
- package/src/cli/commands/reference/delete.ts +0 -67
- package/src/cli/commands/reference/extract.ts +0 -389
- package/src/cli/commands/reference/list.ts +0 -117
- package/src/cli/commands/reference/normalize.ts +0 -90
- package/src/cli/commands/reference/open.ts +0 -92
- package/src/cli/commands/reference/save.ts +0 -103
- package/src/cli/commands/reference/search.ts +0 -85
- package/src/cli/commands/reference/show.ts +0 -174
- package/src/cli/commands/reference/update-index.ts +0 -103
- package/src/cli/commands/reference/update.ts +0 -136
- package/src/cli/commands/report/blocked.ts +0 -165
- package/src/cli/commands/report/complete.ts +0 -179
- package/src/cli/commands/report/progress.ts +0 -142
- package/src/cli/commands/report/start.ts +0 -140
- package/src/cli/commands/resource/acquire.ts +0 -116
- package/src/cli/commands/resource/list.ts +0 -77
- package/src/cli/commands/resource/release.ts +0 -64
- package/src/cli/commands/resource/wait.ts +0 -93
- package/src/cli/commands/review.ts +0 -105
- package/src/cli/commands/session/attach.ts +0 -200
- package/src/cli/commands/session/await.ts +0 -83
- package/src/cli/commands/session/complete.ts +0 -100
- package/src/cli/commands/session/create.ts +0 -92
- package/src/cli/commands/session/heartbeat.ts +0 -63
- package/src/cli/commands/session/list.ts +0 -281
- package/src/cli/commands/session/mark-done.ts +0 -132
- package/src/cli/commands/session/mine.ts +0 -189
- package/src/cli/commands/session/replay.ts +0 -659
- package/src/cli/commands/session/run.ts +0 -44
- package/src/cli/commands/session/show.ts +0 -177
- package/src/cli/commands/session/start.ts +0 -580
- package/src/cli/commands/session/state/cleanup.ts +0 -61
- package/src/cli/commands/session/state/end.ts +0 -47
- package/src/cli/commands/session/state/get.ts +0 -65
- package/src/cli/commands/session/state/init.ts +0 -50
- package/src/cli/commands/session/state/list.ts +0 -68
- package/src/cli/commands/session/state/update.ts +0 -108
- package/src/cli/commands/session/stop.ts +0 -134
- package/src/cli/commands/session/view.ts +0 -186
- package/src/cli/commands/start.ts +0 -256
- package/src/cli/commands/state/dump.ts +0 -449
- package/src/cli/commands/status.ts +0 -244
- package/src/cli/commands/sync.ts +0 -174
- package/src/cli/commands/trace/export.ts +0 -255
- package/src/cli/commands/triage/claim.ts +0 -203
- package/src/cli/commands/triage/list.ts +0 -137
- package/src/cli/commands/triage/next.ts +0 -73
- package/src/cli/commands/triage/pull.ts +0 -97
- package/src/cli/commands/triage/stats.ts +0 -82
- package/src/cli/commands/tunnel/list.ts +0 -113
- package/src/cli/commands/tunnel/start.ts +0 -122
- package/src/cli/commands/tunnel/stop.ts +0 -108
- package/src/cli/commands/tunnel/url.ts +0 -82
- package/src/cli/commands/web/start.ts +0 -125
- package/src/cli/commands/windows/context.ts +0 -439
- package/src/cli/commands/windows/focus.ts +0 -130
- package/src/cli/commands/windows/list.ts +0 -213
- package/src/cli/commands/windows/map.ts +0 -223
- package/src/cli/commands/windows/read.ts +0 -279
- package/src/cli/commands/windows/search.ts +0 -219
- package/src/cli/commands/windows/show.ts +0 -188
- package/src/cli/commands/windows/watch.ts +0 -262
- package/src/lib/__tests__/annotations-convex.test.ts +0 -104
- package/src/lib/active-sessions.ts +0 -1486
- package/src/lib/agent-adapters.ts +0 -412
- package/src/lib/agent-sessions.ts +0 -671
- package/src/lib/agent-trace.test.ts +0 -296
- package/src/lib/agent-trace.ts +0 -513
- package/src/lib/analytics.ts +0 -178
- package/src/lib/annotations-convex.ts +0 -296
- package/src/lib/annotations.test.ts +0 -274
- package/src/lib/annotations.ts +0 -836
- package/src/lib/auto/discover.ts +0 -545
- package/src/lib/auto/ideate.ts +0 -412
- package/src/lib/auto/spawn.ts +0 -549
- package/src/lib/auto/workspace.ts +0 -282
- package/src/lib/backlog.test.ts +0 -194
- package/src/lib/backlog.ts +0 -428
- package/src/lib/config-loader.ts +0 -391
- package/src/lib/config-sync/adapters/claude.ts +0 -91
- package/src/lib/config-sync/adapters/codex.ts +0 -135
- package/src/lib/config-sync/adapters/copilot.ts +0 -98
- package/src/lib/config-sync/adapters/gemini.ts +0 -86
- package/src/lib/config-sync/adapters/index.ts +0 -39
- package/src/lib/config-sync/adapters/opencode.ts +0 -94
- package/src/lib/config-sync/index.ts +0 -399
- package/src/lib/config-sync/types.ts +0 -92
- package/src/lib/config-sync/writer.ts +0 -188
- package/src/lib/content-sync/index.ts +0 -882
- package/src/lib/content-sync/types.ts +0 -104
- package/src/lib/contracts.test.ts +0 -186
- package/src/lib/contracts.ts +0 -195
- package/src/lib/convex.ts +0 -54
- package/src/lib/device.ts +0 -41
- package/src/lib/digest/index.ts +0 -529
- package/src/lib/docs/lint.test.ts +0 -135
- package/src/lib/docs/lint.ts +0 -310
- package/src/lib/docs/sync.ts +0 -184
- package/src/lib/doctor/index.ts +0 -647
- package/src/lib/doctor/repos.ts +0 -381
- package/src/lib/doctor/templates.ts +0 -191
- package/src/lib/errors.ts +0 -111
- package/src/lib/events.ts +0 -479
- package/src/lib/heartbeat.test.ts +0 -164
- package/src/lib/heartbeat.ts +0 -326
- package/src/lib/hooks/adapters/claude.ts +0 -115
- package/src/lib/hooks/adapters/codex.ts +0 -92
- package/src/lib/hooks/adapters/copilot.ts +0 -141
- package/src/lib/hooks/context.ts +0 -174
- package/src/lib/hooks/index.ts +0 -39
- package/src/lib/hooks/registry.ts +0 -101
- package/src/lib/hooks/runner.ts +0 -208
- package/src/lib/hooks/types.ts +0 -89
- package/src/lib/index.test.ts +0 -426
- package/src/lib/managed-session.ts +0 -117
- package/src/lib/math.test.ts +0 -299
- package/src/lib/math.ts +0 -120
- package/src/lib/ngrok.ts +0 -441
- package/src/lib/nvim/discovery.test.ts +0 -157
- package/src/lib/nvim/discovery.ts +0 -181
- package/src/lib/nvim/index.ts +0 -28
- package/src/lib/nvim/remote.test.ts +0 -21
- package/src/lib/nvim/remote.ts +0 -184
- package/src/lib/panes/README.md +0 -20
- package/src/lib/panes/broker.ts +0 -261
- package/src/lib/panes/index.ts +0 -1
- package/src/lib/panes/server.ts +0 -379
- package/src/lib/preview/detect.ts +0 -184
- package/src/lib/preview/index.ts +0 -1
- package/src/lib/process/index.ts +0 -16
- package/src/lib/process/snapshot.test.ts +0 -188
- package/src/lib/process/snapshot.ts +0 -257
- package/src/lib/provider-auth.ts +0 -258
- package/src/lib/references.ts +0 -481
- package/src/lib/report.ts +0 -973
- package/src/lib/resources.test.ts +0 -132
- package/src/lib/resources.ts +0 -429
- package/src/lib/runner.test.ts +0 -288
- package/src/lib/runner.ts +0 -1223
- package/src/lib/session-artifacts.test.ts +0 -107
- package/src/lib/session-artifacts.ts +0 -193
- package/src/lib/session-manager.test.ts +0 -402
- package/src/lib/session-manager.ts +0 -150
- package/src/lib/session-result.test.ts +0 -98
- package/src/lib/session-result.ts +0 -262
- package/src/lib/session-state.ts +0 -470
- package/src/lib/slack-workspace.ts +0 -25
- package/src/lib/tmux/bridge.ts +0 -439
- package/src/lib/tmux/context.test.ts +0 -242
- package/src/lib/tmux/context.ts +0 -380
- package/src/lib/tmux/index.ts +0 -46
- package/src/lib/tmux/map.test.ts +0 -99
- package/src/lib/tmux/map.ts +0 -252
- package/src/lib/tmux/panes.ts +0 -170
- package/src/lib/tmux/redaction.test.ts +0 -231
- package/src/lib/tmux/redaction.ts +0 -201
- package/src/lib/triage-llm.ts +0 -312
- package/src/lib/triage-tracker.ts +0 -400
- package/src/lib/triage.ts +0 -655
- package/src/lib/types.ts +0 -61
- package/src/lib/windows/index.ts +0 -2
- package/src/lib/windows/inventory.test.ts +0 -370
- package/src/lib/windows/inventory.ts +0 -352
- package/src/lib/windows/types.ts +0 -46
- package/src/lib.ts +0 -260
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
3
|
-
import { join, resolve } from "node:path";
|
|
4
|
-
import { spawnSync } from "node:child_process";
|
|
5
|
-
|
|
6
|
-
describe("bridge command", () => {
|
|
7
|
-
const repoRoot = resolve(__dirname, "../../../../../..");
|
|
8
|
-
|
|
9
|
-
it("bridge script exists and is reachable from CLI", () => {
|
|
10
|
-
const scriptPath = join(repoRoot, "scripts", "pi-bridge.ts");
|
|
11
|
-
expect(existsSync(scriptPath)).toBe(true);
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
it("CLI symlink points to the bridge script", () => {
|
|
15
|
-
const symlinkPath = join(repoRoot, "apps", "cli", "scripts", "pi-bridge.ts");
|
|
16
|
-
expect(existsSync(symlinkPath)).toBe(true);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it("bridge script is valid TypeScript (can be parsed)", () => {
|
|
20
|
-
const scriptPath = join(repoRoot, "scripts", "pi-bridge.ts");
|
|
21
|
-
// Just verify it can be read without errors
|
|
22
|
-
const result = spawnSync(
|
|
23
|
-
"node",
|
|
24
|
-
["--experimental-strip-types", "-e", `require("fs").readFileSync("${scriptPath}", "utf8")`],
|
|
25
|
-
{ encoding: "utf8", timeout: 5000 },
|
|
26
|
-
);
|
|
27
|
-
expect(result.status).toBe(0);
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
describe("bridge config resolution", () => {
|
|
32
|
-
it("parseDotEnv handles standard .env format", () => {
|
|
33
|
-
// Test the parsing logic inline since it's in the bridge command
|
|
34
|
-
const parseDotEnv = (content: string): Record<string, string> => {
|
|
35
|
-
const env: Record<string, string> = {};
|
|
36
|
-
for (const rawLine of content.split("\n")) {
|
|
37
|
-
const line = rawLine.trim();
|
|
38
|
-
if (!line || line.startsWith("#")) continue;
|
|
39
|
-
const idx = line.indexOf("=");
|
|
40
|
-
if (idx <= 0) continue;
|
|
41
|
-
const key = line.slice(0, idx).trim();
|
|
42
|
-
let value = line.slice(idx + 1).trim();
|
|
43
|
-
if (
|
|
44
|
-
(value.startsWith('"') && value.endsWith('"')) ||
|
|
45
|
-
(value.startsWith("'") && value.endsWith("'"))
|
|
46
|
-
) {
|
|
47
|
-
value = value.slice(1, -1);
|
|
48
|
-
}
|
|
49
|
-
if (key) env[key] = value;
|
|
50
|
-
}
|
|
51
|
-
return env;
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
const result = parseDotEnv(`
|
|
55
|
-
# Comment line
|
|
56
|
-
CONVEX_URL=https://test.convex.cloud
|
|
57
|
-
ABBIE_BRIDGE_SECRET="my-secret"
|
|
58
|
-
PI_MODEL='claude-sonnet-4.6'
|
|
59
|
-
EMPTY_VALUE=
|
|
60
|
-
`);
|
|
61
|
-
|
|
62
|
-
expect(result.CONVEX_URL).toBe("https://test.convex.cloud");
|
|
63
|
-
expect(result.ABBIE_BRIDGE_SECRET).toBe("my-secret");
|
|
64
|
-
expect(result.PI_MODEL).toBe("claude-sonnet-4.6");
|
|
65
|
-
expect(result.EMPTY_VALUE).toBe("");
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
it("parseDotEnv skips comments and empty lines", () => {
|
|
69
|
-
const parseDotEnv = (content: string): Record<string, string> => {
|
|
70
|
-
const env: Record<string, string> = {};
|
|
71
|
-
for (const rawLine of content.split("\n")) {
|
|
72
|
-
const line = rawLine.trim();
|
|
73
|
-
if (!line || line.startsWith("#")) continue;
|
|
74
|
-
const idx = line.indexOf("=");
|
|
75
|
-
if (idx <= 0) continue;
|
|
76
|
-
const key = line.slice(0, idx).trim();
|
|
77
|
-
let value = line.slice(idx + 1).trim();
|
|
78
|
-
if (
|
|
79
|
-
(value.startsWith('"') && value.endsWith('"')) ||
|
|
80
|
-
(value.startsWith("'") && value.endsWith("'"))
|
|
81
|
-
) {
|
|
82
|
-
value = value.slice(1, -1);
|
|
83
|
-
}
|
|
84
|
-
if (key) env[key] = value;
|
|
85
|
-
}
|
|
86
|
-
return env;
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
const result = parseDotEnv(`
|
|
90
|
-
# This is a comment
|
|
91
|
-
# Another comment
|
|
92
|
-
|
|
93
|
-
KEY=value
|
|
94
|
-
|
|
95
|
-
# More comments
|
|
96
|
-
`);
|
|
97
|
-
|
|
98
|
-
expect(Object.keys(result)).toEqual(["KEY"]);
|
|
99
|
-
expect(result.KEY).toBe("value");
|
|
100
|
-
});
|
|
101
|
-
});
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
|
|
3
|
-
type ExecuteQueuedCommandResult = { success: boolean; sessionId?: string; error?: string };
|
|
4
|
-
type ExecuteQueuedCommand = (command: string, args: unknown) => Promise<ExecuteQueuedCommandResult>;
|
|
5
|
-
|
|
6
|
-
const startSpy = vi.fn(async () => ({ session_id: "sess_test_123" }));
|
|
7
|
-
|
|
8
|
-
vi.mock("@creativeintelligence/sdk/convex", () => ({
|
|
9
|
-
api: {},
|
|
10
|
-
closeClients: vi.fn(),
|
|
11
|
-
getHttpClient: vi.fn(),
|
|
12
|
-
isConvexConfigured: vi.fn(() => true),
|
|
13
|
-
subscribe: vi.fn(),
|
|
14
|
-
}));
|
|
15
|
-
|
|
16
|
-
vi.mock("../../../lib/active-sessions.js", () => ({
|
|
17
|
-
getActiveSessionManager: () => ({ start: startSpy }),
|
|
18
|
-
}));
|
|
19
|
-
|
|
20
|
-
describe("executeQueuedCommand", () => {
|
|
21
|
-
beforeEach(() => {
|
|
22
|
-
startSpy.mockClear();
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it('should handle "abbie session start" command', async () => {
|
|
26
|
-
const { default: DaemonCommand } = await import("../daemon.ts");
|
|
27
|
-
|
|
28
|
-
const exec = (
|
|
29
|
-
DaemonCommand as unknown as { prototype: { executeQueuedCommand: ExecuteQueuedCommand } }
|
|
30
|
-
).prototype.executeQueuedCommand;
|
|
31
|
-
|
|
32
|
-
const result = await exec("abbie session start", {
|
|
33
|
-
agent: "codex",
|
|
34
|
-
project: "arbor",
|
|
35
|
-
goal: "Implement ARBOR-123",
|
|
36
|
-
issue: "ARBOR-123",
|
|
37
|
-
cwd: "/tmp/arbor",
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
expect(startSpy).toHaveBeenCalledTimes(1);
|
|
41
|
-
expect(startSpy).toHaveBeenCalledWith({
|
|
42
|
-
agent: "codex",
|
|
43
|
-
project: "arbor",
|
|
44
|
-
goal: "Implement ARBOR-123",
|
|
45
|
-
issue: "ARBOR-123",
|
|
46
|
-
cwd: "/tmp/arbor",
|
|
47
|
-
});
|
|
48
|
-
expect(result).toEqual({ success: true, sessionId: "sess_test_123" });
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it("should return error for unknown command", async () => {
|
|
52
|
-
const { default: DaemonCommand } = await import("../daemon.ts");
|
|
53
|
-
|
|
54
|
-
const exec = (
|
|
55
|
-
DaemonCommand as unknown as { prototype: { executeQueuedCommand: ExecuteQueuedCommand } }
|
|
56
|
-
).prototype.executeQueuedCommand;
|
|
57
|
-
|
|
58
|
-
const result = await exec("abbie nope", {});
|
|
59
|
-
expect(result).toEqual({ success: false, error: "Unknown command: abbie nope" });
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it("should handle missing required args gracefully", async () => {
|
|
63
|
-
const { default: DaemonCommand } = await import("../daemon.ts");
|
|
64
|
-
|
|
65
|
-
const exec = (
|
|
66
|
-
DaemonCommand as unknown as { prototype: { executeQueuedCommand: ExecuteQueuedCommand } }
|
|
67
|
-
).prototype.executeQueuedCommand;
|
|
68
|
-
|
|
69
|
-
const result = await exec("abbie session start", {
|
|
70
|
-
project: "arbor",
|
|
71
|
-
// agent missing
|
|
72
|
-
goal: "Missing agent",
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
expect(startSpy).not.toHaveBeenCalled();
|
|
76
|
-
expect(result.success).toBe(false);
|
|
77
|
-
expect(result.error).toContain("abbie session start");
|
|
78
|
-
});
|
|
79
|
-
});
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Command, Flags } from "@oclif/core";
|
|
2
|
-
import { AGENT_METADATA, getAvailableAgents } from "../../../lib/agent-adapters.js";
|
|
3
|
-
import { AGENTS } from "../../../lib/types.js";
|
|
4
|
-
|
|
5
|
-
export default class AgentList extends Command {
|
|
6
|
-
static override description = "List available AI coding agents";
|
|
7
|
-
|
|
8
|
-
static override examples = [
|
|
9
|
-
"<%= config.bin %> <%= command.id %>",
|
|
10
|
-
"<%= config.bin %> <%= command.id %> --available",
|
|
11
|
-
"<%= config.bin %> <%= command.id %> --json --quiet",
|
|
12
|
-
];
|
|
13
|
-
|
|
14
|
-
static override flags = {
|
|
15
|
-
available: Flags.boolean({
|
|
16
|
-
char: "a",
|
|
17
|
-
description: "Only show installed/available agents",
|
|
18
|
-
default: false,
|
|
19
|
-
}),
|
|
20
|
-
json: Flags.boolean({
|
|
21
|
-
description: "Output as JSON",
|
|
22
|
-
default: false,
|
|
23
|
-
}),
|
|
24
|
-
quiet: Flags.boolean({
|
|
25
|
-
char: "q",
|
|
26
|
-
description: "Suppress info messages",
|
|
27
|
-
default: false,
|
|
28
|
-
}),
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
async run(): Promise<void> {
|
|
32
|
-
const { flags } = await this.parse(AgentList);
|
|
33
|
-
const availableAgents = await getAvailableAgents();
|
|
34
|
-
|
|
35
|
-
const agents = AGENTS.map((type) => {
|
|
36
|
-
const meta = AGENT_METADATA[type];
|
|
37
|
-
const isAvailable = availableAgents.includes(type);
|
|
38
|
-
|
|
39
|
-
return {
|
|
40
|
-
type,
|
|
41
|
-
name: meta.name,
|
|
42
|
-
description: meta.description,
|
|
43
|
-
available: isAvailable,
|
|
44
|
-
installCmd: meta.installCmd,
|
|
45
|
-
};
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
const filtered = flags.available ? agents.filter((a) => a.available) : agents;
|
|
49
|
-
|
|
50
|
-
if (flags.json) {
|
|
51
|
-
this.log(JSON.stringify(filtered, null, 2));
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (!flags.quiet) {
|
|
56
|
-
this.log("\nAI Coding Agents\n");
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
for (const agent of filtered) {
|
|
60
|
-
const status = agent.available ? "✓" : "✗";
|
|
61
|
-
const color = agent.available ? "\x1b[32m" : "\x1b[31m";
|
|
62
|
-
this.log(
|
|
63
|
-
` ${color}${status}\x1b[0m ${agent.type.padEnd(10)} ${agent.name} - ${agent.description}`,
|
|
64
|
-
);
|
|
65
|
-
if (!agent.available && agent.installCmd) {
|
|
66
|
-
this.log(` Install: ${agent.installCmd}`);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (!flags.quiet) {
|
|
71
|
-
const availableCount = filtered.filter((a) => a.available).length;
|
|
72
|
-
this.log(`\n${availableCount}/${filtered.length} agents available`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Args } from "@oclif/core";
|
|
2
|
-
import { ConvexAnnotationClient } from "../../../lib/annotations-convex.js";
|
|
3
|
-
import { BaseCommand } from "../../base-command.js";
|
|
4
|
-
|
|
5
|
-
export default class AnnotationAck extends BaseCommand {
|
|
6
|
-
static override description = "Acknowledge an annotation (mark as seen)";
|
|
7
|
-
static override hidden = false;
|
|
8
|
-
|
|
9
|
-
static override examples = ["<%= config.bin %> annotation ack PREVIEW_ID ANNOTATION_ID"];
|
|
10
|
-
|
|
11
|
-
static override args = {
|
|
12
|
-
previewId: Args.string({ description: "Preview deployment ID", required: true }),
|
|
13
|
-
annotationId: Args.string({ description: "Annotation ID", required: true }),
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
static override flags = {
|
|
17
|
-
...BaseCommand.baseFlags,
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
protected async execute(): Promise<unknown> {
|
|
21
|
-
const { args, flags } = await this.parse(AnnotationAck);
|
|
22
|
-
this.parsedFlags = flags;
|
|
23
|
-
|
|
24
|
-
const client = new ConvexAnnotationClient();
|
|
25
|
-
const annotation = await client.acknowledge(args.previewId, args.annotationId);
|
|
26
|
-
|
|
27
|
-
if (!annotation) {
|
|
28
|
-
this.error(`Annotation ${args.annotationId} not found`);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const isJson = flags.json || flags.format === "json";
|
|
32
|
-
if (isJson) return annotation;
|
|
33
|
-
|
|
34
|
-
this.logInfo(`Acknowledged ${annotation.id.slice(0, 8)}`);
|
|
35
|
-
return annotation;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { Args, Flags } from "@oclif/core";
|
|
2
|
-
import type { AnnotationIntent, AnnotationSeverity } from "../../../lib/annotations.js";
|
|
3
|
-
import { ConvexAnnotationClient } from "../../../lib/annotations-convex.js";
|
|
4
|
-
import { BaseCommand } from "../../base-command.js";
|
|
5
|
-
|
|
6
|
-
export default class AnnotationCreate extends BaseCommand {
|
|
7
|
-
static override description = "Create an annotation on a preview deployment";
|
|
8
|
-
static override hidden = false;
|
|
9
|
-
|
|
10
|
-
static override examples = [
|
|
11
|
-
'<%= config.bin %> annotation create PREVIEW_ID "Button text is truncated on mobile"',
|
|
12
|
-
'<%= config.bin %> annotation create PREVIEW_ID "Auth redirect broken" --severity error --intent bug',
|
|
13
|
-
'<%= config.bin %> annotation create PREVIEW_ID "Consider lazy loading" --intent suggestion --target /dashboard',
|
|
14
|
-
];
|
|
15
|
-
|
|
16
|
-
static override args = {
|
|
17
|
-
previewId: Args.string({ description: "Preview deployment ID", required: true }),
|
|
18
|
-
body: Args.string({ description: "Annotation body (markdown)", required: true }),
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
static override flags = {
|
|
22
|
-
...BaseCommand.baseFlags,
|
|
23
|
-
severity: Flags.string({
|
|
24
|
-
description: "Severity level",
|
|
25
|
-
options: ["info", "warning", "error", "critical"],
|
|
26
|
-
default: "info",
|
|
27
|
-
}),
|
|
28
|
-
intent: Flags.string({
|
|
29
|
-
description: "Annotation intent",
|
|
30
|
-
options: ["feedback", "bug", "suggestion", "question", "blocker"],
|
|
31
|
-
default: "feedback",
|
|
32
|
-
}),
|
|
33
|
-
source: Flags.string({
|
|
34
|
-
description: "Source tool creating this annotation",
|
|
35
|
-
default: "cli",
|
|
36
|
-
}),
|
|
37
|
-
target: Flags.string({
|
|
38
|
-
description: "URL path or element being annotated",
|
|
39
|
-
}),
|
|
40
|
-
selector: Flags.string({
|
|
41
|
-
description: "CSS selector for the annotated element",
|
|
42
|
-
}),
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
protected async execute(): Promise<unknown> {
|
|
46
|
-
const { args, flags } = await this.parse(AnnotationCreate);
|
|
47
|
-
this.parsedFlags = flags;
|
|
48
|
-
|
|
49
|
-
const client = new ConvexAnnotationClient();
|
|
50
|
-
const annotation = await client.create({
|
|
51
|
-
previewId: args.previewId,
|
|
52
|
-
body: args.body,
|
|
53
|
-
severity: flags.severity as AnnotationSeverity,
|
|
54
|
-
intent: flags.intent as AnnotationIntent,
|
|
55
|
-
source: flags.source,
|
|
56
|
-
target: flags.target,
|
|
57
|
-
selector: flags.selector,
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
const isJson = flags.json || flags.format === "json";
|
|
61
|
-
|
|
62
|
-
if (isJson) return annotation;
|
|
63
|
-
|
|
64
|
-
this.logInfo(`Created annotation ${annotation.id.slice(0, 8)} [${annotation.status}]`);
|
|
65
|
-
return annotation;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { Args, Flags } from "@oclif/core";
|
|
2
|
-
import { AnnotationStore } from "../../../lib/annotations.js";
|
|
3
|
-
import { BaseCommand } from "../../base-command.js";
|
|
4
|
-
|
|
5
|
-
export default class AnnotationEvents extends BaseCommand {
|
|
6
|
-
static override description =
|
|
7
|
-
"List or export annotation event envelopes for a preview deployment";
|
|
8
|
-
static override hidden = false;
|
|
9
|
-
|
|
10
|
-
static override examples = [
|
|
11
|
-
"<%= config.bin %> annotation events PREVIEW_ID",
|
|
12
|
-
"<%= config.bin %> annotation events PREVIEW_ID --session-id sess_abc",
|
|
13
|
-
"<%= config.bin %> annotation events PREVIEW_ID --ndjson -q",
|
|
14
|
-
];
|
|
15
|
-
|
|
16
|
-
static override args = {
|
|
17
|
-
previewId: Args.string({
|
|
18
|
-
description: "Preview deployment ID",
|
|
19
|
-
required: true,
|
|
20
|
-
}),
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
static override flags = {
|
|
24
|
-
...BaseCommand.baseFlags,
|
|
25
|
-
"session-id": Flags.string({
|
|
26
|
-
description:
|
|
27
|
-
"Override session ID in event envelopes (default: per-annotation linkedSessionId)",
|
|
28
|
-
}),
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
protected async execute(): Promise<unknown> {
|
|
32
|
-
const { args, flags } = await this.parse(AnnotationEvents);
|
|
33
|
-
this.parsedFlags = flags;
|
|
34
|
-
|
|
35
|
-
const store = new AnnotationStore();
|
|
36
|
-
const envelopes = store.exportEvents(args.previewId, {
|
|
37
|
-
sessionId: flags["session-id"],
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
if (this.ndjsonEnabled()) {
|
|
41
|
-
this.outputNdjson(envelopes);
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const isJson = flags.json || flags.format === "json";
|
|
46
|
-
if (isJson) {
|
|
47
|
-
return envelopes;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (envelopes.length === 0) {
|
|
51
|
-
this.logInfo("No events found");
|
|
52
|
-
return [];
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
for (const env of envelopes) {
|
|
56
|
-
const e = env.event;
|
|
57
|
-
const session = env.sessionId ? ` [${env.sessionId}]` : "";
|
|
58
|
-
this.log(`#${e.seq} ${e.type} ${e.annotationId.slice(0, 8)}${session} @ ${e.timestamp}`);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return envelopes;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { Args, Flags } from "@oclif/core";
|
|
2
|
-
import { AnnotationStore } from "../../../lib/annotations.js";
|
|
3
|
-
import { BaseCommand } from "../../base-command.js";
|
|
4
|
-
|
|
5
|
-
export default class AnnotationExport extends BaseCommand {
|
|
6
|
-
static override description = "Export annotations as AFS payload(s) from a preview deployment";
|
|
7
|
-
static override hidden = false;
|
|
8
|
-
|
|
9
|
-
static override examples = [
|
|
10
|
-
"<%= config.bin %> annotation export PREVIEW_ID",
|
|
11
|
-
"<%= config.bin %> annotation export PREVIEW_ID ANNOTATION_ID",
|
|
12
|
-
"<%= config.bin %> annotation export PREVIEW_ID --status pending",
|
|
13
|
-
"<%= config.bin %> annotation export PREVIEW_ID --ndjson",
|
|
14
|
-
];
|
|
15
|
-
|
|
16
|
-
static override args = {
|
|
17
|
-
previewId: Args.string({
|
|
18
|
-
description: "Preview deployment ID",
|
|
19
|
-
required: true,
|
|
20
|
-
}),
|
|
21
|
-
annotationId: Args.string({
|
|
22
|
-
description: "Single annotation ID to export (omit for batch)",
|
|
23
|
-
required: false,
|
|
24
|
-
}),
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
static override flags = {
|
|
28
|
-
...BaseCommand.baseFlags,
|
|
29
|
-
status: Flags.string({
|
|
30
|
-
char: "s",
|
|
31
|
-
description: "Filter by status (batch mode only)",
|
|
32
|
-
options: ["pending", "acknowledged", "resolved", "dismissed"],
|
|
33
|
-
}),
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
protected async execute(): Promise<unknown> {
|
|
37
|
-
const { args, flags } = await this.parse(AnnotationExport);
|
|
38
|
-
this.parsedFlags = flags;
|
|
39
|
-
|
|
40
|
-
const store = new AnnotationStore();
|
|
41
|
-
|
|
42
|
-
// Single export
|
|
43
|
-
if (args.annotationId) {
|
|
44
|
-
const afs = store.exportAfs(args.previewId, args.annotationId);
|
|
45
|
-
if (!afs) {
|
|
46
|
-
this.error(`Annotation ${args.annotationId} not found`);
|
|
47
|
-
}
|
|
48
|
-
return afs;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// Batch export
|
|
52
|
-
const filter = flags.status ? { status: flags.status as "pending" } : undefined;
|
|
53
|
-
const results = store.exportAfsBatch(args.previewId, filter);
|
|
54
|
-
|
|
55
|
-
if (this.ndjsonEnabled()) {
|
|
56
|
-
this.outputNdjson(results);
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (results.length === 0) {
|
|
61
|
-
this.logInfo("No annotations to export");
|
|
62
|
-
return [];
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return results;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
2
|
-
import { Args, Flags } from "@oclif/core";
|
|
3
|
-
import type { AfsAnnotation } from "../../../lib/annotations.js";
|
|
4
|
-
import { AnnotationStore } from "../../../lib/annotations.js";
|
|
5
|
-
import { BaseCommand } from "../../base-command.js";
|
|
6
|
-
|
|
7
|
-
export default class AnnotationImport extends BaseCommand {
|
|
8
|
-
static override description = "Import AFS annotation payload(s) into a preview deployment";
|
|
9
|
-
static override hidden = false;
|
|
10
|
-
|
|
11
|
-
static override examples = [
|
|
12
|
-
'echo \'{"id":"ann_1","comment":"Fix button","elementPath":"body","timestamp":0,"x":0,"y":0,"element":"div"}\' | <%= config.bin %> annotation import PREVIEW_ID',
|
|
13
|
-
"<%= config.bin %> annotation import PREVIEW_ID --file annotations.json",
|
|
14
|
-
"<%= config.bin %> annotation import PREVIEW_ID --file batch.json --batch",
|
|
15
|
-
];
|
|
16
|
-
|
|
17
|
-
static override args = {
|
|
18
|
-
previewId: Args.string({
|
|
19
|
-
description: "Preview deployment ID",
|
|
20
|
-
required: true,
|
|
21
|
-
}),
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
static override flags = {
|
|
25
|
-
...BaseCommand.baseFlags,
|
|
26
|
-
file: Flags.string({
|
|
27
|
-
char: "f",
|
|
28
|
-
description: "Path to AFS JSON file (single object or array)",
|
|
29
|
-
}),
|
|
30
|
-
batch: Flags.boolean({
|
|
31
|
-
description: "Treat input as a JSON array of AFS annotations",
|
|
32
|
-
default: false,
|
|
33
|
-
}),
|
|
34
|
-
source: Flags.string({
|
|
35
|
-
description: "Source identifier for imported annotations",
|
|
36
|
-
default: "agentation-afs",
|
|
37
|
-
}),
|
|
38
|
-
"session-id": Flags.string({
|
|
39
|
-
description: "Link imported annotations to this session ID",
|
|
40
|
-
}),
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
protected async execute(): Promise<unknown> {
|
|
44
|
-
const { args, flags } = await this.parse(AnnotationImport);
|
|
45
|
-
this.parsedFlags = flags;
|
|
46
|
-
|
|
47
|
-
let raw: string;
|
|
48
|
-
if (flags.file) {
|
|
49
|
-
raw = readFileSync(flags.file, "utf-8").trim();
|
|
50
|
-
} else {
|
|
51
|
-
raw = await this.readStdin();
|
|
52
|
-
if (!raw) {
|
|
53
|
-
this.error("No input provided. Pipe AFS JSON via stdin or use --file.");
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
let parsed: unknown;
|
|
58
|
-
try {
|
|
59
|
-
parsed = JSON.parse(raw);
|
|
60
|
-
} catch {
|
|
61
|
-
this.error("Invalid JSON input");
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const store = new AnnotationStore();
|
|
65
|
-
const parsedIsArray = Array.isArray(parsed);
|
|
66
|
-
if (flags.batch && !parsedIsArray) {
|
|
67
|
-
this.error("Batch mode expects a JSON array of AFS annotations");
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const isBatch = flags.batch || parsedIsArray;
|
|
71
|
-
const afsPayloads: AfsAnnotation[] = parsedIsArray
|
|
72
|
-
? (parsed as AfsAnnotation[])
|
|
73
|
-
: [parsed as AfsAnnotation];
|
|
74
|
-
|
|
75
|
-
const results = store.importAfsBatch({
|
|
76
|
-
previewId: args.previewId,
|
|
77
|
-
annotations: afsPayloads,
|
|
78
|
-
source: flags.source,
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
// Link session if provided
|
|
82
|
-
if (flags["session-id"]) {
|
|
83
|
-
for (const annotation of results) {
|
|
84
|
-
store.linkSession(args.previewId, annotation.id, flags["session-id"]);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const isJson = flags.json || flags.format === "json";
|
|
89
|
-
if (isJson) {
|
|
90
|
-
return isBatch ? results : results[0];
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
this.logInfo(
|
|
94
|
-
`Imported ${results.length} annotation${results.length !== 1 ? "s" : ""} into ${args.previewId}`
|
|
95
|
-
);
|
|
96
|
-
return isBatch ? results : results[0];
|
|
97
|
-
}
|
|
98
|
-
}
|