matrixcode 0.2.5

A smart code agent CLI with multi-model support, context compression, and task planning
Documentation
version: 3

vars:
  VERSION: 0.2.1

tasks:
  status:
    desc: Show version and status
    cmds:
      - 'grep "^version" Cargo.toml'
      - 'git status --short'

  login-npm:
    desc: Login to npm from .env
    cmds:
      - cmd: 'node -e "const os=require(\"os\");const fs=require(\"fs\");const lines=fs.readFileSync(\".env\",\"utf8\").split(/\\r?\\n/);const line=lines.find(l=>l.startsWith(\"NPM_TOKEN=\"));if(line){const t=line.split(\"=\")[1];fs.writeFileSync(os.homedir()+\"/.npmrc\",\"//registry.npmjs.org/:_authToken=\"+t)}"'
      - cmd: 'npm whoami'

  login-cargo:
    desc: Login to cargo from .env
    cmds:
      - cmd: 'node -e "const os=require(\"os\");const fs=require(\"fs\");const lines=fs.readFileSync(\".env\",\"utf8\").split(/\\r?\\n/);const line=lines.find(l=>l.startsWith(\"CARGO_TOKEN=\"));if(line){const t=line.split(\"=\")[1];fs.writeFileSync(os.homedir()+\"/.cargo/credentials.toml\",\"[registry]\\ntoken = \\\"\"+t+\"\\\"\")}"'

  login:
    desc: Login to npm and cargo
    cmds:
      - task: login-npm
      - task: login-cargo

  bump:
    desc: Bump all versions (task bump -- 0.2.4)
    cmds:
      - cmd: 'node -e "const fs=require(\"fs\");const v=\"{{.CLI_ARGS}}\";const c=fs.readFileSync(\"Cargo.toml\",\"utf8\").replace(/^version = .*/m,\"version = \\\"\"+v+\"\\\"\");fs.writeFileSync(\"Cargo.toml\",c)"'
      - cmd: 'node -e "const fs=require(\"fs\");const v=\"{{.CLI_ARGS}}\";const p=JSON.parse(fs.readFileSync(\"npm/package.json\"));p.version=v;fs.writeFileSync(\"npm/package.json\",JSON.stringify(p,null,2))"'
      - cmd: 'echo "Bumped to {{.CLI_ARGS}}"'

  tag:
    desc: Create git tag (task tag -- 0.2.4)
    cmds:
      - 'git add Cargo.toml npm/package.json Cargo.lock'
      - 'git commit -m "chore: bump to {{.CLI_ARGS}}"'
      - 'git tag {{.CLI_ARGS}}'
      - 'git push origin dev'
      - 'git push origin {{.CLI_ARGS}}'

  publish-npm:
    desc: Publish to npm
    dir: npm
    cmds:
      - task: login-npm
      - 'cp ../LICENSE .'
      - 'npm publish --access=public'

  publish-cargo:
    desc: Publish to cargo
    cmds:
      - task: login-cargo
      - 'cargo publish --registry crates-io'

  publish:
    desc: Auto bump version and publish
    cmds:
      - cmd: 'node -e "const fs=require(\"fs\");const c=fs.readFileSync(\"Cargo.toml\",\"utf8\");const m=c.match(/^version = \"([^\"]+)\"/m);if(m){const p=m[1].split(\".\");p[2]=parseInt(p[2])+1;const nv=p.join(\".\");fs.writeFileSync(\"Cargo.toml\",c.replace(/^version = .*/m,\"version = \\\"\"+nv+\"\\\"\"));const pkg=JSON.parse(fs.readFileSync(\"npm/package.json\"));pkg.version=nv;fs.writeFileSync(\"npm/package.json\",JSON.stringify(pkg,null,2));console.log(\"New version: \"+nv)}"'
      - cmd: 'node -e "const fs=require(\"fs\");const execSync=require(\"child_process\").execSync;const c=fs.readFileSync(\"Cargo.toml\",\"utf8\");const m=c.match(/^version = \"([^\"]+)\"/m);if(m){const v=m[1];execSync(\"cargo update -w\");execSync(\"git add Cargo.toml npm/package.json Cargo.lock\");execSync(\"git commit -m \\\"chore: bump to \"+v+\"\\\"\");execSync(\"git tag \"+v);execSync(\"git push origin dev\");execSync(\"git push origin \"+v)}"'
      - task: login
      - task: publish-npm
      - task: publish-cargo

  release:
    desc: Full release workflow (task release -- 0.2.4)
    cmds:
      - task: login
      - task: bump
        vars: {CLI_ARGS: '{{.CLI_ARGS}}'}
      - task: tag
        vars: {CLI_ARGS: '{{.CLI_ARGS}}'}
      - 'sleep 30'
      - task: publish-npm
      - task: publish-cargo

  build:
    desc: Build release
    cmds:
      - 'cargo build --release'

  test:
    desc: Run tests
    cmds:
      - 'cargo test'

  default:
    desc: List tasks
    cmds:
      - 'task --list'