saasgadget 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/LICENSE.md +21 -0
- package/README.md +48 -0
- package/dist/agents/business-analyst.d.ts +14 -0
- package/dist/agents/business-analyst.d.ts.map +1 -0
- package/dist/agents/business-analyst.js +70 -0
- package/dist/agents/business-analyst.js.map +1 -0
- package/dist/agents/code-inspector.d.ts +19 -0
- package/dist/agents/code-inspector.d.ts.map +1 -0
- package/dist/agents/code-inspector.js +149 -0
- package/dist/agents/code-inspector.js.map +1 -0
- package/dist/agents/competitor-tracker.d.ts +19 -0
- package/dist/agents/competitor-tracker.d.ts.map +1 -0
- package/dist/agents/competitor-tracker.js +190 -0
- package/dist/agents/competitor-tracker.js.map +1 -0
- package/dist/agents/finance-auditor.d.ts +14 -0
- package/dist/agents/finance-auditor.d.ts.map +1 -0
- package/dist/agents/finance-auditor.js +73 -0
- package/dist/agents/finance-auditor.js.map +1 -0
- package/dist/agents/gtm-strategist.d.ts +14 -0
- package/dist/agents/gtm-strategist.d.ts.map +1 -0
- package/dist/agents/gtm-strategist.js +73 -0
- package/dist/agents/gtm-strategist.js.map +1 -0
- package/dist/agents/orchestrator.d.ts +52 -0
- package/dist/agents/orchestrator.d.ts.map +1 -0
- package/dist/agents/orchestrator.js +174 -0
- package/dist/agents/orchestrator.js.map +1 -0
- package/dist/agents/sdk-client.d.ts +48 -0
- package/dist/agents/sdk-client.d.ts.map +1 -0
- package/dist/agents/sdk-client.js +119 -0
- package/dist/agents/sdk-client.js.map +1 -0
- package/dist/agents/security-compliance.d.ts +14 -0
- package/dist/agents/security-compliance.d.ts.map +1 -0
- package/dist/agents/security-compliance.js +87 -0
- package/dist/agents/security-compliance.js.map +1 -0
- package/dist/agents/skeptic-reviewer.d.ts +14 -0
- package/dist/agents/skeptic-reviewer.d.ts.map +1 -0
- package/dist/agents/skeptic-reviewer.js +65 -0
- package/dist/agents/skeptic-reviewer.js.map +1 -0
- package/dist/agents/skills-directory.d.ts +36 -0
- package/dist/agents/skills-directory.d.ts.map +1 -0
- package/dist/agents/skills-directory.js +108 -0
- package/dist/agents/skills-directory.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +8 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +90 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +10 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +240 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/fix.d.ts +4 -0
- package/dist/cli/commands/fix.d.ts.map +1 -0
- package/dist/cli/commands/fix.js +344 -0
- package/dist/cli/commands/fix.js.map +1 -0
- package/dist/cli/commands/init.d.ts +8 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +109 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +4 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +441 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/new.d.ts +4 -0
- package/dist/cli/commands/new.d.ts.map +1 -0
- package/dist/cli/commands/new.js +193 -0
- package/dist/cli/commands/new.js.map +1 -0
- package/dist/cli/commands/pack.d.ts +4 -0
- package/dist/cli/commands/pack.d.ts.map +1 -0
- package/dist/cli/commands/pack.js +312 -0
- package/dist/cli/commands/pack.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +4 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +250 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/research.d.ts +7 -0
- package/dist/cli/commands/research.d.ts.map +1 -0
- package/dist/cli/commands/research.js +331 -0
- package/dist/cli/commands/research.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +4 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +434 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/session.d.ts +4 -0
- package/dist/cli/commands/session.d.ts.map +1 -0
- package/dist/cli/commands/session.js +343 -0
- package/dist/cli/commands/session.js.map +1 -0
- package/dist/cli/commands/settings.d.ts +8 -0
- package/dist/cli/commands/settings.d.ts.map +1 -0
- package/dist/cli/commands/settings.js +302 -0
- package/dist/cli/commands/settings.js.map +1 -0
- package/dist/cli/commands/start.d.ts +10 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +185 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/types.d.ts +15 -0
- package/dist/cli/commands/types.d.ts.map +1 -0
- package/dist/cli/commands/types.js +2 -0
- package/dist/cli/commands/types.js.map +1 -0
- package/dist/cli/flag-resolver.d.ts +17 -0
- package/dist/cli/flag-resolver.d.ts.map +1 -0
- package/dist/cli/flag-resolver.js +57 -0
- package/dist/cli/flag-resolver.js.map +1 -0
- package/dist/cli/output/formatter.d.ts +22 -0
- package/dist/cli/output/formatter.d.ts.map +1 -0
- package/dist/cli/output/formatter.js +40 -0
- package/dist/cli/output/formatter.js.map +1 -0
- package/dist/cli/output/hints.d.ts +7 -0
- package/dist/cli/output/hints.d.ts.map +1 -0
- package/dist/cli/output/hints.js +27 -0
- package/dist/cli/output/hints.js.map +1 -0
- package/dist/cli/output/json-writer.d.ts +7 -0
- package/dist/cli/output/json-writer.d.ts.map +1 -0
- package/dist/cli/output/json-writer.js +19 -0
- package/dist/cli/output/json-writer.js.map +1 -0
- package/dist/cli/output/markdown-writer.d.ts +7 -0
- package/dist/cli/output/markdown-writer.d.ts.map +1 -0
- package/dist/cli/output/markdown-writer.js +75 -0
- package/dist/cli/output/markdown-writer.js.map +1 -0
- package/dist/cli/tui/banner.d.ts +2 -0
- package/dist/cli/tui/banner.d.ts.map +1 -0
- package/dist/cli/tui/banner.js +46 -0
- package/dist/cli/tui/banner.js.map +1 -0
- package/dist/cli/tui/colors.d.ts +22 -0
- package/dist/cli/tui/colors.d.ts.map +1 -0
- package/dist/cli/tui/colors.js +79 -0
- package/dist/cli/tui/colors.js.map +1 -0
- package/dist/cli/tui/dashboard.d.ts +20 -0
- package/dist/cli/tui/dashboard.d.ts.map +1 -0
- package/dist/cli/tui/dashboard.js +140 -0
- package/dist/cli/tui/dashboard.js.map +1 -0
- package/dist/cli/tui/prompt.d.ts +55 -0
- package/dist/cli/tui/prompt.d.ts.map +1 -0
- package/dist/cli/tui/prompt.js +193 -0
- package/dist/cli/tui/prompt.js.map +1 -0
- package/dist/cli/tui/slash-commands.d.ts +43 -0
- package/dist/cli/tui/slash-commands.d.ts.map +1 -0
- package/dist/cli/tui/slash-commands.js +439 -0
- package/dist/cli/tui/slash-commands.js.map +1 -0
- package/dist/config/config-store.d.ts +27 -0
- package/dist/config/config-store.d.ts.map +1 -0
- package/dist/config/config-store.js +125 -0
- package/dist/config/config-store.js.map +1 -0
- package/dist/config/presets.d.ts +15 -0
- package/dist/config/presets.d.ts.map +1 -0
- package/dist/config/presets.js +91 -0
- package/dist/config/presets.js.map +1 -0
- package/dist/config/tool-profiles.d.ts +29 -0
- package/dist/config/tool-profiles.d.ts.map +1 -0
- package/dist/config/tool-profiles.js +56 -0
- package/dist/config/tool-profiles.js.map +1 -0
- package/dist/contracts/agent-invoker.d.ts +9 -0
- package/dist/contracts/agent-invoker.d.ts.map +1 -0
- package/dist/contracts/agent-invoker.js +2 -0
- package/dist/contracts/agent-invoker.js.map +1 -0
- package/dist/contracts/agent.d.ts +36 -0
- package/dist/contracts/agent.d.ts.map +1 -0
- package/dist/contracts/agent.js +2 -0
- package/dist/contracts/agent.js.map +1 -0
- package/dist/contracts/config-store.d.ts +13 -0
- package/dist/contracts/config-store.d.ts.map +1 -0
- package/dist/contracts/config-store.js +2 -0
- package/dist/contracts/config-store.js.map +1 -0
- package/dist/contracts/crawler.d.ts +17 -0
- package/dist/contracts/crawler.d.ts.map +1 -0
- package/dist/contracts/crawler.js +2 -0
- package/dist/contracts/crawler.js.map +1 -0
- package/dist/contracts/exporter.d.ts +18 -0
- package/dist/contracts/exporter.d.ts.map +1 -0
- package/dist/contracts/exporter.js +11 -0
- package/dist/contracts/exporter.js.map +1 -0
- package/dist/contracts/index.d.ts +14 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +2 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/mcp-tool-provider.d.ts +18 -0
- package/dist/contracts/mcp-tool-provider.d.ts.map +1 -0
- package/dist/contracts/mcp-tool-provider.js +2 -0
- package/dist/contracts/mcp-tool-provider.js.map +1 -0
- package/dist/contracts/report-pack-generator.d.ts +20 -0
- package/dist/contracts/report-pack-generator.d.ts.map +1 -0
- package/dist/contracts/report-pack-generator.js +2 -0
- package/dist/contracts/report-pack-generator.js.map +1 -0
- package/dist/contracts/search-provider.d.ts +15 -0
- package/dist/contracts/search-provider.d.ts.map +1 -0
- package/dist/contracts/search-provider.js +2 -0
- package/dist/contracts/search-provider.js.map +1 -0
- package/dist/contracts/session-manager.d.ts +36 -0
- package/dist/contracts/session-manager.d.ts.map +1 -0
- package/dist/contracts/session-manager.js +2 -0
- package/dist/contracts/session-manager.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +299 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/ai/provider-factory.d.ts +64 -0
- package/dist/lib/ai/provider-factory.d.ts.map +1 -0
- package/dist/lib/ai/provider-factory.js +249 -0
- package/dist/lib/ai/provider-factory.js.map +1 -0
- package/dist/lib/audit-logger.d.ts +10 -0
- package/dist/lib/audit-logger.d.ts.map +1 -0
- package/dist/lib/audit-logger.js +101 -0
- package/dist/lib/audit-logger.js.map +1 -0
- package/dist/lib/auth.d.ts +39 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +219 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/competitor-scheduler.d.ts +73 -0
- package/dist/lib/competitor-scheduler.d.ts.map +1 -0
- package/dist/lib/competitor-scheduler.js +235 -0
- package/dist/lib/competitor-scheduler.js.map +1 -0
- package/dist/lib/crawler.d.ts +17 -0
- package/dist/lib/crawler.d.ts.map +1 -0
- package/dist/lib/crawler.js +168 -0
- package/dist/lib/crawler.js.map +1 -0
- package/dist/lib/errors.d.ts +34 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +63 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/exporter.d.ts +9 -0
- package/dist/lib/exporter.d.ts.map +1 -0
- package/dist/lib/exporter.js +100 -0
- package/dist/lib/exporter.js.map +1 -0
- package/dist/lib/html-cleaner.d.ts +19 -0
- package/dist/lib/html-cleaner.d.ts.map +1 -0
- package/dist/lib/html-cleaner.js +144 -0
- package/dist/lib/html-cleaner.js.map +1 -0
- package/dist/lib/http.d.ts +18 -0
- package/dist/lib/http.d.ts.map +1 -0
- package/dist/lib/http.js +83 -0
- package/dist/lib/http.js.map +1 -0
- package/dist/lib/lockfile.d.ts +10 -0
- package/dist/lib/lockfile.d.ts.map +1 -0
- package/dist/lib/lockfile.js +56 -0
- package/dist/lib/lockfile.js.map +1 -0
- package/dist/lib/mcp-registry.d.ts +47 -0
- package/dist/lib/mcp-registry.d.ts.map +1 -0
- package/dist/lib/mcp-registry.js +212 -0
- package/dist/lib/mcp-registry.js.map +1 -0
- package/dist/lib/profile-resolver.d.ts +28 -0
- package/dist/lib/profile-resolver.d.ts.map +1 -0
- package/dist/lib/profile-resolver.js +72 -0
- package/dist/lib/profile-resolver.js.map +1 -0
- package/dist/lib/profile-store.d.ts +14 -0
- package/dist/lib/profile-store.d.ts.map +1 -0
- package/dist/lib/profile-store.js +80 -0
- package/dist/lib/profile-store.js.map +1 -0
- package/dist/lib/rate-limiter.d.ts +32 -0
- package/dist/lib/rate-limiter.d.ts.map +1 -0
- package/dist/lib/rate-limiter.js +124 -0
- package/dist/lib/rate-limiter.js.map +1 -0
- package/dist/lib/sandbox.d.ts +25 -0
- package/dist/lib/sandbox.d.ts.map +1 -0
- package/dist/lib/sandbox.js +134 -0
- package/dist/lib/sandbox.js.map +1 -0
- package/dist/lib/search.d.ts +22 -0
- package/dist/lib/search.d.ts.map +1 -0
- package/dist/lib/search.js +147 -0
- package/dist/lib/search.js.map +1 -0
- package/dist/lib/secret-scanner.d.ts +26 -0
- package/dist/lib/secret-scanner.d.ts.map +1 -0
- package/dist/lib/secret-scanner.js +74 -0
- package/dist/lib/secret-scanner.js.map +1 -0
- package/dist/lib/url.d.ts +17 -0
- package/dist/lib/url.d.ts.map +1 -0
- package/dist/lib/url.js +51 -0
- package/dist/lib/url.js.map +1 -0
- package/dist/mcp/progressive-discovery.d.ts +21 -0
- package/dist/mcp/progressive-discovery.d.ts.map +1 -0
- package/dist/mcp/progressive-discovery.js +86 -0
- package/dist/mcp/progressive-discovery.js.map +1 -0
- package/dist/mcp/ptc-executor.d.ts +92 -0
- package/dist/mcp/ptc-executor.d.ts.map +1 -0
- package/dist/mcp/ptc-executor.js +199 -0
- package/dist/mcp/ptc-executor.js.map +1 -0
- package/dist/mcp/server.d.ts +29 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +299 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tool-codegen.d.ts +33 -0
- package/dist/mcp/tool-codegen.d.ts.map +1 -0
- package/dist/mcp/tool-codegen.js +129 -0
- package/dist/mcp/tool-codegen.js.map +1 -0
- package/dist/mcp/tool-examples.d.ts +22 -0
- package/dist/mcp/tool-examples.d.ts.map +1 -0
- package/dist/mcp/tool-examples.js +117 -0
- package/dist/mcp/tool-examples.js.map +1 -0
- package/dist/mcp/tools/classify-signals.d.ts +67 -0
- package/dist/mcp/tools/classify-signals.d.ts.map +1 -0
- package/dist/mcp/tools/classify-signals.js +124 -0
- package/dist/mcp/tools/classify-signals.js.map +1 -0
- package/dist/mcp/tools/compute-risk-score.d.ts +97 -0
- package/dist/mcp/tools/compute-risk-score.d.ts.map +1 -0
- package/dist/mcp/tools/compute-risk-score.js +171 -0
- package/dist/mcp/tools/compute-risk-score.js.map +1 -0
- package/dist/mcp/tools/generate-plan.d.ts +99 -0
- package/dist/mcp/tools/generate-plan.d.ts.map +1 -0
- package/dist/mcp/tools/generate-plan.js +200 -0
- package/dist/mcp/tools/generate-plan.js.map +1 -0
- package/dist/mcp/tools/generate-report-pack.d.ts +119 -0
- package/dist/mcp/tools/generate-report-pack.d.ts.map +1 -0
- package/dist/mcp/tools/generate-report-pack.js +304 -0
- package/dist/mcp/tools/generate-report-pack.js.map +1 -0
- package/dist/mcp/tools/run-skeptic-review.d.ts +33 -0
- package/dist/mcp/tools/run-skeptic-review.d.ts.map +1 -0
- package/dist/mcp/tools/run-skeptic-review.js +157 -0
- package/dist/mcp/tools/run-skeptic-review.js.map +1 -0
- package/dist/mcp/tools/scan-saas-repo.d.ts +103 -0
- package/dist/mcp/tools/scan-saas-repo.d.ts.map +1 -0
- package/dist/mcp/tools/scan-saas-repo.js +421 -0
- package/dist/mcp/tools/scan-saas-repo.js.map +1 -0
- package/dist/mcp/tools/scrape-competitor.d.ts +38 -0
- package/dist/mcp/tools/scrape-competitor.d.ts.map +1 -0
- package/dist/mcp/tools/scrape-competitor.js +124 -0
- package/dist/mcp/tools/scrape-competitor.js.map +1 -0
- package/dist/mcp/tools/search-tools.d.ts +37 -0
- package/dist/mcp/tools/search-tools.d.ts.map +1 -0
- package/dist/mcp/tools/search-tools.js +109 -0
- package/dist/mcp/tools/search-tools.js.map +1 -0
- package/dist/packs/business-viability.d.ts +30 -0
- package/dist/packs/business-viability.d.ts.map +1 -0
- package/dist/packs/business-viability.js +37 -0
- package/dist/packs/business-viability.js.map +1 -0
- package/dist/packs/competitor-intel.d.ts +34 -0
- package/dist/packs/competitor-intel.d.ts.map +1 -0
- package/dist/packs/competitor-intel.js +72 -0
- package/dist/packs/competitor-intel.js.map +1 -0
- package/dist/packs/financial-audit.d.ts +40 -0
- package/dist/packs/financial-audit.d.ts.map +1 -0
- package/dist/packs/financial-audit.js +74 -0
- package/dist/packs/financial-audit.js.map +1 -0
- package/dist/packs/pitch-deck.d.ts +38 -0
- package/dist/packs/pitch-deck.d.ts.map +1 -0
- package/dist/packs/pitch-deck.js +80 -0
- package/dist/packs/pitch-deck.js.map +1 -0
- package/dist/packs/smm-gtm.d.ts +38 -0
- package/dist/packs/smm-gtm.d.ts.map +1 -0
- package/dist/packs/smm-gtm.js +83 -0
- package/dist/packs/smm-gtm.js.map +1 -0
- package/dist/packs/tech-audit.d.ts +34 -0
- package/dist/packs/tech-audit.d.ts.map +1 -0
- package/dist/packs/tech-audit.js +43 -0
- package/dist/packs/tech-audit.js.map +1 -0
- package/dist/project-templates/build-proof.d.ts +24 -0
- package/dist/project-templates/build-proof.d.ts.map +1 -0
- package/dist/project-templates/build-proof.js +108 -0
- package/dist/project-templates/build-proof.js.map +1 -0
- package/dist/project-templates/quickstart-renderer.d.ts +16 -0
- package/dist/project-templates/quickstart-renderer.d.ts.map +1 -0
- package/dist/project-templates/quickstart-renderer.js +57 -0
- package/dist/project-templates/quickstart-renderer.js.map +1 -0
- package/dist/project-templates/registry.d.ts +68 -0
- package/dist/project-templates/registry.d.ts.map +1 -0
- package/dist/project-templates/registry.js +328 -0
- package/dist/project-templates/registry.js.map +1 -0
- package/dist/project-templates/templates.d.ts +3 -0
- package/dist/project-templates/templates.d.ts.map +1 -0
- package/dist/project-templates/templates.js +188 -0
- package/dist/project-templates/templates.js.map +1 -0
- package/dist/prompts/biz-viability.d.ts +10 -0
- package/dist/prompts/biz-viability.d.ts.map +1 -0
- package/dist/prompts/biz-viability.js +35 -0
- package/dist/prompts/biz-viability.js.map +1 -0
- package/dist/prompts/catalog.d.ts +16 -0
- package/dist/prompts/catalog.d.ts.map +1 -0
- package/dist/prompts/catalog.js +17 -0
- package/dist/prompts/catalog.js.map +1 -0
- package/dist/prompts/competitor-intel.d.ts +10 -0
- package/dist/prompts/competitor-intel.d.ts.map +1 -0
- package/dist/prompts/competitor-intel.js +37 -0
- package/dist/prompts/competitor-intel.js.map +1 -0
- package/dist/prompts/finance-audit.d.ts +10 -0
- package/dist/prompts/finance-audit.d.ts.map +1 -0
- package/dist/prompts/finance-audit.js +35 -0
- package/dist/prompts/finance-audit.js.map +1 -0
- package/dist/prompts/fix-sprint-plan.d.ts +10 -0
- package/dist/prompts/fix-sprint-plan.d.ts.map +1 -0
- package/dist/prompts/fix-sprint-plan.js +45 -0
- package/dist/prompts/fix-sprint-plan.js.map +1 -0
- package/dist/prompts/gtm-smm.d.ts +10 -0
- package/dist/prompts/gtm-smm.d.ts.map +1 -0
- package/dist/prompts/gtm-smm.js +35 -0
- package/dist/prompts/gtm-smm.js.map +1 -0
- package/dist/prompts/orchestrator-dispatch.d.ts +40 -0
- package/dist/prompts/orchestrator-dispatch.d.ts.map +1 -0
- package/dist/prompts/orchestrator-dispatch.js +92 -0
- package/dist/prompts/orchestrator-dispatch.js.map +1 -0
- package/dist/prompts/pitch-deck.d.ts +10 -0
- package/dist/prompts/pitch-deck.d.ts.map +1 -0
- package/dist/prompts/pitch-deck.js +36 -0
- package/dist/prompts/pitch-deck.js.map +1 -0
- package/dist/prompts/prompt-template.d.ts +16 -0
- package/dist/prompts/prompt-template.d.ts.map +1 -0
- package/dist/prompts/prompt-template.js +22 -0
- package/dist/prompts/prompt-template.js.map +1 -0
- package/dist/prompts/repo-audit-deep.d.ts +10 -0
- package/dist/prompts/repo-audit-deep.d.ts.map +1 -0
- package/dist/prompts/repo-audit-deep.js +39 -0
- package/dist/prompts/repo-audit-deep.js.map +1 -0
- package/dist/prompts/repo-scan-quick.d.ts +35 -0
- package/dist/prompts/repo-scan-quick.d.ts.map +1 -0
- package/dist/prompts/repo-scan-quick.js +69 -0
- package/dist/prompts/repo-scan-quick.js.map +1 -0
- package/dist/prompts/skeptic-review.d.ts +10 -0
- package/dist/prompts/skeptic-review.d.ts.map +1 -0
- package/dist/prompts/skeptic-review.js +40 -0
- package/dist/prompts/skeptic-review.js.map +1 -0
- package/dist/schemas/agent-step-sequence.d.ts +41 -0
- package/dist/schemas/agent-step-sequence.d.ts.map +1 -0
- package/dist/schemas/agent-step-sequence.js +25 -0
- package/dist/schemas/agent-step-sequence.js.map +1 -0
- package/dist/schemas/artifact-envelope.v1.d.ts +69 -0
- package/dist/schemas/artifact-envelope.v1.d.ts.map +1 -0
- package/dist/schemas/artifact-envelope.v1.js +24 -0
- package/dist/schemas/artifact-envelope.v1.js.map +1 -0
- package/dist/schemas/business-viability.v1.d.ts +223 -0
- package/dist/schemas/business-viability.v1.d.ts.map +1 -0
- package/dist/schemas/business-viability.v1.js +47 -0
- package/dist/schemas/business-viability.v1.js.map +1 -0
- package/dist/schemas/common.d.ts +9 -0
- package/dist/schemas/common.d.ts.map +1 -0
- package/dist/schemas/common.js +8 -0
- package/dist/schemas/common.js.map +1 -0
- package/dist/schemas/competitor-intel.v1.d.ts +239 -0
- package/dist/schemas/competitor-intel.v1.d.ts.map +1 -0
- package/dist/schemas/competitor-intel.v1.js +59 -0
- package/dist/schemas/competitor-intel.v1.js.map +1 -0
- package/dist/schemas/config.d.ts +133 -0
- package/dist/schemas/config.d.ts.map +1 -0
- package/dist/schemas/config.js +142 -0
- package/dist/schemas/config.js.map +1 -0
- package/dist/schemas/financial-audit.v1.d.ts +139 -0
- package/dist/schemas/financial-audit.v1.d.ts.map +1 -0
- package/dist/schemas/financial-audit.v1.js +50 -0
- package/dist/schemas/financial-audit.v1.js.map +1 -0
- package/dist/schemas/fix-result.v1.d.ts +104 -0
- package/dist/schemas/fix-result.v1.d.ts.map +1 -0
- package/dist/schemas/fix-result.v1.js +41 -0
- package/dist/schemas/fix-result.v1.js.map +1 -0
- package/dist/schemas/founder-profile.d.ts +76 -0
- package/dist/schemas/founder-profile.d.ts.map +1 -0
- package/dist/schemas/founder-profile.js +54 -0
- package/dist/schemas/founder-profile.js.map +1 -0
- package/dist/schemas/investor-readiness.v1.d.ts +20 -0
- package/dist/schemas/investor-readiness.v1.d.ts.map +1 -0
- package/dist/schemas/investor-readiness.v1.js +15 -0
- package/dist/schemas/investor-readiness.v1.js.map +1 -0
- package/dist/schemas/mcp-server-entry.d.ts +37 -0
- package/dist/schemas/mcp-server-entry.d.ts.map +1 -0
- package/dist/schemas/mcp-server-entry.js +23 -0
- package/dist/schemas/mcp-server-entry.js.map +1 -0
- package/dist/schemas/pitch-deck.v1.d.ts +141 -0
- package/dist/schemas/pitch-deck.v1.d.ts.map +1 -0
- package/dist/schemas/pitch-deck.v1.js +57 -0
- package/dist/schemas/pitch-deck.v1.js.map +1 -0
- package/dist/schemas/plan.v1.d.ts +97 -0
- package/dist/schemas/plan.v1.d.ts.map +1 -0
- package/dist/schemas/plan.v1.js +41 -0
- package/dist/schemas/plan.v1.js.map +1 -0
- package/dist/schemas/project-template.d.ts +101 -0
- package/dist/schemas/project-template.d.ts.map +1 -0
- package/dist/schemas/project-template.js +59 -0
- package/dist/schemas/project-template.js.map +1 -0
- package/dist/schemas/research-result.v1.d.ts +45 -0
- package/dist/schemas/research-result.v1.d.ts.map +1 -0
- package/dist/schemas/research-result.v1.js +20 -0
- package/dist/schemas/research-result.v1.js.map +1 -0
- package/dist/schemas/roadmap.v1.d.ts +49 -0
- package/dist/schemas/roadmap.v1.d.ts.map +1 -0
- package/dist/schemas/roadmap.v1.js +22 -0
- package/dist/schemas/roadmap.v1.js.map +1 -0
- package/dist/schemas/scan-result.v1.d.ts +87 -0
- package/dist/schemas/scan-result.v1.d.ts.map +1 -0
- package/dist/schemas/scan-result.v1.js +22 -0
- package/dist/schemas/scan-result.v1.js.map +1 -0
- package/dist/schemas/session.d.ts +165 -0
- package/dist/schemas/session.d.ts.map +1 -0
- package/dist/schemas/session.js +70 -0
- package/dist/schemas/session.js.map +1 -0
- package/dist/schemas/smm-gtm.v1.d.ts +175 -0
- package/dist/schemas/smm-gtm.v1.d.ts.map +1 -0
- package/dist/schemas/smm-gtm.v1.js +60 -0
- package/dist/schemas/smm-gtm.v1.js.map +1 -0
- package/dist/schemas/tech-audit.v1.d.ts +254 -0
- package/dist/schemas/tech-audit.v1.d.ts.map +1 -0
- package/dist/schemas/tech-audit.v1.js +61 -0
- package/dist/schemas/tech-audit.v1.js.map +1 -0
- package/dist/session/agent-session.d.ts +20 -0
- package/dist/session/agent-session.d.ts.map +1 -0
- package/dist/session/agent-session.js +53 -0
- package/dist/session/agent-session.js.map +1 -0
- package/dist/session/compaction/memory-pointers.d.ts +17 -0
- package/dist/session/compaction/memory-pointers.d.ts.map +1 -0
- package/dist/session/compaction/memory-pointers.js +46 -0
- package/dist/session/compaction/memory-pointers.js.map +1 -0
- package/dist/session/compaction/selective-retention.d.ts +19 -0
- package/dist/session/compaction/selective-retention.d.ts.map +1 -0
- package/dist/session/compaction/selective-retention.js +36 -0
- package/dist/session/compaction/selective-retention.js.map +1 -0
- package/dist/session/compaction/trajectory-summarizer.d.ts +22 -0
- package/dist/session/compaction/trajectory-summarizer.d.ts.map +1 -0
- package/dist/session/compaction/trajectory-summarizer.js +34 -0
- package/dist/session/compaction/trajectory-summarizer.js.map +1 -0
- package/dist/session/sdk-hooks.d.ts +31 -0
- package/dist/session/sdk-hooks.d.ts.map +1 -0
- package/dist/session/sdk-hooks.js +56 -0
- package/dist/session/sdk-hooks.js.map +1 -0
- package/dist/session/session-manager.d.ts +42 -0
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +236 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/session/token-tracker.d.ts +31 -0
- package/dist/session/token-tracker.d.ts.map +1 -0
- package/dist/session/token-tracker.js +66 -0
- package/dist/session/token-tracker.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { ConfigStore } from '../../config/config-store.js';
|
|
2
|
+
import { getPreset, listPresets } from '../../config/presets.js';
|
|
3
|
+
import { loadProfile, updateProfileField, upsertScenario, removeScenario, listScenarios, } from '../../lib/profile-store.js';
|
|
4
|
+
import { colorize, bold } from '../tui/colors.js';
|
|
5
|
+
import { ConfigError } from '../../lib/errors.js';
|
|
6
|
+
function printHelp() {
|
|
7
|
+
console.log(`Usage: saasgadget settings [<key> <value>]
|
|
8
|
+
saasgadget settings profile <preset-name>
|
|
9
|
+
saasgadget settings yolo on|off
|
|
10
|
+
saasgadget settings yolo persist
|
|
11
|
+
saasgadget settings mcp.transport stdio|streamable-http
|
|
12
|
+
saasgadget settings context-profile [<key> <value>]
|
|
13
|
+
saasgadget settings context-profile scenario <name> [--set <key>=<value>...]
|
|
14
|
+
saasgadget settings context-profile scenario list
|
|
15
|
+
saasgadget settings context-profile scenario remove <name>
|
|
16
|
+
|
|
17
|
+
When called with no arguments, displays all current settings.
|
|
18
|
+
When called with <key>, displays that setting's value.
|
|
19
|
+
When called with <key> <value>, sets the value.
|
|
20
|
+
|
|
21
|
+
Subcommands:
|
|
22
|
+
profile <preset-name> Apply a preset (founder-safe | power-user | audit-max)
|
|
23
|
+
yolo on|off Toggle YOLO mode (skip approvals for current session)
|
|
24
|
+
yolo persist Persist YOLO mode to config file
|
|
25
|
+
context-profile View current Founder Context Profile
|
|
26
|
+
context-profile <key> <value> Set a profile field
|
|
27
|
+
context-profile scenario Manage scenarios (create/switch, list, remove)
|
|
28
|
+
|
|
29
|
+
Options:
|
|
30
|
+
-h, --help Show this help message
|
|
31
|
+
`);
|
|
32
|
+
}
|
|
33
|
+
export const USAGE = `
|
|
34
|
+
Usage: saasgadget settings [<key> <value>]
|
|
35
|
+
saasgadget settings profile <preset-name>
|
|
36
|
+
saasgadget settings yolo on|off
|
|
37
|
+
saasgadget settings yolo persist
|
|
38
|
+
saasgadget settings mcp.transport stdio|streamable-http
|
|
39
|
+
saasgadget settings context-profile [<key> <value>]
|
|
40
|
+
|
|
41
|
+
Subcommands:
|
|
42
|
+
profile <preset> Apply a preset (founder-safe | power-user | audit-max)
|
|
43
|
+
yolo on|off Toggle YOLO mode for current session
|
|
44
|
+
yolo persist Persist YOLO mode to workspace config
|
|
45
|
+
context-profile View/set Founder Context Profile fields
|
|
46
|
+
|
|
47
|
+
Options:
|
|
48
|
+
-h, --help Show this help message
|
|
49
|
+
`;
|
|
50
|
+
export async function execute(args, flags) {
|
|
51
|
+
if (args.includes('--help') || args.includes('-h') || flags.help) {
|
|
52
|
+
printHelp();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const configStore = new ConfigStore();
|
|
56
|
+
const subcommand = args[0];
|
|
57
|
+
// No arguments — show all settings
|
|
58
|
+
if (!subcommand) {
|
|
59
|
+
await showAllSettings(configStore);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
// Subcommand routing
|
|
63
|
+
switch (subcommand) {
|
|
64
|
+
case 'profile':
|
|
65
|
+
await handleProfile(args.slice(1), configStore);
|
|
66
|
+
break;
|
|
67
|
+
case 'yolo':
|
|
68
|
+
await handleYolo(args.slice(1), configStore);
|
|
69
|
+
break;
|
|
70
|
+
case 'context-profile':
|
|
71
|
+
await handleContextProfile(args.slice(1));
|
|
72
|
+
break;
|
|
73
|
+
default:
|
|
74
|
+
// settings <key> or settings <key> <value>
|
|
75
|
+
if (args.length === 1) {
|
|
76
|
+
await showSetting(args[0] ?? '', configStore);
|
|
77
|
+
}
|
|
78
|
+
else if (args.length === 2) {
|
|
79
|
+
await setSetting(args[0] ?? '', args[1] ?? '', configStore);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
printHelp();
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async function showAllSettings(configStore) {
|
|
88
|
+
const config = await configStore.load();
|
|
89
|
+
console.log(bold(colorize('\n Current Settings\n', 'primary')));
|
|
90
|
+
console.log(JSON.stringify(config, null, 2));
|
|
91
|
+
console.log('');
|
|
92
|
+
}
|
|
93
|
+
async function showSetting(key, configStore) {
|
|
94
|
+
const value = await configStore.getByPath(key);
|
|
95
|
+
if (value === undefined) {
|
|
96
|
+
console.error(`Setting '${key}' not found.`);
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
if (typeof value === 'object' && value !== null) {
|
|
100
|
+
console.log(JSON.stringify(value, null, 2));
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
console.log(String(value));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async function setSetting(key, rawValue, configStore) {
|
|
107
|
+
// Parse value type
|
|
108
|
+
let value;
|
|
109
|
+
if (rawValue === 'true')
|
|
110
|
+
value = true;
|
|
111
|
+
else if (rawValue === 'false')
|
|
112
|
+
value = false;
|
|
113
|
+
else if (/^\d+$/.test(rawValue))
|
|
114
|
+
value = parseInt(rawValue, 10);
|
|
115
|
+
else if (/^\d+\.\d+$/.test(rawValue))
|
|
116
|
+
value = parseFloat(rawValue);
|
|
117
|
+
else
|
|
118
|
+
value = rawValue;
|
|
119
|
+
try {
|
|
120
|
+
await configStore.setByPath(key, value);
|
|
121
|
+
console.log(colorize('✓', 'success') + ` ${key} = ${JSON.stringify(value)}`);
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
if (err instanceof ConfigError) {
|
|
125
|
+
console.error(err.message);
|
|
126
|
+
if (err.remediation)
|
|
127
|
+
console.error(err.remediation);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
throw err;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
async function handleProfile(args, configStore) {
|
|
135
|
+
const presetName = args[0];
|
|
136
|
+
if (!presetName) {
|
|
137
|
+
const presets = listPresets();
|
|
138
|
+
console.log(bold(colorize('\n Available Presets\n', 'primary')));
|
|
139
|
+
for (const p of presets) {
|
|
140
|
+
console.log(` ${bold(p.displayName)} (${colorize(p.name, 'accent')})`);
|
|
141
|
+
console.log(` ${colorize(p.description, 'muted')}`);
|
|
142
|
+
}
|
|
143
|
+
console.log(`\n Usage: ${colorize('saasgadget settings profile <name>', 'accent')}\n`);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const preset = getPreset(presetName);
|
|
147
|
+
if (!preset) {
|
|
148
|
+
const available = listPresets()
|
|
149
|
+
.map((p) => p.name)
|
|
150
|
+
.join(', ');
|
|
151
|
+
console.error(`Unknown preset: ${presetName}\nAvailable: ${available}`);
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
await configStore.save(preset.config);
|
|
155
|
+
console.log(colorize('✓', 'success') + ` Applied ${bold(preset.displayName)} preset.`);
|
|
156
|
+
}
|
|
157
|
+
async function handleYolo(args, configStore) {
|
|
158
|
+
const action = args[0];
|
|
159
|
+
if (!action) {
|
|
160
|
+
const current = await configStore.getByPath('safety.approvalMode');
|
|
161
|
+
console.log(`YOLO mode: ${current === 'yolo' ? colorize('ON', 'warning') : colorize('OFF', 'success')}`);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
switch (action) {
|
|
165
|
+
case 'on':
|
|
166
|
+
await configStore.setByPath('safety.approvalMode', 'yolo');
|
|
167
|
+
console.log(colorize('⚠', 'warning') + ' YOLO mode ' + bold('ON') + ' — approvals skipped.');
|
|
168
|
+
break;
|
|
169
|
+
case 'off':
|
|
170
|
+
await configStore.setByPath('safety.approvalMode', 'guided');
|
|
171
|
+
console.log(colorize('✓', 'success') + ' YOLO mode ' + bold('OFF') + ' — guided approvals restored.');
|
|
172
|
+
break;
|
|
173
|
+
case 'persist':
|
|
174
|
+
await configStore.setByPath('safety.approvalMode', 'yolo');
|
|
175
|
+
console.log(colorize('⚠', 'warning') +
|
|
176
|
+
' YOLO mode persisted to config. All future sessions will skip approvals.');
|
|
177
|
+
break;
|
|
178
|
+
default:
|
|
179
|
+
console.error(`Usage: saasgadget settings yolo on|off|persist`);
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
async function handleContextProfile(args) {
|
|
184
|
+
const cwd = process.cwd();
|
|
185
|
+
const subcommand = args[0];
|
|
186
|
+
// No args — show current profile
|
|
187
|
+
if (!subcommand) {
|
|
188
|
+
const profile = await loadProfile(cwd);
|
|
189
|
+
if (!profile) {
|
|
190
|
+
console.log(colorize('No Founder Context Profile found.', 'muted'));
|
|
191
|
+
console.log(` Run ${colorize('saasgadget settings context-profile <key> <value>', 'accent')} to create one.`);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
console.log(bold(colorize('\n Founder Context Profile\n', 'primary')));
|
|
195
|
+
console.log(JSON.stringify(profile, null, 2));
|
|
196
|
+
console.log('');
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
// context-profile scenario ...
|
|
200
|
+
if (subcommand === 'scenario') {
|
|
201
|
+
await handleScenario(args.slice(1));
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
// context-profile <key> <value> — set a field
|
|
205
|
+
if (args.length >= 2) {
|
|
206
|
+
const key = args[0] ?? '';
|
|
207
|
+
const rawValue = args[1] ?? '';
|
|
208
|
+
let value;
|
|
209
|
+
if (rawValue === 'true')
|
|
210
|
+
value = true;
|
|
211
|
+
else if (rawValue === 'false')
|
|
212
|
+
value = false;
|
|
213
|
+
else if (/^\d+$/.test(rawValue))
|
|
214
|
+
value = parseInt(rawValue, 10);
|
|
215
|
+
else if (/^\d+\.\d+$/.test(rawValue))
|
|
216
|
+
value = parseFloat(rawValue);
|
|
217
|
+
else
|
|
218
|
+
value = rawValue;
|
|
219
|
+
await updateProfileField(cwd, key, value);
|
|
220
|
+
console.log(colorize('✓', 'success') + ` Profile ${key} = ${JSON.stringify(value)}`);
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
// Single key — show that field
|
|
224
|
+
const profile = await loadProfile(cwd);
|
|
225
|
+
if (!profile) {
|
|
226
|
+
console.error(`No profile found. Create one first with 'saasgadget settings context-profile <key> <value>'.`);
|
|
227
|
+
process.exit(1);
|
|
228
|
+
}
|
|
229
|
+
const keys = subcommand.split('.');
|
|
230
|
+
let current = profile;
|
|
231
|
+
for (const k of keys) {
|
|
232
|
+
if (current == null || typeof current !== 'object') {
|
|
233
|
+
console.error(`Profile field '${subcommand}' not found.`);
|
|
234
|
+
process.exit(1);
|
|
235
|
+
}
|
|
236
|
+
current = current[k];
|
|
237
|
+
}
|
|
238
|
+
if (typeof current === 'object' && current !== null) {
|
|
239
|
+
console.log(JSON.stringify(current, null, 2));
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
console.log(current === undefined ? '(not set)' : String(current));
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
async function handleScenario(args) {
|
|
246
|
+
const cwd = process.cwd();
|
|
247
|
+
const action = args[0];
|
|
248
|
+
if (!action) {
|
|
249
|
+
console.error('Usage: saasgadget settings context-profile scenario <name|list|remove>');
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
// context-profile scenario list
|
|
253
|
+
if (action === 'list') {
|
|
254
|
+
const scenarios = await listScenarios(cwd);
|
|
255
|
+
if (scenarios.length === 0) {
|
|
256
|
+
console.log(colorize('No scenarios defined.', 'muted'));
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
console.log(bold(colorize('\n Scenarios\n', 'primary')));
|
|
260
|
+
for (const entry of scenarios) {
|
|
261
|
+
const marker = entry.active ? colorize(' (active)', 'success') : '';
|
|
262
|
+
console.log(` • ${bold(entry.name)}${marker}`);
|
|
263
|
+
}
|
|
264
|
+
console.log('');
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
// context-profile scenario remove <name>
|
|
268
|
+
if (action === 'remove') {
|
|
269
|
+
const name = args[1];
|
|
270
|
+
if (!name) {
|
|
271
|
+
console.error('Usage: saasgadget settings context-profile scenario remove <name>');
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
await removeScenario(cwd, name);
|
|
275
|
+
console.log(colorize('✓', 'success') + ` Scenario '${name}' removed.`);
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
// context-profile scenario <name> [--set key=value ...]
|
|
279
|
+
const name = action;
|
|
280
|
+
const overrides = {};
|
|
281
|
+
for (let i = 1; i < args.length; i++) {
|
|
282
|
+
if (args[i] === '--set' && i + 1 < args.length) {
|
|
283
|
+
const pair = args[++i] ?? '';
|
|
284
|
+
const eqIdx = pair.indexOf('=');
|
|
285
|
+
if (eqIdx > 0) {
|
|
286
|
+
const key = pair.slice(0, eqIdx);
|
|
287
|
+
let rawValue = pair.slice(eqIdx + 1);
|
|
288
|
+
if (rawValue === 'true')
|
|
289
|
+
rawValue = true;
|
|
290
|
+
else if (rawValue === 'false')
|
|
291
|
+
rawValue = false;
|
|
292
|
+
else if (/^\d+$/.test(rawValue))
|
|
293
|
+
rawValue = parseInt(rawValue, 10);
|
|
294
|
+
overrides[key] = rawValue;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
await upsertScenario(cwd, name, Object.keys(overrides).length > 0 ? overrides : undefined);
|
|
299
|
+
console.log(colorize('✓', 'success') +
|
|
300
|
+
` Scenario '${bold(name)}' ${Object.keys(overrides).length > 0 ? 'created/updated' : 'activated'}.`);
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/cli/commands/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* start command — launch interactive TUI mode with chat-first interface.
|
|
3
|
+
* Creates session with taskType "interactive", displays branded banner,
|
|
4
|
+
* initializes prompt loop, and wires slash command router.
|
|
5
|
+
* @module cli/commands/start
|
|
6
|
+
*/
|
|
7
|
+
import type { CommandFlags } from './types.js';
|
|
8
|
+
export declare const USAGE = "\nUsage: saasgadget start\n\nLaunch interactive TUI mode with chat-first interface and slash command controls.\n\nThe TUI provides:\n - Dashboard with real-time token budget display\n - Slash command router: /scan, /pack, /plan, /fix, /research, /session\n - Context-aware hints after each command\n - Persistent session across commands\n\nGlobal flags still apply:\n --yolo Skip approval prompts for the session\n --quiet Suppress the banner\n --verbose Enable verbose logging\n";
|
|
9
|
+
export declare function execute(_args: string[], flags: CommandFlags): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=start.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAW/C,eAAO,MAAM,KAAK,sfAejB,CAAC;AAEF,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAyKjF"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { PromptLoop, parseInput } from '../tui/prompt.js';
|
|
2
|
+
import { SlashCommandRouter } from '../tui/slash-commands.js';
|
|
3
|
+
import { renderDashboard } from '../tui/dashboard.js';
|
|
4
|
+
import { SessionManager } from '../../session/session-manager.js';
|
|
5
|
+
import { TokenTracker } from '../../session/token-tracker.js';
|
|
6
|
+
import { ConfigStore } from '../../config/config-store.js';
|
|
7
|
+
import { SDKClient } from '../../agents/sdk-client.js';
|
|
8
|
+
import { TOOL_PROFILES } from '../../config/tool-profiles.js';
|
|
9
|
+
import { colorize, dim } from '../tui/colors.js';
|
|
10
|
+
export const USAGE = `
|
|
11
|
+
Usage: saasgadget start
|
|
12
|
+
|
|
13
|
+
Launch interactive TUI mode with chat-first interface and slash command controls.
|
|
14
|
+
|
|
15
|
+
The TUI provides:
|
|
16
|
+
- Dashboard with real-time token budget display
|
|
17
|
+
- Slash command router: /scan, /pack, /plan, /fix, /research, /session
|
|
18
|
+
- Context-aware hints after each command
|
|
19
|
+
- Persistent session across commands
|
|
20
|
+
|
|
21
|
+
Global flags still apply:
|
|
22
|
+
--yolo Skip approval prompts for the session
|
|
23
|
+
--quiet Suppress the banner
|
|
24
|
+
--verbose Enable verbose logging
|
|
25
|
+
`;
|
|
26
|
+
export async function execute(_args, flags) {
|
|
27
|
+
const configStore = new ConfigStore();
|
|
28
|
+
const config = await configStore.load();
|
|
29
|
+
// Create interactive session
|
|
30
|
+
const sessionManager = new SessionManager();
|
|
31
|
+
const session = await sessionManager.create({
|
|
32
|
+
userId: 'local',
|
|
33
|
+
taskType: 'interactive',
|
|
34
|
+
repo: process.cwd(),
|
|
35
|
+
ref: 'HEAD',
|
|
36
|
+
sourceMode: 'local',
|
|
37
|
+
approvalMode: flags.yolo ? 'yolo' : config.safety.approvalMode,
|
|
38
|
+
tokenBudget: config.toggles.budgetTokens,
|
|
39
|
+
toolProfile: 'dynamic',
|
|
40
|
+
});
|
|
41
|
+
const tokenTracker = new TokenTracker({
|
|
42
|
+
budget: config.toggles.budgetTokens,
|
|
43
|
+
warningThreshold: config.toggles.compactionWarningThreshold,
|
|
44
|
+
blockThreshold: config.toggles.compactionBlockThreshold,
|
|
45
|
+
});
|
|
46
|
+
// Session-scoped context overrides (not persisted to config.json)
|
|
47
|
+
const contextOverrides = { ...config.context };
|
|
48
|
+
let approvalMode = flags.yolo ? 'yolo' : config.safety.approvalMode;
|
|
49
|
+
const recentCommands = [];
|
|
50
|
+
const startTime = Date.now();
|
|
51
|
+
const signalCounts = null;
|
|
52
|
+
// Build slash command context
|
|
53
|
+
const getContext = () => ({
|
|
54
|
+
session,
|
|
55
|
+
tokenTracker,
|
|
56
|
+
contextOverrides,
|
|
57
|
+
approvalMode,
|
|
58
|
+
recentCommands,
|
|
59
|
+
});
|
|
60
|
+
// Wire slash command router
|
|
61
|
+
const router = new SlashCommandRouter();
|
|
62
|
+
// Register /dashboard (T063b)
|
|
63
|
+
router.register('dashboard', 'Toggle dashboard view', async () => {
|
|
64
|
+
loop.toggleView();
|
|
65
|
+
return '';
|
|
66
|
+
});
|
|
67
|
+
// Dashboard state
|
|
68
|
+
const dashboardState = {
|
|
69
|
+
getContext,
|
|
70
|
+
get signalCounts() { return signalCounts; },
|
|
71
|
+
configProfileName: config.theme ?? 'wxzrd-prime',
|
|
72
|
+
startTime,
|
|
73
|
+
};
|
|
74
|
+
// SDK client for natural language chat
|
|
75
|
+
let sdkClient = null;
|
|
76
|
+
// Build the prompt loop
|
|
77
|
+
const loop = new PromptLoop({
|
|
78
|
+
onInput: async (input) => {
|
|
79
|
+
const parsed = parseInput(input);
|
|
80
|
+
const ts = Date.now();
|
|
81
|
+
if (parsed.type === 'slash') {
|
|
82
|
+
try {
|
|
83
|
+
const ctx = getContext();
|
|
84
|
+
const result = await router.handle(parsed.command ?? '', parsed.args, ctx);
|
|
85
|
+
// Sync approval mode changes back
|
|
86
|
+
approvalMode = ctx.approvalMode;
|
|
87
|
+
recentCommands.push({ input, status: 'ok', timestamp: ts });
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
recentCommands.push({ input, status: 'error', timestamp: ts });
|
|
92
|
+
throw error;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// CLI verb dispatch — execute recognized commands inline
|
|
96
|
+
if (parsed.type === 'command' && parsed.command) {
|
|
97
|
+
try {
|
|
98
|
+
const cmdName = parsed.command;
|
|
99
|
+
// Prevent recursive start
|
|
100
|
+
if (cmdName === 'start') {
|
|
101
|
+
return dim('Already in interactive mode. Use /help for commands.');
|
|
102
|
+
}
|
|
103
|
+
const mod = await import(`./${cmdName}.js`);
|
|
104
|
+
// Capture stdout via temporary buffer
|
|
105
|
+
const lines = [];
|
|
106
|
+
const origWrite = process.stdout.write.bind(process.stdout);
|
|
107
|
+
process.stdout.write = ((chunk) => {
|
|
108
|
+
lines.push(typeof chunk === 'string' ? chunk : new TextDecoder().decode(chunk));
|
|
109
|
+
return true;
|
|
110
|
+
});
|
|
111
|
+
try {
|
|
112
|
+
await mod.execute(parsed.args, {
|
|
113
|
+
...flags,
|
|
114
|
+
format: flags.format ?? 'markdown',
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
process.stdout.write = origWrite;
|
|
119
|
+
}
|
|
120
|
+
const output = lines.join('');
|
|
121
|
+
recentCommands.push({ input, status: 'ok', timestamp: ts });
|
|
122
|
+
return output || dim(`${cmdName} completed.`);
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
recentCommands.push({ input, status: 'error', timestamp: ts });
|
|
126
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
127
|
+
return colorize(`Command error: ${msg}`, 'error');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Natural language input — route through SDK agent
|
|
131
|
+
try {
|
|
132
|
+
if (!sdkClient) {
|
|
133
|
+
const profileName = approvalMode === 'yolo' ? 'run' : 'plan';
|
|
134
|
+
sdkClient = new SDKClient({
|
|
135
|
+
sessionId: session.sessionId,
|
|
136
|
+
taskType: 'interactive',
|
|
137
|
+
approvalMode,
|
|
138
|
+
tokenBudget: config.toggles.budgetTokens,
|
|
139
|
+
toolProfile: TOOL_PROFILES[profileName] ?? TOOL_PROFILES['plan'],
|
|
140
|
+
});
|
|
141
|
+
await sdkClient.start();
|
|
142
|
+
}
|
|
143
|
+
const response = await sdkClient.chat(input);
|
|
144
|
+
tokenTracker.add('conversationHistory', input.length + response.length);
|
|
145
|
+
recentCommands.push({ input, status: 'ok', timestamp: ts });
|
|
146
|
+
return response;
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
recentCommands.push({ input, status: 'error', timestamp: ts });
|
|
150
|
+
// Graceful fallback when AI backend is unavailable
|
|
151
|
+
return [
|
|
152
|
+
dim(`Agent error: ${error instanceof Error ? error.message : String(error)}`),
|
|
153
|
+
dim('Use slash commands for offline features:'),
|
|
154
|
+
` ${colorize('/help', 'accent')} — see all commands`,
|
|
155
|
+
].join('\n');
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
onExit: async () => {
|
|
159
|
+
// Stop SDK client if running
|
|
160
|
+
if (sdkClient)
|
|
161
|
+
await sdkClient.stop('suspended', tokenTracker.getUsage().total);
|
|
162
|
+
// Update session state on exit
|
|
163
|
+
await sessionManager.update({ ...session, state: 'suspended' });
|
|
164
|
+
},
|
|
165
|
+
quiet: flags.quiet,
|
|
166
|
+
});
|
|
167
|
+
// Wire dashboard renderer for Ctrl+D
|
|
168
|
+
loop.setDashboardRenderer(() => renderDashboard(dashboardState));
|
|
169
|
+
// Show contextual slash-command hints after banner
|
|
170
|
+
if (!flags.quiet) {
|
|
171
|
+
const hints = [
|
|
172
|
+
dim(' Quick start:'),
|
|
173
|
+
` ${colorize('/help', 'accent')} Show all commands`,
|
|
174
|
+
` ${colorize('/session', 'accent')} Check session & token budget`,
|
|
175
|
+
` ${colorize('/context', 'accent')} Toggle context sources`,
|
|
176
|
+
` ${colorize('/permissions', 'accent')} Switch approval mode`,
|
|
177
|
+
` ${colorize('/dashboard', 'accent')} Toggle dashboard view (or Ctrl+D)`,
|
|
178
|
+
'',
|
|
179
|
+
];
|
|
180
|
+
process.stdout.write(hints.join('\n'));
|
|
181
|
+
}
|
|
182
|
+
// Run the prompt loop (blocks until exit)
|
|
183
|
+
await loop.start();
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAqE,MAAM,0BAA0B,CAAC;AACjI,OAAO,EAAE,eAAe,EAA0C,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;CAepB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAe,EAAE,KAAmB;IAChE,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAExC,6BAA6B;IAC7B,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC;QAC1C,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,aAAa;QACvB,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE;QACnB,GAAG,EAAE,MAAM;QACX,UAAU,EAAE,OAAO;QACnB,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY;QAC9D,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY;QACxC,WAAW,EAAE,SAAS;KACvB,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;QACpC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY;QACnC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,0BAA0B;QAC3D,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,wBAAwB;KACxD,CAAC,CAAC;IAEH,kEAAkE;IAClE,MAAM,gBAAgB,GAAmB,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAC/D,IAAI,YAAY,GAAsB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;IACvF,MAAM,cAAc,GAAoB,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAwB,IAAI,CAAC;IAE/C,8BAA8B;IAC9B,MAAM,UAAU,GAAG,GAAwB,EAAE,CAAC,CAAC;QAC7C,OAAO;QACP,YAAY;QACZ,gBAAgB;QAChB,YAAY;QACZ,cAAc;KACf,CAAC,CAAC;IAEH,4BAA4B;IAC5B,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAExC,8BAA8B;IAC9B,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,uBAAuB,EAAE,KAAK,IAAI,EAAE;QAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,cAAc,GAAmB;QACrC,UAAU;QACV,IAAI,YAAY,KAAK,OAAO,YAAY,CAAC,CAAC,CAAC;QAC3C,iBAAiB,EAAE,MAAM,CAAC,KAAK,IAAI,aAAa;QAChD,SAAS;KACV,CAAC;IAEF,uCAAuC;IACvC,IAAI,SAAS,GAAqB,IAAI,CAAC;IAEvC,wBAAwB;IACxB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,KAAa,EAAE,EAAE;YAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEtB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;oBACzB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC3E,kCAAkC;oBAClC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;oBAChC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC5D,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC/D,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;YAED,yDAAyD;YACzD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAChD,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;oBAC/B,0BAA0B;oBAC1B,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;wBACxB,OAAO,GAAG,CAAC,sDAAsD,CAAC,CAAC;oBACrE,CAAC;oBACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC;oBAC5C,sCAAsC;oBACtC,MAAM,KAAK,GAAa,EAAE,CAAC;oBAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAA0B,EAAE,EAAE;wBACrD,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;wBAChF,OAAO,IAAI,CAAC;oBACd,CAAC,CAAgC,CAAC;oBAClC,IAAI,CAAC;wBACH,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;4BAC7B,GAAG,KAAK;4BACR,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,UAAU;yBACnC,CAAC,CAAC;oBACL,CAAC;4BAAS,CAAC;wBACT,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;oBACnC,CAAC;oBACD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC9B,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC5D,OAAO,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,aAAa,CAAC,CAAC;gBAChD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC/D,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACnE,OAAO,QAAQ,CAAC,kBAAkB,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YAED,mDAAmD;YACnD,IAAI,CAAC;gBACH,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,WAAW,GAAG,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC7D,SAAS,GAAG,IAAI,SAAS,CAAC;wBACxB,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,QAAQ,EAAE,aAAa;wBACvB,YAAY;wBACZ,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY;wBACxC,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC;qBACjE,CAAC,CAAC;oBACH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;gBAC1B,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7C,YAAY,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACxE,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5D,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC/D,mDAAmD;gBACnD,OAAO;oBACL,GAAG,CAAC,gBAAgB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7E,GAAG,CAAC,0CAA0C,CAAC;oBAC/C,KAAK,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,qBAAqB;iBACtD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QACD,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,6BAA6B;YAC7B,IAAI,SAAS;gBAAE,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;YAChF,+BAA+B;YAC/B,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CAAC;IAEH,qCAAqC;IACrC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC;IAEjE,mDAAmD;IACnD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG;YACZ,GAAG,CAAC,gBAAgB,CAAC;YACrB,OAAO,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,2BAA2B;YAC7D,OAAO,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,mCAAmC;YACxE,OAAO,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,6BAA6B;YAClE,OAAO,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,uBAAuB;YAChE,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,sCAAsC;YAC7E,EAAE;SACH,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,0CAA0C;IAC1C,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Command module interface — all command modules export this shape. */
|
|
2
|
+
export interface CommandFlags {
|
|
3
|
+
version: boolean;
|
|
4
|
+
help: boolean;
|
|
5
|
+
yolo: boolean;
|
|
6
|
+
format?: 'json' | 'markdown' | 'dual';
|
|
7
|
+
verbose: boolean;
|
|
8
|
+
quiet: boolean;
|
|
9
|
+
outputDir?: string;
|
|
10
|
+
compact: boolean;
|
|
11
|
+
detail?: 'concise' | 'balanced' | 'exhaustive';
|
|
12
|
+
accessible: boolean;
|
|
13
|
+
}
|
|
14
|
+
export type CommandExecutor = (args: string[], flags: CommandFlags) => Promise<void>;
|
|
15
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/types.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAC/C,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/commands/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flag resolution — CLI flag > workspace .saasgadget.json > global config.json
|
|
3
|
+
* per T084 flag precedence requirements.
|
|
4
|
+
* @module cli/flag-resolver
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandFlags } from './commands/types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Resolve effective flags by merging CLI flags with config defaults.
|
|
9
|
+
* Precedence: CLI flag > workspace .saasgadget.json > global config.json
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveFlags(command: string | null, flags: CommandFlags): Promise<CommandFlags>;
|
|
12
|
+
/**
|
|
13
|
+
* Resolve the output directory with session-bound default.
|
|
14
|
+
* Precedence: CLI --output-dir flag > session-bound dir > cwd fallback.
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveOutputDir(flags: CommandFlags, sessionId?: string): string;
|
|
17
|
+
//# sourceMappingURL=flag-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flag-resolver.d.ts","sourceRoot":"","sources":["../../src/cli/flag-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAUxD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC,CAoCvB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAMhF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ConfigStore } from '../config/config-store.js';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
/** Commands that do NOT support --detail */
|
|
5
|
+
const DETAIL_UNSUPPORTED = new Set([
|
|
6
|
+
'session', 'mcp', 'new', 'init', 'auth', 'doctor',
|
|
7
|
+
]);
|
|
8
|
+
/**
|
|
9
|
+
* Resolve effective flags by merging CLI flags with config defaults.
|
|
10
|
+
* Precedence: CLI flag > workspace .saasgadget.json > global config.json
|
|
11
|
+
*/
|
|
12
|
+
export async function resolveFlags(command, flags) {
|
|
13
|
+
const configStore = new ConfigStore();
|
|
14
|
+
let config;
|
|
15
|
+
try {
|
|
16
|
+
config = await configStore.load();
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// Config may not exist yet (pre-init). Use CLI flags as-is,
|
|
20
|
+
// but still strip unsupported flags for exempt commands.
|
|
21
|
+
const result = { ...flags };
|
|
22
|
+
if (command && DETAIL_UNSUPPORTED.has(command)) {
|
|
23
|
+
result.detail = undefined;
|
|
24
|
+
}
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
const resolved = { ...flags };
|
|
28
|
+
// Format: CLI flag > config output.displayFormat
|
|
29
|
+
if (flags.format === undefined) {
|
|
30
|
+
resolved.format = config.output.displayFormat;
|
|
31
|
+
}
|
|
32
|
+
// Detail: CLI flag > config output.detail
|
|
33
|
+
if (flags.detail === undefined) {
|
|
34
|
+
resolved.detail = config.output.detail;
|
|
35
|
+
}
|
|
36
|
+
// Log info when --detail used on unsupported command
|
|
37
|
+
if (command && DETAIL_UNSUPPORTED.has(command) && resolved.detail) {
|
|
38
|
+
if (!resolved.quiet) {
|
|
39
|
+
console.log('detail level not applicable to this command');
|
|
40
|
+
}
|
|
41
|
+
resolved.detail = undefined;
|
|
42
|
+
}
|
|
43
|
+
return resolved;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Resolve the output directory with session-bound default.
|
|
47
|
+
* Precedence: CLI --output-dir flag > session-bound dir > cwd fallback.
|
|
48
|
+
*/
|
|
49
|
+
export function resolveOutputDir(flags, sessionId) {
|
|
50
|
+
if (flags.outputDir)
|
|
51
|
+
return flags.outputDir;
|
|
52
|
+
if (sessionId) {
|
|
53
|
+
return join(homedir(), '.saasgadget', 'sessions', sessionId, 'output');
|
|
54
|
+
}
|
|
55
|
+
return join(process.cwd(), '.saasgadget-output');
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=flag-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flag-resolver.js","sourceRoot":"","sources":["../../src/cli/flag-resolver.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,4CAA4C;AAC5C,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;CAClD,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAsB,EACtB,KAAmB;IAEnB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;QAC5D,yDAAyD;QACzD,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;QAC5B,IAAI,OAAO,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAE9B,iDAAiD;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;IAChD,CAAC;IAED,0CAA0C;IAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,CAAC;IAED,qDAAqD;IACrD,IAAI,OAAO,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAClE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC7D,CAAC;QACD,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAmB,EAAE,SAAkB;IACtE,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC,SAAS,CAAC;IAC5C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;AACnD,CAAC"}
|