{
  "name": "dsh-budget",
  "version": "0.4.20",
  "description": "Cost governance for DeepSeek Harness: aggregated token/cost metering per model, session and day, session/daily/monthly budget caps with threshold alerts (desktop notification + webhook) and alert/block/degrade over-limit policies, built-in carbon footprint estimation and per-model latency benchmarks, a Settings budget tab, and the /budget command",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/PerryLink/dsh-budget.git"
  },
  "homepage": "https://github.com/PerryLink/dsh-budget#readme",
  "bugs": {
    "url": "https://github.com/PerryLink/dsh-budget/issues"
  },
  "author": "PerryLink",
  "private": false,
  "type": "module",
  "main": "./lib/index.js",
  "types": "./lib/types/index.d.ts",
  "exports": {
    ".": {
      "types": "./lib/types/index.d.ts",
      "default": "./lib/index.js"
    },
    "./typert": {
      "types": "./lib/types/typert.host.d.ts",
      "default": "./lib/typert.host.js"
    },
    "./client": {
      "types": "./lib/types/client/index.d.ts",
      "default": "./lib/client.js"
    },
    "./package.json": "./package.json"
  },
  "files": [
    "lib",
    "cordis.patch.yml",
    "CHANGELOG.md",
    "THIRD_PARTY_NOTICES.md",
    "SECURITY.md",
    "README.md",
    "README-zh.md",
    "README-es.md",
    "README-pt.md",
    "README-hi.md",
    "LICENSE"
  ],
  "dsh": {
    "manifestVersion": 1,
    "bundle": {
      "patch": "./cordis.patch.yml"
    },
    "client": {
      "platform": "web",
      "inject": [
        "@deepseek-ai/dsh-client-connection",
        "@deepseek-ai/dsh-client-locale",
        "@deepseek-ai/dsh-client-ui-settings"
      ]
    }
  },
  "dshWorkshop": {
    "schema": "omdsh-workshop-package/v1",
    "type": "plugin",
    "integration": {
      "protocol": "harness-profile",
      "artifact": "cordis.patch.yml"
    },
    "install": {
      "mode": "transactional",
      "adapter": "profile-bundle",
      "failurePolicy": "generation-rollback",
      "touchesCurrentBeforeActivation": false
    },
    "lifecycle": {
      "activation": "hot-reload",
      "dispose": "supported"
    },
    "permissions": [
      "network:outbound",
      "session:append",
      "native-code:none"
    ],
    "compatibility": {
      "dshVersions": [
        "0.1.2-rc.1",
        "0.1.5-rc.2",
        "0.1.7-alpha.2",
        "0.1.7-rc.1",
        "0.1.7-rc.2",
        "0.2.1-alpha.1"
      ]
    },
    "capability": {
      "id": "budget-governance",
      "kind": "command",
      "invocation": "/budget",
      "expected": "a per-scope budget overview with aggregated tokens, estimated cost, carbon footprint and per-model latency statistics, plus unblock and model-breakdown subcommands"
    },
    "evidence": {
      "install": null,
      "failureIsolation": null,
      "hotReload": null,
      "remove": null
    }
  },
  "keywords": [
    "dsh",
    "dsh-plugin",
    "deepseek-harness",
    "deepseek",
    "cordis",
    "budget",
    "cost-tracking",
    "carbon-footprint",
    "latency-benchmark",
    "token-usage"
  ],
  "engines": {
    "node": "^22.19.0 || >=24.0.0",
    "dsh": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0"
  },
  "packageManager": "pnpm@11.7.0",
  "peerDependencies": {
    "@deepseek-ai/cordis": "^4.0.5-alpha.1",
    "@deepseek-ai/dsh-agent": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
    "@deepseek-ai/dsh-client-connection": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
    "@deepseek-ai/dsh-client-locale": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
    "@deepseek-ai/dsh-client-ui-settings": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
    "@deepseek-ai/dsh-commands": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
    "@deepseek-ai/dsh-llm": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
    "@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
    "@deepseek-ai/dsh-storage-domain": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
    "@deepseek-ai/dsh-token-meter": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
    "@deepseek-ai/dsh-tools": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
    "@deepseek-ai/dsh-typert-protocol": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0 || >=0.1.7-0 <0.2.0 || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0",
    "@deepseek-ai/schemastery": "^3.18.5-alpha.1"
  },
  "peerDependenciesMeta": {
    "@deepseek-ai/dsh-client-connection": {
      "optional": true
    },
    "@deepseek-ai/dsh-client-locale": {
      "optional": true
    },
    "@deepseek-ai/dsh-client-ui-settings": {
      "optional": true
    }
  },
  "dependencies": {
    "zod": "^4.4.3"
  },
  "devDependencies": {
    "@deepseek-ai/cordis": "^4.0.5-alpha.1",
    "@deepseek-ai/cordis-plugin-include": "^1.0.10-alpha.1",
    "@deepseek-ai/cordis-plugin-loader": "^1.0.6-alpha.1",
    "@deepseek-ai/dsh-agent": "0.2.1-rc.2",
    "@deepseek-ai/dsh-api-remotes": "0.2.1-rc.2",
    "@deepseek-ai/dsh-attachment": "0.2.1-rc.2",
    "@deepseek-ai/dsh-client-connection": "0.2.1-rc.2",
    "@deepseek-ai/dsh-client-locale": "0.2.1-rc.2",
    "@deepseek-ai/dsh-client-ui-settings": "0.2.1-rc.2",
    "@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.2",
    "@deepseek-ai/dsh-commands": "0.2.1-rc.2",
    "@deepseek-ai/dsh-llm": "0.2.1-rc.2",
    "@deepseek-ai/dsh-session": "0.2.1-rc.2",
    "@deepseek-ai/dsh-settings": "0.2.1-rc.2",
    "@deepseek-ai/dsh-storage-domain": "0.2.1-rc.2",
    "@deepseek-ai/dsh-token-meter": "0.2.1-rc.2",
    "@deepseek-ai/dsh-tools": "0.2.1-rc.2",
    "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2",
    "@deepseek-ai/schemastery": "^3.18.5-alpha.1",
    "@types/node": "^22.19.0",
    "@types/react": "18.3.31",
    "@vitest/coverage-v8": "3.2.7",
    "oxlint": "0.18.1",
    "react": "18.3.1",
    "react-dom": "18.3.1",
    "vitest": "^3.2.0",
    "tsdown": "^0.22.14",
    "typescript": "^5.9.0"
  },
  "scripts": {
    "build": "node scripts/prepare.mjs",
    "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit",
    "typecheck:ci": "tsc -p tsconfig.ci.json --noEmit",
    "check:ruler-live": "node scripts/assert-ruler-live.mjs",
    "test": "vitest run",
    "test:watch": "vitest",
    "test:coverage": "vitest run --coverage",
    "lint": "oxlint",
    "check:readmes": "node scripts/check-readme-sync.mjs",
    "prepare": "node scripts/prepare.mjs",
    "verify:self-contained": "node scripts/verify-self-contained.mjs",
    "verify:artifacts": "node scripts/verify-artifacts.mjs"
  },
  "license": "Apache-2.0",
  "funding": {
    "type": "individual",
    "url": "https://github.com/sponsors/PerryLink"
  }
}
