openpetswithchatandmcp/packages/client/contracts/codemap.md
OpenPets Dev 6ab3bb64d8 feat(rebrand): rename OpenPets to FamiliarOS and pets to familiars
- Rename all user-facing and technical identifiers from OpenPets/Pet to FamiliarOS/Familiar.
- Rename packages from @open-pets/* to @familiaros/*; rename install-pet/pet-format packages.
- Rename plugin IDs and directories from openpets.* to familiaros.*.
- Rename IPC namespace from openpets:* to familiaros:* and state filenames from openpets-* to familiaros-* with legacy migration.
- Rename source files (pet-window, built-in-pet, default-pet-controller, etc.) to familiar equivalents.
- Update locales (en, es-419, ja, ko, pt-BR, zh-Hans, zh-Hant) and tray/pet context menu strings.
- Add Familiar naming feature: preference, settings input, tray menu display.
- Update assets and packaging config; all desktop tests pass.
2026-06-17 01:42:08 +00:00

2 KiB

packages/client/contracts/

Runtime contract validation tests for the client protocol.

Responsibility

Contains executable contract tests that validate protocol compliance, discovery file handling, endpoint parsing, and response parsing. These are runtime assertions, not traditional unit tests.

Design/Patterns

Contract Pattern: Uses *.contract.ts naming and runs via pnpm test which builds and executes the contract file directly.

Build Setup: Separate TypeScript configuration (tsconfig.tests.json) compiles contracts to .test-dist/ without declarations/sourcemaps.

Test Execution:

pnpm test:build  # Compiles contracts + src to .test-dist/
pnpm test        # Runs node .test-dist/contracts/client-protocol.contract.js

Files

client-protocol.contract.ts

Runtime protocol validation (79 lines). Imports from ../src/ and asserts:

  • Discovery validation: Protocol, version, endpoint, token, platform validation
  • Endpoint parsing: Unix sockets, Windows named pipes, TCP endpoints
  • TCP private IP validation: Loopback (127.x), private ranges (10.x, 172.16-31.x, 192.168.x), link-local (169.254.x)
  • Cross-platform discovery: Windows desktop → WSL client via private IPs
  • Public IP rejection: Ensures public IPs are rejected for security
  • Response parsing: ok/error discriminated union parsing
  • Familiar list/install result parsing: Validates familiar data structures

Security Coverage:

  • IPv4 only (no hostnames)
  • Private/local addresses only for TCP
  • Rejects 0.0.0.0, public IPs, and URLs with auth/path components

Integration Points

Source Dependencies: Imports from ../src/discovery.js, ../src/index.js, ../src/protocol.js

Test Command: pnpm test in packages/client/

Build Output: .test-dist/contracts/client-protocol.contract.js (not published)

Notes

  • Contract files are excluded from npm package (files: ["dist"] in package.json)
  • Contracts validate runtime behavior, not implementation details
  • Uses Node.js assert/strict for assertions