@pellux/goodvibes-agent 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/.goodvibes/GOODVIBES.md +35 -0
- package/.goodvibes/agents/reviewer.md +48 -0
- package/.goodvibes/skills/add-provider/SKILL.md +199 -0
- package/CHANGELOG.md +25 -0
- package/README.md +74 -0
- package/bin/goodvibes-agent.ts +2 -0
- package/docs/README.md +23 -0
- package/docs/deployment-and-services.md +57 -0
- package/docs/getting-started.md +53 -0
- package/docs/release-and-publishing.md +46 -0
- package/package.json +134 -0
- package/scripts/check-bun.sh +20 -0
- package/src/audio/player.ts +156 -0
- package/src/audio/spoken-turn-controller.ts +203 -0
- package/src/audio/spoken-turn-model-routing.ts +117 -0
- package/src/audio/spoken-turn-wiring.ts +44 -0
- package/src/audio/text-chunker.ts +110 -0
- package/src/cli/bundle-command.ts +227 -0
- package/src/cli/completion.ts +90 -0
- package/src/cli/config-overrides.ts +159 -0
- package/src/cli/endpoints.ts +63 -0
- package/src/cli/entrypoint.ts +172 -0
- package/src/cli/help.ts +299 -0
- package/src/cli/index.ts +11 -0
- package/src/cli/management-commands.ts +426 -0
- package/src/cli/management.ts +744 -0
- package/src/cli/network-posture.ts +46 -0
- package/src/cli/package-verification.ts +123 -0
- package/src/cli/parser.ts +369 -0
- package/src/cli/provider-auth-routes.ts +22 -0
- package/src/cli/provider-classification.ts +107 -0
- package/src/cli/redaction.ts +105 -0
- package/src/cli/service-command.ts +26 -0
- package/src/cli/service-posture.ts +482 -0
- package/src/cli/status.ts +383 -0
- package/src/cli/surface-command.ts +247 -0
- package/src/cli/tui-startup.ts +32 -0
- package/src/cli/types.ts +69 -0
- package/src/cli-flags.ts +21 -0
- package/src/config/goodvibes-home-audit.ts +465 -0
- package/src/config/index.ts +57 -0
- package/src/config/provider-model.ts +23 -0
- package/src/config/secret-config.ts +119 -0
- package/src/config/secrets.ts +71 -0
- package/src/config/surface.ts +1 -0
- package/src/core/composer-state.ts +61 -0
- package/src/core/conversation-rendering.ts +359 -0
- package/src/core/conversation.ts +551 -0
- package/src/core/history.ts +45 -0
- package/src/core/orchestrator.ts +7 -0
- package/src/core/system-message-router.ts +171 -0
- package/src/daemon/cli.ts +55 -0
- package/src/daemon/safe-serve.ts +61 -0
- package/src/input/agent-workspace.ts +428 -0
- package/src/input/autocomplete.ts +96 -0
- package/src/input/bookmark-modal.ts +115 -0
- package/src/input/command-args-hint.ts +36 -0
- package/src/input/command-registry.ts +329 -0
- package/src/input/commands/agent-externalized-tui.ts +73 -0
- package/src/input/commands/agent-workspace-runtime.ts +17 -0
- package/src/input/commands/branch-runtime.ts +72 -0
- package/src/input/commands/cloudflare-runtime.ts +370 -0
- package/src/input/commands/config.ts +18 -0
- package/src/input/commands/control-room-runtime.ts +255 -0
- package/src/input/commands/conversation-runtime.ts +207 -0
- package/src/input/commands/discovery-runtime.ts +52 -0
- package/src/input/commands/eval.ts +204 -0
- package/src/input/commands/experience-runtime.ts +278 -0
- package/src/input/commands/guidance-runtime.ts +106 -0
- package/src/input/commands/health-runtime.ts +434 -0
- package/src/input/commands/hooks-runtime.ts +148 -0
- package/src/input/commands/incident-runtime.ts +95 -0
- package/src/input/commands/integration-runtime.ts +394 -0
- package/src/input/commands/intelligence-runtime.ts +223 -0
- package/src/input/commands/knowledge.ts +531 -0
- package/src/input/commands/local-auth-runtime.ts +105 -0
- package/src/input/commands/local-provider-runtime.ts +170 -0
- package/src/input/commands/local-runtime.ts +392 -0
- package/src/input/commands/local-setup-review.ts +199 -0
- package/src/input/commands/local-setup-transfer.ts +135 -0
- package/src/input/commands/local-setup.ts +282 -0
- package/src/input/commands/managed-runtime.ts +209 -0
- package/src/input/commands/marketplace-runtime.ts +290 -0
- package/src/input/commands/mcp-runtime.ts +432 -0
- package/src/input/commands/memory-product-runtime.ts +111 -0
- package/src/input/commands/memory.ts +151 -0
- package/src/input/commands/notify-runtime.ts +83 -0
- package/src/input/commands/onboarding-runtime.ts +14 -0
- package/src/input/commands/operator-panel-runtime.ts +146 -0
- package/src/input/commands/operator-runtime.ts +392 -0
- package/src/input/commands/planning-runtime.ts +205 -0
- package/src/input/commands/platform-access-runtime.ts +422 -0
- package/src/input/commands/platform-services-runtime.ts +246 -0
- package/src/input/commands/policy-dispatch.ts +339 -0
- package/src/input/commands/policy.ts +17 -0
- package/src/input/commands/product-runtime.ts +351 -0
- package/src/input/commands/profile-sync-runtime.ts +99 -0
- package/src/input/commands/provider-accounts-runtime.ts +113 -0
- package/src/input/commands/provider.ts +363 -0
- package/src/input/commands/qrcode-runtime.ts +20 -0
- package/src/input/commands/quit-shared.ts +162 -0
- package/src/input/commands/recall-bundle.ts +132 -0
- package/src/input/commands/recall-capture.ts +152 -0
- package/src/input/commands/recall-query.ts +229 -0
- package/src/input/commands/recall-review.ts +98 -0
- package/src/input/commands/recall-shared.ts +22 -0
- package/src/input/commands/remote-runtime-pool.ts +106 -0
- package/src/input/commands/remote-runtime-setup.ts +199 -0
- package/src/input/commands/remote-runtime.ts +431 -0
- package/src/input/commands/replay-runtime.ts +18 -0
- package/src/input/commands/runtime-services.ts +291 -0
- package/src/input/commands/schedule-runtime.ts +91 -0
- package/src/input/commands/services-runtime.ts +209 -0
- package/src/input/commands/session-content.ts +408 -0
- package/src/input/commands/session-workflow.ts +464 -0
- package/src/input/commands/session.ts +375 -0
- package/src/input/commands/settings-sync-runtime.ts +174 -0
- package/src/input/commands/share-runtime.ts +119 -0
- package/src/input/commands/shell-core.ts +307 -0
- package/src/input/commands/skills-runtime.ts +221 -0
- package/src/input/commands/subscription-runtime.ts +434 -0
- package/src/input/commands/tasks-runtime.ts +230 -0
- package/src/input/commands/teamwork-runtime.ts +339 -0
- package/src/input/commands/teleport-runtime.ts +57 -0
- package/src/input/commands/tts-runtime.ts +29 -0
- package/src/input/commands/work-plan-runtime.ts +169 -0
- package/src/input/commands.ts +131 -0
- package/src/input/feed-context-factory.ts +254 -0
- package/src/input/file-picker.ts +192 -0
- package/src/input/handler-command-route.ts +180 -0
- package/src/input/handler-content-actions.ts +497 -0
- package/src/input/handler-feed-routes.ts +648 -0
- package/src/input/handler-feed.ts +452 -0
- package/src/input/handler-interactions.ts +281 -0
- package/src/input/handler-modal-routes.ts +418 -0
- package/src/input/handler-modal-stack.ts +263 -0
- package/src/input/handler-modal-token-routes.ts +329 -0
- package/src/input/handler-onboarding-cloudflare.ts +391 -0
- package/src/input/handler-onboarding.ts +620 -0
- package/src/input/handler-picker-routes.ts +472 -0
- package/src/input/handler-prompt-buffer.ts +320 -0
- package/src/input/handler-shortcuts.ts +213 -0
- package/src/input/handler-ui-state.ts +372 -0
- package/src/input/handler.ts +729 -0
- package/src/input/input-history.ts +297 -0
- package/src/input/keybindings.ts +292 -0
- package/src/input/mcp-workspace.ts +554 -0
- package/src/input/model-picker-provider-filter.ts +28 -0
- package/src/input/model-picker-types.ts +137 -0
- package/src/input/model-picker.ts +797 -0
- package/src/input/onboarding/handler-onboarding-routes.ts +125 -0
- package/src/input/onboarding/onboarding-runtime-status.ts +87 -0
- package/src/input/onboarding/onboarding-wizard-apply.ts +277 -0
- package/src/input/onboarding/onboarding-wizard-cloudflare-step.ts +494 -0
- package/src/input/onboarding/onboarding-wizard-cloudflare.ts +204 -0
- package/src/input/onboarding/onboarding-wizard-constants.ts +158 -0
- package/src/input/onboarding/onboarding-wizard-external-surface-extra-specs.ts +130 -0
- package/src/input/onboarding/onboarding-wizard-external-surfaces.ts +762 -0
- package/src/input/onboarding/onboarding-wizard-helpers.ts +167 -0
- package/src/input/onboarding/onboarding-wizard-rules.ts +256 -0
- package/src/input/onboarding/onboarding-wizard-state.ts +365 -0
- package/src/input/onboarding/onboarding-wizard-steps.ts +798 -0
- package/src/input/onboarding/onboarding-wizard-types.ts +195 -0
- package/src/input/onboarding/onboarding-wizard.ts +711 -0
- package/src/input/panel-integration-actions.ts +78 -0
- package/src/input/profile-picker-modal.ts +222 -0
- package/src/input/search.ts +100 -0
- package/src/input/selection-modal.ts +163 -0
- package/src/input/selection.ts +135 -0
- package/src/input/session-picker-modal.ts +136 -0
- package/src/input/settings-modal-behavior.ts +37 -0
- package/src/input/settings-modal-secrets.ts +41 -0
- package/src/input/settings-modal-subscriptions.ts +95 -0
- package/src/input/settings-modal-types.ts +91 -0
- package/src/input/settings-modal.ts +793 -0
- package/src/input/submission-intent.ts +17 -0
- package/src/input/submission-router.ts +59 -0
- package/src/input/tts-settings-actions.ts +100 -0
- package/src/main.ts +792 -0
- package/src/mcp/runtime-reload.ts +81 -0
- package/src/panels/agent-inspector-panel.ts +521 -0
- package/src/panels/agent-inspector-shared.ts +94 -0
- package/src/panels/agent-logs-panel.ts +559 -0
- package/src/panels/agent-logs-shared.ts +129 -0
- package/src/panels/approval-panel.ts +150 -0
- package/src/panels/automation-control-panel.ts +212 -0
- package/src/panels/base-panel.ts +254 -0
- package/src/panels/builtin/agent.ts +117 -0
- package/src/panels/builtin/development.ts +31 -0
- package/src/panels/builtin/knowledge.ts +26 -0
- package/src/panels/builtin/operations.ts +349 -0
- package/src/panels/builtin/session.ts +129 -0
- package/src/panels/builtin/shared.ts +274 -0
- package/src/panels/builtin-panels.ts +23 -0
- package/src/panels/cockpit-panel.ts +183 -0
- package/src/panels/communication-panel.ts +153 -0
- package/src/panels/confirm-state.ts +61 -0
- package/src/panels/context-visualizer-panel.ts +204 -0
- package/src/panels/control-plane-panel.ts +211 -0
- package/src/panels/cost-tracker-panel.ts +444 -0
- package/src/panels/debug-panel.ts +432 -0
- package/src/panels/diff-panel.ts +520 -0
- package/src/panels/docs-panel.ts +283 -0
- package/src/panels/eval-panel.ts +399 -0
- package/src/panels/file-explorer-panel.ts +584 -0
- package/src/panels/file-preview-panel.ts +434 -0
- package/src/panels/forensics-panel.ts +364 -0
- package/src/panels/git-panel.ts +638 -0
- package/src/panels/hooks-panel.ts +239 -0
- package/src/panels/incident-review-panel.ts +197 -0
- package/src/panels/index.ts +46 -0
- package/src/panels/intelligence-panel.ts +176 -0
- package/src/panels/knowledge-panel.ts +345 -0
- package/src/panels/local-auth-panel.ts +130 -0
- package/src/panels/marketplace-panel.ts +212 -0
- package/src/panels/memory-panel.ts +225 -0
- package/src/panels/ops-control-panel.ts +150 -0
- package/src/panels/ops-strategy-panel.ts +235 -0
- package/src/panels/orchestration-panel.ts +273 -0
- package/src/panels/panel-list-panel.ts +509 -0
- package/src/panels/panel-manager.ts +570 -0
- package/src/panels/panel-picker.ts +106 -0
- package/src/panels/plan-dashboard-panel.ts +274 -0
- package/src/panels/plugins-panel.ts +178 -0
- package/src/panels/policy-panel.ts +308 -0
- package/src/panels/polish.ts +717 -0
- package/src/panels/project-planning-panel.ts +711 -0
- package/src/panels/provider-account-snapshot.ts +259 -0
- package/src/panels/provider-accounts-panel.ts +218 -0
- package/src/panels/provider-health-domains.ts +215 -0
- package/src/panels/provider-health-panel.ts +727 -0
- package/src/panels/provider-health-tracker.ts +115 -0
- package/src/panels/provider-stats-panel.ts +366 -0
- package/src/panels/qr-panel.ts +182 -0
- package/src/panels/remote-panel.ts +449 -0
- package/src/panels/routes-panel.ts +178 -0
- package/src/panels/sandbox-panel.ts +283 -0
- package/src/panels/schedule-panel.ts +329 -0
- package/src/panels/scrollable-list-panel.ts +491 -0
- package/src/panels/search-focus.ts +32 -0
- package/src/panels/security-panel.ts +295 -0
- package/src/panels/services-panel.ts +231 -0
- package/src/panels/session-browser-panel.ts +400 -0
- package/src/panels/session-maintenance.ts +125 -0
- package/src/panels/settings-sync-panel.ts +120 -0
- package/src/panels/skills-panel.ts +431 -0
- package/src/panels/subscription-panel.ts +263 -0
- package/src/panels/symbol-outline-panel.ts +486 -0
- package/src/panels/system-messages-panel.ts +230 -0
- package/src/panels/tasks-panel.ts +399 -0
- package/src/panels/thinking-panel.ts +304 -0
- package/src/panels/token-budget-panel.ts +475 -0
- package/src/panels/tool-inspector-panel.ts +429 -0
- package/src/panels/types.ts +54 -0
- package/src/panels/watchers-panel.ts +193 -0
- package/src/panels/work-plan-panel.ts +175 -0
- package/src/panels/worktree-panel.ts +182 -0
- package/src/panels/wrfc-panel.ts +609 -0
- package/src/permissions/prompt.ts +165 -0
- package/src/planning/project-planning-coordinator.ts +543 -0
- package/src/plugins/loader.ts +15 -0
- package/src/renderer/agent-detail-modal.ts +331 -0
- package/src/renderer/agent-workspace.ts +238 -0
- package/src/renderer/ansi-sanitize.ts +76 -0
- package/src/renderer/autocomplete-overlay.ts +154 -0
- package/src/renderer/block-actions.ts +76 -0
- package/src/renderer/bookmark-modal.ts +101 -0
- package/src/renderer/bottom-bar.ts +58 -0
- package/src/renderer/buffer.ts +113 -0
- package/src/renderer/code-block.ts +373 -0
- package/src/renderer/compositor.ts +283 -0
- package/src/renderer/context-inspector.ts +219 -0
- package/src/renderer/conversation-layout.ts +67 -0
- package/src/renderer/conversation-overlays.ts +140 -0
- package/src/renderer/conversation-surface.ts +260 -0
- package/src/renderer/diff-view.ts +132 -0
- package/src/renderer/diff.ts +130 -0
- package/src/renderer/file-picker-overlay.ts +101 -0
- package/src/renderer/file-tree.ts +153 -0
- package/src/renderer/fullscreen-primitives.ts +130 -0
- package/src/renderer/fullscreen-workspace.ts +199 -0
- package/src/renderer/git-status.ts +89 -0
- package/src/renderer/help-overlay.ts +267 -0
- package/src/renderer/history-search-overlay.ts +73 -0
- package/src/renderer/layout-engine.ts +97 -0
- package/src/renderer/layout.ts +32 -0
- package/src/renderer/live-tail-modal.ts +156 -0
- package/src/renderer/markdown.ts +635 -0
- package/src/renderer/mcp-workspace.ts +237 -0
- package/src/renderer/modal-factory.ts +467 -0
- package/src/renderer/modal-utils.ts +24 -0
- package/src/renderer/model-picker-overlay.ts +473 -0
- package/src/renderer/model-workspace.ts +488 -0
- package/src/renderer/onboarding/onboarding-wizard.ts +615 -0
- package/src/renderer/overlay-box.ts +146 -0
- package/src/renderer/overlay-viewport.ts +104 -0
- package/src/renderer/panel-composite.ts +158 -0
- package/src/renderer/panel-picker-overlay.ts +202 -0
- package/src/renderer/panel-tab-bar.ts +69 -0
- package/src/renderer/panel-workspace-bar.ts +42 -0
- package/src/renderer/process-indicator.ts +96 -0
- package/src/renderer/process-modal.ts +656 -0
- package/src/renderer/process-summary.ts +67 -0
- package/src/renderer/profile-picker-modal.ts +129 -0
- package/src/renderer/progress.ts +98 -0
- package/src/renderer/qr-renderer.ts +120 -0
- package/src/renderer/search-overlay.ts +54 -0
- package/src/renderer/selection-modal-overlay.ts +214 -0
- package/src/renderer/semantic-diff.ts +369 -0
- package/src/renderer/session-picker-modal.ts +127 -0
- package/src/renderer/settings-modal-helpers.ts +193 -0
- package/src/renderer/settings-modal.ts +537 -0
- package/src/renderer/shell-surface.ts +88 -0
- package/src/renderer/status-glyphs.ts +21 -0
- package/src/renderer/status-token.ts +67 -0
- package/src/renderer/surface-layout.ts +101 -0
- package/src/renderer/syntax-highlighter.ts +542 -0
- package/src/renderer/system-message.ts +83 -0
- package/src/renderer/tab-strip.ts +108 -0
- package/src/renderer/text-layout.ts +31 -0
- package/src/renderer/thinking.ts +17 -0
- package/src/renderer/tool-call.ts +234 -0
- package/src/renderer/ui-factory.ts +524 -0
- package/src/renderer/ui-primitives.ts +96 -0
- package/src/runtime/bootstrap-command-context.ts +278 -0
- package/src/runtime/bootstrap-command-parts.ts +386 -0
- package/src/runtime/bootstrap-core.ts +540 -0
- package/src/runtime/bootstrap-hook-bridge.ts +112 -0
- package/src/runtime/bootstrap-shell.ts +283 -0
- package/src/runtime/bootstrap.ts +575 -0
- package/src/runtime/cloudflare-control-plane.ts +349 -0
- package/src/runtime/context.ts +142 -0
- package/src/runtime/diagnostics/panels/index.ts +24 -0
- package/src/runtime/diagnostics/panels/ops.ts +156 -0
- package/src/runtime/diagnostics/panels/panel-resources.ts +118 -0
- package/src/runtime/diagnostics/panels/policy.ts +177 -0
- package/src/runtime/index.ts +662 -0
- package/src/runtime/onboarding/apply.ts +642 -0
- package/src/runtime/onboarding/derivation.ts +534 -0
- package/src/runtime/onboarding/index.ts +7 -0
- package/src/runtime/onboarding/markers.ts +148 -0
- package/src/runtime/onboarding/snapshot.ts +406 -0
- package/src/runtime/onboarding/state.ts +141 -0
- package/src/runtime/onboarding/types.ts +404 -0
- package/src/runtime/onboarding/verify.ts +171 -0
- package/src/runtime/operator-token-cleanup.ts +27 -0
- package/src/runtime/perf/panel-contracts.ts +32 -0
- package/src/runtime/perf/panel-health-monitor.ts +18 -0
- package/src/runtime/sandbox-public-gaps.ts +358 -0
- package/src/runtime/services.ts +670 -0
- package/src/runtime/store/domains/domain-read-matrix.ts +15 -0
- package/src/runtime/store/domains/index.ts +222 -0
- package/src/runtime/store/domains/panels.ts +117 -0
- package/src/runtime/store/domains/ui-perf.ts +103 -0
- package/src/runtime/store/index.ts +305 -0
- package/src/runtime/store/selectors/index.ts +359 -0
- package/src/runtime/store/state.ts +145 -0
- package/src/runtime/surface-feature-flags.ts +65 -0
- package/src/runtime/terminal-output-guard.ts +228 -0
- package/src/runtime/ui/index.ts +39 -0
- package/src/runtime/ui/model-picker/data-provider.ts +182 -0
- package/src/runtime/ui/model-picker/health-enrichment.ts +228 -0
- package/src/runtime/ui/model-picker/index.ts +59 -0
- package/src/runtime/ui/model-picker/types.ts +149 -0
- package/src/runtime/ui/provider-health/data-provider.ts +244 -0
- package/src/runtime/ui/provider-health/fallback-visualizer.ts +71 -0
- package/src/runtime/ui/provider-health/index.ts +46 -0
- package/src/runtime/ui/provider-health/types.ts +146 -0
- package/src/runtime/ui-events.ts +1 -0
- package/src/runtime/ui-read-model-helpers.ts +1 -0
- package/src/runtime/ui-read-models-observability-maintenance.ts +1 -0
- package/src/runtime/ui-read-models-observability-options.ts +1 -0
- package/src/runtime/ui-read-models-observability-remote.ts +1 -0
- package/src/runtime/ui-read-models-observability-security.ts +1 -0
- package/src/runtime/ui-read-models-observability-system.ts +1 -0
- package/src/runtime/ui-read-models-observability.ts +1 -0
- package/src/runtime/ui-read-models.ts +61 -0
- package/src/runtime/ui-service-queries.ts +1 -0
- package/src/runtime/ui-services.ts +190 -0
- package/src/scripts/process-messages.ts +42 -0
- package/src/shell/blocking-input.ts +98 -0
- package/src/shell/service-settings-sync.ts +273 -0
- package/src/shell/ui-openers.ts +352 -0
- package/src/tools/index.ts +1 -0
- package/src/tools/wrfc-agent-guard.ts +49 -0
- package/src/types/grid.ts +48 -0
- package/src/types/sql-js.d.ts +15 -0
- package/src/utils/clipboard.ts +22 -0
- package/src/utils/splash-lines.ts +46 -0
- package/src/utils/terminal-width.ts +185 -0
- package/src/verification/live-verifier.ts +430 -0
- package/src/verification/verification-ledger.ts +242 -0
- package/src/version.ts +17 -0
- package/src/widget/index.ts +2 -0
- package/src/widget/types.ts +9 -0
- package/src/widget/widget.ts +8 -0
- package/src/work-plans/work-plan-store.ts +374 -0
- package/tsconfig.json +18 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
## GoodVibes Agent Operating Policy
|
|
2
|
+
|
|
3
|
+
GoodVibes Agent is a proactive personal operator assistant built on the GoodVibes TUI shell foundation. Its default work happens serially in the main conversation.
|
|
4
|
+
|
|
5
|
+
## Default Behavior
|
|
6
|
+
|
|
7
|
+
- Work in the main conversation by default.
|
|
8
|
+
- Take safe, non-destructive actions proactively when the user asks for an outcome.
|
|
9
|
+
- Use read-only daemon/operator routes, local Agent memory, local skills, local personas, and Agent knowledge when they help the task.
|
|
10
|
+
- Ask before destructive, externally visible, costly, privacy-sensitive, service-changing, package-installing, or broad filesystem/network actions unless the user explicitly commanded that exact action.
|
|
11
|
+
- Keep normal assistant chat separate from shared build/delegation sessions.
|
|
12
|
+
|
|
13
|
+
## Background Agents And WRFC
|
|
14
|
+
|
|
15
|
+
- Do not use background agents as a default execution strategy.
|
|
16
|
+
- Do not fan out Engineer, Reviewer, Tester, Verifier, or similar local roots from Agent.
|
|
17
|
+
- WRFC is never the default reasoning path.
|
|
18
|
+
- Request WRFC only when the user explicitly asks to build, implement, fix, patch, or review code, or explicitly says to use WRFC/agent review.
|
|
19
|
+
- For explicit build/fix/review work, delegate one request to GoodVibes TUI through the public shared-session/build-delegation contract with the full original user ask.
|
|
20
|
+
- If no stable public delegation route is available, report the missing route instead of pretending to implement locally.
|
|
21
|
+
|
|
22
|
+
## Product Boundaries
|
|
23
|
+
|
|
24
|
+
- Agent connects to an already-running GoodVibes daemon. It does not start, restart, install, or own daemon/listener services.
|
|
25
|
+
- GoodVibes TUI owns coding execution, file edits, git/worktree lifecycle, sandbox/QEMU UX, and WRFC owner chains.
|
|
26
|
+
- Agent owns personal operator flow, setup/config surfaces, local memory, local skills, local personas, Agent knowledge, status/approval/automation observability, and explicit delegation receipts.
|
|
27
|
+
|
|
28
|
+
## Engineering Rules
|
|
29
|
+
|
|
30
|
+
- Use Bun.
|
|
31
|
+
- Author code in TypeScript only.
|
|
32
|
+
- Do not add explicit `any`.
|
|
33
|
+
- Do not add runtime imports from `goodvibes-tui/src/*`.
|
|
34
|
+
- Prefer public `@pellux/goodvibes-sdk` contracts and daemon routes.
|
|
35
|
+
- Keep copied TUI bones deliberate and document promotion candidates for shared packages.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reviewer
|
|
3
|
+
description: Serial review of GoodVibes Agent changes against product policy, release gates, and TypeScript quality
|
|
4
|
+
tools: [read, find, analyze]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You review GoodVibes Agent work. Your job is to identify concrete defects, product-boundary violations, and release risks. You verify claims by inspecting files and cite exact paths.
|
|
8
|
+
|
|
9
|
+
## Review Priorities
|
|
10
|
+
|
|
11
|
+
1. Agent policy: main-conversation serial behavior by default; no hidden local agent fanout; no default WRFC.
|
|
12
|
+
2. Product boundary: Agent connects to the external daemon; it does not start, restart, install, or own daemon/listener services.
|
|
13
|
+
3. Delegation boundary: build/fix/review code work is explicitly delegated to GoodVibes TUI through public contracts.
|
|
14
|
+
4. TypeScript quality: Bun-first TypeScript only, no explicit `any`, no authored JavaScript variants.
|
|
15
|
+
5. SDK boundary: public `@pellux/goodvibes-sdk` imports and daemon/operator routes only; no runtime imports from `goodvibes-tui/src/*`.
|
|
16
|
+
6. Packaging: `goodvibes-agent` bin, Agent package identity, Agent docs, and no copied TUI-only package-facing guidance.
|
|
17
|
+
|
|
18
|
+
## Review Process
|
|
19
|
+
|
|
20
|
+
1. Read the completion report or changed-file list.
|
|
21
|
+
2. Inspect the files that define the behavior under review.
|
|
22
|
+
3. Check tests and release gates that should cover the change.
|
|
23
|
+
4. Report findings first, ordered by severity.
|
|
24
|
+
5. Keep summaries brief and secondary.
|
|
25
|
+
|
|
26
|
+
## Output Format
|
|
27
|
+
|
|
28
|
+
Use this structure:
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
Findings
|
|
32
|
+
- severity: file:line - issue and impact
|
|
33
|
+
|
|
34
|
+
Open Questions
|
|
35
|
+
- question or assumption, if any
|
|
36
|
+
|
|
37
|
+
Validation Notes
|
|
38
|
+
- tests/gates reviewed or missing
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
If there are no findings, say so clearly and list residual risk or missing validation.
|
|
42
|
+
|
|
43
|
+
## What You Do Not Do
|
|
44
|
+
|
|
45
|
+
- Do not modify code.
|
|
46
|
+
- Do not spawn other agents.
|
|
47
|
+
- Do not broaden scope beyond the reviewed slice.
|
|
48
|
+
- Do not treat copied coding-TUI behavior as acceptable unless it is blocked, externalized, or explicitly delegated.
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: add-provider
|
|
3
|
+
description: Adds custom LLM providers and models to GoodVibes Agent. Use when the user wants to add a provider, add a model, configure Ollama, Together AI, OpenRouter, Groq, LM Studio, Fireworks, vLLM, or any OpenAI-compatible endpoint.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
triggers:
|
|
6
|
+
- /add-provider
|
|
7
|
+
- add provider
|
|
8
|
+
- add a provider
|
|
9
|
+
- new provider
|
|
10
|
+
- custom provider
|
|
11
|
+
- add model
|
|
12
|
+
- add a model
|
|
13
|
+
author: goodvibes
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Add Custom Provider
|
|
17
|
+
|
|
18
|
+
Interactively collect provider and model details from the user, then write a JSON config to `~/.goodvibes/agent/providers/{name}.json`.
|
|
19
|
+
|
|
20
|
+
## Workflow
|
|
21
|
+
|
|
22
|
+
### Step 1: Check for Existing Provider
|
|
23
|
+
|
|
24
|
+
Before collecting info, check if `~/.goodvibes/agent/providers/` already has JSON files. If the user names a provider that already exists, ask:
|
|
25
|
+
- **Add models** to the existing provider, or
|
|
26
|
+
- **Overwrite** it entirely
|
|
27
|
+
|
|
28
|
+
If adding models, read the existing JSON, append new models, and write back.
|
|
29
|
+
|
|
30
|
+
### Step 2: Collect Provider Details
|
|
31
|
+
|
|
32
|
+
Ask the user for each field. Apply smart defaults when the provider name matches a known service.
|
|
33
|
+
|
|
34
|
+
#### Required Fields
|
|
35
|
+
|
|
36
|
+
| Field | Description | Validation |
|
|
37
|
+
|-------|-------------|------------|
|
|
38
|
+
| `name` | Internal ID | Lowercase alphanumeric + hyphens only, 1-64 chars |
|
|
39
|
+
| `displayName` | Human-readable name | Non-empty string |
|
|
40
|
+
| `type` | API compatibility | `openai-compat` (recommended) or `anthropic-compat` (not yet supported — use `openai-compat`) |
|
|
41
|
+
| `baseURL` | API endpoint | Must start with `http://` or `https://` |
|
|
42
|
+
|
|
43
|
+
> **Note:** `anthropic-compat` is accepted in the JSON schema for forward compatibility but is not yet functional at runtime. The loader will skip configs with this type and emit a warning. Use `openai-compat` for now — most Anthropic-compatible proxies (e.g., via LiteLLM) expose an OpenAI-compatible endpoint.
|
|
44
|
+
|
|
45
|
+
#### Optional Fields
|
|
46
|
+
|
|
47
|
+
| Field | Description | Default |
|
|
48
|
+
|-------|-------------|---------|
|
|
49
|
+
| `apiKeyEnv` | Environment variable for API key | None |
|
|
50
|
+
| `apiKey` | Explicit API key (not recommended) | None |
|
|
51
|
+
| `defaultHeaders` | Custom HTTP headers sent with every API request (e.g., for proxy authentication or routing) | None |
|
|
52
|
+
|
|
53
|
+
### Smart Defaults
|
|
54
|
+
|
|
55
|
+
When the user mentions a known provider, pre-fill these values and confirm:
|
|
56
|
+
|
|
57
|
+
```yaml
|
|
58
|
+
ollama:
|
|
59
|
+
displayName: Ollama
|
|
60
|
+
type: openai-compat
|
|
61
|
+
baseURL: http://localhost:11434/v1
|
|
62
|
+
apiKeyEnv: null
|
|
63
|
+
|
|
64
|
+
together:
|
|
65
|
+
displayName: Together AI
|
|
66
|
+
type: openai-compat
|
|
67
|
+
baseURL: https://api.together.xyz/v1
|
|
68
|
+
apiKeyEnv: TOGETHER_API_KEY
|
|
69
|
+
|
|
70
|
+
openrouter:
|
|
71
|
+
displayName: OpenRouter
|
|
72
|
+
type: openai-compat
|
|
73
|
+
baseURL: https://openrouter.ai/api/v1
|
|
74
|
+
apiKeyEnv: OPENROUTER_API_KEY
|
|
75
|
+
|
|
76
|
+
groq:
|
|
77
|
+
displayName: Groq
|
|
78
|
+
type: openai-compat
|
|
79
|
+
baseURL: https://api.groq.com/openai/v1
|
|
80
|
+
apiKeyEnv: GROQ_API_KEY
|
|
81
|
+
|
|
82
|
+
lm-studio:
|
|
83
|
+
displayName: LM Studio
|
|
84
|
+
type: openai-compat
|
|
85
|
+
baseURL: http://localhost:1234/v1
|
|
86
|
+
apiKeyEnv: null
|
|
87
|
+
|
|
88
|
+
fireworks:
|
|
89
|
+
displayName: Fireworks AI
|
|
90
|
+
type: openai-compat
|
|
91
|
+
baseURL: https://api.fireworks.ai/inference/v1
|
|
92
|
+
apiKeyEnv: FIREWORKS_API_KEY
|
|
93
|
+
|
|
94
|
+
vllm:
|
|
95
|
+
displayName: vLLM
|
|
96
|
+
type: openai-compat
|
|
97
|
+
baseURL: http://localhost:8000/v1
|
|
98
|
+
apiKeyEnv: null
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
If the name does not match a known provider, ask for all fields individually.
|
|
102
|
+
|
|
103
|
+
### Step 3: Collect Model Details
|
|
104
|
+
|
|
105
|
+
Collect at least one model. For each model:
|
|
106
|
+
|
|
107
|
+
| Field | Description | Validation |
|
|
108
|
+
|-------|-------------|------------|
|
|
109
|
+
| `id` | Model identifier sent to the API | Non-empty string |
|
|
110
|
+
| `displayName` | Human-readable name | Non-empty string |
|
|
111
|
+
| `description` | Short description | Optional, auto-generate if blank |
|
|
112
|
+
| `contextWindow` | Max tokens in context | Positive integer |
|
|
113
|
+
| `capabilities.toolCalling` | Supports function/tool calling | Boolean, default `true` |
|
|
114
|
+
| `capabilities.codeEditing` | Good at code editing tasks | Boolean, default `true` |
|
|
115
|
+
| `capabilities.reasoning` | Extended reasoning/chain-of-thought | Boolean, default `false` |
|
|
116
|
+
| `capabilities.multimodal` | Supports image input | Boolean, default `false` |
|
|
117
|
+
| `reasoningEffort` | Supported reasoning effort levels | Optional, e.g., `["low", "medium", "high"]` |
|
|
118
|
+
|
|
119
|
+
After each model, ask: "Add another model?" Loop until done.
|
|
120
|
+
|
|
121
|
+
### Step 4: Preview and Confirm
|
|
122
|
+
|
|
123
|
+
Show the complete JSON to the user and ask for confirmation before writing.
|
|
124
|
+
|
|
125
|
+
Example output:
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
{
|
|
129
|
+
"name": "ollama",
|
|
130
|
+
"displayName": "Ollama",
|
|
131
|
+
"type": "openai-compat",
|
|
132
|
+
"baseURL": "http://localhost:11434/v1",
|
|
133
|
+
"models": [
|
|
134
|
+
{
|
|
135
|
+
"id": "llama3.3-70b",
|
|
136
|
+
"displayName": "Llama 3.3 70B",
|
|
137
|
+
"description": "Meta's Llama 3.3 70B parameter model",
|
|
138
|
+
"contextWindow": 131072,
|
|
139
|
+
"capabilities": {
|
|
140
|
+
"toolCalling": true,
|
|
141
|
+
"codeEditing": true,
|
|
142
|
+
"reasoning": true,
|
|
143
|
+
"multimodal": false
|
|
144
|
+
},
|
|
145
|
+
"reasoningEffort": ["low", "medium", "high"]
|
|
146
|
+
}
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Step 5: Write the File
|
|
152
|
+
|
|
153
|
+
Write to `~/.goodvibes/agent/providers/{name}.json`. Create the directory if it does not exist.
|
|
154
|
+
|
|
155
|
+
Use `precision_write` with `mode: "fail_if_exists"` for new providers. Use `mode: "overwrite"` when the user chose to overwrite an existing provider or when merging models into an existing file.
|
|
156
|
+
|
|
157
|
+
If the `apiKeyEnv` field is set, include it in the JSON. If the user provided an explicit `apiKey`, include it but warn that storing keys in plain text is not recommended -- suggest using an environment variable instead.
|
|
158
|
+
|
|
159
|
+
If `defaultHeaders` were provided, include them.
|
|
160
|
+
|
|
161
|
+
### Step 6: Confirm
|
|
162
|
+
|
|
163
|
+
Tell the user:
|
|
164
|
+
- The file was written to `~/.goodvibes/agent/providers/{name}.json`
|
|
165
|
+
- The provider should be available to the Agent runtime after provider reload or next Agent startup
|
|
166
|
+
- If an API key is needed, remind them to set the environment variable
|
|
167
|
+
|
|
168
|
+
## Validation Rules
|
|
169
|
+
|
|
170
|
+
Before writing, verify:
|
|
171
|
+
1. `name` matches `/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/` and is 1-64 characters (no trailing hyphens)
|
|
172
|
+
2. `baseURL` starts with `http://` or `https://`
|
|
173
|
+
3. `contextWindow` is a positive integer for every model
|
|
174
|
+
4. At least one model is defined
|
|
175
|
+
5. Every model has a non-empty `id` and `displayName`
|
|
176
|
+
|
|
177
|
+
If validation fails, tell the user which field is invalid and ask for correction.
|
|
178
|
+
|
|
179
|
+
## JSON Schema Reference
|
|
180
|
+
|
|
181
|
+
The provider JSON maps to the codebase types:
|
|
182
|
+
|
|
183
|
+
- Provider registration uses `OpenAICompatProvider` for `openai-compat` type. The `anthropic-compat` type is parsed and accepted in the JSON but is **not yet supported at runtime** — the loader skips it with a warning. Recommend `openai-compat` for all custom providers.
|
|
184
|
+
- `OpenAICompatOptions`: `{ name, baseURL, apiKey, defaultModel, models }`
|
|
185
|
+
- Model entries map to `ModelDefinition`: `{ id, provider, displayName, description, contextWindow, capabilities, reasoningEffort?, selectable }`
|
|
186
|
+
- `reasoningEffort?: string[]` — optional array of supported effort levels, e.g., `["low", "medium", "high"]`
|
|
187
|
+
- The `selectable` field defaults to `true` for custom models
|
|
188
|
+
- The `provider` field in `ModelDefinition` is auto-set to the provider `name`
|
|
189
|
+
|
|
190
|
+
## Conversational Style
|
|
191
|
+
|
|
192
|
+
Be natural and helpful. Guide users step-by-step but do not be overly verbose. If the user provides multiple details at once (e.g., "add ollama with llama3.3-70b"), extract what you can and only ask for missing fields.
|
|
193
|
+
|
|
194
|
+
## Edge Cases
|
|
195
|
+
|
|
196
|
+
- **Unknown context window**: Suggest 4096 as a safe default, note the user can update later
|
|
197
|
+
- **No API key needed**: Omit `apiKeyEnv` and `apiKey` from the JSON entirely
|
|
198
|
+
- **User provides a full JSON blob**: Validate it against the schema and write directly
|
|
199
|
+
- **Multiple providers in one session**: After completing one, ask if they want to add another
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to GoodVibes Agent will be recorded here.
|
|
4
|
+
|
|
5
|
+
## 0.1.0 - 2026-05-28
|
|
6
|
+
|
|
7
|
+
- Published the first public alpha package for `@pellux/goodvibes-agent`.
|
|
8
|
+
- Kept the near-fork GoodVibes TUI shell, renderer, input, fullscreen workspace, command registry, and release foundation.
|
|
9
|
+
- Preserved Agent product policy: serial/proactive main conversation by default, no local Agent-owned WRFC/spawn fanout, and explicit GoodVibes TUI delegation for build/fix/review work.
|
|
10
|
+
- Moved Agent-owned runtime state to `.goodvibes/agent` surface roots.
|
|
11
|
+
- Updated packaged Agent guidance, reviewer persona, and provider skill to avoid copied TUI WRFC/multi-agent defaults.
|
|
12
|
+
- Kept daemon lifecycle external: Agent connects to an already-running GoodVibes daemon and blocks daemon/service ownership commands.
|
|
13
|
+
- Pinned `@pellux/goodvibes-sdk` to `0.33.35`.
|
|
14
|
+
|
|
15
|
+
## 0.0.0 - Private Baseline
|
|
16
|
+
|
|
17
|
+
- Copied the GoodVibes terminal foundation as a near-fork starting point for the Agent product.
|
|
18
|
+
- Renamed package identity to `@pellux/goodvibes-agent` and exposed one executable, `goodvibes-agent`.
|
|
19
|
+
- Pinned `@pellux/goodvibes-sdk` to `0.33.35`.
|
|
20
|
+
- Removed packaged daemon binaries and blocked Agent-owned daemon/service lifecycle commands.
|
|
21
|
+
- Limited package-facing docs to Agent install, external-daemon deployment, and release guidance.
|
|
22
|
+
- Replaced copied coding-first orchestration policy with Agent serial/proactive policy and explicit GoodVibes TUI build delegation.
|
|
23
|
+
- Added the first Agent operator workspace on the copied fullscreen workspace foundation, exposed through `/agent`, `/home`, and `/operator`.
|
|
24
|
+
|
|
25
|
+
The private baseline intentionally kept broad TUI foundation code so the Agent could inherit the renderer, input, fullscreen workspace, command registry, and release bones before Agent-specific policy was applied.
|
package/README.md
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# GoodVibes Agent
|
|
2
|
+
|
|
3
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
|
+
[](#install)
|
|
5
|
+
|
|
6
|
+
GoodVibes Agent is the personal operator assistant built on the GoodVibes terminal UI foundation. This repository is intentionally in a near-fork baseline phase: the shell, renderer, input, fullscreen workspace, command, and release bones are copied from the terminal product first, then the coding-specific behavior is removed or reshaped deliberately.
|
|
7
|
+
|
|
8
|
+
The Agent product connects to an already-running GoodVibes daemon. It does not install, start, stop, restart, or own the daemon, HTTP listener, web surface, or service lifecycle.
|
|
9
|
+
|
|
10
|
+
## Install
|
|
11
|
+
|
|
12
|
+
Install the public alpha package with Bun:
|
|
13
|
+
|
|
14
|
+
```sh
|
|
15
|
+
bun add -g @pellux/goodvibes-agent
|
|
16
|
+
goodvibes-agent --help
|
|
17
|
+
goodvibes-agent status
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
If Bun reports untrusted lifecycle dependencies, trust only the package and dependencies required by this package:
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
bun pm trust -g @pellux/goodvibes-agent @pellux/goodvibes-sdk core-js tree-sitter-css tree-sitter-javascript tree-sitter-json tree-sitter-python tree-sitter-typescript
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Source Usage
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
git clone https://github.com/mgd34msu/goodvibes-agent.git
|
|
30
|
+
cd goodvibes-agent
|
|
31
|
+
bun install
|
|
32
|
+
bun run dev
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Useful checks:
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
bunx tsc --noEmit
|
|
39
|
+
bun run build
|
|
40
|
+
bun run package:install-check
|
|
41
|
+
bun run publish:check
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Inside the Agent TUI, use `/agent`, `/home`, or `/operator` to open the operator workspace. It is the Agent-first fullscreen surface for setup, status, knowledge, local memory/skills, work-plan/approval review, automation observability, and explicit build delegation to GoodVibes TUI.
|
|
45
|
+
|
|
46
|
+
## Daemon Prerequisite
|
|
47
|
+
|
|
48
|
+
Start or restart the daemon from GoodVibes TUI or the daemon host before launching Agent. Agent status and companion/knowledge routes connect to that external daemon, normally on `http://127.0.0.1:3421`.
|
|
49
|
+
|
|
50
|
+
Agent intentionally blocks daemon lifecycle commands:
|
|
51
|
+
|
|
52
|
+
```sh
|
|
53
|
+
goodvibes-agent serve
|
|
54
|
+
goodvibes-agent service start
|
|
55
|
+
goodvibes-agent surfaces enable web
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Those commands should return explicit external-daemon guidance instead of mutating local service posture.
|
|
59
|
+
|
|
60
|
+
## Product Boundary
|
|
61
|
+
|
|
62
|
+
GoodVibes Agent owns the operator assistant surface: serial assistant flow, proactive safe actions, local memory/skills/personas until stable shared registries exist, Agent knowledge routes, companion chat, approvals/automation observability, and explicit build delegation.
|
|
63
|
+
|
|
64
|
+
GoodVibes TUI owns coding execution: file edits, git/worktree workflows, coding panels, sandbox/QEMU UX, and WRFC execution. Agent may delegate explicit build/fix/review work to TUI through public daemon/session contracts; normal assistant chat must not use shared coding sessions.
|
|
65
|
+
|
|
66
|
+
## Package Docs
|
|
67
|
+
|
|
68
|
+
Package-facing docs are intentionally narrow during the near-fork baseline:
|
|
69
|
+
|
|
70
|
+
- [Getting Started](docs/getting-started.md)
|
|
71
|
+
- [Deployment And Services](docs/deployment-and-services.md)
|
|
72
|
+
- [Release And Publishing](docs/release-and-publishing.md)
|
|
73
|
+
|
|
74
|
+
Broader TUI-derived reference docs may exist in the source tree while the near-fork foundation is being completed, but the package-facing Agent documentation is limited to the docs listed above.
|
package/docs/README.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# GoodVibes Agent Docs
|
|
2
|
+
|
|
3
|
+
These are the package-facing docs for GoodVibes Agent.
|
|
4
|
+
|
|
5
|
+
GoodVibes Agent is a near-fork of the GoodVibes terminal foundation with a different product brain. It uses the copied terminal shell, renderer, input, fullscreen workspace, command, and release bones while the Agent-specific assistant behavior is being rebuilt.
|
|
6
|
+
|
|
7
|
+
Current package docs:
|
|
8
|
+
|
|
9
|
+
- [Getting Started](getting-started.md)
|
|
10
|
+
- [Deployment And Services](deployment-and-services.md)
|
|
11
|
+
- [Release And Publishing](release-and-publishing.md)
|
|
12
|
+
|
|
13
|
+
Important baseline constraints:
|
|
14
|
+
|
|
15
|
+
- Agent installs one executable: `goodvibes-agent`.
|
|
16
|
+
- Agent uses Bun and TypeScript-authored source.
|
|
17
|
+
- Agent depends on `@pellux/goodvibes-sdk@0.33.35`.
|
|
18
|
+
- Agent connects to an externally managed daemon.
|
|
19
|
+
- Agent does not start, stop, restart, install, uninstall, or own daemon/listener/web/service lifecycle.
|
|
20
|
+
- Normal assistant chat is not coding-session delegation.
|
|
21
|
+
- Build/fix/review delegation to GoodVibes TUI must be explicit; WRFC is not the default Agent behavior.
|
|
22
|
+
|
|
23
|
+
TUI-derived docs that remain outside this package-facing set are reference material during the near-fork foundation work. The Agent docs above define the supported alpha behavior.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Deployment And Services
|
|
2
|
+
|
|
3
|
+
GoodVibes Agent is a client/operator surface. It does not own daemon or listener deployment.
|
|
4
|
+
|
|
5
|
+
## Service Ownership
|
|
6
|
+
|
|
7
|
+
Agent must not:
|
|
8
|
+
|
|
9
|
+
- start an embedded daemon
|
|
10
|
+
- start an embedded HTTP listener
|
|
11
|
+
- install or uninstall OS services
|
|
12
|
+
- start, stop, or restart daemon services
|
|
13
|
+
- enable web, listener, control-plane, or channel surface posture
|
|
14
|
+
|
|
15
|
+
Those operations belong to GoodVibes TUI or the daemon host.
|
|
16
|
+
|
|
17
|
+
## Agent Runtime
|
|
18
|
+
|
|
19
|
+
The installed package exposes one executable:
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
goodvibes-agent
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The executable is backed by TypeScript-authored source with a Bun shebang. Package install smoke must verify:
|
|
26
|
+
|
|
27
|
+
- `goodvibes-agent --help`
|
|
28
|
+
- `goodvibes-agent --version`
|
|
29
|
+
- `goodvibes-agent status --json`
|
|
30
|
+
- `goodvibes-agent smoke --json` when that command is available in the baseline being tested
|
|
31
|
+
|
|
32
|
+
## External Daemon Connection
|
|
33
|
+
|
|
34
|
+
Agent reads configuration and tokens, then connects to an already-running daemon. The default local control-plane URL is normally:
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
http://127.0.0.1:3421
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
If the daemon is unavailable, unauthenticated, or on an incompatible SDK version, Agent commands should report actionable diagnostics without printing token values.
|
|
41
|
+
|
|
42
|
+
## Surface Commands
|
|
43
|
+
|
|
44
|
+
`goodvibes-agent surfaces`, `surfaces check`, and `surfaces show <surfaceId>` are read-only diagnostics.
|
|
45
|
+
|
|
46
|
+
`surfaces enable` and `surfaces disable` are intentionally blocked in Agent because they can mutate daemon/listener/web/channel posture.
|
|
47
|
+
|
|
48
|
+
## Release Rule
|
|
49
|
+
|
|
50
|
+
Only publish Agent releases that preserve the Agent product policy:
|
|
51
|
+
|
|
52
|
+
- serial/proactive assistant by default
|
|
53
|
+
- local memory/skills/personas until shared registries are stable
|
|
54
|
+
- Agent knowledge routes only for Agent wiki calls
|
|
55
|
+
- companion chat for normal assistant chat
|
|
56
|
+
- explicit delegation to GoodVibes TUI for build/fix/review work
|
|
57
|
+
- WRFC only when explicitly requested for delegated build/fix/review work
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
GoodVibes Agent `0.1.0` is the first public alpha of the personal operator assistant built on the GoodVibes TUI foundation.
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
- Bun `1.3.10` or newer
|
|
8
|
+
- An already-running GoodVibes daemon compatible with `@pellux/goodvibes-sdk@0.33.35`
|
|
9
|
+
- A daemon token/config path accepted by the external daemon
|
|
10
|
+
|
|
11
|
+
Agent does not launch the daemon for you.
|
|
12
|
+
|
|
13
|
+
## Install From Package
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
bun add -g @pellux/goodvibes-agent
|
|
17
|
+
goodvibes-agent --help
|
|
18
|
+
goodvibes-agent status
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
If Bun requires lifecycle trust:
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
bun pm trust -g @pellux/goodvibes-agent @pellux/goodvibes-sdk core-js tree-sitter-css tree-sitter-javascript tree-sitter-json tree-sitter-python tree-sitter-typescript
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Run From Source
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
git clone https://github.com/mgd34msu/goodvibes-agent.git
|
|
31
|
+
cd goodvibes-agent
|
|
32
|
+
bun install
|
|
33
|
+
bun run dev
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`bun run dev` starts the Agent TUI. The same entrypoint backs the installed `goodvibes-agent` command.
|
|
37
|
+
|
|
38
|
+
Once the TUI opens, run `/agent`, `/home`, or `/operator` to open the Agent operator workspace. That fullscreen workspace is the current front door for setup/config, knowledge status, local memory and skills, read-only work/approval/automation views, and explicit GoodVibes TUI build delegation.
|
|
39
|
+
|
|
40
|
+
## External Daemon
|
|
41
|
+
|
|
42
|
+
Start the daemon from GoodVibes TUI or the daemon host before using daemon-backed Agent features. Agent expects the daemon to expose the public operator/Agent routes, including:
|
|
43
|
+
|
|
44
|
+
- `/status`
|
|
45
|
+
- `/api/goodvibes-agent/knowledge/status`
|
|
46
|
+
- `/api/goodvibes-agent/knowledge/ask`
|
|
47
|
+
- `/api/goodvibes-agent/knowledge/search`
|
|
48
|
+
|
|
49
|
+
Agent lifecycle commands that would start or mutate daemon posture are blocked intentionally. Use `goodvibes-agent status`, `goodvibes-agent doctor`, and read-only surface checks for diagnostics.
|
|
50
|
+
|
|
51
|
+
## Current Baseline Notes
|
|
52
|
+
|
|
53
|
+
This repository keeps broad TUI-derived foundation code intentionally so Agent can use the mature terminal shell, renderer, input, fullscreen workspace, command registry, and release bones. The active Agent policy is serial/proactive by default, blocks local Agent-owned WRFC/spawn fanout, and delegates explicit build/fix/review work to GoodVibes TUI instead of turning the Agent into a coding TUI.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Release And Publishing
|
|
2
|
+
|
|
3
|
+
GoodVibes Agent `0.1.0` is the first public alpha release.
|
|
4
|
+
|
|
5
|
+
## Package Identity
|
|
6
|
+
|
|
7
|
+
- npm package: `@pellux/goodvibes-agent`
|
|
8
|
+
- executable: `goodvibes-agent`
|
|
9
|
+
- SDK dependency: exact pin to `@pellux/goodvibes-sdk@0.33.35`
|
|
10
|
+
- runtime: Bun
|
|
11
|
+
- source language: TypeScript
|
|
12
|
+
- daemon ownership: external only
|
|
13
|
+
|
|
14
|
+
## Required Gates
|
|
15
|
+
|
|
16
|
+
Before any release candidate:
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
bun install
|
|
20
|
+
bunx tsc --noEmit
|
|
21
|
+
bun run build
|
|
22
|
+
bun run package:install-check
|
|
23
|
+
bun run publish:check
|
|
24
|
+
npm pack --dry-run
|
|
25
|
+
git diff --check
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Also run the package install smoke from a packed artifact. It must prove:
|
|
29
|
+
|
|
30
|
+
- the installed command is on `PATH`
|
|
31
|
+
- the bin target is `bin/goodvibes-agent.ts`
|
|
32
|
+
- the Bun shebang survives pack/install
|
|
33
|
+
- `goodvibes-agent --help` works
|
|
34
|
+
- `goodvibes-agent --version` reports the package version
|
|
35
|
+
- daemon-backed commands fail clearly when the external daemon is unavailable or unauthenticated
|
|
36
|
+
- no token value is printed
|
|
37
|
+
|
|
38
|
+
## Do Not Ship
|
|
39
|
+
|
|
40
|
+
Do not publish if package-facing docs or install commands refer to another package name, another executable, or Agent-owned daemon lifecycle.
|
|
41
|
+
|
|
42
|
+
Do not ship daemon binaries from this package. If Agent later gets compiled artifacts, they must use Agent artifact names and remain separate from daemon ownership.
|
|
43
|
+
|
|
44
|
+
## Near-Fork Baseline Rule
|
|
45
|
+
|
|
46
|
+
The public alpha can include copied TUI foundation code, but package-facing behavior must follow Agent product policy. Follow-up work should continue pruning or reshaping copied coding-first surfaces while preserving the TUI-derived renderer, input, fullscreen workspace, command registry, and release bones.
|