Commit Graph

5 Commits

  • feat(ai): compat entrypoint, core-only root barrel (phase 5)
    The root barrel is now core-only and side-effect free: types,
    createModels/createProvider, auth substrate, lazyStream/lazyApi, faux,
    utils. Generated catalogs, api-registry, env-api-keys, images, global
    stream functions, and per-API lazy wrappers leave the root.
    
    New @earendil-works/pi-ai/compat preserves the old surface verbatim as
    a strict superset of the root: api-dispatch stream/complete with env
    key injection, the builtin registration side effect (skip-if-present so
    it cannot clobber earlier overrides), deprecated getModel/getModels/
    getProviders aliases of the new getBuiltin* reads in providers/all,
    lazy api wrappers + setBedrockProviderModule, and image generation.
    Compat dies with the coding-agent ModelManager migration.
    
    Packaging: exports map gains ./compat, ./providers/*, ./api/*;
    sideEffects array lists only the effectful modules.
    
    Old-global imports across agent/coding-agent/examples and pi-ai tests
    switch to /compat (path-only; compat is a superset). The coding-agent
    extension loader resolves the pi-ai ROOT specifier to compat, so
    existing user extensions using the old global API keep working at
    runtime until compat is removed. vitest configs alias /compat to src;
    browser smoke imports old globals from /compat.
  • Merge hooks and custom-tools into unified extensions system (#454)
    Breaking changes:
    - Settings: 'hooks' and 'customTools' arrays replaced with 'extensions'
    - CLI: '--hook' and '--tool' flags replaced with '--extension' / '-e'
    - API: HookMessage renamed to CustomMessage, role 'hookMessage' to 'custom'
    - API: FileSlashCommand renamed to PromptTemplate
    - API: discoverSlashCommands() renamed to discoverPromptTemplates()
    - Directories: commands/ renamed to prompts/ for prompt templates
    
    Migration:
    - Session version bumped to 3 (auto-migrates v2 sessions)
    - Old 'hookMessage' role entries converted to 'custom'
    
    Structural changes:
    - src/core/hooks/ and src/core/custom-tools/ merged into src/core/extensions/
    - src/core/slash-commands.ts renamed to src/core/prompt-templates.ts
    - examples/hooks/ and examples/custom-tools/ merged into examples/extensions/
    - docs/hooks.md and docs/custom-tools.md merged into docs/extensions.md
    
    New test coverage:
    - test/extensions-runner.test.ts (10 tests)
    - test/extensions-discovery.test.ts (26 tests)
    - test/prompt-templates.test.ts