{
  "schema": "leumas.docs.page/1",
  "id": "adapter:domain/toolkit",
  "slug": "adapters/domain/toolkit",
  "kind": "capabilities",
  "bucket": "package",
  "title": "toolkit",
  "name": "toolkit",
  "eyebrow": null,
  "chip": null,
  "summary": "Basic-functions toolkit: 172 small, self-contained, data-in→data-out functions combined + de-duplicated from the legacy a.functions (algorithms) + a.helpers (utilities) + a.algorithms (geometry)...",
  "keywords": [
    "toolkit",
    "data-in",
    "data-out",
    "mini-microservice",
    "multi-page-form",
    "toolkit api",
    "isprime",
    "primefactors"
  ],
  "audience": "both",
  "funnel": {
    "product": null,
    "cta": null
  },
  "body": "# toolkit\n\nA de-duplicated library of **129 small, self-contained, data-in→data-out functions** — combined from\nthe legacy `a.functions` (algorithms) and `a.helpers` (utilities) middleware libraries. Every tool\ntakes one JSON args object and returns a plain result, so each is trivially a **mini-microservice**,\nan **MCP tool**, a **chatbot functioncall**, or a **multi-page-form action**.\n\n## Categories (`src/`)\n\n| Module | ~count | Examples |\n|---|---|---|\n| `numberTheory` | 40 | isPrime, primeFactors, gcd, lcm, sieveOfEratosthenes, modularPow, modInverse, fibonacci, collatz, eulerTotient, digitalRoot, integerSqrt |\n| `combinatorics` | 17 | permutations, combinations, powerSet, nPr, nCr, catalan, partitions, derangements, cartesianProduct, multisetPermutations |\n| `graph` | 12 | dijkstra, aStar, bfsLevels, pageRank, topologicalSort, connectedComponents, hasCycle, reachable |\n| `sortSearch` | 13 | mergeSort, quickSort, heapSort, binarySearch, quickselect, kthLargest, lowerBound, isSorted |\n| `dataAlgos` | 22 | shannonEntropy, huffmanEncode/Decode, kMeans, markovChainBuild/Generate, reservoirSample, bloomFilter, levenshtein, hammingDistance, jaccardSimilarity, runLength, deltaEncode, normalize01, slidingWindow |\n| `objectUtils` | 26 | get, set, pick, omit, merge, mergeDeep, cloneDeep, invert, groupBy, countBy, keyBy, flattenObject, unflattenObject, deepEqual |\n\n## Design & DRY boundaries\n- **Selection rule:** only JSON-serializable, data-in→data-out functions are here. Code-composition\n  helpers that take a function/callback (compose, curry, memoize, debounce, asyncMap, promisify,\n  semaphore, pLimit, …) were intentionally **excluded** — you can't submit a function through a form\n  or an MCP tool call.\n- **De-duplicated:** nothing re-implements a capability already owned by another pack —\n  `numbers` (basic math / unit / base convert), `statistics` (mean/std/regression/tests),\n  `array` (chunk/flatten/unique/set ops), `a-text` (string ops/ciphers), `a-file-actions` (fs),\n  `datetime` (date math), `validation` (luhn/email), `crypto` (aes/rsa/jwt), `matrix` (linear\n  algebra), `hz` (fft), `dice` (shuffle/random), `word` (palindrome/anagram).\n\n## Usage\n`POST /api/adapters/toolkit/<fn>` with the function's args, e.g.\n`POST /api/adapters/toolkit/gcd { \"a\": 12, \"b\": 18 }` → `{ \"result\": { \"gcd\": 6 } }`.\nDiscover them all via `GET /api/adapters/toolkit` or the universal `GET /api/adapters/search?q=…`.\n",
  "source": {
    "path": "shared/engines/adapters/domain/toolkit/README.md",
    "blobSha": "",
    "commit": "",
    "committedAt": "",
    "provenance": "no-git",
    "bytes": 2644,
    "hash": "9e7db47146084c4f4290a220f143204495550331"
  },
  "urls": {
    "html": "/p/adapters/domain/toolkit",
    "json": "/docs/adapters/domain/toolkit.json",
    "md": "/docs/adapters/domain/toolkit.md"
  },
  "links": {
    "composes": [],
    "usedBy": [],
    "product": [],
    "howTo": [],
    "skills": []
  }
}
