sinapse-ai 9.4.0 → 9.5.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/.claude/CLAUDE.md +10 -4
- package/.claude/hooks/enforce-architecture-first.py +197 -197
- package/.claude/hooks/enforce-git-push-authority.sh +25 -4
- package/.claude/hooks/mind-clone-governance.py +193 -193
- package/.claude/hooks/read-protection.py +152 -152
- package/.claude/hooks/sql-governance.py +183 -183
- package/.claude/hooks/verify-packages.cjs +83 -0
- package/.claude/hooks/write-path-validation.py +195 -195
- package/.claude/rules/hook-governance.md +1 -0
- package/.claude/rules/mandatory-delegation.md +24 -0
- package/.claude/rules/project-intelligence.md +63 -0
- package/.claude/rules/response-format.md +4 -0
- package/.claude/rules/safe-collaboration.md +4 -2
- package/.claude/rules/security-data-protection.md +18 -0
- package/.claude/rules/squad-awareness.md +93 -67
- package/.claude/rules/token-economy.md +148 -0
- package/.codex/agents/analyst.md +90 -0
- package/.codex/agents/architect.md +78 -0
- package/.codex/agents/data-engineer.md +38 -0
- package/.codex/agents/developer.md +97 -0
- package/.codex/agents/devops.md +121 -0
- package/.codex/agents/product-lead.md +27 -0
- package/.codex/agents/project-lead.md +28 -0
- package/.codex/agents/quality-gate.md +89 -0
- package/.codex/agents/sprint-lead.md +28 -0
- package/.codex/agents/squad-creator.md +58 -0
- package/.codex/agents/ux-design-expert.md +28 -0
- package/.sinapse-ai/core/code-intel/registry-syncer.js +56 -3
- package/.sinapse-ai/core/doctor/checks/agent-memory.js +5 -1
- package/.sinapse-ai/core/doctor/checks/claude-md.js +4 -1
- package/.sinapse-ai/core/doctor/checks/code-intel.js +5 -1
- package/.sinapse-ai/core/doctor/checks/commands-count.js +4 -1
- package/.sinapse-ai/core/doctor/checks/constitution-consistency.js +4 -1
- package/.sinapse-ai/core/doctor/checks/core-config.js +4 -1
- package/.sinapse-ai/core/doctor/checks/entity-registry.js +6 -1
- package/.sinapse-ai/core/doctor/checks/git-hooks.js +5 -1
- package/.sinapse-ai/core/doctor/checks/graph-dashboard.js +4 -1
- package/.sinapse-ai/core/doctor/checks/hooks-claude-count.js +5 -1
- package/.sinapse-ai/core/doctor/checks/ide-sync.js +4 -1
- package/.sinapse-ai/core/doctor/checks/node-version.js +4 -1
- package/.sinapse-ai/core/doctor/checks/npm-packages.js +4 -1
- package/.sinapse-ai/core/doctor/checks/rules-files.js +4 -1
- package/.sinapse-ai/core/doctor/checks/settings-json.js +4 -1
- package/.sinapse-ai/core/doctor/checks/skills-count.js +4 -1
- package/.sinapse-ai/core/doctor/index.js +157 -50
- package/.sinapse-ai/core/ids/registry-updater.js +6 -1
- package/.sinapse-ai/core/logger/index.js +319 -0
- package/.sinapse-ai/core/orchestration/terminal-spawner.js +2 -2
- package/.sinapse-ai/core/telemetry/index.js +247 -0
- package/.sinapse-ai/data/entity-registry.yaml +1384 -944
- package/.sinapse-ai/development/agents/architect.md +5 -0
- package/.sinapse-ai/development/agents/data-engineer.md +38 -0
- package/.sinapse-ai/development/agents/developer.md +28 -0
- package/.sinapse-ai/development/agents/devops.md +4 -0
- package/.sinapse-ai/development/agents/product-lead.md +27 -0
- package/.sinapse-ai/development/agents/project-lead.md +28 -0
- package/.sinapse-ai/development/agents/quality-gate.md +4 -0
- package/.sinapse-ai/development/agents/sprint-lead/MEMORY.md +8 -0
- package/.sinapse-ai/development/agents/sprint-lead.md +28 -0
- package/.sinapse-ai/development/agents/squad-creator.md +58 -0
- package/.sinapse-ai/development/agents/ux-design-expert.md +28 -0
- package/.sinapse-ai/development/knowledge-base/agent-communication-protocol.md +127 -0
- package/.sinapse-ai/development/knowledge-base/database-scaling-patterns.md +374 -0
- package/.sinapse-ai/development/knowledge-base/environment-deployment-patterns.md +353 -0
- package/.sinapse-ai/development/knowledge-base/gotchas-patterns.md +224 -0
- package/.sinapse-ai/development/knowledge-base/infrastructure-decision-framework.md +221 -0
- package/.sinapse-ai/development/knowledge-base/security-pre-deploy-checklist.md +410 -0
- package/.sinapse-ai/development/knowledge-base/software-architecture-patterns.md +299 -0
- package/.sinapse-ai/development/knowledge-base/token-economy-guide.md +198 -0
- package/.sinapse-ai/development/scripts/populate-entity-registry.js +5 -1
- package/.sinapse-ai/development/skills/captcha-handler.md +82 -0
- package/.sinapse-ai/development/skills/chrome-brain.md +81 -0
- package/.sinapse-ai/development/skills/deploy-readiness.md +93 -0
- package/.sinapse-ai/development/skills/model-router.md +92 -0
- package/.sinapse-ai/development/skills/sinapse-methodology.md +175 -0
- package/.sinapse-ai/development/skills/story-fast-track.md +71 -0
- package/.sinapse-ai/development/tasks/dev-develop-story.md +10 -0
- package/.sinapse-ai/development/tasks/environment-promotion-pipeline.md +582 -0
- package/.sinapse-ai/development/tasks/generate-agent-handoff.md +223 -0
- package/.sinapse-ai/development/tasks/infrastructure-assessment.md +432 -0
- package/.sinapse-ai/development/tasks/load-testing-setup.md +611 -0
- package/.sinapse-ai/development/tasks/observability-blueprint.md +562 -0
- package/.sinapse-ai/development/templates/legal/breach-notification-tmpl.md +113 -0
- package/.sinapse-ai/development/templates/legal/privacy-policy-tmpl.md +93 -0
- package/.sinapse-ai/development/templates/legal/terms-of-service-tmpl.md +85 -0
- package/.sinapse-ai/development/templates/service-template/README.md.hbs +159 -159
- package/.sinapse-ai/development/templates/service-template/__tests__/index.test.ts.hbs +238 -238
- package/.sinapse-ai/development/templates/service-template/client.ts.hbs +404 -404
- package/.sinapse-ai/development/templates/service-template/errors.ts.hbs +183 -183
- package/.sinapse-ai/development/templates/service-template/index.ts.hbs +121 -121
- package/.sinapse-ai/development/templates/service-template/package.json.hbs +88 -88
- package/.sinapse-ai/development/templates/service-template/types.ts.hbs +146 -146
- package/.sinapse-ai/development/templates/squad-template/LICENSE +22 -22
- package/.sinapse-ai/development/workflows/story-development-cycle.yaml +40 -1
- package/.sinapse-ai/hooks/ids-post-commit.js +22 -0
- package/.sinapse-ai/infrastructure/contracts/compatibility/README.md +42 -0
- package/.sinapse-ai/infrastructure/contracts/compatibility/sinapse-current.yaml +35 -0
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -127
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -71
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -51
- package/.sinapse-ai/infrastructure/scripts/pr-review-ai.js +16 -13
- package/.sinapse-ai/infrastructure/scripts/setup-project-infra.js +128 -0
- package/.sinapse-ai/infrastructure/scripts/test-discovery.js +8 -3
- package/.sinapse-ai/infrastructure/scripts/validate-manifest-parity.js +380 -0
- package/.sinapse-ai/infrastructure/scripts/validate-parity.js +76 -25
- package/.sinapse-ai/infrastructure/templates/coderabbit.yaml.template +280 -280
- package/.sinapse-ai/infrastructure/templates/config/env.example +16 -0
- package/.sinapse-ai/infrastructure/templates/config/gitignore-additions.tmpl +59 -0
- package/.sinapse-ai/infrastructure/templates/github/CODEOWNERS.template +12 -0
- package/.sinapse-ai/infrastructure/templates/github/PULL_REQUEST_TEMPLATE.md +29 -0
- package/.sinapse-ai/infrastructure/templates/github/ci-template.yml +77 -0
- package/.sinapse-ai/infrastructure/templates/github/issue-templates/bug_report.md +34 -0
- package/.sinapse-ai/infrastructure/templates/github/issue-templates/feature_request.md +19 -0
- package/.sinapse-ai/infrastructure/templates/github-workflows/ci.yml.template +170 -170
- package/.sinapse-ai/infrastructure/templates/github-workflows/pr-automation.yml.template +331 -331
- package/.sinapse-ai/infrastructure/templates/github-workflows/release.yml.template +197 -197
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +19 -19
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-node.tmpl +86 -86
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-python.tmpl +146 -146
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-sinapse-base.tmpl +64 -64
- package/.sinapse-ai/infrastructure/templates/sinapse-sync.yaml.template +183 -183
- package/.sinapse-ai/install-manifest.yaml +275 -140
- package/.sinapse-ai/local-config.yaml.template +65 -65
- package/.sinapse-ai/monitor/hooks/lib/__init__.py +2 -2
- package/.sinapse-ai/monitor/hooks/lib/enrich.py +59 -59
- package/.sinapse-ai/monitor/hooks/lib/send_event.py +48 -48
- package/.sinapse-ai/monitor/hooks/notification.py +30 -30
- package/.sinapse-ai/monitor/hooks/post_tool_use.py +46 -46
- package/.sinapse-ai/monitor/hooks/pre_compact.py +30 -30
- package/.sinapse-ai/monitor/hooks/pre_tool_use.py +41 -41
- package/.sinapse-ai/monitor/hooks/stop.py +30 -30
- package/.sinapse-ai/monitor/hooks/subagent_stop.py +30 -30
- package/.sinapse-ai/monitor/hooks/user_prompt_submit.py +39 -39
- package/.sinapse-ai/product/templates/adr.hbs +126 -126
- package/.sinapse-ai/product/templates/dbdr.hbs +242 -242
- package/.sinapse-ai/product/templates/epic.hbs +213 -213
- package/.sinapse-ai/product/templates/pmdr.hbs +187 -187
- package/.sinapse-ai/product/templates/prd-v2.0.hbs +217 -217
- package/.sinapse-ai/product/templates/prd.hbs +202 -202
- package/.sinapse-ai/product/templates/story-tmpl.yaml +59 -0
- package/.sinapse-ai/product/templates/story.hbs +264 -264
- package/.sinapse-ai/product/templates/task.hbs +171 -171
- package/.sinapse-ai/product/templates/tmpl-comment-on-examples.sql +159 -159
- package/.sinapse-ai/product/templates/tmpl-migration-script.sql +92 -92
- package/.sinapse-ai/product/templates/tmpl-rls-granular-policies.sql +105 -105
- package/.sinapse-ai/product/templates/tmpl-rls-kiss-policy.sql +11 -11
- package/.sinapse-ai/product/templates/tmpl-rls-roles.sql +136 -136
- package/.sinapse-ai/product/templates/tmpl-rls-simple.sql +78 -78
- package/.sinapse-ai/product/templates/tmpl-rls-tenant.sql +153 -153
- package/.sinapse-ai/product/templates/tmpl-rollback-script.sql +78 -78
- package/.sinapse-ai/product/templates/tmpl-seed-data.sql +141 -141
- package/.sinapse-ai/product/templates/tmpl-smoke-test.sql +17 -17
- package/.sinapse-ai/product/templates/tmpl-staging-copy-merge.sql +140 -140
- package/.sinapse-ai/product/templates/tmpl-stored-proc.sql +141 -141
- package/.sinapse-ai/product/templates/tmpl-trigger.sql +153 -153
- package/.sinapse-ai/product/templates/tmpl-view-materialized.sql +134 -134
- package/.sinapse-ai/product/templates/tmpl-view.sql +178 -178
- package/.sinapse-ai/scripts/diagnostics/health-dashboard/package-lock.json +427 -355
- package/LICENSE +34 -34
- package/README.en.md +167 -20
- package/README.md +190 -22
- package/bin/cli.js +510 -196
- package/bin/postinstall.js +564 -0
- package/bin/sinapse-cli +283 -283
- package/bin/sinapse-graph.js +9 -0
- package/bin/sinapse-init.js +36 -4
- package/bin/sinapse-minimal.js +20 -9
- package/bin/sinapse.js +202 -122
- package/bin/utils/deprecation-warning.js +46 -0
- package/bin/utils/pre-push-safety.js +14 -0
- package/docs/TELEMETRY.md +131 -0
- package/docs/chrome-brain-upgrade-plan.md +624 -0
- package/docs/framework/orqx-plan.md +1 -1
- package/docs/installation/chrome-brain.md +17 -7
- package/docs/mega-upgrade-orchestration-plan.md +71 -0
- package/docs/pt/contributing.md +20 -0
- package/docs/research-synthesis-for-upgrade.md +511 -0
- package/docs/security-audit-report.md +306 -0
- package/package.json +20 -8
- package/packages/installer/src/config/configure-environment.js +19 -44
- package/packages/installer/src/detection/detect-project-type.js +181 -63
- package/packages/installer/src/installer/manifest-signature.js +32 -17
- package/packages/installer/src/wizard/i18n.js +12 -0
- package/packages/installer/src/wizard/ide-config-generator.js +8 -39
- package/packages/installer/src/wizard/index.js +119 -14
- package/packages/installer/src/wizard/questions.js +2 -3
- package/packages/installer/tests/integration/environment-configuration.test.js +7 -5
- package/packages/installer/tests/unit/detection/detect-project-type.test.js +138 -1
- package/packages/installer/tests/unit/doctor/doctor-orchestrator.test.js +3 -3
- package/packages/sinapse-install/bin/edmcp.js +0 -0
- package/packages/sinapse-install/bin/sinapse-install.js +0 -0
- package/packages/sinapse-pro-cli/bin/sinapse-pro.js +0 -0
- package/scripts/check-markdown-links.py +353 -353
- package/scripts/coverage-report-summary.js +169 -0
- package/scripts/generate-install-manifest.js +6 -2
- package/scripts/release-readiness.js +169 -0
- package/scripts/test-install-matrix-local.sh +153 -0
- package/scripts/validate-install-docs.js +394 -0
- package/scripts/validate-no-external-refs.js +376 -0
- package/scripts/validate-squad-orqx.js +302 -0
- package/scripts/validate-story-meta.js +263 -0
- package/squads/claude-code-mastery/CHANGELOG.md +1 -1
- package/squads/claude-code-mastery/README.md +2 -2
- package/squads/claude-code-mastery/squad.yaml +1 -1
- package/squads/squad-artdir/README.md +90 -0
- package/squads/squad-artdir/agents/accessibility-guardian.md +184 -0
- package/squads/squad-artdir/agents/artdir-orqx.md +145 -0
- package/squads/squad-artdir/agents/color-psychologist.md +166 -0
- package/squads/squad-artdir/agents/cro-persuasion.md +161 -0
- package/squads/squad-artdir/agents/design-system-architect.md +100 -0
- package/squads/squad-artdir/agents/ia-architect.md +169 -0
- package/squads/squad-artdir/agents/interaction-designer.md +162 -0
- package/squads/squad-artdir/agents/layout-engineer.md +163 -0
- package/squads/squad-artdir/agents/motion-architect.md +185 -0
- package/squads/squad-artdir/agents/platform-aesthetic-director.md +84 -0
- package/squads/squad-artdir/agents/premium-packaging-strategist.md +107 -0
- package/squads/squad-artdir/agents/product-surface-director.md +86 -0
- package/squads/squad-artdir/agents/type-systemist.md +138 -0
- package/squads/squad-artdir/agents/visual-strategist.md +127 -0
- package/squads/squad-artdir/checklists/seven-pillars-validation-checklist.md +172 -0
- package/squads/squad-artdir/knowledge-base/case-nyo-ia-reference.md +289 -0
- package/squads/squad-artdir/knowledge-base/deliverables-templates.md +457 -0
- package/squads/squad-artdir/knowledge-base/motion-technique-catalog.md +247 -0
- package/squads/squad-artdir/knowledge-base/premium-packaging-principles.md +133 -0
- package/squads/squad-artdir/knowledge-base/psychological-toolkit.md +229 -0
- package/squads/squad-artdir/knowledge-base/saas-art-direction-canon.md +242 -0
- package/squads/squad-artdir/knowledge-base/seven-pillars-framework.md +289 -0
- package/squads/squad-artdir/knowledge-base/ten-pillars-framework.md +221 -0
- package/squads/squad-artdir/package.json +20 -0
- package/squads/squad-artdir/squad.yaml +271 -0
- package/squads/squad-artdir/tasks/audit-conversion.md +97 -0
- package/squads/squad-artdir/tasks/audit-drift-multi-surface.md +55 -0
- package/squads/squad-artdir/tasks/consult-saas-canon.md +54 -0
- package/squads/squad-artdir/tasks/create-art-direction-brief.md +110 -0
- package/squads/squad-artdir/tasks/create-premium-packaging-brief.md +61 -0
- package/squads/squad-artdir/tasks/create-wireflow.md +84 -0
- package/squads/squad-artdir/tasks/design-color-system.md +81 -0
- package/squads/squad-artdir/tasks/design-product-surface.md +60 -0
- package/squads/squad-artdir/tasks/design-token-system.md +58 -0
- package/squads/squad-artdir/tasks/diagnose-visual-language.md +92 -0
- package/squads/squad-artdir/tasks/first-5-minutes-choreography.md +65 -0
- package/squads/squad-artdir/tasks/specify-motion-system.md +84 -0
- package/squads/squad-artdir/tasks/validate-against-pillars.md +143 -0
- package/squads/squad-artdir/templates/art-direction-brief-template.md +215 -0
- package/squads/squad-artdir/workflows/conversion-audit-cycle.yaml +78 -0
- package/squads/squad-artdir/workflows/full-art-direction-cycle.yaml +98 -0
- package/squads/squad-artdir/workflows/saas-platform-art-direction-cycle.yaml +174 -0
- package/squads/squad-brand/knowledge-base/ai-visual-generation-canon.md +234 -0
- package/squads/squad-brand/squad.yaml +20 -6
- package/squads/squad-claude/knowledge-base/context-window-optimization.md +1 -1
- package/squads/squad-claude/knowledge-base/swarm-orchestration-patterns.md +2 -2
- package/squads/squad-content/knowledge-base/ai-native-content-loop.md +220 -0
- package/squads/squad-content/knowledge-base/signal-intelligence-v2.md +234 -0
- package/squads/squad-content/knowledge-base/task-ownership-map.md +235 -0
- package/squads/squad-content/squad.yaml +187 -27
- package/squads/squad-copy/knowledge-base/ai-copy-human-loop-canon.md +235 -0
- package/squads/squad-copy/squad.yaml +19 -4
- package/squads/squad-design/knowledge-base/cross-surface-token-canon.md +209 -0
- package/squads/squad-design/squad.yaml +19 -4
- package/.sinapse-ai/core/registry/service-registry.json +0 -6346
- package/.sinapse-ai/data/registry-update-log.jsonl +0 -1323
- package/.sinapse-ai/manifests/agents.csv +0 -29
- package/.sinapse-ai/manifests/tasks.csv +0 -204
- package/.sinapse-ai/manifests/workers.csv +0 -196
- package/squads/squad-growth/tasks/calculate-sample-size.md +0 -121
- package/squads/squad-paidmedia/tasks/calculate-sample-size.md +0 -57
|
@@ -1,127 +1,127 @@
|
|
|
1
|
-
@echo off
|
|
2
|
-
:: Claude Code - DeepSeek Native Mode with Usage Tracking
|
|
3
|
-
:: Routes through local proxy to track per-alias usage
|
|
4
|
-
:: Cost: ~$0.14/M tokens with tool calling support
|
|
5
|
-
|
|
6
|
-
setlocal enabledelayedexpansion
|
|
7
|
-
|
|
8
|
-
:: Configuration
|
|
9
|
-
set "PROXY_PORT=8787"
|
|
10
|
-
set "ALIAS=claude-free"
|
|
11
|
-
|
|
12
|
-
:: Find tracker script
|
|
13
|
-
if defined SINAPSE_HOME (
|
|
14
|
-
set "TRACKER_SCRIPT=%SINAPSE_HOME%\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
15
|
-
if exist "!TRACKER_SCRIPT!" goto :tracker_found
|
|
16
|
-
)
|
|
17
|
-
set "TRACKER_SCRIPT=%USERPROFILE%\sinapse-ai\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
18
|
-
if exist "%TRACKER_SCRIPT%" goto :tracker_found
|
|
19
|
-
set "TRACKER_SCRIPT=%USERPROFILE%\Workspaces\SINAPSE\SinapseAI\sinapse-ai\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
20
|
-
if exist "%TRACKER_SCRIPT%" goto :tracker_found
|
|
21
|
-
set "TRACKER_SCRIPT=%~dp0..\usage-tracker\index.js"
|
|
22
|
-
:tracker_found
|
|
23
|
-
|
|
24
|
-
:: Find project root (look for .env file)
|
|
25
|
-
set "PROJECT_ROOT=%CD%"
|
|
26
|
-
set /a "LOOP_COUNT=0"
|
|
27
|
-
:find_env
|
|
28
|
-
set /a "LOOP_COUNT+=1"
|
|
29
|
-
if %LOOP_COUNT% gtr 50 goto :no_env
|
|
30
|
-
if exist "%PROJECT_ROOT%\.env" goto :found_env
|
|
31
|
-
if "%PROJECT_ROOT%"=="%PROJECT_ROOT:~0,3%" goto :no_env
|
|
32
|
-
for %%i in ("%PROJECT_ROOT%\..") do set "PROJECT_ROOT=%%~fi"
|
|
33
|
-
goto :find_env
|
|
34
|
-
|
|
35
|
-
:no_env
|
|
36
|
-
if not "%DEEPSEEK_API_KEY%"=="" goto :use_env_key
|
|
37
|
-
|
|
38
|
-
echo.
|
|
39
|
-
echo [91mERROR: No .env file found and DEEPSEEK_API_KEY not set![0m
|
|
40
|
-
echo.
|
|
41
|
-
echo Options:
|
|
42
|
-
echo 1. Create .env in your project: cp .env.example .env
|
|
43
|
-
echo 2. Set DEEPSEEK_API_KEY in the .env file
|
|
44
|
-
echo 3. Or set it globally: setx DEEPSEEK_API_KEY "sk-your-key"
|
|
45
|
-
echo.
|
|
46
|
-
echo Get your API key at: https://platform.deepseek.com/api_keys
|
|
47
|
-
echo.
|
|
48
|
-
pause
|
|
49
|
-
exit /b 1
|
|
50
|
-
|
|
51
|
-
:found_env
|
|
52
|
-
:: Load DEEPSEEK_API_KEY from .env
|
|
53
|
-
for /f "usebackq eol=# tokens=1,* delims==" %%a in ("%PROJECT_ROOT%\.env") do (
|
|
54
|
-
if "%%a"=="DEEPSEEK_API_KEY" set "DEEPSEEK_API_KEY=%%b"
|
|
55
|
-
)
|
|
56
|
-
set "DEEPSEEK_API_KEY=!DEEPSEEK_API_KEY:"=!"
|
|
57
|
-
|
|
58
|
-
if "!DEEPSEEK_API_KEY!"=="" (
|
|
59
|
-
echo.
|
|
60
|
-
echo [91mERROR: DEEPSEEK_API_KEY not found in .env![0m
|
|
61
|
-
echo.
|
|
62
|
-
pause
|
|
63
|
-
exit /b 1
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
:use_env_key
|
|
67
|
-
:: Check if proxy is running
|
|
68
|
-
curl -s http://127.0.0.1:%PROXY_PORT%/health >nul 2>&1
|
|
69
|
-
if %errorlevel% neq 0 (
|
|
70
|
-
echo.
|
|
71
|
-
echo [93mUsage Tracker proxy not running. Starting in background...[0m
|
|
72
|
-
|
|
73
|
-
:: Start proxy in background
|
|
74
|
-
start /b "" node "%TRACKER_SCRIPT%" start --port=%PROXY_PORT% --alias=%ALIAS% >nul 2>&1
|
|
75
|
-
|
|
76
|
-
:: Wait for proxy to start
|
|
77
|
-
timeout /t 2 /nobreak >nul
|
|
78
|
-
|
|
79
|
-
:: Verify it started
|
|
80
|
-
curl -s http://127.0.0.1:%PROXY_PORT%/health >nul 2>&1
|
|
81
|
-
if %errorlevel% neq 0 (
|
|
82
|
-
echo [91mFailed to start proxy. Falling back to direct connection.[0m
|
|
83
|
-
goto :direct_connection
|
|
84
|
-
)
|
|
85
|
-
echo [92mProxy started successfully![0m
|
|
86
|
-
)
|
|
87
|
-
|
|
88
|
-
:: Use local proxy (proxy will forward to DeepSeek with original API key)
|
|
89
|
-
set ANTHROPIC_BASE_URL=http://127.0.0.1:%PROXY_PORT%/anthropic
|
|
90
|
-
set ANTHROPIC_API_KEY=%DEEPSEEK_API_KEY%
|
|
91
|
-
set ANTHROPIC_MODEL=deepseek-chat
|
|
92
|
-
set API_TIMEOUT_MS=600000
|
|
93
|
-
|
|
94
|
-
echo.
|
|
95
|
-
echo [92mClaude Code - DeepSeek Native Mode (TRACKED)[0m
|
|
96
|
-
echo Proxy: 127.0.0.1:%PROXY_PORT%
|
|
97
|
-
echo Alias: %ALIAS%
|
|
98
|
-
echo [92mTool Calling: SUPPORTED[0m
|
|
99
|
-
echo Cost: ~$0.14/M tokens
|
|
100
|
-
echo.
|
|
101
|
-
echo [96mUsage tracking enabled. Run 'deepseek-usage' to view stats.[0m
|
|
102
|
-
echo.
|
|
103
|
-
|
|
104
|
-
goto :run_claude
|
|
105
|
-
|
|
106
|
-
:direct_connection
|
|
107
|
-
:: Direct connection without tracking
|
|
108
|
-
set ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
|
|
109
|
-
set ANTHROPIC_API_KEY=%DEEPSEEK_API_KEY%
|
|
110
|
-
set ANTHROPIC_MODEL=deepseek-chat
|
|
111
|
-
set API_TIMEOUT_MS=600000
|
|
112
|
-
|
|
113
|
-
echo.
|
|
114
|
-
echo [92mClaude Code - DeepSeek Native Mode (DIRECT)[0m
|
|
115
|
-
echo Endpoint: api.deepseek.com/anthropic
|
|
116
|
-
echo [93mUsage tracking: DISABLED (proxy not running)[0m
|
|
117
|
-
echo.
|
|
118
|
-
|
|
119
|
-
:run_claude
|
|
120
|
-
endlocal & set "ANTHROPIC_BASE_URL=%ANTHROPIC_BASE_URL%" & set "ANTHROPIC_API_KEY=%DEEPSEEK_API_KEY%" & set "ANTHROPIC_MODEL=deepseek-chat" & set "API_TIMEOUT_MS=600000"
|
|
121
|
-
|
|
122
|
-
>&2 echo.
|
|
123
|
-
>&2 echo [93mWARNING: Running with --dangerously-skip-permissions (no confirmation prompts)[0m
|
|
124
|
-
>&2 echo [93mOnly use in trusted repositories/environments.[0m
|
|
125
|
-
>&2 echo.
|
|
126
|
-
|
|
127
|
-
claude --dangerously-skip-permissions %*
|
|
1
|
+
@echo off
|
|
2
|
+
:: Claude Code - DeepSeek Native Mode with Usage Tracking
|
|
3
|
+
:: Routes through local proxy to track per-alias usage
|
|
4
|
+
:: Cost: ~$0.14/M tokens with tool calling support
|
|
5
|
+
|
|
6
|
+
setlocal enabledelayedexpansion
|
|
7
|
+
|
|
8
|
+
:: Configuration
|
|
9
|
+
set "PROXY_PORT=8787"
|
|
10
|
+
set "ALIAS=claude-free"
|
|
11
|
+
|
|
12
|
+
:: Find tracker script
|
|
13
|
+
if defined SINAPSE_HOME (
|
|
14
|
+
set "TRACKER_SCRIPT=%SINAPSE_HOME%\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
15
|
+
if exist "!TRACKER_SCRIPT!" goto :tracker_found
|
|
16
|
+
)
|
|
17
|
+
set "TRACKER_SCRIPT=%USERPROFILE%\sinapse-ai\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
18
|
+
if exist "%TRACKER_SCRIPT%" goto :tracker_found
|
|
19
|
+
set "TRACKER_SCRIPT=%USERPROFILE%\Workspaces\SINAPSE\SinapseAI\sinapse-ai\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
20
|
+
if exist "%TRACKER_SCRIPT%" goto :tracker_found
|
|
21
|
+
set "TRACKER_SCRIPT=%~dp0..\usage-tracker\index.js"
|
|
22
|
+
:tracker_found
|
|
23
|
+
|
|
24
|
+
:: Find project root (look for .env file)
|
|
25
|
+
set "PROJECT_ROOT=%CD%"
|
|
26
|
+
set /a "LOOP_COUNT=0"
|
|
27
|
+
:find_env
|
|
28
|
+
set /a "LOOP_COUNT+=1"
|
|
29
|
+
if %LOOP_COUNT% gtr 50 goto :no_env
|
|
30
|
+
if exist "%PROJECT_ROOT%\.env" goto :found_env
|
|
31
|
+
if "%PROJECT_ROOT%"=="%PROJECT_ROOT:~0,3%" goto :no_env
|
|
32
|
+
for %%i in ("%PROJECT_ROOT%\..") do set "PROJECT_ROOT=%%~fi"
|
|
33
|
+
goto :find_env
|
|
34
|
+
|
|
35
|
+
:no_env
|
|
36
|
+
if not "%DEEPSEEK_API_KEY%"=="" goto :use_env_key
|
|
37
|
+
|
|
38
|
+
echo.
|
|
39
|
+
echo [91mERROR: No .env file found and DEEPSEEK_API_KEY not set![0m
|
|
40
|
+
echo.
|
|
41
|
+
echo Options:
|
|
42
|
+
echo 1. Create .env in your project: cp .env.example .env
|
|
43
|
+
echo 2. Set DEEPSEEK_API_KEY in the .env file
|
|
44
|
+
echo 3. Or set it globally: setx DEEPSEEK_API_KEY "sk-your-key"
|
|
45
|
+
echo.
|
|
46
|
+
echo Get your API key at: https://platform.deepseek.com/api_keys
|
|
47
|
+
echo.
|
|
48
|
+
pause
|
|
49
|
+
exit /b 1
|
|
50
|
+
|
|
51
|
+
:found_env
|
|
52
|
+
:: Load DEEPSEEK_API_KEY from .env
|
|
53
|
+
for /f "usebackq eol=# tokens=1,* delims==" %%a in ("%PROJECT_ROOT%\.env") do (
|
|
54
|
+
if "%%a"=="DEEPSEEK_API_KEY" set "DEEPSEEK_API_KEY=%%b"
|
|
55
|
+
)
|
|
56
|
+
set "DEEPSEEK_API_KEY=!DEEPSEEK_API_KEY:"=!"
|
|
57
|
+
|
|
58
|
+
if "!DEEPSEEK_API_KEY!"=="" (
|
|
59
|
+
echo.
|
|
60
|
+
echo [91mERROR: DEEPSEEK_API_KEY not found in .env![0m
|
|
61
|
+
echo.
|
|
62
|
+
pause
|
|
63
|
+
exit /b 1
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
:use_env_key
|
|
67
|
+
:: Check if proxy is running
|
|
68
|
+
curl -s http://127.0.0.1:%PROXY_PORT%/health >nul 2>&1
|
|
69
|
+
if %errorlevel% neq 0 (
|
|
70
|
+
echo.
|
|
71
|
+
echo [93mUsage Tracker proxy not running. Starting in background...[0m
|
|
72
|
+
|
|
73
|
+
:: Start proxy in background
|
|
74
|
+
start /b "" node "%TRACKER_SCRIPT%" start --port=%PROXY_PORT% --alias=%ALIAS% >nul 2>&1
|
|
75
|
+
|
|
76
|
+
:: Wait for proxy to start
|
|
77
|
+
timeout /t 2 /nobreak >nul
|
|
78
|
+
|
|
79
|
+
:: Verify it started
|
|
80
|
+
curl -s http://127.0.0.1:%PROXY_PORT%/health >nul 2>&1
|
|
81
|
+
if %errorlevel% neq 0 (
|
|
82
|
+
echo [91mFailed to start proxy. Falling back to direct connection.[0m
|
|
83
|
+
goto :direct_connection
|
|
84
|
+
)
|
|
85
|
+
echo [92mProxy started successfully![0m
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
:: Use local proxy (proxy will forward to DeepSeek with original API key)
|
|
89
|
+
set ANTHROPIC_BASE_URL=http://127.0.0.1:%PROXY_PORT%/anthropic
|
|
90
|
+
set ANTHROPIC_API_KEY=%DEEPSEEK_API_KEY%
|
|
91
|
+
set ANTHROPIC_MODEL=deepseek-chat
|
|
92
|
+
set API_TIMEOUT_MS=600000
|
|
93
|
+
|
|
94
|
+
echo.
|
|
95
|
+
echo [92mClaude Code - DeepSeek Native Mode (TRACKED)[0m
|
|
96
|
+
echo Proxy: 127.0.0.1:%PROXY_PORT%
|
|
97
|
+
echo Alias: %ALIAS%
|
|
98
|
+
echo [92mTool Calling: SUPPORTED[0m
|
|
99
|
+
echo Cost: ~$0.14/M tokens
|
|
100
|
+
echo.
|
|
101
|
+
echo [96mUsage tracking enabled. Run 'deepseek-usage' to view stats.[0m
|
|
102
|
+
echo.
|
|
103
|
+
|
|
104
|
+
goto :run_claude
|
|
105
|
+
|
|
106
|
+
:direct_connection
|
|
107
|
+
:: Direct connection without tracking
|
|
108
|
+
set ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
|
|
109
|
+
set ANTHROPIC_API_KEY=%DEEPSEEK_API_KEY%
|
|
110
|
+
set ANTHROPIC_MODEL=deepseek-chat
|
|
111
|
+
set API_TIMEOUT_MS=600000
|
|
112
|
+
|
|
113
|
+
echo.
|
|
114
|
+
echo [92mClaude Code - DeepSeek Native Mode (DIRECT)[0m
|
|
115
|
+
echo Endpoint: api.deepseek.com/anthropic
|
|
116
|
+
echo [93mUsage tracking: DISABLED (proxy not running)[0m
|
|
117
|
+
echo.
|
|
118
|
+
|
|
119
|
+
:run_claude
|
|
120
|
+
endlocal & set "ANTHROPIC_BASE_URL=%ANTHROPIC_BASE_URL%" & set "ANTHROPIC_API_KEY=%DEEPSEEK_API_KEY%" & set "ANTHROPIC_MODEL=deepseek-chat" & set "API_TIMEOUT_MS=600000"
|
|
121
|
+
|
|
122
|
+
>&2 echo.
|
|
123
|
+
>&2 echo [93mWARNING: Running with --dangerously-skip-permissions (no confirmation prompts)[0m
|
|
124
|
+
>&2 echo [93mOnly use in trusted repositories/environments.[0m
|
|
125
|
+
>&2 echo.
|
|
126
|
+
|
|
127
|
+
claude --dangerously-skip-permissions %*
|
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
@echo off
|
|
2
|
-
:: DeepSeek Usage Tracker Proxy Manager
|
|
3
|
-
:: Start/stop the tracking proxy server
|
|
4
|
-
|
|
5
|
-
setlocal enabledelayedexpansion
|
|
6
|
-
|
|
7
|
-
set "PROXY_PORT=8787"
|
|
8
|
-
|
|
9
|
-
:: Try multiple locations for the tracker script
|
|
10
|
-
if defined SINAPSE_HOME (
|
|
11
|
-
set "TRACKER_SCRIPT=%SINAPSE_HOME%\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
12
|
-
if exist "!TRACKER_SCRIPT!" goto :found
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
set "TRACKER_SCRIPT=%USERPROFILE%\sinapse-ai\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
16
|
-
if exist "%TRACKER_SCRIPT%" goto :found
|
|
17
|
-
|
|
18
|
-
set "TRACKER_SCRIPT=%USERPROFILE%\Workspaces\SINAPSE\SinapseAI\sinapse-ai\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
19
|
-
if exist "%TRACKER_SCRIPT%" goto :found
|
|
20
|
-
|
|
21
|
-
set "TRACKER_SCRIPT=%~dp0..\usage-tracker\index.js"
|
|
22
|
-
if exist "%TRACKER_SCRIPT%" goto :found
|
|
23
|
-
|
|
24
|
-
echo [91mERROR: Usage tracker not found![0m
|
|
25
|
-
exit /b 1
|
|
26
|
-
|
|
27
|
-
:found
|
|
28
|
-
:: Check if Node.js is available
|
|
29
|
-
where node >nul 2>&1
|
|
30
|
-
if %errorlevel% neq 0 (
|
|
31
|
-
echo [91mERROR: Node.js not found in PATH[0m
|
|
32
|
-
exit /b 1
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
if "%1"=="start" (
|
|
36
|
-
echo Starting DeepSeek Usage Tracker Proxy...
|
|
37
|
-
node "%TRACKER_SCRIPT%" start --port=%PROXY_PORT% --alias=claude-free
|
|
38
|
-
goto :eof
|
|
39
|
-
)
|
|
40
|
-
|
|
41
|
-
if "%1"=="stop" (
|
|
42
|
-
echo Stopping proxy on port %PROXY_PORT%...
|
|
43
|
-
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%PROXY_PORT%.*LISTENING"') do (
|
|
44
|
-
taskkill /PID %%a /F >nul 2>&1
|
|
45
|
-
)
|
|
46
|
-
echo Proxy stopped.
|
|
47
|
-
goto :eof
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
if "%1"=="status" (
|
|
51
|
-
curl -s http://127.0.0.1:%PROXY_PORT%/health >nul 2>&1
|
|
52
|
-
if %errorlevel% equ 0 (
|
|
53
|
-
echo [92mProxy is running on port %PROXY_PORT%[0m
|
|
54
|
-
curl -s http://127.0.0.1:%PROXY_PORT%/health
|
|
55
|
-
) else (
|
|
56
|
-
echo [93mProxy is not running[0m
|
|
57
|
-
)
|
|
58
|
-
goto :eof
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
echo DeepSeek Usage Tracker Proxy
|
|
62
|
-
echo.
|
|
63
|
-
echo Usage:
|
|
64
|
-
echo deepseek-proxy start Start the proxy server
|
|
65
|
-
echo deepseek-proxy stop Stop the proxy server
|
|
66
|
-
echo deepseek-proxy status Check if proxy is running
|
|
67
|
-
echo.
|
|
68
|
-
echo The proxy runs on port %PROXY_PORT% by default.
|
|
69
|
-
echo.
|
|
70
|
-
|
|
71
|
-
endlocal
|
|
1
|
+
@echo off
|
|
2
|
+
:: DeepSeek Usage Tracker Proxy Manager
|
|
3
|
+
:: Start/stop the tracking proxy server
|
|
4
|
+
|
|
5
|
+
setlocal enabledelayedexpansion
|
|
6
|
+
|
|
7
|
+
set "PROXY_PORT=8787"
|
|
8
|
+
|
|
9
|
+
:: Try multiple locations for the tracker script
|
|
10
|
+
if defined SINAPSE_HOME (
|
|
11
|
+
set "TRACKER_SCRIPT=%SINAPSE_HOME%\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
12
|
+
if exist "!TRACKER_SCRIPT!" goto :found
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
set "TRACKER_SCRIPT=%USERPROFILE%\sinapse-ai\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
16
|
+
if exist "%TRACKER_SCRIPT%" goto :found
|
|
17
|
+
|
|
18
|
+
set "TRACKER_SCRIPT=%USERPROFILE%\Workspaces\SINAPSE\SinapseAI\sinapse-ai\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
19
|
+
if exist "%TRACKER_SCRIPT%" goto :found
|
|
20
|
+
|
|
21
|
+
set "TRACKER_SCRIPT=%~dp0..\usage-tracker\index.js"
|
|
22
|
+
if exist "%TRACKER_SCRIPT%" goto :found
|
|
23
|
+
|
|
24
|
+
echo [91mERROR: Usage tracker not found![0m
|
|
25
|
+
exit /b 1
|
|
26
|
+
|
|
27
|
+
:found
|
|
28
|
+
:: Check if Node.js is available
|
|
29
|
+
where node >nul 2>&1
|
|
30
|
+
if %errorlevel% neq 0 (
|
|
31
|
+
echo [91mERROR: Node.js not found in PATH[0m
|
|
32
|
+
exit /b 1
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
if "%1"=="start" (
|
|
36
|
+
echo Starting DeepSeek Usage Tracker Proxy...
|
|
37
|
+
node "%TRACKER_SCRIPT%" start --port=%PROXY_PORT% --alias=claude-free
|
|
38
|
+
goto :eof
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
if "%1"=="stop" (
|
|
42
|
+
echo Stopping proxy on port %PROXY_PORT%...
|
|
43
|
+
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%PROXY_PORT%.*LISTENING"') do (
|
|
44
|
+
taskkill /PID %%a /F >nul 2>&1
|
|
45
|
+
)
|
|
46
|
+
echo Proxy stopped.
|
|
47
|
+
goto :eof
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
if "%1"=="status" (
|
|
51
|
+
curl -s http://127.0.0.1:%PROXY_PORT%/health >nul 2>&1
|
|
52
|
+
if %errorlevel% equ 0 (
|
|
53
|
+
echo [92mProxy is running on port %PROXY_PORT%[0m
|
|
54
|
+
curl -s http://127.0.0.1:%PROXY_PORT%/health
|
|
55
|
+
) else (
|
|
56
|
+
echo [93mProxy is not running[0m
|
|
57
|
+
)
|
|
58
|
+
goto :eof
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
echo DeepSeek Usage Tracker Proxy
|
|
62
|
+
echo.
|
|
63
|
+
echo Usage:
|
|
64
|
+
echo deepseek-proxy start Start the proxy server
|
|
65
|
+
echo deepseek-proxy stop Stop the proxy server
|
|
66
|
+
echo deepseek-proxy status Check if proxy is running
|
|
67
|
+
echo.
|
|
68
|
+
echo The proxy runs on port %PROXY_PORT% by default.
|
|
69
|
+
echo.
|
|
70
|
+
|
|
71
|
+
endlocal
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
@echo off
|
|
2
|
-
:: DeepSeek Usage Statistics CLI
|
|
3
|
-
:: View usage tracking data per alias
|
|
4
|
-
|
|
5
|
-
setlocal
|
|
6
|
-
|
|
7
|
-
:: Try multiple locations for the tracker script
|
|
8
|
-
:: 1. Environment variable (if set during installation)
|
|
9
|
-
if defined SINAPSE_HOME (
|
|
10
|
-
set "TRACKER_SCRIPT=%SINAPSE_HOME%\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
11
|
-
if exist "%TRACKER_SCRIPT%" goto :found
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
:: 2. Common installation locations
|
|
15
|
-
set "TRACKER_SCRIPT=%USERPROFILE%\sinapse-ai\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
16
|
-
if exist "%TRACKER_SCRIPT%" goto :found
|
|
17
|
-
|
|
18
|
-
set "TRACKER_SCRIPT=%USERPROFILE%\Workspaces\SINAPSE\SinapseAI\sinapse-ai\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
19
|
-
if exist "%TRACKER_SCRIPT%" goto :found
|
|
20
|
-
|
|
21
|
-
:: 3. Relative to this script (for development)
|
|
22
|
-
set "TRACKER_SCRIPT=%~dp0..\usage-tracker\index.js"
|
|
23
|
-
if exist "%TRACKER_SCRIPT%" goto :found
|
|
24
|
-
|
|
25
|
-
:: 4. Global npm package location
|
|
26
|
-
set "TRACKER_SCRIPT=%APPDATA%\npm\node_modules\@sinapse-fullstack\core\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
27
|
-
if exist "%TRACKER_SCRIPT%" goto :found
|
|
28
|
-
|
|
29
|
-
echo [91mERROR: Usage tracker not found![0m
|
|
30
|
-
echo.
|
|
31
|
-
echo Please ensure SINAPSE is installed correctly.
|
|
32
|
-
echo Expected locations:
|
|
33
|
-
echo - %%SINAPSE_HOME%%\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\
|
|
34
|
-
echo - %%USERPROFILE%%\sinapse-ai\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\
|
|
35
|
-
echo.
|
|
36
|
-
echo Set SINAPSE_HOME environment variable: setx SINAPSE_HOME "C:\path\to\sinapse-ai"
|
|
37
|
-
exit /b 1
|
|
38
|
-
|
|
39
|
-
:found
|
|
40
|
-
:: Check if Node.js is available
|
|
41
|
-
where node >nul 2>&1
|
|
42
|
-
if %errorlevel% neq 0 (
|
|
43
|
-
echo [91mERROR: Node.js not found in PATH[0m
|
|
44
|
-
echo Please install Node.js from https://nodejs.org/
|
|
45
|
-
exit /b 1
|
|
46
|
-
)
|
|
47
|
-
|
|
48
|
-
:: Pass arguments to tracker
|
|
49
|
-
node "%TRACKER_SCRIPT%" usage %*
|
|
50
|
-
|
|
51
|
-
endlocal
|
|
1
|
+
@echo off
|
|
2
|
+
:: DeepSeek Usage Statistics CLI
|
|
3
|
+
:: View usage tracking data per alias
|
|
4
|
+
|
|
5
|
+
setlocal
|
|
6
|
+
|
|
7
|
+
:: Try multiple locations for the tracker script
|
|
8
|
+
:: 1. Environment variable (if set during installation)
|
|
9
|
+
if defined SINAPSE_HOME (
|
|
10
|
+
set "TRACKER_SCRIPT=%SINAPSE_HOME%\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
11
|
+
if exist "%TRACKER_SCRIPT%" goto :found
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
:: 2. Common installation locations
|
|
15
|
+
set "TRACKER_SCRIPT=%USERPROFILE%\sinapse-ai\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
16
|
+
if exist "%TRACKER_SCRIPT%" goto :found
|
|
17
|
+
|
|
18
|
+
set "TRACKER_SCRIPT=%USERPROFILE%\Workspaces\SINAPSE\SinapseAI\sinapse-ai\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
19
|
+
if exist "%TRACKER_SCRIPT%" goto :found
|
|
20
|
+
|
|
21
|
+
:: 3. Relative to this script (for development)
|
|
22
|
+
set "TRACKER_SCRIPT=%~dp0..\usage-tracker\index.js"
|
|
23
|
+
if exist "%TRACKER_SCRIPT%" goto :found
|
|
24
|
+
|
|
25
|
+
:: 4. Global npm package location
|
|
26
|
+
set "TRACKER_SCRIPT=%APPDATA%\npm\node_modules\@sinapse-fullstack\core\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
27
|
+
if exist "%TRACKER_SCRIPT%" goto :found
|
|
28
|
+
|
|
29
|
+
echo [91mERROR: Usage tracker not found![0m
|
|
30
|
+
echo.
|
|
31
|
+
echo Please ensure SINAPSE is installed correctly.
|
|
32
|
+
echo Expected locations:
|
|
33
|
+
echo - %%SINAPSE_HOME%%\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\
|
|
34
|
+
echo - %%USERPROFILE%%\sinapse-ai\.sinapse-ai\infrastructure\scripts\llm-routing\usage-tracker\
|
|
35
|
+
echo.
|
|
36
|
+
echo Set SINAPSE_HOME environment variable: setx SINAPSE_HOME "C:\path\to\sinapse-ai"
|
|
37
|
+
exit /b 1
|
|
38
|
+
|
|
39
|
+
:found
|
|
40
|
+
:: Check if Node.js is available
|
|
41
|
+
where node >nul 2>&1
|
|
42
|
+
if %errorlevel% neq 0 (
|
|
43
|
+
echo [91mERROR: Node.js not found in PATH[0m
|
|
44
|
+
echo Please install Node.js from https://nodejs.org/
|
|
45
|
+
exit /b 1
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
:: Pass arguments to tracker
|
|
49
|
+
node "%TRACKER_SCRIPT%" usage %*
|
|
50
|
+
|
|
51
|
+
endlocal
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* Based on Auto-Claude's AI PR Reviewer architecture.
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
const { execSync } = require('child_process');
|
|
16
|
+
const { execSync, execFileSync } = require('child_process');
|
|
17
17
|
const fs = require('fs');
|
|
18
18
|
const path = require('path');
|
|
19
19
|
const EventEmitter = require('events');
|
|
@@ -577,8 +577,9 @@ Respond with a JSON object:
|
|
|
577
577
|
async callClaude(prompt) {
|
|
578
578
|
return new Promise((resolve, reject) => {
|
|
579
579
|
try {
|
|
580
|
-
const result =
|
|
581
|
-
|
|
580
|
+
const result = execFileSync(
|
|
581
|
+
'claude',
|
|
582
|
+
['--print', '--dangerously-skip-permissions', '-p', prompt],
|
|
582
583
|
{
|
|
583
584
|
encoding: 'utf8',
|
|
584
585
|
maxBuffer: 10 * 1024 * 1024,
|
|
@@ -705,9 +706,10 @@ class PRReviewAI extends EventEmitter {
|
|
|
705
706
|
*/
|
|
706
707
|
async fetchPRData(prNumber) {
|
|
707
708
|
try {
|
|
708
|
-
// Get PR info
|
|
709
|
-
const prJson =
|
|
710
|
-
|
|
709
|
+
// Get PR info (use execFileSync array form to prevent shell injection)
|
|
710
|
+
const prJson = execFileSync(
|
|
711
|
+
'gh',
|
|
712
|
+
['pr', 'view', String(prNumber), '--json', 'title,body,author,baseRefName,headRefName,files,additions,deletions'],
|
|
711
713
|
{
|
|
712
714
|
cwd: this.rootPath,
|
|
713
715
|
encoding: 'utf8',
|
|
@@ -716,7 +718,7 @@ class PRReviewAI extends EventEmitter {
|
|
|
716
718
|
const pr = JSON.parse(prJson);
|
|
717
719
|
|
|
718
720
|
// Get diff
|
|
719
|
-
const diff =
|
|
721
|
+
const diff = execFileSync('gh', ['pr', 'diff', String(prNumber)], {
|
|
720
722
|
cwd: this.rootPath,
|
|
721
723
|
encoding: 'utf8',
|
|
722
724
|
maxBuffer: 50 * 1024 * 1024,
|
|
@@ -842,16 +844,17 @@ class PRReviewAI extends EventEmitter {
|
|
|
842
844
|
const body = this.formatReviewBody(review);
|
|
843
845
|
|
|
844
846
|
try {
|
|
845
|
-
// Post as PR comment
|
|
846
|
-
|
|
847
|
+
// Post as PR comment (use execFileSync array form to prevent shell injection)
|
|
848
|
+
execFileSync('gh', ['pr', 'comment', String(prNumber), '--body', body], {
|
|
847
849
|
cwd: this.rootPath,
|
|
848
850
|
encoding: 'utf8',
|
|
849
851
|
});
|
|
850
852
|
|
|
851
853
|
// If requesting changes, also submit a review
|
|
852
854
|
if (review.verdict === Verdict.REQUEST_CHANGES) {
|
|
853
|
-
|
|
854
|
-
|
|
855
|
+
execFileSync(
|
|
856
|
+
'gh',
|
|
857
|
+
['pr', 'review', String(prNumber), '--request-changes', '--body', 'Please address the issues found by the automated review.'],
|
|
855
858
|
{
|
|
856
859
|
cwd: this.rootPath,
|
|
857
860
|
encoding: 'utf8',
|
|
@@ -861,7 +864,7 @@ class PRReviewAI extends EventEmitter {
|
|
|
861
864
|
review.verdict === Verdict.APPROVE &&
|
|
862
865
|
review.findings.filter((f) => f.severity === Severity.CRITICAL).length === 0
|
|
863
866
|
) {
|
|
864
|
-
|
|
867
|
+
execFileSync('gh', ['pr', 'review', String(prNumber), '--approve', '--body', 'LGTM! Automated review passed.'], {
|
|
865
868
|
cwd: this.rootPath,
|
|
866
869
|
encoding: 'utf8',
|
|
867
870
|
});
|
|
@@ -931,7 +934,7 @@ class PRReviewAI extends EventEmitter {
|
|
|
931
934
|
* Review local changes (not yet in PR)
|
|
932
935
|
*/
|
|
933
936
|
async reviewLocal(baseBranch = 'main') {
|
|
934
|
-
const diff =
|
|
937
|
+
const diff = execFileSync('git', ['diff', `${baseBranch}...HEAD`], {
|
|
935
938
|
cwd: this.rootPath,
|
|
936
939
|
encoding: 'utf8',
|
|
937
940
|
});
|