verbolab 0.1.0-alpha.1
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/LICENSE +21 -0
- package/README.md +71 -0
- package/dist/bin/verbo.d.ts +3 -0
- package/dist/bin/verbo.d.ts.map +1 -0
- package/dist/bin/verbo.js +1156 -0
- package/dist/bin/verbo.js.map +1 -0
- package/dist/relay/index.d.ts +2 -0
- package/dist/relay/index.d.ts.map +1 -0
- package/dist/relay/index.js +15 -0
- package/dist/relay/index.js.map +1 -0
- package/dist/src/agent/agent-launcher.d.ts +64 -0
- package/dist/src/agent/agent-launcher.d.ts.map +1 -0
- package/dist/src/agent/agent-launcher.js +326 -0
- package/dist/src/agent/agent-launcher.js.map +1 -0
- package/dist/src/agent/agent-monitor.d.ts +16 -0
- package/dist/src/agent/agent-monitor.d.ts.map +1 -0
- package/dist/src/agent/agent-monitor.js +41 -0
- package/dist/src/agent/agent-monitor.js.map +1 -0
- package/dist/src/agent/fun-names.d.ts +9 -0
- package/dist/src/agent/fun-names.d.ts.map +1 -0
- package/dist/src/agent/fun-names.js +118 -0
- package/dist/src/agent/fun-names.js.map +1 -0
- package/dist/src/agent/mcp-shim.d.ts +45 -0
- package/dist/src/agent/mcp-shim.d.ts.map +1 -0
- package/dist/src/agent/mcp-shim.js +192 -0
- package/dist/src/agent/mcp-shim.js.map +1 -0
- package/dist/src/agent/personas.d.ts +47 -0
- package/dist/src/agent/personas.d.ts.map +1 -0
- package/dist/src/agent/personas.js +86 -0
- package/dist/src/agent/personas.js.map +1 -0
- package/dist/src/agent/provider-detection.d.ts +21 -0
- package/dist/src/agent/provider-detection.d.ts.map +1 -0
- package/dist/src/agent/provider-detection.js +47 -0
- package/dist/src/agent/provider-detection.js.map +1 -0
- package/dist/src/agent/providers/claude-provider.d.ts +3 -0
- package/dist/src/agent/providers/claude-provider.d.ts.map +1 -0
- package/dist/src/agent/providers/claude-provider.js +119 -0
- package/dist/src/agent/providers/claude-provider.js.map +1 -0
- package/dist/src/agent/providers/gemini-provider.d.ts +13 -0
- package/dist/src/agent/providers/gemini-provider.d.ts.map +1 -0
- package/dist/src/agent/providers/gemini-provider.js +143 -0
- package/dist/src/agent/providers/gemini-provider.js.map +1 -0
- package/dist/src/agent/providers/openai-provider.d.ts +3 -0
- package/dist/src/agent/providers/openai-provider.d.ts.map +1 -0
- package/dist/src/agent/providers/openai-provider.js +127 -0
- package/dist/src/agent/providers/openai-provider.js.map +1 -0
- package/dist/src/agent/providers/registry.d.ts +19 -0
- package/dist/src/agent/providers/registry.d.ts.map +1 -0
- package/dist/src/agent/providers/registry.js +30 -0
- package/dist/src/agent/providers/registry.js.map +1 -0
- package/dist/src/agent/providers/types.d.ts +118 -0
- package/dist/src/agent/providers/types.d.ts.map +1 -0
- package/dist/src/agent/providers/types.js +2 -0
- package/dist/src/agent/providers/types.js.map +1 -0
- package/dist/src/approval/approval-server.d.ts +17 -0
- package/dist/src/approval/approval-server.d.ts.map +1 -0
- package/dist/src/approval/approval-server.js +90 -0
- package/dist/src/approval/approval-server.js.map +1 -0
- package/dist/src/approval/approval-store.d.ts +29 -0
- package/dist/src/approval/approval-store.d.ts.map +1 -0
- package/dist/src/approval/approval-store.js +94 -0
- package/dist/src/approval/approval-store.js.map +1 -0
- package/dist/src/auth/auth-store.d.ts +18 -0
- package/dist/src/auth/auth-store.d.ts.map +1 -0
- package/dist/src/auth/auth-store.js +34 -0
- package/dist/src/auth/auth-store.js.map +1 -0
- package/dist/src/auth/device-code-client.d.ts +32 -0
- package/dist/src/auth/device-code-client.d.ts.map +1 -0
- package/dist/src/auth/device-code-client.js +41 -0
- package/dist/src/auth/device-code-client.js.map +1 -0
- package/dist/src/auth/plan-enforcer.d.ts +8 -0
- package/dist/src/auth/plan-enforcer.d.ts.map +1 -0
- package/dist/src/auth/plan-enforcer.js +14 -0
- package/dist/src/auth/plan-enforcer.js.map +1 -0
- package/dist/src/commands/audit.d.ts +7 -0
- package/dist/src/commands/audit.d.ts.map +1 -0
- package/dist/src/commands/audit.js +92 -0
- package/dist/src/commands/audit.js.map +1 -0
- package/dist/src/commands/team.d.ts +48 -0
- package/dist/src/commands/team.d.ts.map +1 -0
- package/dist/src/commands/team.js +175 -0
- package/dist/src/commands/team.js.map +1 -0
- package/dist/src/config/verbo-config.d.ts +43 -0
- package/dist/src/config/verbo-config.d.ts.map +1 -0
- package/dist/src/config/verbo-config.js +111 -0
- package/dist/src/config/verbo-config.js.map +1 -0
- package/dist/src/core/agent-session-store.d.ts +69 -0
- package/dist/src/core/agent-session-store.d.ts.map +1 -0
- package/dist/src/core/agent-session-store.js +168 -0
- package/dist/src/core/agent-session-store.js.map +1 -0
- package/dist/src/core/audit-log-store.d.ts +33 -0
- package/dist/src/core/audit-log-store.d.ts.map +1 -0
- package/dist/src/core/audit-log-store.js +104 -0
- package/dist/src/core/audit-log-store.js.map +1 -0
- package/dist/src/core/compliance.d.ts +50 -0
- package/dist/src/core/compliance.d.ts.map +1 -0
- package/dist/src/core/compliance.js +59 -0
- package/dist/src/core/compliance.js.map +1 -0
- package/dist/src/core/conflict-detector.d.ts +19 -0
- package/dist/src/core/conflict-detector.d.ts.map +1 -0
- package/dist/src/core/conflict-detector.js +87 -0
- package/dist/src/core/conflict-detector.js.map +1 -0
- package/dist/src/core/conflict-enforcer.d.ts +37 -0
- package/dist/src/core/conflict-enforcer.d.ts.map +1 -0
- package/dist/src/core/conflict-enforcer.js +139 -0
- package/dist/src/core/conflict-enforcer.js.map +1 -0
- package/dist/src/core/cost-store.d.ts +55 -0
- package/dist/src/core/cost-store.d.ts.map +1 -0
- package/dist/src/core/cost-store.js +140 -0
- package/dist/src/core/cost-store.js.map +1 -0
- package/dist/src/core/hot-files.d.ts +19 -0
- package/dist/src/core/hot-files.d.ts.map +1 -0
- package/dist/src/core/hot-files.js +64 -0
- package/dist/src/core/hot-files.js.map +1 -0
- package/dist/src/core/human-action-store.d.ts +33 -0
- package/dist/src/core/human-action-store.d.ts.map +1 -0
- package/dist/src/core/human-action-store.js +92 -0
- package/dist/src/core/human-action-store.js.map +1 -0
- package/dist/src/core/learning-store.d.ts +32 -0
- package/dist/src/core/learning-store.d.ts.map +1 -0
- package/dist/src/core/learning-store.js +95 -0
- package/dist/src/core/learning-store.js.map +1 -0
- package/dist/src/core/merge-queue.d.ts +28 -0
- package/dist/src/core/merge-queue.d.ts.map +1 -0
- package/dist/src/core/merge-queue.js +92 -0
- package/dist/src/core/merge-queue.js.map +1 -0
- package/dist/src/core/notification-service.d.ts +13 -0
- package/dist/src/core/notification-service.d.ts.map +1 -0
- package/dist/src/core/notification-service.js +126 -0
- package/dist/src/core/notification-service.js.map +1 -0
- package/dist/src/core/notifications.d.ts +10 -0
- package/dist/src/core/notifications.d.ts.map +1 -0
- package/dist/src/core/notifications.js +33 -0
- package/dist/src/core/notifications.js.map +1 -0
- package/dist/src/core/orchestrator-store.d.ts +44 -0
- package/dist/src/core/orchestrator-store.d.ts.map +1 -0
- package/dist/src/core/orchestrator-store.js +69 -0
- package/dist/src/core/orchestrator-store.js.map +1 -0
- package/dist/src/core/parallelizer.d.ts +47 -0
- package/dist/src/core/parallelizer.d.ts.map +1 -0
- package/dist/src/core/parallelizer.js +224 -0
- package/dist/src/core/parallelizer.js.map +1 -0
- package/dist/src/core/pipeline-rollback.d.ts +29 -0
- package/dist/src/core/pipeline-rollback.d.ts.map +1 -0
- package/dist/src/core/pipeline-rollback.js +84 -0
- package/dist/src/core/pipeline-rollback.js.map +1 -0
- package/dist/src/core/pipeline-runner.d.ts +73 -0
- package/dist/src/core/pipeline-runner.d.ts.map +1 -0
- package/dist/src/core/pipeline-runner.js +165 -0
- package/dist/src/core/pipeline-runner.js.map +1 -0
- package/dist/src/core/pr-creator.d.ts +22 -0
- package/dist/src/core/pr-creator.d.ts.map +1 -0
- package/dist/src/core/pr-creator.js +55 -0
- package/dist/src/core/pr-creator.js.map +1 -0
- package/dist/src/core/rbac.d.ts +27 -0
- package/dist/src/core/rbac.d.ts.map +1 -0
- package/dist/src/core/rbac.js +76 -0
- package/dist/src/core/rbac.js.map +1 -0
- package/dist/src/core/startup-cleanup.d.ts +47 -0
- package/dist/src/core/startup-cleanup.d.ts.map +1 -0
- package/dist/src/core/startup-cleanup.js +150 -0
- package/dist/src/core/startup-cleanup.js.map +1 -0
- package/dist/src/core/task-store.d.ts +96 -0
- package/dist/src/core/task-store.d.ts.map +1 -0
- package/dist/src/core/task-store.js +309 -0
- package/dist/src/core/task-store.js.map +1 -0
- package/dist/src/core/verbo-config-editor.d.ts +44 -0
- package/dist/src/core/verbo-config-editor.d.ts.map +1 -0
- package/dist/src/core/verbo-config-editor.js +204 -0
- package/dist/src/core/verbo-config-editor.js.map +1 -0
- package/dist/src/core/verbo-config.d.ts +35 -0
- package/dist/src/core/verbo-config.d.ts.map +1 -0
- package/dist/src/core/verbo-config.js +55 -0
- package/dist/src/core/verbo-config.js.map +1 -0
- package/dist/src/core/verbo-md.d.ts +96 -0
- package/dist/src/core/verbo-md.d.ts.map +1 -0
- package/dist/src/core/verbo-md.js +410 -0
- package/dist/src/core/verbo-md.js.map +1 -0
- package/dist/src/db/database.d.ts +9 -0
- package/dist/src/db/database.d.ts.map +1 -0
- package/dist/src/db/database.js +37 -0
- package/dist/src/db/database.js.map +1 -0
- package/dist/src/db/migrations/001-personas-subtasks.d.ts +10 -0
- package/dist/src/db/migrations/001-personas-subtasks.d.ts.map +1 -0
- package/dist/src/db/migrations/001-personas-subtasks.js +32 -0
- package/dist/src/db/migrations/001-personas-subtasks.js.map +1 -0
- package/dist/src/db/migrations/002-rbac.d.ts +9 -0
- package/dist/src/db/migrations/002-rbac.d.ts.map +1 -0
- package/dist/src/db/migrations/002-rbac.js +31 -0
- package/dist/src/db/migrations/002-rbac.js.map +1 -0
- package/dist/src/db/migrations/003-provider-column.d.ts +8 -0
- package/dist/src/db/migrations/003-provider-column.d.ts.map +1 -0
- package/dist/src/db/migrations/003-provider-column.js +12 -0
- package/dist/src/db/migrations/003-provider-column.js.map +1 -0
- package/dist/src/db/migrations/004-pipeline-cost.d.ts +8 -0
- package/dist/src/db/migrations/004-pipeline-cost.d.ts.map +1 -0
- package/dist/src/db/migrations/004-pipeline-cost.js +23 -0
- package/dist/src/db/migrations/004-pipeline-cost.js.map +1 -0
- package/dist/src/db/migrations/005-audit-log-timestamp.d.ts +10 -0
- package/dist/src/db/migrations/005-audit-log-timestamp.d.ts.map +1 -0
- package/dist/src/db/migrations/005-audit-log-timestamp.js +39 -0
- package/dist/src/db/migrations/005-audit-log-timestamp.js.map +1 -0
- package/dist/src/db/migrations/006-human-action-type.d.ts +9 -0
- package/dist/src/db/migrations/006-human-action-type.d.ts.map +1 -0
- package/dist/src/db/migrations/006-human-action-type.js +16 -0
- package/dist/src/db/migrations/006-human-action-type.js.map +1 -0
- package/dist/src/db/schema.d.ts +6 -0
- package/dist/src/db/schema.d.ts.map +1 -0
- package/dist/src/db/schema.js +255 -0
- package/dist/src/db/schema.js.map +1 -0
- package/dist/src/deps/dependabot-generator.d.ts +22 -0
- package/dist/src/deps/dependabot-generator.d.ts.map +1 -0
- package/dist/src/deps/dependabot-generator.js +83 -0
- package/dist/src/deps/dependabot-generator.js.map +1 -0
- package/dist/src/deps/dependabot-monitor.d.ts +22 -0
- package/dist/src/deps/dependabot-monitor.d.ts.map +1 -0
- package/dist/src/deps/dependabot-monitor.js +28 -0
- package/dist/src/deps/dependabot-monitor.js.map +1 -0
- package/dist/src/deps/package-auditor.d.ts +24 -0
- package/dist/src/deps/package-auditor.d.ts.map +1 -0
- package/dist/src/deps/package-auditor.js +118 -0
- package/dist/src/deps/package-auditor.js.map +1 -0
- package/dist/src/init/ensure-init.d.ts +6 -0
- package/dist/src/init/ensure-init.d.ts.map +1 -0
- package/dist/src/init/ensure-init.js +27 -0
- package/dist/src/init/ensure-init.js.map +1 -0
- package/dist/src/init/project-detector.d.ts +11 -0
- package/dist/src/init/project-detector.d.ts.map +1 -0
- package/dist/src/init/project-detector.js +117 -0
- package/dist/src/init/project-detector.js.map +1 -0
- package/dist/src/init/questionnaire.d.ts +5 -0
- package/dist/src/init/questionnaire.d.ts.map +1 -0
- package/dist/src/init/questionnaire.js +112 -0
- package/dist/src/init/questionnaire.js.map +1 -0
- package/dist/src/init/template.d.ts +17 -0
- package/dist/src/init/template.d.ts.map +1 -0
- package/dist/src/init/template.js +46 -0
- package/dist/src/init/template.js.map +1 -0
- package/dist/src/intelligence/claude-client.d.ts +3 -0
- package/dist/src/intelligence/claude-client.d.ts.map +1 -0
- package/dist/src/intelligence/claude-client.js +12 -0
- package/dist/src/intelligence/claude-client.js.map +1 -0
- package/dist/src/intelligence/conflict-mediator.d.ts +17 -0
- package/dist/src/intelligence/conflict-mediator.d.ts.map +1 -0
- package/dist/src/intelligence/conflict-mediator.js +83 -0
- package/dist/src/intelligence/conflict-mediator.js.map +1 -0
- package/dist/src/intelligence/github-orchestrator.d.ts +30 -0
- package/dist/src/intelligence/github-orchestrator.d.ts.map +1 -0
- package/dist/src/intelligence/github-orchestrator.js +270 -0
- package/dist/src/intelligence/github-orchestrator.js.map +1 -0
- package/dist/src/intelligence/kill-switch.d.ts +10 -0
- package/dist/src/intelligence/kill-switch.d.ts.map +1 -0
- package/dist/src/intelligence/kill-switch.js +12 -0
- package/dist/src/intelligence/kill-switch.js.map +1 -0
- package/dist/src/intelligence/learnings-extractor.d.ts +13 -0
- package/dist/src/intelligence/learnings-extractor.d.ts.map +1 -0
- package/dist/src/intelligence/learnings-extractor.js +74 -0
- package/dist/src/intelligence/learnings-extractor.js.map +1 -0
- package/dist/src/intelligence/project-scanner.d.ts +2 -0
- package/dist/src/intelligence/project-scanner.d.ts.map +1 -0
- package/dist/src/intelligence/project-scanner.js +28 -0
- package/dist/src/intelligence/project-scanner.js.map +1 -0
- package/dist/src/intelligence/task-decomposer.d.ts +14 -0
- package/dist/src/intelligence/task-decomposer.d.ts.map +1 -0
- package/dist/src/intelligence/task-decomposer.js +97 -0
- package/dist/src/intelligence/task-decomposer.js.map +1 -0
- package/dist/src/intelligence/types.d.ts +14 -0
- package/dist/src/intelligence/types.d.ts.map +1 -0
- package/dist/src/intelligence/types.js +2 -0
- package/dist/src/intelligence/types.js.map +1 -0
- package/dist/src/mcp/server.d.ts +63 -0
- package/dist/src/mcp/server.d.ts.map +1 -0
- package/dist/src/mcp/server.js +537 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/dist/src/mcp/stdio-entry.d.ts +2 -0
- package/dist/src/mcp/stdio-entry.d.ts.map +1 -0
- package/dist/src/mcp/stdio-entry.js +124 -0
- package/dist/src/mcp/stdio-entry.js.map +1 -0
- package/dist/src/mcp/subtask-handlers.d.ts +7 -0
- package/dist/src/mcp/subtask-handlers.d.ts.map +1 -0
- package/dist/src/mcp/subtask-handlers.js +50 -0
- package/dist/src/mcp/subtask-handlers.js.map +1 -0
- package/dist/src/security/network-proxy.d.ts +20 -0
- package/dist/src/security/network-proxy.d.ts.map +1 -0
- package/dist/src/security/network-proxy.js +125 -0
- package/dist/src/security/network-proxy.js.map +1 -0
- package/dist/src/security/network-sandbox.d.ts +19 -0
- package/dist/src/security/network-sandbox.d.ts.map +1 -0
- package/dist/src/security/network-sandbox.js +100 -0
- package/dist/src/security/network-sandbox.js.map +1 -0
- package/dist/src/security/sanitize.d.ts +13 -0
- package/dist/src/security/sanitize.d.ts.map +1 -0
- package/dist/src/security/sanitize.js +19 -0
- package/dist/src/security/sanitize.js.map +1 -0
- package/dist/src/security/secrets-patterns.d.ts +29 -0
- package/dist/src/security/secrets-patterns.d.ts.map +1 -0
- package/dist/src/security/secrets-patterns.js +430 -0
- package/dist/src/security/secrets-patterns.js.map +1 -0
- package/dist/src/security/secrets-scanner.d.ts +26 -0
- package/dist/src/security/secrets-scanner.d.ts.map +1 -0
- package/dist/src/security/secrets-scanner.js +62 -0
- package/dist/src/security/secrets-scanner.js.map +1 -0
- package/dist/src/skills/classifier.d.ts +9 -0
- package/dist/src/skills/classifier.d.ts.map +1 -0
- package/dist/src/skills/classifier.js +41 -0
- package/dist/src/skills/classifier.js.map +1 -0
- package/dist/src/skills/registry.d.ts +16 -0
- package/dist/src/skills/registry.d.ts.map +1 -0
- package/dist/src/skills/registry.js +61 -0
- package/dist/src/skills/registry.js.map +1 -0
- package/dist/src/sync/events.d.ts +9 -0
- package/dist/src/sync/events.d.ts.map +1 -0
- package/dist/src/sync/events.js +2 -0
- package/dist/src/sync/events.js.map +1 -0
- package/dist/src/sync/relay-server.d.ts +18 -0
- package/dist/src/sync/relay-server.d.ts.map +1 -0
- package/dist/src/sync/relay-server.js +131 -0
- package/dist/src/sync/relay-server.js.map +1 -0
- package/dist/src/sync/sync-client.d.ts +31 -0
- package/dist/src/sync/sync-client.d.ts.map +1 -0
- package/dist/src/sync/sync-client.js +314 -0
- package/dist/src/sync/sync-client.js.map +1 -0
- package/dist/src/tui/app.d.ts +35 -0
- package/dist/src/tui/app.d.ts.map +1 -0
- package/dist/src/tui/app.js +676 -0
- package/dist/src/tui/app.js.map +1 -0
- package/dist/src/tui/components/activity-feed.d.ts +12 -0
- package/dist/src/tui/components/activity-feed.d.ts.map +1 -0
- package/dist/src/tui/components/activity-feed.js +82 -0
- package/dist/src/tui/components/activity-feed.js.map +1 -0
- package/dist/src/tui/components/agent-list.d.ts +19 -0
- package/dist/src/tui/components/agent-list.d.ts.map +1 -0
- package/dist/src/tui/components/agent-list.js +33 -0
- package/dist/src/tui/components/agent-list.js.map +1 -0
- package/dist/src/tui/components/agent-row.d.ts +12 -0
- package/dist/src/tui/components/agent-row.d.ts.map +1 -0
- package/dist/src/tui/components/agent-row.js +37 -0
- package/dist/src/tui/components/agent-row.js.map +1 -0
- package/dist/src/tui/components/approval-terminal.d.ts +13 -0
- package/dist/src/tui/components/approval-terminal.d.ts.map +1 -0
- package/dist/src/tui/components/approval-terminal.js +34 -0
- package/dist/src/tui/components/approval-terminal.js.map +1 -0
- package/dist/src/tui/components/audit-viewer.d.ts +16 -0
- package/dist/src/tui/components/audit-viewer.d.ts.map +1 -0
- package/dist/src/tui/components/audit-viewer.js +46 -0
- package/dist/src/tui/components/audit-viewer.js.map +1 -0
- package/dist/src/tui/components/auth-gate.d.ts +9 -0
- package/dist/src/tui/components/auth-gate.d.ts.map +1 -0
- package/dist/src/tui/components/auth-gate.js +112 -0
- package/dist/src/tui/components/auth-gate.js.map +1 -0
- package/dist/src/tui/components/command-palette.d.ts +12 -0
- package/dist/src/tui/components/command-palette.d.ts.map +1 -0
- package/dist/src/tui/components/command-palette.js +51 -0
- package/dist/src/tui/components/command-palette.js.map +1 -0
- package/dist/src/tui/components/compliance-badge.d.ts +11 -0
- package/dist/src/tui/components/compliance-badge.d.ts.map +1 -0
- package/dist/src/tui/components/compliance-badge.js +12 -0
- package/dist/src/tui/components/compliance-badge.js.map +1 -0
- package/dist/src/tui/components/decomposition-review.d.ts +10 -0
- package/dist/src/tui/components/decomposition-review.d.ts.map +1 -0
- package/dist/src/tui/components/decomposition-review.js +19 -0
- package/dist/src/tui/components/decomposition-review.js.map +1 -0
- package/dist/src/tui/components/dependency-graph.d.ts +13 -0
- package/dist/src/tui/components/dependency-graph.d.ts.map +1 -0
- package/dist/src/tui/components/dependency-graph.js +143 -0
- package/dist/src/tui/components/dependency-graph.js.map +1 -0
- package/dist/src/tui/components/diff-viewer.d.ts +11 -0
- package/dist/src/tui/components/diff-viewer.d.ts.map +1 -0
- package/dist/src/tui/components/diff-viewer.js +82 -0
- package/dist/src/tui/components/diff-viewer.js.map +1 -0
- package/dist/src/tui/components/edit-task-input.d.ts +10 -0
- package/dist/src/tui/components/edit-task-input.d.ts.map +1 -0
- package/dist/src/tui/components/edit-task-input.js +20 -0
- package/dist/src/tui/components/edit-task-input.js.map +1 -0
- package/dist/src/tui/components/footer.d.ts +12 -0
- package/dist/src/tui/components/footer.d.ts.map +1 -0
- package/dist/src/tui/components/footer.js +41 -0
- package/dist/src/tui/components/footer.js.map +1 -0
- package/dist/src/tui/components/header.d.ts +8 -0
- package/dist/src/tui/components/header.d.ts.map +1 -0
- package/dist/src/tui/components/header.js +20 -0
- package/dist/src/tui/components/header.js.map +1 -0
- package/dist/src/tui/components/human-actions.d.ts +14 -0
- package/dist/src/tui/components/human-actions.d.ts.map +1 -0
- package/dist/src/tui/components/human-actions.js +43 -0
- package/dist/src/tui/components/human-actions.js.map +1 -0
- package/dist/src/tui/components/log-panel.d.ts +10 -0
- package/dist/src/tui/components/log-panel.d.ts.map +1 -0
- package/dist/src/tui/components/log-panel.js +38 -0
- package/dist/src/tui/components/log-panel.js.map +1 -0
- package/dist/src/tui/components/memory-viewer.d.ts +10 -0
- package/dist/src/tui/components/memory-viewer.d.ts.map +1 -0
- package/dist/src/tui/components/memory-viewer.js +44 -0
- package/dist/src/tui/components/memory-viewer.js.map +1 -0
- package/dist/src/tui/components/new-task-input.d.ts +9 -0
- package/dist/src/tui/components/new-task-input.d.ts.map +1 -0
- package/dist/src/tui/components/new-task-input.js +21 -0
- package/dist/src/tui/components/new-task-input.js.map +1 -0
- package/dist/src/tui/components/orchestrator-status.d.ts +9 -0
- package/dist/src/tui/components/orchestrator-status.d.ts.map +1 -0
- package/dist/src/tui/components/orchestrator-status.js +15 -0
- package/dist/src/tui/components/orchestrator-status.js.map +1 -0
- package/dist/src/tui/components/parallelize-banner.d.ts +8 -0
- package/dist/src/tui/components/parallelize-banner.d.ts.map +1 -0
- package/dist/src/tui/components/parallelize-banner.js +9 -0
- package/dist/src/tui/components/parallelize-banner.js.map +1 -0
- package/dist/src/tui/components/progress-bar.d.ts +9 -0
- package/dist/src/tui/components/progress-bar.d.ts.map +1 -0
- package/dist/src/tui/components/progress-bar.js +15 -0
- package/dist/src/tui/components/progress-bar.js.map +1 -0
- package/dist/src/tui/components/review-queue.d.ts +13 -0
- package/dist/src/tui/components/review-queue.d.ts.map +1 -0
- package/dist/src/tui/components/review-queue.js +78 -0
- package/dist/src/tui/components/review-queue.js.map +1 -0
- package/dist/src/tui/components/rich-header.d.ts +11 -0
- package/dist/src/tui/components/rich-header.d.ts.map +1 -0
- package/dist/src/tui/components/rich-header.js +25 -0
- package/dist/src/tui/components/rich-header.js.map +1 -0
- package/dist/src/tui/components/spinner.d.ts +7 -0
- package/dist/src/tui/components/spinner.d.ts.map +1 -0
- package/dist/src/tui/components/spinner.js +8 -0
- package/dist/src/tui/components/spinner.js.map +1 -0
- package/dist/src/tui/components/status-bar.d.ts +23 -0
- package/dist/src/tui/components/status-bar.d.ts.map +1 -0
- package/dist/src/tui/components/status-bar.js +28 -0
- package/dist/src/tui/components/status-bar.js.map +1 -0
- package/dist/src/tui/components/task-queue.d.ts +11 -0
- package/dist/src/tui/components/task-queue.d.ts.map +1 -0
- package/dist/src/tui/components/task-queue.js +30 -0
- package/dist/src/tui/components/task-queue.js.map +1 -0
- package/dist/src/tui/components/team-view.d.ts +13 -0
- package/dist/src/tui/components/team-view.d.ts.map +1 -0
- package/dist/src/tui/components/team-view.js +12 -0
- package/dist/src/tui/components/team-view.js.map +1 -0
- package/dist/src/tui/graph-renderer.d.ts +11 -0
- package/dist/src/tui/graph-renderer.d.ts.map +1 -0
- package/dist/src/tui/graph-renderer.js +296 -0
- package/dist/src/tui/graph-renderer.js.map +1 -0
- package/dist/src/tui/hooks/use-bell.d.ts +21 -0
- package/dist/src/tui/hooks/use-bell.d.ts.map +1 -0
- package/dist/src/tui/hooks/use-bell.js +38 -0
- package/dist/src/tui/hooks/use-bell.js.map +1 -0
- package/dist/src/tui/hooks/use-ci-status.d.ts +16 -0
- package/dist/src/tui/hooks/use-ci-status.d.ts.map +1 -0
- package/dist/src/tui/hooks/use-ci-status.js +97 -0
- package/dist/src/tui/hooks/use-ci-status.js.map +1 -0
- package/dist/src/tui/hooks/use-command-palette.d.ts +37 -0
- package/dist/src/tui/hooks/use-command-palette.d.ts.map +1 -0
- package/dist/src/tui/hooks/use-command-palette.js +108 -0
- package/dist/src/tui/hooks/use-command-palette.js.map +1 -0
- package/dist/src/tui/hooks/use-diff-view.d.ts +16 -0
- package/dist/src/tui/hooks/use-diff-view.d.ts.map +1 -0
- package/dist/src/tui/hooks/use-diff-view.js +75 -0
- package/dist/src/tui/hooks/use-diff-view.js.map +1 -0
- package/dist/src/tui/hooks/use-keyboard.d.ts +3 -0
- package/dist/src/tui/hooks/use-keyboard.d.ts.map +1 -0
- package/dist/src/tui/hooks/use-keyboard.js +70 -0
- package/dist/src/tui/hooks/use-keyboard.js.map +1 -0
- package/dist/src/tui/hooks/use-log-stream.d.ts +25 -0
- package/dist/src/tui/hooks/use-log-stream.d.ts.map +1 -0
- package/dist/src/tui/hooks/use-log-stream.js +83 -0
- package/dist/src/tui/hooks/use-log-stream.js.map +1 -0
- package/dist/src/tui/hooks/use-spinner.d.ts +3 -0
- package/dist/src/tui/hooks/use-spinner.d.ts.map +1 -0
- package/dist/src/tui/hooks/use-spinner.js +13 -0
- package/dist/src/tui/hooks/use-spinner.js.map +1 -0
- package/dist/src/tui/hooks/use-store.d.ts +33 -0
- package/dist/src/tui/hooks/use-store.d.ts.map +1 -0
- package/dist/src/tui/hooks/use-store.js +21 -0
- package/dist/src/tui/hooks/use-store.js.map +1 -0
- package/dist/src/tui/lib/diff-parser.d.ts +24 -0
- package/dist/src/tui/lib/diff-parser.d.ts.map +1 -0
- package/dist/src/tui/lib/diff-parser.js +115 -0
- package/dist/src/tui/lib/diff-parser.js.map +1 -0
- package/dist/src/tui/lib/palette-commands.d.ts +14 -0
- package/dist/src/tui/lib/palette-commands.d.ts.map +1 -0
- package/dist/src/tui/lib/palette-commands.js +101 -0
- package/dist/src/tui/lib/palette-commands.js.map +1 -0
- package/dist/src/tui/tui.d.ts +8 -0
- package/dist/src/tui/tui.d.ts.map +1 -0
- package/dist/src/tui/tui.js +8 -0
- package/dist/src/tui/tui.js.map +1 -0
- package/package.json +66 -0
- package/skills/api-design.md +84 -0
- package/skills/backend-typescript.md +76 -0
- package/skills/data-modeling.md +73 -0
- package/skills/devops-ci.md +82 -0
- package/skills/frontend-design.md +69 -0
- package/skills/observability.md +73 -0
- package/skills/react-nextjs.md +76 -0
- package/skills/refactoring.md +77 -0
- package/skills/security.md +75 -0
- package/skills/testing.md +69 -0
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
const DEFAULTS = {
|
|
4
|
+
project: { name: '', language: '', framework: '', testRunner: '' },
|
|
5
|
+
gitWorkflow: {
|
|
6
|
+
branchStrategy: 'feature-branches',
|
|
7
|
+
branchPrefix: 'verbo/',
|
|
8
|
+
baseBranch: 'main',
|
|
9
|
+
commitConvention: 'conventional-commits',
|
|
10
|
+
prTemplate: true,
|
|
11
|
+
autoPr: true,
|
|
12
|
+
mergeMode: 'manual',
|
|
13
|
+
hotFiles: [],
|
|
14
|
+
},
|
|
15
|
+
codeStandards: {
|
|
16
|
+
linting: '',
|
|
17
|
+
formatOnSave: true,
|
|
18
|
+
testBeforeCommit: true,
|
|
19
|
+
minCoverage: 80,
|
|
20
|
+
},
|
|
21
|
+
agentRules: {
|
|
22
|
+
defaultTrust: 'medium',
|
|
23
|
+
maxConcurrentAgents: 3,
|
|
24
|
+
allowedTools: ['Read', 'Glob', 'Grep', 'WebSearch'],
|
|
25
|
+
approvalRequired: ['Edit', 'Write', 'Bash', 'Delete'],
|
|
26
|
+
neverTouch: ['.env', '.env.*'],
|
|
27
|
+
},
|
|
28
|
+
prStandards: {
|
|
29
|
+
titleFormat: 'feat|fix|chore: description',
|
|
30
|
+
requireTests: true,
|
|
31
|
+
requireDescription: true,
|
|
32
|
+
maxFilesPerPr: 20,
|
|
33
|
+
},
|
|
34
|
+
subTasking: {
|
|
35
|
+
enabled: true,
|
|
36
|
+
maxDepth: 2,
|
|
37
|
+
autoLaunch: true,
|
|
38
|
+
requireApproval: false,
|
|
39
|
+
},
|
|
40
|
+
personas: [],
|
|
41
|
+
pipelines: [],
|
|
42
|
+
cost: {
|
|
43
|
+
alertThresholdsUsd: [],
|
|
44
|
+
},
|
|
45
|
+
notifications: {
|
|
46
|
+
events: [],
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
function parseArray(value) {
|
|
50
|
+
const trimmed = value.trim();
|
|
51
|
+
if (trimmed.startsWith('[') && trimmed.endsWith(']')) {
|
|
52
|
+
return trimmed.slice(1, -1).split(',').map((s) => s.trim()).filter(Boolean);
|
|
53
|
+
}
|
|
54
|
+
return trimmed.split(',').map((s) => s.trim()).filter(Boolean);
|
|
55
|
+
}
|
|
56
|
+
function parseBool(value) {
|
|
57
|
+
return value.trim().toLowerCase() === 'true';
|
|
58
|
+
}
|
|
59
|
+
function parseNumber(value, fallback) {
|
|
60
|
+
const n = parseInt(value.trim(), 10);
|
|
61
|
+
return isNaN(n) ? fallback : n;
|
|
62
|
+
}
|
|
63
|
+
export function parseVerboMd(content) {
|
|
64
|
+
const config = JSON.parse(JSON.stringify(DEFAULTS));
|
|
65
|
+
let currentSection = '';
|
|
66
|
+
let currentPersona = null;
|
|
67
|
+
let collectingAddendum = false;
|
|
68
|
+
let currentPipeline = null;
|
|
69
|
+
let currentStep = null;
|
|
70
|
+
function flushPersona() {
|
|
71
|
+
if (currentPersona) {
|
|
72
|
+
config.personas.push(currentPersona);
|
|
73
|
+
currentPersona = null;
|
|
74
|
+
}
|
|
75
|
+
collectingAddendum = false;
|
|
76
|
+
}
|
|
77
|
+
function flushStep() {
|
|
78
|
+
if (currentStep && currentPipeline) {
|
|
79
|
+
currentPipeline.steps.push(currentStep);
|
|
80
|
+
currentStep = null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function flushPipeline() {
|
|
84
|
+
flushStep();
|
|
85
|
+
if (currentPipeline) {
|
|
86
|
+
config.pipelines.push(currentPipeline);
|
|
87
|
+
currentPipeline = null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
for (const line of content.split('\n')) {
|
|
91
|
+
// H2 section heading
|
|
92
|
+
const sectionMatch = line.match(/^## (.+)/);
|
|
93
|
+
if (sectionMatch) {
|
|
94
|
+
flushPersona();
|
|
95
|
+
flushPipeline();
|
|
96
|
+
currentSection = sectionMatch[1].trim().toLowerCase().replace(/\s+/g, '_');
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
// H3 block: persona name (inside ## Personas) or pipeline name (inside ## Pipelines)
|
|
100
|
+
const h3Match = line.match(/^### (\S+)/);
|
|
101
|
+
if (h3Match) {
|
|
102
|
+
if (currentSection === 'personas') {
|
|
103
|
+
flushPersona();
|
|
104
|
+
currentPersona = {
|
|
105
|
+
name: h3Match[1].trim(),
|
|
106
|
+
label: h3Match[1].trim(),
|
|
107
|
+
matchKeywords: [],
|
|
108
|
+
systemPromptAddendum: '',
|
|
109
|
+
skillFiles: [],
|
|
110
|
+
neverTouch: [],
|
|
111
|
+
};
|
|
112
|
+
collectingAddendum = false;
|
|
113
|
+
}
|
|
114
|
+
else if (currentSection === 'pipelines') {
|
|
115
|
+
flushPipeline();
|
|
116
|
+
currentPipeline = {
|
|
117
|
+
name: h3Match[1].trim(),
|
|
118
|
+
title: h3Match[1].trim(),
|
|
119
|
+
steps: [],
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
// H4 pipeline step title (inside ## Pipelines > ### pipeline_name)
|
|
125
|
+
const h4Match = line.match(/^#### (.+)/);
|
|
126
|
+
if (h4Match && currentSection === 'pipelines' && currentPipeline) {
|
|
127
|
+
flushStep();
|
|
128
|
+
currentStep = {
|
|
129
|
+
title: h4Match[1].trim(),
|
|
130
|
+
requiresApproval: false,
|
|
131
|
+
onFailure: 'stop',
|
|
132
|
+
};
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
// If collecting system_prompt_addendum lines
|
|
136
|
+
if (collectingAddendum && currentPersona) {
|
|
137
|
+
// A new key: value line stops addendum collection
|
|
138
|
+
const kvCheck = line.match(/^(\w[\w_]*)\s*:\s*(.*)/);
|
|
139
|
+
if (kvCheck) {
|
|
140
|
+
collectingAddendum = false;
|
|
141
|
+
// Fall through to process the key-value pair below
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
// Append the line to the addendum (strip leading 2-space indent if present)
|
|
145
|
+
const addendumLine = line.startsWith(' ') ? line.slice(2) : line;
|
|
146
|
+
currentPersona.systemPromptAddendum +=
|
|
147
|
+
(currentPersona.systemPromptAddendum ? '\n' : '') + addendumLine;
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const kvMatch = line.match(/^(\w[\w_]*)\s*:\s*(.*)/);
|
|
152
|
+
if (!kvMatch)
|
|
153
|
+
continue;
|
|
154
|
+
const [, key, value] = kvMatch;
|
|
155
|
+
const k = key.trim();
|
|
156
|
+
const v = value.trim();
|
|
157
|
+
// Persona-scoped keys
|
|
158
|
+
if (currentSection === 'personas' && currentPersona) {
|
|
159
|
+
if (k === 'label') {
|
|
160
|
+
currentPersona.label = v;
|
|
161
|
+
}
|
|
162
|
+
else if (k === 'match_keywords') {
|
|
163
|
+
currentPersona.matchKeywords = parseArray(v);
|
|
164
|
+
}
|
|
165
|
+
else if (k === 'skill_files') {
|
|
166
|
+
currentPersona.skillFiles = parseArray(v);
|
|
167
|
+
}
|
|
168
|
+
else if (k === 'trust_level_override') {
|
|
169
|
+
currentPersona.trustLevelOverride = v;
|
|
170
|
+
}
|
|
171
|
+
else if (k === 'never_touch') {
|
|
172
|
+
currentPersona.neverTouch = parseArray(v);
|
|
173
|
+
}
|
|
174
|
+
else if (k === 'system_prompt_addendum') {
|
|
175
|
+
// Value on same line (if any) starts the addendum; subsequent indented lines continue it
|
|
176
|
+
currentPersona.systemPromptAddendum = v;
|
|
177
|
+
collectingAddendum = true;
|
|
178
|
+
}
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
// Pipeline step-scoped keys
|
|
182
|
+
if (currentSection === 'pipelines' && currentStep) {
|
|
183
|
+
if (k === 'persona')
|
|
184
|
+
currentStep.persona = v || undefined;
|
|
185
|
+
else if (k === 'requires_approval')
|
|
186
|
+
currentStep.requiresApproval = parseBool(v);
|
|
187
|
+
else if (k === 'on_failure')
|
|
188
|
+
currentStep.onFailure = v;
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
// Pipeline-level keys (no active step yet)
|
|
192
|
+
if (currentSection === 'pipelines' && currentPipeline) {
|
|
193
|
+
if (k === 'title' && v)
|
|
194
|
+
currentPipeline.title = v;
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
// Skip empty values for remaining sections
|
|
198
|
+
if (!v)
|
|
199
|
+
continue;
|
|
200
|
+
switch (currentSection) {
|
|
201
|
+
case 'project':
|
|
202
|
+
if (k === 'name')
|
|
203
|
+
config.project.name = v;
|
|
204
|
+
else if (k === 'language')
|
|
205
|
+
config.project.language = v;
|
|
206
|
+
else if (k === 'framework')
|
|
207
|
+
config.project.framework = v;
|
|
208
|
+
else if (k === 'test_runner')
|
|
209
|
+
config.project.testRunner = v;
|
|
210
|
+
break;
|
|
211
|
+
case 'git_workflow':
|
|
212
|
+
if (k === 'branch_strategy')
|
|
213
|
+
config.gitWorkflow.branchStrategy = v;
|
|
214
|
+
else if (k === 'branch_prefix')
|
|
215
|
+
config.gitWorkflow.branchPrefix = v;
|
|
216
|
+
else if (k === 'base_branch')
|
|
217
|
+
config.gitWorkflow.baseBranch = v;
|
|
218
|
+
else if (k === 'commit_convention')
|
|
219
|
+
config.gitWorkflow.commitConvention = v;
|
|
220
|
+
else if (k === 'pr_template')
|
|
221
|
+
config.gitWorkflow.prTemplate = parseBool(v);
|
|
222
|
+
else if (k === 'auto_pr')
|
|
223
|
+
config.gitWorkflow.autoPr = parseBool(v);
|
|
224
|
+
else if (k === 'merge_mode')
|
|
225
|
+
config.gitWorkflow.mergeMode = v;
|
|
226
|
+
else if (k === 'hot_files') {
|
|
227
|
+
config.gitWorkflow.hotFiles = v.split(',').map((s) => s.trim()).filter(Boolean);
|
|
228
|
+
}
|
|
229
|
+
break;
|
|
230
|
+
case 'code_standards':
|
|
231
|
+
if (k === 'linting')
|
|
232
|
+
config.codeStandards.linting = v;
|
|
233
|
+
else if (k === 'format_on_save')
|
|
234
|
+
config.codeStandards.formatOnSave = parseBool(v);
|
|
235
|
+
else if (k === 'test_before_commit')
|
|
236
|
+
config.codeStandards.testBeforeCommit = parseBool(v);
|
|
237
|
+
else if (k === 'min_coverage')
|
|
238
|
+
config.codeStandards.minCoverage = parseNumber(v, 80);
|
|
239
|
+
break;
|
|
240
|
+
case 'agent_rules':
|
|
241
|
+
if (k === 'default_trust')
|
|
242
|
+
config.agentRules.defaultTrust = v;
|
|
243
|
+
else if (k === 'max_concurrent_agents')
|
|
244
|
+
config.agentRules.maxConcurrentAgents = parseNumber(v, 3);
|
|
245
|
+
else if (k === 'allowed_tools')
|
|
246
|
+
config.agentRules.allowedTools = parseArray(v);
|
|
247
|
+
else if (k === 'approval_required')
|
|
248
|
+
config.agentRules.approvalRequired = parseArray(v);
|
|
249
|
+
else if (k === 'never_touch')
|
|
250
|
+
config.agentRules.neverTouch = parseArray(v);
|
|
251
|
+
break;
|
|
252
|
+
case 'pr_standards':
|
|
253
|
+
if (k === 'title_format')
|
|
254
|
+
config.prStandards.titleFormat = v;
|
|
255
|
+
else if (k === 'require_tests')
|
|
256
|
+
config.prStandards.requireTests = parseBool(v);
|
|
257
|
+
else if (k === 'require_description')
|
|
258
|
+
config.prStandards.requireDescription = parseBool(v);
|
|
259
|
+
else if (k === 'max_files_per_pr')
|
|
260
|
+
config.prStandards.maxFilesPerPr = parseNumber(v, 20);
|
|
261
|
+
break;
|
|
262
|
+
case 'sub_tasking':
|
|
263
|
+
if (k === 'enabled')
|
|
264
|
+
config.subTasking.enabled = parseBool(v);
|
|
265
|
+
else if (k === 'max_depth')
|
|
266
|
+
config.subTasking.maxDepth = parseNumber(v, 2);
|
|
267
|
+
else if (k === 'auto_launch')
|
|
268
|
+
config.subTasking.autoLaunch = parseBool(v);
|
|
269
|
+
else if (k === 'require_approval')
|
|
270
|
+
config.subTasking.requireApproval = parseBool(v);
|
|
271
|
+
break;
|
|
272
|
+
case 'cost':
|
|
273
|
+
if (k === 'budget_per_task_usd')
|
|
274
|
+
config.cost.budgetPerTaskUsd = Number(v);
|
|
275
|
+
else if (k === 'budget_per_pipeline_run_usd')
|
|
276
|
+
config.cost.budgetPerPipelineRunUsd = Number(v);
|
|
277
|
+
else if (k === 'alert_thresholds_usd')
|
|
278
|
+
config.cost.alertThresholdsUsd = parseArray(v).map(Number).filter((n) => !isNaN(n));
|
|
279
|
+
else if (k === 'default_model')
|
|
280
|
+
config.cost.defaultModel = v;
|
|
281
|
+
break;
|
|
282
|
+
case 'notifications':
|
|
283
|
+
if (k === 'slack_webhook_url')
|
|
284
|
+
config.notifications.slackWebhookUrl = v;
|
|
285
|
+
else if (k === 'discord_webhook_url')
|
|
286
|
+
config.notifications.discordWebhookUrl = v;
|
|
287
|
+
else if (k === 'events')
|
|
288
|
+
config.notifications.events = parseArray(v);
|
|
289
|
+
else if (k === 'quiet_hours')
|
|
290
|
+
config.notifications.quietHours = v;
|
|
291
|
+
break;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
// Flush any trailing blocks
|
|
295
|
+
flushPersona();
|
|
296
|
+
flushPipeline();
|
|
297
|
+
return config;
|
|
298
|
+
}
|
|
299
|
+
export function injectVerboMd(verboContent, targetDir) {
|
|
300
|
+
const claudeMdPath = path.join(targetDir, 'CLAUDE.md');
|
|
301
|
+
const injection = `\n\n# Agent Instructions (from VERBO.md)\n\nFollow these project rules strictly:\n\n${verboContent}\n`;
|
|
302
|
+
if (fs.existsSync(claudeMdPath)) {
|
|
303
|
+
const existing = fs.readFileSync(claudeMdPath, 'utf-8');
|
|
304
|
+
fs.writeFileSync(claudeMdPath, existing + injection, 'utf-8');
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
fs.writeFileSync(claudeMdPath, injection, 'utf-8');
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
export function injectSkill(targetDir, skillName, skillContent) {
|
|
311
|
+
// 1. Write skill file to .claude/skills/ in the worktree
|
|
312
|
+
const skillsDir = path.join(targetDir, '.claude', 'skills');
|
|
313
|
+
fs.mkdirSync(skillsDir, { recursive: true });
|
|
314
|
+
fs.writeFileSync(path.join(skillsDir, `${skillName}.md`), skillContent, 'utf-8');
|
|
315
|
+
// 2. Reference the skill in CLAUDE.md
|
|
316
|
+
const claudeMdPath = path.join(targetDir, 'CLAUDE.md');
|
|
317
|
+
const reference = `\n\n# Recommended Skill\n\nThis task has been classified for the **${skillName}** domain.\nRead the skill file at \`.claude/skills/${skillName}.md\` for domain-specific patterns, anti-patterns, and checklists. Apply its guidance throughout your work.\n`;
|
|
318
|
+
if (fs.existsSync(claudeMdPath)) {
|
|
319
|
+
const existing = fs.readFileSync(claudeMdPath, 'utf-8');
|
|
320
|
+
fs.writeFileSync(claudeMdPath, existing + reference, 'utf-8');
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
fs.writeFileSync(claudeMdPath, reference, 'utf-8');
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
export function injectLearningContext(targetDir, learnings) {
|
|
327
|
+
if (learnings.length === 0)
|
|
328
|
+
return;
|
|
329
|
+
const claudeMdPath = path.join(targetDir, 'CLAUDE.md');
|
|
330
|
+
// Group learnings by category for readability
|
|
331
|
+
const groups = new Map();
|
|
332
|
+
for (const l of learnings) {
|
|
333
|
+
if (!groups.has(l.category))
|
|
334
|
+
groups.set(l.category, []);
|
|
335
|
+
groups.get(l.category).push(l);
|
|
336
|
+
}
|
|
337
|
+
const sections = Array.from(groups.entries())
|
|
338
|
+
.map(([cat, items]) => {
|
|
339
|
+
const entries = items
|
|
340
|
+
.map((l) => `- ${l.content}${l.source ? ` _(${l.source})_` : ''}`)
|
|
341
|
+
.join('\n');
|
|
342
|
+
return `**${cat.charAt(0).toUpperCase() + cat.slice(1)}s**\n${entries}`;
|
|
343
|
+
})
|
|
344
|
+
.join('\n\n');
|
|
345
|
+
const injection = `\n\n# Project Memory Context\n\nRelevant learnings from previous tasks:\n\n${sections}\n`;
|
|
346
|
+
if (fs.existsSync(claudeMdPath)) {
|
|
347
|
+
const existing = fs.readFileSync(claudeMdPath, 'utf-8');
|
|
348
|
+
fs.writeFileSync(claudeMdPath, existing + injection, 'utf-8');
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
fs.writeFileSync(claudeMdPath, injection, 'utf-8');
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
export function readBaseBranch(projectDir) {
|
|
355
|
+
const verboMdPath = path.join(projectDir, 'VERBO.md');
|
|
356
|
+
if (!fs.existsSync(verboMdPath))
|
|
357
|
+
return 'main';
|
|
358
|
+
const content = fs.readFileSync(verboMdPath, 'utf-8');
|
|
359
|
+
const config = parseVerboMd(content);
|
|
360
|
+
return config.gitWorkflow.baseBranch;
|
|
361
|
+
}
|
|
362
|
+
export function readMergeMode(projectDir) {
|
|
363
|
+
const verboMdPath = path.join(projectDir, 'VERBO.md');
|
|
364
|
+
if (!fs.existsSync(verboMdPath))
|
|
365
|
+
return 'manual';
|
|
366
|
+
const content = fs.readFileSync(verboMdPath, 'utf-8');
|
|
367
|
+
const config = parseVerboMd(content);
|
|
368
|
+
return config.gitWorkflow.mergeMode;
|
|
369
|
+
}
|
|
370
|
+
export function readHotFiles(projectDir) {
|
|
371
|
+
const verboMdPath = path.join(projectDir, 'VERBO.md');
|
|
372
|
+
if (!fs.existsSync(verboMdPath))
|
|
373
|
+
return { include: [], exclude: [] };
|
|
374
|
+
const content = fs.readFileSync(verboMdPath, 'utf-8');
|
|
375
|
+
const config = parseVerboMd(content);
|
|
376
|
+
const include = [];
|
|
377
|
+
const exclude = [];
|
|
378
|
+
for (const entry of config.gitWorkflow.hotFiles) {
|
|
379
|
+
if (entry.startsWith('!')) {
|
|
380
|
+
exclude.push(entry.slice(1));
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
include.push(entry);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
return { include, exclude };
|
|
387
|
+
}
|
|
388
|
+
export function readPipelineConfigs(projectDir) {
|
|
389
|
+
const verboMdPath = path.join(projectDir, 'VERBO.md');
|
|
390
|
+
if (!fs.existsSync(verboMdPath))
|
|
391
|
+
return [];
|
|
392
|
+
const content = fs.readFileSync(verboMdPath, 'utf-8');
|
|
393
|
+
return parseVerboMd(content).pipelines;
|
|
394
|
+
}
|
|
395
|
+
export function readCostConfig(projectDir) {
|
|
396
|
+
const verboMdPath = path.join(projectDir, 'VERBO.md');
|
|
397
|
+
if (!fs.existsSync(verboMdPath))
|
|
398
|
+
return { alertThresholdsUsd: [] };
|
|
399
|
+
const content = fs.readFileSync(verboMdPath, 'utf-8');
|
|
400
|
+
return parseVerboMd(content).cost;
|
|
401
|
+
}
|
|
402
|
+
export function readNotificationConfig(projectDir) {
|
|
403
|
+
const verboMdPath = path.join(projectDir, 'VERBO.md');
|
|
404
|
+
if (!fs.existsSync(verboMdPath))
|
|
405
|
+
return { events: [] };
|
|
406
|
+
const content = fs.readFileSync(verboMdPath, 'utf-8');
|
|
407
|
+
return parseVerboMd(content).notifications;
|
|
408
|
+
}
|
|
409
|
+
export { DEFAULTS as VERBO_DEFAULTS };
|
|
410
|
+
//# sourceMappingURL=verbo-md.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verbo-md.js","sourceRoot":"","sources":["../../../src/core/verbo-md.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
export declare let vectorSearchEnabled: boolean;
|
|
3
|
+
export declare function loadSqliteVec(db: Database.Database): Promise<void>;
|
|
4
|
+
export interface VerboDatabase {
|
|
5
|
+
raw(): Database.Database;
|
|
6
|
+
close(): void;
|
|
7
|
+
}
|
|
8
|
+
export declare function createDatabase(dbPath: string): VerboDatabase;
|
|
9
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAStC,eAAO,IAAI,mBAAmB,SAAQ,CAAC;AAEvC,wBAAsB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CASxE;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC;IACzB,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAgB5D"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
import { SCHEMA } from './schema.js';
|
|
3
|
+
import { migrate as migrate001 } from './migrations/001-personas-subtasks.js';
|
|
4
|
+
import { migrate as migrate002 } from './migrations/002-rbac.js';
|
|
5
|
+
import { migrate as migrate003 } from './migrations/003-provider-column.js';
|
|
6
|
+
import { migrate as migrate004 } from './migrations/004-pipeline-cost.js';
|
|
7
|
+
import { migrate as migrate005 } from './migrations/005-audit-log-timestamp.js';
|
|
8
|
+
import { migrate as migrate006 } from './migrations/006-human-action-type.js';
|
|
9
|
+
export let vectorSearchEnabled = false;
|
|
10
|
+
export async function loadSqliteVec(db) {
|
|
11
|
+
try {
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
|
+
const sqliteVec = await import('sqlite-vec');
|
|
14
|
+
sqliteVec.load(db);
|
|
15
|
+
vectorSearchEnabled = true;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// sqlite-vec is optional; vector search will be unavailable
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function createDatabase(dbPath) {
|
|
22
|
+
const db = new Database(dbPath, { allowExtensions: true });
|
|
23
|
+
db.pragma('journal_mode = WAL');
|
|
24
|
+
db.pragma('foreign_keys = ON');
|
|
25
|
+
db.exec(SCHEMA);
|
|
26
|
+
migrate001(db);
|
|
27
|
+
migrate002(db);
|
|
28
|
+
migrate003(db);
|
|
29
|
+
migrate004(db);
|
|
30
|
+
migrate005(db);
|
|
31
|
+
migrate006(db);
|
|
32
|
+
return {
|
|
33
|
+
raw: () => db,
|
|
34
|
+
close: () => db.close(),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAE9E,MAAM,CAAC,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAqB;IACvD,IAAI,CAAC;QACH,8DAA8D;QAC9D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,YAAmB,CAAC,CAAC;QACnD,SAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,mBAAmB,GAAG,IAAI,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAsB,CAAC,CAAC;IAC/E,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChB,UAAU,CAAC,EAAE,CAAC,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;QACb,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
/**
|
|
3
|
+
* Migration 001: Add persona and subtask support
|
|
4
|
+
*
|
|
5
|
+
* tasks: parent_task_id, depth
|
|
6
|
+
* agent_sessions: fun_name, fun_tagline, persona_name, parent_session_id
|
|
7
|
+
* Indexes: idx_tasks_parent_task_id, idx_agent_sessions_parent_session_id
|
|
8
|
+
*/
|
|
9
|
+
export declare function migrate(db: Database.Database): void;
|
|
10
|
+
//# sourceMappingURL=001-personas-subtasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"001-personas-subtasks.d.ts","sourceRoot":"","sources":["../../../../src/db/migrations/001-personas-subtasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAqCnD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 001: Add persona and subtask support
|
|
3
|
+
*
|
|
4
|
+
* tasks: parent_task_id, depth
|
|
5
|
+
* agent_sessions: fun_name, fun_tagline, persona_name, parent_session_id
|
|
6
|
+
* Indexes: idx_tasks_parent_task_id, idx_agent_sessions_parent_session_id
|
|
7
|
+
*/
|
|
8
|
+
export function migrate(db) {
|
|
9
|
+
const taskCols = db.prepare('PRAGMA table_info(tasks)').all().map((c) => c.name);
|
|
10
|
+
if (!taskCols.includes('parent_task_id')) {
|
|
11
|
+
db.exec('ALTER TABLE tasks ADD COLUMN parent_task_id TEXT REFERENCES tasks(id)');
|
|
12
|
+
}
|
|
13
|
+
if (!taskCols.includes('depth')) {
|
|
14
|
+
db.exec('ALTER TABLE tasks ADD COLUMN depth INTEGER DEFAULT 0');
|
|
15
|
+
}
|
|
16
|
+
const sessionCols = db.prepare('PRAGMA table_info(agent_sessions)').all().map((c) => c.name);
|
|
17
|
+
if (!sessionCols.includes('fun_name')) {
|
|
18
|
+
db.exec('ALTER TABLE agent_sessions ADD COLUMN fun_name TEXT');
|
|
19
|
+
}
|
|
20
|
+
if (!sessionCols.includes('fun_tagline')) {
|
|
21
|
+
db.exec('ALTER TABLE agent_sessions ADD COLUMN fun_tagline TEXT');
|
|
22
|
+
}
|
|
23
|
+
if (!sessionCols.includes('persona_name')) {
|
|
24
|
+
db.exec('ALTER TABLE agent_sessions ADD COLUMN persona_name TEXT');
|
|
25
|
+
}
|
|
26
|
+
if (!sessionCols.includes('parent_session_id')) {
|
|
27
|
+
db.exec('ALTER TABLE agent_sessions ADD COLUMN parent_session_id TEXT REFERENCES agent_sessions(id)');
|
|
28
|
+
}
|
|
29
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_tasks_parent_task_id ON tasks(parent_task_id)');
|
|
30
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_agent_sessions_parent_session_id ON agent_sessions(parent_session_id)');
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=001-personas-subtasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"001-personas-subtasks.js","sourceRoot":"","sources":["../../../../src/db/migrations/001-personas-subtasks.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,EAAqB;IAC3C,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAAyB,CAAC,GAAG,CACvF,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CACd,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzC,EAAE,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,EAAE,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,WAAW,GACf,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EACpD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAErB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,EAAE,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACzC,EAAE,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1C,EAAE,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC/C,EAAE,CAAC,IAAI,CACL,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IAED,EAAE,CAAC,IAAI,CACL,8EAA8E,CAC/E,CAAC;IACF,EAAE,CAAC,IAAI,CACL,sGAAsG,CACvG,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
/**
|
|
3
|
+
* Migration 002: Add RBAC tables
|
|
4
|
+
*
|
|
5
|
+
* team_members: human_id, role (owner/lead/developer/viewer)
|
|
6
|
+
* role_change_log: audit trail for role changes
|
|
7
|
+
*/
|
|
8
|
+
export declare function migrate(db: Database.Database): void;
|
|
9
|
+
//# sourceMappingURL=002-rbac.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"002-rbac.d.ts","sourceRoot":"","sources":["../../../../src/db/migrations/002-rbac.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CA0BnD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 002: Add RBAC tables
|
|
3
|
+
*
|
|
4
|
+
* team_members: human_id, role (owner/lead/developer/viewer)
|
|
5
|
+
* role_change_log: audit trail for role changes
|
|
6
|
+
*/
|
|
7
|
+
export function migrate(db) {
|
|
8
|
+
db.exec(`
|
|
9
|
+
CREATE TABLE IF NOT EXISTS team_members (
|
|
10
|
+
human_id TEXT PRIMARY KEY,
|
|
11
|
+
role TEXT NOT NULL DEFAULT 'viewer' CHECK(role IN ('owner','lead','developer','viewer')),
|
|
12
|
+
created_at TEXT NOT NULL,
|
|
13
|
+
updated_at TEXT NOT NULL
|
|
14
|
+
)
|
|
15
|
+
`);
|
|
16
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_team_members_role ON team_members(role)`);
|
|
17
|
+
db.exec(`
|
|
18
|
+
CREATE TABLE IF NOT EXISTS role_change_log (
|
|
19
|
+
id TEXT PRIMARY KEY,
|
|
20
|
+
target_human_id TEXT NOT NULL,
|
|
21
|
+
changed_by TEXT NOT NULL,
|
|
22
|
+
old_role TEXT CHECK(old_role IS NULL OR old_role IN ('owner','lead','developer','viewer')),
|
|
23
|
+
new_role TEXT NOT NULL CHECK(new_role IN ('owner','lead','developer','viewer')),
|
|
24
|
+
reason TEXT,
|
|
25
|
+
created_at TEXT NOT NULL
|
|
26
|
+
)
|
|
27
|
+
`);
|
|
28
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_role_change_log_target ON role_change_log(target_human_id)`);
|
|
29
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_role_change_log_created_at ON role_change_log(created_at)`);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=002-rbac.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"002-rbac.js","sourceRoot":"","sources":["../../../../src/db/migrations/002-rbac.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,EAAqB;IAC3C,EAAE,CAAC,IAAI,CAAC;;;;;;;GAOP,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IAElF,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;GAUP,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;IACrG,EAAE,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;AACtG,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
/**
|
|
3
|
+
* Migration 003: Add provider column to agent_sessions
|
|
4
|
+
*
|
|
5
|
+
* agent_sessions: provider (default 'claude') — safe add for existing databases
|
|
6
|
+
*/
|
|
7
|
+
export declare function migrate(db: Database.Database): void;
|
|
8
|
+
//# sourceMappingURL=003-provider-column.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"003-provider-column.d.ts","sourceRoot":"","sources":["../../../../src/db/migrations/003-provider-column.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAQnD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 003: Add provider column to agent_sessions
|
|
3
|
+
*
|
|
4
|
+
* agent_sessions: provider (default 'claude') — safe add for existing databases
|
|
5
|
+
*/
|
|
6
|
+
export function migrate(db) {
|
|
7
|
+
const sessionCols = db.prepare('PRAGMA table_info(agent_sessions)').all().map((c) => c.name);
|
|
8
|
+
if (!sessionCols.includes('provider')) {
|
|
9
|
+
db.exec("ALTER TABLE agent_sessions ADD COLUMN provider TEXT DEFAULT 'claude'");
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=003-provider-column.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"003-provider-column.js","sourceRoot":"","sources":["../../../../src/db/migrations/003-provider-column.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,EAAqB;IAC3C,MAAM,WAAW,GACf,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EACpD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAErB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,EAAE,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IAClF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
/**
|
|
3
|
+
* Migration 004: Add task_cost_ledger table for pipeline cost tracking
|
|
4
|
+
*
|
|
5
|
+
* task_cost_ledger: append-only record of token usage and USD cost per pipeline run
|
|
6
|
+
*/
|
|
7
|
+
export declare function migrate(db: Database.Database): void;
|
|
8
|
+
//# sourceMappingURL=004-pipeline-cost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"004-pipeline-cost.d.ts","sourceRoot":"","sources":["../../../../src/db/migrations/004-pipeline-cost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAqBnD"}
|